快捷搜索:

互联网广告CTR预估新算法,CTR的一些模型方案

日期:2019-07-10编辑作者:澳门新葡8455手机版

澳门新葡8455手机版 1

澳门新葡8455手机版 2CTR模型之间的对比

但是,这些模型普遍都存在两个问题:

最后如第一副图所示,FM和DNN的输出做多一层NN就在用sigmoid代表其输出概率。而FM和DNN是共享这个embeddings层。embeddings是对Field做的,也就是说基本每个特征都必须是category。相对于FNN和PNN来说,DeepFM无需用FM预训练embedding,也不像PNN那样只有高阶特征。

实际实现中采用的是FM化简之后的内积公式,最终的维度是:field_size embedding_size

LR最大的缺点就是无法组合特征,依赖于人工的特征组合,这也直接使得它表达能力受限,基本上只能处理线性可分或近似线性可分的问题。

澳门新葡8455手机版 3左侧FM structure

这里分别展开解释下维度的两部分是怎么来的,对于理解模型还是很重要的:

我们将raw feature做embeddings,将其映射到一个稠密的特征向量当中。因为raw feature太稀疏了,在神经网络中是很难训练好的。我们将这些特征映射好以后就将其合并在一齐做DNN,这样我们就得到了高阶特征。

把每个Field选出来的这些W的行,拼接起来就得到了X Embedding后的新的表示:维度是num(Field) * num(W.cols)。虽然每个Field的长度可能不同,但是都是在W中选择一行,所以选出来的长度是相同的。

DeepFM对PNN和FM做了整合,它认为FM训练的较为浅层的特征,而PNN训练得到较为深层的特征,于是将其两种整合一齐。因此作者称其为DeepFM。

其次,共享feature embedding。FM和Deep共享输入和feature embedding不但使得训练更快,而且使得训练更加准确。

  1. 数据量巨大:像一些大型的电商网站,游戏app,我们都会收集到大量的用户的数据和商品信息(上亿万级,可能上百G)。对于如此大量的数据,我们就应该考虑如何将所拥有的数据放入模型中训练。
  2. 特征维度高且稀疏:像电商平台里面,商品数据大多是都category,one label。当我们将其转化为one-hot并合并时,数据维度有可能爆炸。因此我们需要考虑如何处理好这些one label问题
  3. 存在时间序列:这些数据不是一成不变的,点击事件是不停产生。所以我们需要处理点击事件的时间序列问题。

W的每一行对应一个特征,相当于是我们拿输入Xi作为一个index, Xi的任意一个Field i中只有1个为1,其余的都是0。哪个位置的特征值为1,那么就选中W中对应的行,作为嵌入后这个Field i对应的新的特征表示。

看图就能理解了。我们先训练好GBDT,每个叶子节点都有一个权值。那么我们利用这些权值作为特征训练一个LR模型作为我们的输出结果。这个样子有点像迁移学习。代码如下

PNN缺点:

澳门新葡8455手机版 4GBDT

2. FM模型

澳门新葡8455手机版 5

无论是FNN还是PNN,他们都有一个绕不过去的缺点:对于低阶的组合特征,学习到的比较少。而前面我们说过,低阶特征对于CTR也是非常重要的。

显然FFM是FM的升级版本。相对于FM,FFM加入的就是field这个概念,field就是原始数据当中的每个字段。在FM当中,我们只考虑到特征的相关性,而没有考虑到field之间的相关性。FFM就是考虑到特征向量对field敏感的。在FM中,向量的个数是n,在FFM中,向量的个数的n * f。

  1. 没有预训练(no pre-training)
  2. 共享Feature Embedding,没有特征工程(no feature engineering)
  3. 同时学习低阶和高阶组合特征(capture both low-high-order interaction features)

FM在线性模型上加入以下特性:

Deep Component是用来学习高阶组合特征的。网络里面黑色的线是全连接层,参数需要神经网络去学习。

与FM不同,FFM的二项式考虑的是特征对应的Field。相对于FM不断增加latent vector长度来提高精度,FFM效果更好。

那么关键问题转化成:如何高效的提取这些组合特征。一种办法就是引入领域知识人工进行特征工程。这样做的弊端是高阶组合特征非常难提取,会耗费极大的人力。而且,有些组合特征是隐藏在数据中的,即使是专家也不一定能提取出来,比如著名的“尿布与啤酒”问题。

