文档

特征配置

更新时间:

特征的配置对应配置总览中的 FeatureConfs,FeatureConfs 是一个 Map[string]object 结构,其中 key 为场景名,可以根据不同场景配置不同的特征

特征加载

在精排之前,需要从特征存储源里获取到 user 或者 item 的特征数据。

在某些情况下,获取到的特征数据还需要进一步做处理,比如根据已有的特征生成新的特征,根据现有特征进行组合等,都是支持的

特征的加载支持多个数据源 hologres、redis、ots(tablestore)、PAI-FeatureStore 。

Hologres

配置示例

"FeatureConfs" :{
  "scene_name" :{
  "AsynLoadFeature" : true,
  "FeatureLoadConfs": [
    {
      "FeatureDaoConf": {
        "AdapterType": "hologres",
        "HologresName": "holo-pai",
        "FeatureKey": "user:uid",
        "UserFeatureKeyName" :"uid",
        "HologresTableName": "recom_user_features_processed_holo_online",
        "UserSelectFields":"rids_count,sex,alladdfriendnum,allpayrosenum",
        "FeatureStore":"user"
     },
     "Features" :[]
    },
     {
      "FeatureDaoConf": {
        "AdapterType": "hologres",
        "HologresName": "holo-pai",
        "ItemFeatureKeyName" :"uid",
        "FeatureKey": "item:pair_id",
        "HologresTableName": "recom_user_features_processed_holo_online",
        "ItemSelectFields":"uid, rids_count as rids2_count,sex as guestsex,alladdfriendnum as alladdfriendnum2",
        "FeatureStore":"item"
      },
     "Features" :[]
    }
   ]
  }
}

  • AsynLoadFeature: 是否异步的加载特征,当有多个 FeatureLoadConfs 时,可以异步并发的进行加载

FeatureLoadConfs/FeatureDaoConf

字段名

类型

是否必填

描述

AdapterType

string

数据源的类型,取值为 hologres

HologresName

string

在数据源配置(HologresConfs)中配置好的 holo 的自定义名称,如数据源配置中的 holo_info

FeatureKey

string

根据引擎中哪个特征,去特征表里进行查询。

FeatureKey 标明查找的值来自于 user 或者 item 的哪个字段。比如,user:uid 获取 user 的 uid 属性值,item:pair_id 获取 item 的 pair_id 的属性值。

UserFeatureKeyName

string

user 特征表的主键字段

ItemFeatureKeyName

string

item 特征表的主键字段

HologresTableName

string

holo 中特征表的表名

UserSelectFields

string

需要获取的 user 特征,支持"*",表明获取所有,也可以 "feature1,feature2"

ItemSelectFields

string

需要获取的 item 特征,支持"*",表明获取所有,也可以 "feature1,feature2"

FeatureStore

string

枚举值:user/item。表示特征获取到之后,存储到哪里

Redis

配置示例

"FeatureConfs" :{
  "scene_name" :{
  "AsynLoadFeature" : true,
  "FeatureLoadConfs": [{
    "FeatureDaoConf": {
      "AdapterType": "redis",
      "RedisName": "user_redis",
      "RedisPrefix": "UF_V2_",
      "FeatureKey": "user:uid",
      "FeatureStore":"user"
    },
    "Features" :[]
  },
  {
    "FeatureDaoConf": {
      "AdapterType": "redis",
      "RedisName": "item_redis",
      "RedisPrefix": "IF_V2_FM_",
      "FeatureKey": "item:id",
      "FeatureStore":"item"
     },
    "Features" :[
      {
        "FeatureType": "raw_feature",
        "FeatureName" : "article_id",
        "FeatureSource" : "item:id",
        "FeatureStore":"item"
      },
      {
        "FeatureType": "raw_feature",
        "FeatureName" : "item_elapse_time",
        "FeatureSource" : "item:item_ctime",
        "Normalizer": "time_ln",
        "RemoveFeatureSource" : true,
        "FeatureStore":"item"
      }
     ]
   }]
  }
}

FeatureLoadConfs/FeatureDaoConf

字段名

类型

是否必填

描述

AdapterType

string

数据源的类型,取值为 redis

RedisName

string

在数据源配置(RedisConfs)中配置好的 redis 的自定义名称,如数据源配置中的 redis_info

RedisPrefix

string

key 前缀

FeatureKey

string

根据引擎中哪个特征,去特征表里进行查询。

FeatureKey 标明查找的值来自于 user 或者 item 的哪个字段。比如,user:uid 获取 user 的 uid 属性值,item:pair_id 获取 item 的 pair_id 的属性值。

FeatureStore

string

枚举值:user/item。表示特征获取到之后,存储到哪里

OTS(tablestore)

配置示例

