You need to enable JavaScript to run this app.
导航
特征
最近更新时间:2025.02.21 17:40:58首次发布时间:2022.10.09 14:06:09
我的收藏
有用
有用
无用
无用

概述

通过配置抽取方法对原始特征或特征进行抽取得到的模型可识别的特征。

新建特征

新建特征有两种途径:单个新建特征、批量新建特征。
(1)单个添加特征:单个配置每个特征的名称、依赖、抽取方法、参数配置、标签、备注。参数介绍如下:

  • 依赖:指抽取方法的输入,可以是原始特征或已有的特征。
  • 抽取方法:是对输入的原始特征或特征,按照参数配置抽取加工成模型可识别的特征格式的计算方法。详见下面的【抽取方法说明】。
  • 参数配置:是特征抽取方法的参数配置,需要根据具体业务需求去定义。

Image
(2)批量新建特征

  • 在 step1 中配置预定义信息,包括筛选原始特征、特征命名规则、默认抽取方法&参数、标签。
  • 点击【确认批量生成】,系统会筛选出所有符合条件的原始特征,在原始特征名称的基础上增加前缀或后缀得到特征名称,并且按照原始特征的字段类型定义默认的抽取方法和参数去配置,把所有信息展示在 step2 中。
  • 根据需要做相应的修改,最后点击提交。

Image

编辑在线特征

在线特征是提供给在线服务使用的特征,用于 inference(召回、粗排和精排)。即在线特征是指所有栏位下关联的所有特征,包括在线模型用到的特征,以及手动关联到栏位的特征。
在线特征按目前的分类有(KV、实时窗口、context)。Streaming Feature 是在线特征的 dump,流式样本用 Streaming Feature 和实时 Label (来自于消息队列表)拼接而来。
(1)批量特征关联栏位或取消关联栏位

  • 单击【编辑在线特征】,在编辑在线特征状态列表页,勾选需要的若干特征。

Image

  • 选择单击【批量关联栏位】或【批量取消关联】,在弹框页中选择欲增加关联或取消关联的若干个栏位,单击确定。

Image
Image

  • 编辑完需要关联或解除关联栏位的特征后,点击【保存】,返回原特征列表页

(2)单个特征关联栏位或取消关联栏位

  • 关联栏位:特征列表页点击关联栏位数量,在弹框中点击【关联栏位】,再选择需要增加的栏位,点击【确定】返回特征列表页。
  • 取消关联:选择需要取消关联的栏位,点击【取消关联】,弹框中点击【确定】返回特征列表页。

Image
栏位关联方式
特征列表的关联栏位数量,显示手动发布且关联的栏位的数量 以及 在线模型中使用且发布到线上的栏位数量。
当查看特征关联的栏位详情时,关联方式列通过在线模型使用手动发布显示不同关联方式。其中,通过在线模型使用关联的栏位,不支持手动解除关联。

  • 在线模型:通过在线服务中召回、精排或粗排被选中而发布到线上的模型。
  • 通过在线模型发布到线上的特征:包含在模型代码中,当模型发布到线上时,会调用 feature store 发布到线上的特征。

发布特征

发布特征可将特征关联到栏位,发布成功后才可用于在线预估及流式样本。
单击【发布特征】,从特征维度和栏位维度分别确定此次发布中会增加关联及取消关联的特征栏位关系,确定没问题后,单击【确定】,系统会按照此配置更新特征与栏位的关联关系。
Image

抽取方法说明

特征工程方法

依赖类型

依赖数量

输入类型

参数列表

使用说明

DirectInt

原始特征

1

Int

把 int转成 string 做 hash

DirectBigint

原始特征

1

bigint

把bigint 转成 string 做 hash

DirectString

原始特征

1

string

做 hash

DirectFloat

原始特征

1

float

把 float 转成 string 做 hash

DirectDouble

原始特征

1

double

把 double 转成 string 做 hash

BigintLog

原始特征

1

bigint

对 bigint 取 log,再做hash

TermSplitUtf8

原始特征

1

string

delimeters:string
count:int32

将输入按照分隔符分隔,并保留小于等于指定数量的分隔后的字段,最后做hash。输入 string 的编码格式为 utf8。
例:
输入:"a,b,c,d,e",调用 TermSplitUtf8(",", 2)
输出:"a_hashed,b_hashed"