# -*- coding: utf-8 -*-from scipy.sparse.construct import hstackfrom sklearn.model_selection import train_test_splitfrom sklearn.datasets import load_breast_cancerfrom sklearn.linear_model.logistic import LogisticRegressionfrom sklearn.metrics.ranking import roc_auc_scorefrom sklearn.preprocessing.data import OneHotEncoderimport numpy as npimport lightgbm as lgbimport xgboost as xgbdef xgb_lr_train(): data = load_breast_cancer() X_train, X_valid, y_train, y_valid = train_test_split(data.data, data.target, test_size=0.3) xgboost = xgb.XGBClassifier(nthread=4, learning_rate=0.08, n_estimators=200, max_depth=5, gamma=0, subsample=0.9, colsample_bytree=0.5) xgboost.fit(X_train, y_train) xgb_valid_auc = roc_auc_score(y_valid, xgboost.predict print("XGBoost valid AUC: %.5f" % xgb_valid_auc) X_train_leaves = xgboost.apply X_valid_leaves = xgboost.apply all_leaves = np.concatenate((X_train_leaves, X_valid_leaves), axis=0) all_leaves = all_leaves.astype xgbenc = OneHotEncoder() X = xgbenc.fit_transform(all_leaves) (train_rows, cols) = X_train_leaves.shape lr = LogisticRegression() lr.fit(X[:train_rows, :], y_train) xgb_lr_valid_auc = roc_auc_score(y_valid, lr.predict_proba(X[train_rows:, :])[:, 1]) print("XGBoost-LR valid AUC: %.5f" % xgb_lr_valid_auc) # X_train_leaves = lgb_model.apply # X_valid_leaves = lgb_model.applyif __name__ == '__main__': xgb_lr_train()
  • LR/FM

这也是Embedding的一个特性:虽然输入的Field长度不同,但是Embedding之后的长度是相同的。

作者认为FM中线性组合为一阶特征,交叉组合是二阶特征。所以这部分就是一个FM模型。

注意:

最近小弟参加了腾讯广告算法竞赛,虽然之前做了一次总结。但我觉得之前那个可能有点泛泛而谈,因此本次想仔细的讲讲关于CTR推荐算法常用的一些模型。对于CTR预测或者推荐算法,数据大多主要是用户数据和推荐的商品,广告数据。这些数据都有一个很大的特点:稀疏。在机器学习上面。我们通常把这些问题使用有监督学习算法做二分类预测,我们将其看作一个概率模型P(click| product data, user data)。CTR在很多互联网公司都是及其重要的,因为提高点击率带来流量和收益。无论是工程上还是数据分析上,CTR问题都是很有挑战性:

优点:

  1. 考虑特征之间的关联性
  2. 将稀疏的特征用一个特征向量表示,使得特征从稀疏变得稠密

    澳门新葡8455手机版 6FM模型数学表达

    在前面的w_0与w_i作为参数组成了线性模型,而后项考虑到特征之间的相关性。而v_i和v_j是x_i和x_j的代表向量特征。本来这个二项式的参数是w_ij代表两两特征之间的相关性。但这样的二项式参数有n / 2,那就是半个矩阵的参数,而其实这个参数矩阵可能很稀疏的,因为不是每两维特征之间存在相关性。所以我们就将矩阵分解成latent vector,w_ij = v_i * v_j。这样一来,参数变少了(n * k,k为vector的长度,k << n),而且没必要训练的变量也变稠密了。

相比之下,Wide&Deep中,input vector非常大,里面包含了大量的人工设计的pairwise组合特征,增加了他的计算复杂度。

可见DeepFM不需要pre-training,不需要feature engineering,同时既有低阶特征,也有高阶特征。

澳门新葡8455手机版 7

CTR预测需要很强的业务思考能力,找出一些强特征。有强特征,一切都好办。在机器学习里面,我们都认为我们手上的特征和数据决定我们预测的上面,而模型只是不同的逼近这个上限。所以业务能力和特征工程在CTR上是及其重要的一环。有了好的特征,我们用LR也能得到很好的结果。当然现在我们在工程上面,希望能降低data mining的能力,快速得到很好的结果(这不是说data mining不重要,而是我们希望能够弱化其难度但也能得到很好结果)。随着NN的快速发展,业界出现了很多效果棒且不需很强data mining能力的,例如GBDT LR,FM,FFM,FNN,PNN,deepFM,NFFM等等。这里我介绍一些我用过的模型。

FM通过隐向量latent vector做内积来表示组合特征,从理论上解决了低阶和高阶组合特征提取的问题。

其实我觉得这些模型都挺实在的,尤其DeepFM,它弱化了特征工程的,让我们可以轻松的把指标提上去。虽然有好的模型,但我这里还是要跟大家讲一句,特征才是重点当中的重点。在CTR,我们要让模型做到更好的个性化,就必须把特征做细粒度,特征越细越具备个性化。这大概是我这段时间做CTR预测的一些想法吧。

原标题:互联网广告CTR预估新算法:基于神经网络的DeepFM原理解读

澳门新葡8455手机版 8FM公式澳门新葡8455手机版 9右侧Deep Component

CTR预估重点在于学习组合特征。注意,组合特征包括二阶、三阶甚至更高阶的,阶数越高越复杂,越不容易学习。

澳门新葡8455手机版 10FFM的二项式

CTR预估数据特点:

澳门新葡8455手机版 11structure of DeepFM

这里的X是one-hot之后的,one-hot之后,我们认为X的每一列都是一个单独的维度的特征。