"FeatureConfs" :{
  "scene_name" :{
    "AsynLoadFeature" : true,
    "FeatureLoadConfs": [{
      "FeatureDaoConf": {
        "AdapterType": "tablestore",
        "TableStoreName": "",
        "FeatureKey": "user:uid",
        "UserFeatureKeyName" :"uid",
        "TableStoreTableName" : "",
        "UserSelectFields":"",
        "FeatureStore":"user"
      },
      "Features" :[]
    },
    {
      "FeatureDaoConf": {
        "AdapterType": "tablestore",
        "TableStoreName": "",
        "FeatureKey": "item:id",
        "ItemFeatureKeyName" :"item_id",
        "TableStoreTableName" : "",
        "ItemSelectFields":"",
        "FeatureStore":"item"
       },
       "Features" :[]
     }]
  }
}

FeatureLoadConfs/FeatureDaoConf

字段名

类型

是否必填

描述

AdapterType

string

数据源的类型,取值为 tablestore

TableStoreName

string

在数据源配置(TableStoreConfs)中配置好的 tablestore 的自定义名称,如数据源配置中的 tablestore_info

FeatureKey

string

根据引擎中哪个特征,去特征表里进行查询。

FeatureKey 标明查找的值来自于 user 或者 item 的哪个字段。比如,user:uid 获取 user 的 uid 属性值,item:pair_id 获取 item 的 pair_id 的属性值。

UserFeatureKeyName

string

user 特征表的主键字段

ItemFeatureKeyName

string

item 特征表的主键字段

TableStoreTableName

string

tablestore 中特征表的表名

UserSelectFields

string

需要获取的 user 特征,支持"*",表明获取所有,也可以 "feature1,feature2"

ItemSelectFields

string

需要获取的 item 特征,支持"*",表明获取所有,也可以 "feature1,feature2"

FeatureStore

string

枚举值:user/item。表示特征获取到之后,存储到哪里

PAI-FeatureStore(特征平台)

PAI-FeatureStore 平台的使用配置参考FeatureStore概述

配置示例

{
  "FeatureConfs" :{
    "scene_name": {
      "AsynLoadFeature": true,
      "FeatureLoadConfs": [{
        "FeatureDaoConf": {
          "AdapterType": "featurestore",
          "FeatureStoreName": "pairec-fs",
          "FeatureKey": "user:uid",
          "FeatureStoreModelName": "rank_v1",
          "FeatureStoreEntityName": "user",
          "FeatureStore": "user"
        }
      }]
    }
  }
}

FeatureLoadConfs/FeatureDaoConf

字段名

类型

是否必填

描述

AdapterType

string

数据源的类型,取值为 featurestore

FeatureStoreName

string

在数据源配置(FeatureStoreConfs)中配置好的 holo 的自定义名称,如数据源配置中的 fs_info

FeatureKey

string

根据引擎中哪个特征,去特征表里进行查询。

FeatureKey 标明查找的值来自于 user 或者 item 的哪个字段。比如,user:uid 获取 user 的 uid 属性值,item:pair_id 获取 item 的 pair_id 的属性值。

FeatureStoreModelName

string

特征平台(feature store)中的 modelfeature name

FeatureStoreEntityName

string

特征平台(feature store)中的 entity name

FeatureStore

string

枚举值:user/item。表示特征获取到之后,存储到哪里

特征转化

上面提到 , Features 可以做些特征转化的工作。 来看下常用到的具体几个例子

经常会用到 day_h, week_day 两个特征, 这两个特征是实时生成的。

{
 		"FeatureType": "new_feature",
    "FeatureName": "day_h",
    "Normalizer": "hour_in_day",
    "FeatureStore": "user"
}

{
    "FeatureType": "new_feature",
    "FeatureName": "week_day",
    "Normalizer": "weekday",
    "FeatureStore": "user"
}
  • FeatureType = new_feature 新生成特征

  • FeatureName 特征名称

生成随机数, 有些时候会用到随机数进行概率判断。 下面会生成 rand_int_v 特征,区间在 [0 - 100)

{
    "FeatureType": "new_feature",
    "FeatureName": "rand_int_v",
    "Normalizer": "random",
    "FeatureStore": "user"
}

生成固定值, 生成  alg 特征名称,值为 ALRC

{
    "FeatureType": "new_feature",
    "FeatureStore": "user",
    "Normalizer": "const_value",
    "FeatureValue": "ALRC",
    "FeatureName": "alg"
}

根据表达式生成特征, 下面生成了 bool 的特征, is_retarget, 通过判断 recall_name 是否在数组中。 bool 的特征的值,实际用 1 or 0 表示。

{
    "FeatureType": "new_feature",
    "FeatureStore": "item",
    "FeatureSource": "item:recall_name",
    "Normalizer": "expression",
    "Expression": "recall_name in ('retarget_u2i','realtime_retarget_click')",
    "FeatureName": "is_retarget"
}

  • Expression 表达式, 表达式规则,可以参考 https://github.com/Knetic/govaluate

  • FeatureSource 表示特征值来源于哪里, item:recall_name, 说明来源于 item 的 recall_name 特征。如果 Expression 中有多个 item 的属性值,FeatureSource 可以不设置,会把 item 的所有属性值传入到 Expression 进行计算。

  • 本页导读 (0)
文档反馈