TermSplit

原始特征

1

string

delimeters:string
count:int32

将输入按照分隔符分隔,并保留小于等于指定数量的分隔后的字段,最后做hash。输入 string 的编码格式为非 utf8。

VectorTopInt

原始特征

1

array< int >

Topk:int

把输入项的前topk个数据做hash,Topk=-1代表不做截断。输入数组的数据类型为 int。

VectorTopInteger

原始特征

1

array< bigint >

Topk:int

把输入项的前topk个数据做hash,Topk=-1代表不做截断。输入数组的数据类型为 bigint。

VectorTopString

原始特征

1

array< string >

Topk:int

把输入项的前topk个string数据做hash,Topk=-1代表不做截断

VectorTopFloat

原始特征

1

array< float >

Topk:int

把输入项的前topk个float数据做hash,Topk=-1代表不做截断

VectorTopDouble

原始特征

1

array< double >

Topk:int

把输入项的前topk个数据double做hash,Topk=-1代表不做截断

FeatureVectorTopString

原始特征

2

array< string >, array< float >

num_id:int
thresh:float

该方法用于从选择的第一个 array 中取部分值进行 hash,有两种使用场景。

  • 第一个是取前 num_id 个值;
  • 第二个是取权重(第二个array是权重)首次低于 thresh 前的所有值。第一个场景较常见。

该方法依赖两个 array 类型的原始特征作为输入。第1个是待处理的字符串 array;第2个是对应的权重 array。二者须长度一样,在产品内配置时一定要先选择待处理的字符串 array 再选择对应的权重 array。另外,num_id <0 时会遍历第1个 array 的所有值。

RecommendIpFeature

原始特征

1

string

取ip的前3段,然后进行hash
比如,10.20.155.87 就会返回hash(10.20.155)

RecommendTimePeriod

原始特征

1

bigint

div: int
mod:int
blur:int

此方法用来计算精确到秒的时间戳所属范围,并做hash
结果=input / div % mod,其中“/”为除法,“%”为取余,blur为调控参数。
比如div=3600,mod=24,结果为某个时间戳为一天的哪个小时

RecommendTimeArea

原始特征

1

bigint

div1: int
mod:int
div2: int
blur:int

此方法用来计算精确到秒的时间戳所属范围,并做hash。但是比上个方法多了一个参数
结果=input/div1%mod/div2。其中“/”为除法,“%”为取余。blur为调控参数。
比如div1=3600,mod=24,div2=4,结果为某个时间戳为一天的哪个时区,也即凌晨/上午/下午/晚上参与之后的计算

RecommendTimeFeature

原始特征

2

bigint, bigint

div: int
max_value:int

先计算(第二个input - 第一个input)/div得到一个值,若该值<{max_value},则取该值,否则则取max_value。最后将结果hash
注意:在选择依赖时,一定要注意第一个特征和第二个特征的顺序。先选的为第一个,后选的为第二个。

LaplaceLogFormat

原始特征

1

bigint

multiple:int

先计算log( input + 1 ) * multiple,然后hash

LaplaceLogFormatFloatByInt32

原始特征

1

float

multiple:int

先计算log( input + 1 ) * multiple,然后hash

RoundFloat

原始特征

1

float

div_num:float

先计算input * div_num,然后hash

Combine

特征

2

array< uint64 >, array< uint64 >

对两个特征值嵌套计算。
对于输入的两个 fid list,双重遍历循环,对于每对组合,进行如下的计算:

  • 计算新的fid为 fid_new = fid1 * fid2
  • 将 128 位的 fid_new 压缩成 64 位,方法是将其前 64 位和后 64 位异或,表达成公式就是 fid = (fid_new & 0xFFFFFFFFFFFFFFFF) ^ ((fid_new >> 64) & 0xFFFFFFFFFFFFFFFF)
  • 根据其具体的 slot,由上面的说明得到最终的 fid 值

最终输出的特征长度固定为 mn

HasMatch

特征

2

array< uint64 >, array< uint64 >