是多少那?是W!W对应的就是这些维度特征的权重。假设one-hot之后特征数量是feature_size,那么W的维度就是 (feature_size, 1)。

DeepFM在Wide&Deep的基础上进行改进,成功解决了这两个问题,并做了一些改进,其优势/优点如下:

全文大约2500字。读完可能需要下面这首歌的时间

对比其他模型

  1. 不需要预训练FM得到隐向量
  2. 不需要人工特征工程
  3. 能同时学习低阶和高阶的组合特征
  4. FM模块和Deep模块共享Feature Embedding部分,可以更快的训练,以及更精确的训练学习

这里继续补充下Embedding层,两个特点:

DeepFM架构图:

[FNN]

澳门新葡8455手机版 12

FM架构图:

Google意识到了这个问题,为了同时学习低阶和高阶组合特征,提出了Wide&Deep模型。

后面又进行了改进,提出了FFM,增加了Field的概念。

澳门新葡8455手机版 13

但是,CNN模型的缺点是:偏向于学习相邻特征的组合特征。 RNN模型的缺点是:比较适用于有序列(时序)关系的数据。

但是内积的计算复杂度依旧非常高,原因是:product layer的输出是要和第一个隐藏层进行全连接的。

下面,就让我们走进DeepFM的世界,一起去看看它到底是怎么解决这些问题的!

Wide部分可以用LR来替换,这样的话就和DeepFM差不多了。 但是DeepFM共享feature embedding 这个特性使得在反向传播的时候,模型学习feature embedding,而后又会在前向传播的时候影响低阶和高阶特征的学习,这使得学习更加的准确。

FNN使用预训练的FM来初始化DNN,然后只有Deep部分,不能学习低阶组合特征。

澳门新葡8455手机版 ,3. 遇上深度学习

主要做法如下:

虽然公式上Y_fm是所有部分都求和,是一个标量。但是从FM模块的架构图上我们可以看到,输入到输出单元的部分并不是一个标量,应该是一个向量。

  1. 尽管输入的长度不同,但是映射后长度都是相同的.embedding_size 或 k
  2. embedding层的参数其实是全连接的Weights,是通过神经网络自己学习到的

知识点:

Wide&Deep缺点:

  1. 内积外积计算复杂度高。采用近似计算的方法外积没有内积稳定
  2. product layer的输出需要与第一个隐藏层全连接,导致计算复杂度居高不下
  3. 和FNN一样,只能学习到高阶的特征组合。没有对于1阶和2阶特征进行建模

第一、field_size对应的是

这里最后的结果中是在[1,K]上的一个求和。 K就是W的列数,就是Embedding后的维度,也就是embedding_size。也就是说,在DeepFM的FM模块中,最后没有对结果从[1,K]进行求和。而是把这K个数拼接起来形成了一个K维度的向量。

[Wide&Deep]

线性模型差强人意,直接导致了FM模型应运而生(在Kaggle上打比赛提出来的,取得了第一名的成绩)。

  1. 没有用FM去预训练隐向量V,并用V去初始化神经网络。(相比之下FNN就需要预训练FM来初始化DNN)
  2. FM模块不是独立的,是跟整个模型一起训练学习得到的。(相比之下Wide&Deep中的Wide和Deep部分是没有共享的)
  3. 不需要特征工程。(相比之下Wide&Deep中的Wide部分需要特征工程)
  4. 训练效率高。(相比PNN没有那么多参数)

偏向于提取低阶或者高阶的组合特征。不能同时提取这两种类型的特征。 需要专业的领域知识来做特征工程。

根据product layer使用内积、外积、混合分别衍生出IPNN, OPNN, PNN*三种类型。

澳门新葡8455手机版 14返回搜狐,查看更多

FM Component总结:

本文由澳门新葡8455手机版发布于澳门新葡8455手机版,转载请注明出处:互联网广告CTR预估新算法,CTR的一些模型方案

关键词:

我国科研人员利用LAMOST发现锂丰度最高的巨星,

原标题:笔者国实验商讨人士利用LAMOST开采锂丰度最高的巨星 [video:20180807郭守敬望远镜宣布光谱巡天重大成果:开掘...

详细>>

澳门新葡8455手机版再占榜首,酷家乐AI研究论文

北大 TSAIL 联合Tencent AI Lab 争夺季军 FPS 游戏 AI 比赛 VizDoom CVPHaval由五洲最大的非营利性专门的学问才干学会IEEE(电气...

详细>>

澳门新葡8455手机版网络搜寻引擎怎么样重塑世界

原标题:中兴解禁后的第 52 天,我们可能摆脱美国科技产品吗? 原标题:谷歌20年“征战史”:互联网搜索引擎如何...

详细>>

澳门新葡8455手机版:睡觉对读书有何震慑,为何

原标题:新研究:睡眠对上学有怎么着震慑 北京时间5月二十一日信息,据韩国媒体报纸发表,在发达国家中最让人害...

详细>>