-
Notifications
You must be signed in to change notification settings - Fork 1k
自动稠密特征工程
lovickie edited this page Aug 27, 2019
·
2 revisions
可在训练引擎内进行特征级别的counting统计,从而简化离线特征计算流程的复杂度
在xdl.embedding接口函数中添加参数statis_list、statis_decay、statis_decay_period、labels,典型例子如下:
emb, statis = xdl.embedding(emb_name, batch["unit_id_expand"], xdl.Normal(stddev=0.001),
emb_dim, 50000, emb_combiner, vtype="hash",
feature_add_probability=feature_add_probability,
statis_list=['click'], statis_decay=0.07, statis_decay_period=10,
labels=batch['label'])
# emb 是原embedding的输出,进入dense网络。
# statis 是统计输出,也可进入dense网络计算,也可由xdl.TrainSession(hooks).run()打印结果。数目与statis_list一致。
- statis_list是统计类型名列表,目前支持'pv'、'click'两种。
- statis_decay是global_step经过statis_decay_period轮次后的衰减因子,S[N] = a[N] + decay * S[N-1]。
- labels是batch["label"],用于click统计。
- 记录每个ID更新的global_step,避免定期的全局衰减。
/*
* S[0] = a[0]
* S[N] = a[N] + decay * S[N-1]
* = a[N] + decay*a[N-1] + decay^2*a[N-2] + ... + decay^(N-1)*a[1] + decay^N*a[0]
* = a[N] + decay^(N-n) * S[n] (if a[n+1:N] == 0)
*
* N = gs / period
* data = click + data * pow(decay, N - updated_n)
* updated_n = N
*/