判断两个列表中是否有元素会匹配
比如:分别依赖用户侧窗口聚合类特征和对应的物品侧特征,来表示物品维度是否能匹配的上用户行为列表;分别依赖父物品侧特征和物品特征,来表示该物品某维度是否能匹配上父物品某维度。

UserActionRecentItemTopList

原始特征

1

map(internal)

topk

输入必须是用户实时窗口聚合类原始特征,表示对用户最近发生行为的item维度按行为次数倒序排列,取topk后做哈希

UserActionRecentItemTopListV2

原始特征

1

map(internal)

topk
[1, 50] 的整数,默认 10。用于设置最多返回的 fid 个数。

type
默认 2。值的计算方式,取值如下:

  • 1:kTypeIpsPairListIsImpr:如果没有 click 行为,输出 hash(fid)
  • 2:kTypeIpsPairListIsClick:如果有 click 行为,输出 hash(fid)
  • 3:kTypeIpsPairListImprLog:value 置为{log2 底(impr + 1)}
  • 4:kTypeIpsPairListClickLog:value 置为{log2 底(click + 1)}
  • 5:kTypeIpsPairListSmoothCtr:value 置为{(click + smooth_alpha_) * smooth_gama_ /(impr + smooth_beta_)}
  • 6:kTypeIpsPairListImprAndClick:value 置为{log2(click + 1) + ':' + log2(impr + 1)}
  • 7:kTypeIpsPairListImprAndCtr:value 置为{log2(impr + 1) + ':' + type_5 中的那个 ctr}
  • 8:kTypeIpsPairListWilsonCtr:是 wilson 置信区间的下限

without_fid
默认 0。返回的拼接方式,默认为 fid + ':' + value,传 1 则不拼接 fid。

smooth_alpha
smooth_beta
smooth_gamma
默认 0。平滑参数,比如:(click+ smooth_alpha) * smooth_gamma * 1.0 / (impr + smooth_beta)。

对用户最近发生行为的 item 按取出的原始特征取 TopK 后做哈希。

UserActionItemMatch

原始特征, 特征

2

map(internal), array< uint64 >

输入的第一个对象必须是用户、父物品实时窗口聚合类原始特征(recent、score类)。用物品侧特征跟用户、父物品最近发生行为的物品统计做Match,Match 后做哈希。

UserActionItemMatchV2

原始特征, 特征

2

map(internal), array< uint64 >

topk
[1, 50] 的整数,默认 1。用于设置最多返回的 fid 个数。

type
默认 3。

  • 1:kTypeIpsImpr:value 取{log2 底(impr)}
  • 2:kTypeIpsClick:value 取{log2 底(click+1)}
  • 3:kTypeIpsClick_10:value 取{10*log2 底(click+1)}
  • 4:kTypeIpsLogCtr:value 取{1000*log2 底(click/impr) }
  • 5:kTypeIpsIntCtr:value 取{2000*click/impr}
  • 6:kTypeIpsIntCtrNoFid:value 取{2000*click/impr},最后生成特征字符串的时候不包含待匹配的 fid,其实这个可以由参数控制,目测是抽象出来之前就撰写好了的方法
  • 7:kTypeIpsIntCtrSmooth:value 取{(click + smooth_alpha_) * smooth_gama_ / (impr + smooth_beta_)},其中 smooth_alpha_ /smooth_beta_ /smooth_gama_分别是第三/四/五参数
  • 8:kTypeIpsLogImpr:value 取{loge 底(impr)}
  • 9:kTypeIpsWilsonCtr:略
  • 0(默认值):value 取({loge 底(click+1)*10}:{loge 底(impr)*10},也即展示点击都考虑了,这里的展示点击是广义的,可以理解为 neg 行为和 pos 行为,针对不同的行为,neg 行为和 pos 行为是不同的(比如 download 的“展示”是点击,“点击”是下载)

without_fid
默认 0。返回的拼接方式,默认为 fid + ':' + value,传 1 则不拼接 fid。

描述同上。

FeatureColumnFloatValues

原始特征

1

array

对于连续值原始特征,直接使用其原始值参与模型训练,一般用于仅更新模型参数而不更新特征 embeding。

FeatureColumnInt64Values

原始特征

1

array

对于连续值原始特征,直接使用其原始值参与模型训练,一般用于仅更新模型参数而不更新特征 embeding。