当前位置: 首页 > news >正文

旅游网站品牌建设旅游网站需求分析

旅游网站品牌建设,旅游网站需求分析,手表官网,建行个人余额查询网站FM和FFM模型是最近几年提出的模型#xff0c;凭借其在数据量比较大并且特征稀疏的情况下#xff0c;仍然能够得到优秀的性能和效果的特性#xff0c;屡次在各大公司举办的CTR预估比赛中获得不错的战绩。美团技术团队在搭建DSP的过程中#xff0c;探索并使用了FM和FFM模型进… FM和FFM模型是最近几年提出的模型凭借其在数据量比较大并且特征稀疏的情况下仍然能够得到优秀的性能和效果的特性屡次在各大公司举办的CTR预估比赛中获得不错的战绩。美团技术团队在搭建DSP的过程中探索并使用了FM和FFM模型进行CTR和CVR预估并且取得了不错的效果。本文旨在把我们对FM和FFM原理的探索和应用的经验介绍给有兴趣的读者。 在计算广告领域点击率CTRclick-through rate和转化率CVRconversion rate是衡量广告流量的两个关键指标。准确的估计CTR、CVR对于提高流量的价值增加广告收入有重要的指导作用。预估CTR/CVR业界常用的方法有人工特征工程 LR(Logistic Regression)、GBDT(Gradient Boosting Decision Tree) LR[1][2][3]、FMFactorization Machine[2][7]和FFMField-aware Factorization Machine[9]模型。在这些模型中FM和FFM近年来表现突出分别在由Criteo和Avazu举办的CTR预测竞赛中夺得冠军[4][5]。 考虑到FFM模型在CTR预估比赛中的不俗战绩美团技术团队在搭建DSPDemand Side Platform[6]平台时在站内CTR/CVR的预估上使用了该模型取得了不错的效果。本文是基于对FFM模型的深度调研和使用经验从原理、实现和应用几个方面对FFM进行探讨希望能够从原理上解释FFM模型在点击率预估上取得优秀效果的原因。因为FFM是在FM的基础上改进得来的所以我们首先引入FM模型本文章节组织方式如下 首先介绍FM的原理。其次介绍FFM对FM的改进。然后介绍FFM的实现细节。最后介绍模型在DSP场景的应用。FMFactorization Machine是由Konstanz大学Steffen Rendle现任职于Google于2010年最早提出的旨在解决稀疏数据下的特征组合问题[7]。下面以一个示例引入FM模型。假设一个广告分类的问题根据用户和广告位相关的特征预测用户是否点击了广告。源数据如下[8] Clicked?CountryDayAd_type1USA26/11/15Movie0China1/7/14Game1China19/2/15Game“Clicked?“是labelCountry、Day、Ad_type是特征。由于三种特征都是categorical类型的需要经过独热编码One-Hot Encoding转换成数值型特征。 Clicked?CountryUSACountryChinaDay26/11/15Day1/7/14Day19/2/15Ad_typeMovieAd_typeGame110100100010100110100101由上表可以看出经过One-Hot编码之后大部分样本数据特征是比较稀疏的。上面的样例中每个样本有7维特征但平均仅有3维特征具有非零值。实际上这种情况并不是此例独有的在真实应用场景中这种情况普遍存在。例如CTR/CVR预测时用户的性别、职业、教育水平、品类偏好商品的品类等经过One-Hot编码转换后都会导致样本数据的稀疏性。特别是商品品类这种类型的特征如商品的末级品类约有550个采用One-Hot编码生成550个数值特征但每个样本的这550个特征有且仅有一个是有效的非零。由此可见数据稀疏性是实际问题中不可避免的挑战。 One-Hot编码的另一个特点就是导致特征空间大。例如商品品类有550维特征一个categorical特征转换为550维数值特征特征空间剧增。 同时通过观察大量的样本数据可以发现某些特征经过关联之后与label之间的相关性就会提高。例如“USA”与“Thanksgiving”、“China”与“Chinese New Year”这样的关联特征对用户的点击有着正向的影响。换句话说来自“China”的用户很可能会在“Chinese New Year”有大量的浏览、购买行为而在“Thanksgiving”却不会有特别的消费行为。这种关联特征与label的正向相关性在实际问题中是普遍存在的如“化妆品”类商品与“女”性“球类运动配件”的商品与“男”性“电影票”的商品与“电影”品类偏好等。因此引入两个特征的组合是非常有意义的。 多项式模型是包含特征组合的最直观的模型。在多项式模型中特征 \( x_i \) 和 \( x_j \) 的组合采用 \( x_i x_j \) 表示即 \( x_i \) 和 \( x_j \) 都非零时组合特征 \( x_i x_j \) 才有意义。从对比的角度本文只讨论二阶多项式模型。模型的表达式如下 \[ y(\mathbf{x}) w_0 \sum_{i1}^n w_i x_i \sum_{i1}^n \sum_{ji1}^n w_{ij} x_i x_j \label{eq:poly}\tag{1} \] 其中\( n \) 代表样本的特征数量\( x_i \) 是第 \( i \) 个特征的值\( w_0 \)、\( w_i \)、\( w_{ij} \) 是模型参数。 从公式\eqref{eq:poly}可以看出组合特征的参数一共有 \( \frac{n(n-1)}{2} \) 个任意两个参数都是独立的。然而在数据稀疏性普遍存在的实际应用场景中二次项参数的训练是很困难的。其原因是每个参数 \( w_{ij} \) 的训练需要大量 \( x_i \) 和 \( x_j \) 都非零的样本由于样本数据本来就比较稀疏满足“\( x_i \) 和 \( x_j \) 都非零”的样本将会非常少。训练样本的不足很容易导致参数 \( w_{ij} \) 不准确最终将严重影响模型的性能。 那么如何解决二次项参数的训练问题呢矩阵分解提供了一种解决思路。在model-based的协同过滤中一个rating矩阵可以分解为user矩阵和item矩阵每个user和item都可以采用一个隐向量表示[8]。比如在下图中的例子中我们把每个user表示成一个二维向量同时把每个item表示成一个二维向量两个向量的点积就是矩阵中user对item的打分。 类似地所有二次项参数 \( w_{ij} \) 可以组成一个对称阵 \( \mathbf{W} \)为了方便说明FM的由来对角元素可以设置为正实数那么这个矩阵就可以分解为 \( \mathbf{W} \mathbf{V}^T \mathbf{V} \)\( \mathbf{V} \) 的第 \( j \) 列便是第 \( j \) 维特征的隐向量。换句话说每个参数 \( w_{ij} \langle \mathbf{v}_i, \mathbf{v}_j \rangle \)这就是FM模型的核心思想。因此FM的模型方程为本文不讨论FM的高阶形式 \[ y(\mathbf{x}) w_0 \sum_{i1}^n w_i x_i \sum_{i1}^n \sum_{ji1}^n \langle \mathbf{v}_i, \mathbf{v}_j \rangle x_i x_j \label{eq:fm}\tag{2} \] 其中\( \mathbf{v}_i \) 是第 \( i \) 维特征的隐向量\( \langle\cdot, \cdot\rangle \) 代表向量点积。隐向量的长度为 \( k \)\( k n \)包含 \( k \) 个描述特征的因子。根据公式\eqref{eq:fm}二次项的参数数量减少为 \( kn \)个远少于多项式模型的参数数量。另外参数因子化使得 \( x_h x_i \) 的参数和 \( x_i x_j \) 的参数不再是相互独立的因此我们可以在样本稀疏的情况下相对合理地估计FM的二次项参数。具体来说\( x_h x_i \) 和 \( x_i x_j \) 的系数分别为 \( \langle \mathbf{v}_h, \mathbf{v}_i \rangle \) 和 \( \langle \mathbf{v}_i, \mathbf{v}_j \rangle \)它们之间有共同项 \( \mathbf{v}_i \)。也就是说所有包含“\( x_i \) 的非零组合特征”存在某个 \( j\neq i \)使得 \( x_i x_j \neq 0 \)的样本都可以用来学习隐向量 \( \mathbf{v}_i \)这很大程度上避免了数据稀疏性造成的影响。而在多项式模型中\( w_{hi} \) 和 \( w_{ij} \) 是相互独立的。 显而易见公式\eqref{eq:fm}是一个通用的拟合方程可以采用不同的损失函数用于解决回归、二元分类等问题比如可以采用MSEMean Square Error损失函数来求解回归问题也可以采用Hinge/Cross-Entropy损失来求解分类问题。当然在进行二元分类时FM的输出需要经过sigmoid变换这与Logistic回归是一样的。直观上看FM的复杂度是 \( O(kn^2) \)。但是通过公式\eqref{eq:fm_conv}的等式FM的二次项可以化简其复杂度可以优化到 \( O(kn) \)[7]。由此可见FM可以在线性时间对新样本作出预测。 \[ \sum_{i1}^n \sum_{ji1}^n \langle \mathbf{v}_i, \mathbf{v}_j \rangle x_i x_j \frac{1}{2} \sum_{f1}^k \left(\left( \sum_{i1}^n v_{i, f} x_i \right)^2 - \sum_{i1}^n v_{i, f}^2 x_i^2 \right) \label{eq:fm_conv}\tag{3} \] 我们再来看一下FM的训练复杂度利用SGDStochastic Gradient Descent训练模型。模型各个参数的梯度如下 \[ \frac{\partial}{\partial\theta} y (\mathbf{x}) \left\{\begin{array}{ll} 1, \text{if}\; \theta\; \text{is}\; w_0 \x_i, \text{if}\; \theta\; \text{is}\; w_i \x_i \sum_{j1}^n v_{j, f} x_j - v_{i, f} x_i^2, \text{if}\; \theta\; \text{is}\; v_{i, f} \end{array}\right. \] 其中\( v_{j, f} \) 是隐向量 \( \mathbf{v}_j \) 的第 \( f \) 个元素。由于 \( \sum_{j1}^n v_{j, f} x_j \) 只与 \( f \) 有关而与 \( i \) 无关在每次迭代过程中只需计算一次所有 \( f \) 的 \( \sum_{j1}^n v_{j, f} x_j \)就能够方便地得到所有 \( v_{i, f} \) 的梯度。显然计算所有 \( f \) 的 \( \sum_{j1}^n v_{j, f} x_j \) 的复杂度是 \( O(kn) \)已知 \( \sum_{j1}^n v_{j, f} x_j \) 时计算每个参数梯度的复杂度是 \( O(1) \)得到梯度后更新每个参数的复杂度是 \( O(1) \)模型参数一共有 \( nk n 1 \) 个。因此FM参数训练的复杂度也是 \( O(kn) \)。综上可知FM可以在线性时间训练和预测是一种非常高效的模型。 FM与其他模型的对比 FM是一种比较灵活的模型通过合适的特征变换方式FM可以模拟二阶多项式核的SVM模型、MF模型、SVD模型等[7]。 相比SVM的二阶多项式核而言FM在样本稀疏的情况下是有优势的而且FM的训练/预测复杂度是线性的而二项多项式核SVM需要计算核矩阵核矩阵复杂度就是N平方。 相比MF而言我们把MF中每一项的rating分改写为 \( r_{ui} \sim \beta_u \gamma_i x_u^T y_i \)从公式\eqref{eq:fm}中可以看出这相当于只有两类特征 \( u \) 和 \( i \) 的FM模型。对于FM而言我们可以加任意多的特征比如user的历史购买平均值item的历史购买平均值等但是MF只能局限在两类特征。SVD与MF类似在特征的扩展性上都不如FM在此不再赘述。 FFMField-aware Factorization Machine最初的概念来自Yu-Chin Juan阮毓钦毕业于中国台湾大学现在美国Criteo工作与其比赛队员是他们借鉴了来自Michael Jahrer的论文[14]中的field概念提出了FM的升级版模型。通过引入field的概念FFM把相同性质的特征归于同一个field。以上面的广告分类为例“Day26/11/15”、“Day1/7/14”、“Day19/2/15”这三个特征都是代表日期的可以放到同一个field中。同理商品的末级品类编码生成了550个特征这550个特征都是说明商品所属的品类因此它们也可以放到同一个field中。简单来说同一个categorical特征经过One-Hot编码生成的数值特征都可以放到同一个field包括用户性别、职业、品类偏好等。在FFM中每一维特征 \( x_i \)针对其它特征的每一种field \( f_j \)都会学习一个隐向量 \( \mathbf{v}_{i, f_j} \)。因此隐向量不仅与特征相关也与field相关。也就是说“Day26/11/15”这个特征与“Country”特征和“Ad_type”特征进行关联的时候使用不同的隐向量这与“Country”和“Ad_type”的内在差异相符也是FFM中“field-aware”的由来。 假设样本的 \( n \) 个特征属于 \( f \) 个field那么FFM的二次项有 \( nf \)个隐向量。而在FM模型中每一维特征的隐向量只有一个。FM可以看作FFM的特例是把所有特征都归属到一个field时的FFM模型。根据FFM的field敏感特性可以导出其模型方程。 \[ y(\mathbf{x}) w_0 \sum_{i1}^n w_i x_i \sum_{i1}^n \sum_{ji1}^n \langle \mathbf{v}_{i, f_j}, \mathbf{v}_{j, f_i} \rangle x_i x_j \label{eq:ffm}\tag{4} \] 其中\( f_j \) 是第 \( j \) 个特征所属的field。如果隐向量的长度为 \( k \)那么FFM的二次参数有 \( nfk \) 个远多于FM模型的 \( nk \) 个。此外由于隐向量与field相关FFM二次项并不能够化简其预测复杂度是 \( O(kn^2) \)。 下面以一个例子简单说明FFM的特征组合方式[9]。输入记录如下 UserMovieGenrePriceYuChin3IdiotsComedy, Drama$9.99这条记录可以编码成5个特征其中“GenreComedy”和“GenreDrama”属于同一个field“Price”是数值型不用One-Hot编码转换。为了方便说明FFM的样本格式我们将所有的特征和对应的field映射成整数编号。 Field nameField indexFeature nameFeature indexUser1UserYuChin1Movie2Movie3Idiots2Genre3GenreComedy3Price4GenreDrama4Price5那么FFM的组合特征有10项如下图所示。 \[ \begin{align*}\begin{array}{r} \langle \mathbf{v}_{{\color{blue}1}, {\color{red}2}}, \mathbf{v}_{{\color{blue}2}, {\color{red}1}} \rangle \cdot {\color{green}1} \cdot {\color{green}1} \langle \mathbf{v}_{{\color{blue}1}, {\color{red}3}}, \mathbf{v}_{{\color{blue}3}, {\color{red}1}} \rangle \cdot {\color{green}1} \cdot {\color{green}1} \langle \mathbf{v}_{{\color{blue}1}, {\color{red}3}}, \mathbf{v}_{{\color{blue}4}, {\color{red}1}} \rangle \cdot {\color{green}1} \cdot {\color{green}1} \langle \mathbf{v}_{{\color{blue}1}, {\color{red}4}}, \mathbf{v}_{{\color{blue}5}, {\color{red}1}} \rangle \cdot {\color{green}1} \cdot {\color{green}{9.99}} \{} \langle \mathbf{v}_{{\color{blue}2}, {\color{red}3}}, \mathbf{v}_{{\color{blue}3}, {\color{red}2}} \rangle \cdot {\color{green}1} \cdot {\color{green}1} \langle \mathbf{v}_{{\color{blue}2}, {\color{red}3}}, \mathbf{v}_{{\color{blue}4}, {\color{red}2}} \rangle \cdot {\color{green}1} \cdot {\color{green}1} \langle \mathbf{v}_{{\color{blue}2}, {\color{red}4}}, \mathbf{v}_{{\color{blue}5}, {\color{red}2}} \rangle \cdot {\color{green}1} \cdot {\color{green}{9.99}} \{} \langle \mathbf{v}_{{\color{blue}3}, {\color{red}3}}, \mathbf{v}_{{\color{blue}4}, {\color{red}3}} \rangle \cdot {\color{green}1} \cdot {\color{green}1} \langle \mathbf{v}_{{\color{blue}3}, {\color{red}4}}, \mathbf{v}_{{\color{blue}5}, {\color{red}3}} \rangle \cdot {\color{green}1} \cdot {\color{green}{9.99}} \{} \langle \mathbf{v}_{{\color{blue}4}, {\color{red}4}}, \mathbf{v}_{{\color{blue}5}, {\color{red}3}} \rangle \cdot {\color{green}1} \cdot {\color{green}{9.99}} \end{array}\end{align*} \] 其中红色是field编号蓝色是特征编号绿色是此样本的特征取值。二次项的系数是通过与特征field相关的隐向量点积得到的二次项共有 \( \frac{n(n-1)}{2} \) 个。 Yu-Chin Juan实现了一个C版的FFM模型源码可从Github下载[10]。这个版本的FFM省略了常数项和一次项模型方程如下。 \[ \phi(\mathbf{w}, \mathbf{x}) \sum_{j_1, j_2 \in \mathcal{C}_2} \langle \mathbf{w}_{j_1, f_2}, \mathbf{w}_{j_2, f_1} \rangle x_{j_1} x_{j_2} \label{eq:phi}\tag{5} \] 其中\( \mathcal{C}_2 \) 是非零特征的二元组合\( j_1 \) 是特征属于field \( f_1 \)\( \mathbf{w}_{j_1, f_2} \) 是特征 \( j_1 \) 对field \( f_2 \) 的隐向量。此FFM模型采用logistic loss作为损失函数和L2惩罚项因此只能用于二元分类问题。 \[ \min_{\mathbf{w}} \sum_{i1}^L \log \big( 1 \exp\{ -y_i \phi (\mathbf{w}, \mathbf{x}_i ) \} \big) \frac{\lambda}{2} \| \mathbf{w} \|^2 \] 其中\( y_i \in \{-1, 1\} \) 是第 \( i \) 个样本的label\( L \) 是训练样本数量\( \lambda \) 是惩罚项系数。模型采用SGD优化优化流程如下。 参考 \( Algorithm\; 1 \), 下面简单解释一下FFM的SGD优化过程。 算法的输入 \( tr \)、\(va\)、\( pa \) 分别是训练样本集、验证样本集和训练参数设置。 根据样本特征数量\( tr.n \)、field的个数\( tr.m \)和训练参数\( pa \)生成初始化模型即随机生成模型的参数如果归一化参数 \( pa.norm \) 为真计算训练和验证样本的归一化系数样本 \( i \) 的归一化系数为 \[ R[i] \frac{1}{\| \mathbf{X}[i] \|} \]对每一轮迭代如果随机更新参数 \( pa.rand \) 为真随机打乱训练样本的顺序对每一个训练样本执行如下操作 计算每一个样本的FFM项即公式\eqref{eq:phi}中的输出 \( \phi \)计算每一个样本的训练误差如算法所示这里采用的是交叉熵损失函数 \( \log ( 1 e\phi )\)利用单个样本的损失函数计算梯度 \( g_\Phi \)再根据梯度更新模型参数对每一个验证样本计算样本的FFM输出计算验证误差重复步骤3~5直到迭代结束或验证误差达到最小。在SGD寻优时代码采用了一些小技巧对于提升计算效率是非常有效的。 第一梯度分步计算。采用SGD训练FFM模型时只采用单个样本的损失函数来计算模型参数的梯度。 \[ \mathcal{L} \mathcal{L}_{err} \mathcal{L}_{reg} \log \big( 1 \exp\{ -y_i \phi(\mathbf{w}, \mathbf{x}_i )\} \big) \frac{\lambda}{2} \| \mathbf{w} \|^2 \] \[ \frac{\partial\mathcal{L}}{\partial\mathbf{w}} \frac{\partial\mathcal{L}_{err}}{\partial\phi}\cdot \frac{\partial\phi}{\partial\mathbf{w}} \frac{\partial\mathcal{L}_{reg}}{\partial\mathbf{w}} \] 上面的公式表明\( \frac{\partial\mathcal{L}_{err}}{\partial\phi} \) 与具体的模型参数无关。因此每次更新模型时只需计算一次之后直接调用 \( \frac{\partial\mathcal{L}_{err}}{\partial\phi} \) 的值即可。对于更新 \( nfk \) 个模型参数这种方式能够极大提升运算效率。 第二自适应学习率。此版本的FFM实现没有采用常用的指数递减的学习率更新策略而是利用 \( nfk \) 个浮点数的临时空间自适应地更新学习率。学习率是参考AdaGrad算法计算的[11]按如下方式更新 \[ w^{‘}_{j_1, f_2} w_{j_1, f_2} - \frac{\eta}{\sqrt{1 \sum_t (g^t_{w_{j_1, f_2}})^2 }}\cdot g_{w_{j_1, f_2}} \] 其中\( w_{j_1, f_2} \) 是特征 \( j_1 \) 对field \( f_2 \) 隐向量的一个元素元素下标未标出\( g_{w_{j_1, f_2}} \) 是损失函数对参数 \( w_{j_1, f_2} \) 的梯度\( g^t_{w_{j_1, f_2}} \) 是第 \( t \) 次迭代的梯度\( \eta \) 是初始学习率。可以看出随着迭代的进行每个参数的历史梯度会慢慢累加导致每个参数的学习率逐渐减小。另外每个参数的学习率更新速度是不同的与其历史梯度有关根据AdaGrad的特点对于样本比较稀疏的特征学习率高于样本比较密集的特征因此每个参数既可以比较快速达到最优也不会导致验证误差出现很大的震荡。 第三OpenMP多核并行计算。OpenMP是用于共享内存并行系统的多处理器程序设计的编译方案便于移植和多核扩展[12]。FFM的源码采用了OpenMP的API对参数训练过程SGD进行了多线程扩展支持多线程编译。因此OpenMP技术极大地提高了FFM的训练效率和多核CPU的利用率。在训练模型时输入的训练参数ns_threads指定了线程数量一般设定为CPU的核心数便于完全利用CPU资源。 第四SSE3指令并行编程。SSE3全称为数据流单指令多数据扩展指令集3是CPU对数据层并行的关键指令主要用于多媒体和游戏的应用程序中[13]。SSE3指令采用128位的寄存器同时操作4个单精度浮点数或整数。SSE3指令的功能非常类似于向量运算。例如\( a \) 和 \( b \) 采用SSE3指令相加\( a \) 和 \( b \) 分别包含4个数据其功能是 \( a \) 中的4个元素与 \( b \) 中4个元素对应相加得到4个相加后的值。采用SSE3指令后向量运算的速度更加快捷这对包含大量向量运算的FFM模型是非常有利的。 除了上面的技巧之外FFM的实现中还有很多调优技巧需要探索。例如代码是按field和特征的编号申请参数空间的如果选取了非连续或过大的编号就会造成大量的内存浪费在每个样本中加入值为1的新特征相当于引入了因子化的一次项避免了缺少一次项带来的模型偏差等。 在DSP的场景中FFM主要用来预估站内的CTR和CVR即一个用户对一个商品的潜在点击率和点击后的转化率。 CTR和CVR预估模型都是在线下训练然后用于线上预测。两个模型采用的特征大同小异主要有三类用户相关的特征、商品相关的特征、以及用户-商品匹配特征。用户相关的特征包括年龄、性别、职业、兴趣、品类偏好、浏览/购买品类等基本信息以及用户近期点击量、购买量、消费额等统计信息。商品相关的特征包括所属品类、销量、价格、评分、历史CTR/CVR等信息。用户-商品匹配特征主要有浏览/购买品类匹配、浏览/购买商家匹配、兴趣偏好匹配等几个维度。 为了使用FFM方法所有的特征必须转换成“field_id:feat_id:value”格式field_id代表特征所属field的编号feat_id是特征编号value是特征的值。数值型的特征比较容易处理只需分配单独的field编号如用户评论得分、商品的历史CTR/CVR等。categorical特征需要经过One-Hot编码成数值型编码产生的所有特征同属于一个field而特征的值只能是0或1如用户的性别、年龄段商品的品类id等。除此之外还有第三类特征如用户浏览/购买品类有多个品类id且用一个数值衡量用户浏览或购买每个品类商品的数量。这类特征按照categorical特征处理不同的只是特征的值不是0或1而是代表用户浏览或购买数量的数值。按前述方法得到field_id之后再对转换后特征顺序编号得到feat_id特征的值也可以按照之前的方法获得。 CTR、CVR预估样本的类别是按不同方式获取的。CTR预估的正样本是站内点击的用户-商品记录负样本是展现但未点击的记录CVR预估的正样本是站内支付发生转化的用户-商品记录负样本是点击但未支付的记录。构建出样本数据后采用FFM训练预估模型并测试模型的性能。 #(field)#(feature)AUCLogloss站内CTR3924560.770.38站内CVR6724410.920.13由于模型是按天训练的每天的性能指标可能会有些波动但变化幅度不是很大。这个表的结果说明站内CTR/CVR预估模型是非常有效的。 在训练FFM的过程中有许多小细节值得特别关注。 第一样本归一化。FFM默认是进行样本数据的归一化即 \( pa.norm \) 为真若此参数设置为假很容易造成数据inf溢出进而引起梯度计算的nan错误。因此样本层面的数据是推荐进行归一化的。 第二特征归一化。CTR/CVR模型采用了多种类型的源特征包括数值型和categorical类型等。但是categorical类编码后的特征取值只有0或1较大的数值型特征会造成样本归一化后categorical类生成特征的值非常小没有区分性。例如一条用户-商品记录用户为“男”性商品的销量是5000个假设其它特征的值为零那么归一化后特征“sexmale”性别为男的值略小于0.0002而“volume”销量的值近似为1。特征“sexmale”在这个样本中的作用几乎可以忽略不计这是相当不合理的。因此将源数值型特征的值归一化到 \( [0, 1] \) 是非常必要的。 第三省略零值特征。从FFM模型的表达式\eqref{eq:ffm}可以看出零值特征对模型完全没有贡献。包含零值特征的一次项和组合项均为零对于训练模型参数或者目标值预估是没有作用的。因此可以省去零值特征提高FFM模型训练和预测的速度这也是稀疏样本采用FFM的显著优势。 本文主要介绍了FFM的思路来源和理论原理并结合源码说明FFM的实际应用和一些小细节。从理论上分析FFM的参数因子化方式具有一些显著的优势特别适合处理样本稀疏性问题且确保了较好的性能从应用结果来看站内CTR/CVR预估采用FFM是非常合理的各项指标都说明了FFM在点击率预估方面的卓越表现。当然FFM不一定适用于所有场景且具有超越其他模型的性能合适的应用场景才能成就FFM的“威名”。 http://blog.csdn.net/lilyth_lilyth/article/details/48032119http://www.cnblogs.com/Matrix_Yao/p/4773221.htmlhttp://www.herbrich.me/papers/adclicksfacebook.pdfhttps://www.kaggle.com/c/criteo-display-ad-challengehttps://www.kaggle.com/c/avazu-ctr-predictionhttps://en.wikipedia.org/wiki/Demand-side_platformhttp://www.algo.uni-konstanz.de/members/rendle/pdf/Rendle2010FM.pdfhttp://www.cs.cmu.edu/~wcohen/10-605/2015-guest-lecture/FM.pdfhttp://www.csie.ntu.edu.tw/~r01922136/slides/ffm.pdfhttps://github.com/guestwalk/libffmhttps://en.wikipedia.org/wiki/Stochastic_gradient_descent#AdaGradhttp://openmp.org/wp/openmp-specifications/http://blog.csdn.net/gengshenghong/article/details/7008704https://kaggle2.blob.core.windows.net/competitions/kddcup2012/2748/media/Opera.pdf
http://www.pierceye.com/news/72822/

相关文章:

  • 投资建设网站首页wordpress建站连接数据库
  • 一起做网店类型的网站广东东莞电子厂
  • 南阳网站seo推广公司中国建筑土木建设有限公司网站
  • 嵊州建设局网站快递网站建设需求分析
  • 公司找人做网站需要什么信息流优化师职业规划
  • 网站设计 优帮云永久免费内存大服务器
  • 做简单网站需要学什么网页设计素材在哪找
  • 歌曲网站源码长沙微信公众号
  • 医疗设备网站建设怎么做设计网页推荐
  • 最优做网站海宁建设局网站
  • 网站做适配手机要多久seo网络推广公司
  • 建设大型的企业网站费用wordpress 500 php版本
  • asp网站模板源码免费无限下载中小企业为什么要建网站
  • 网站建设客源在哪里找积分商城小程序
  • 博物馆网站微信公众号建设方案厦门网站建设哪家不错
  • 企业网站推广解决方案集团品牌官网建设
  • 宝安中心地铁站是几号线做网站编辑好还是新媒体编辑
  • 建设一个外贸网站多少钱安装网站程序
  • 南通营销平台网站建设邳州市建设局官方网站
  • 济源做网站那里可以做工作室做网站
  • 德阳市建设局官方网站f福州网站建设公司
  • flash做网站导航手机银行网站建设
  • 网站可以做软件检测吗违规网站备案
  • 基于5G的网站设计南宁做网站 的
  • 衡水网站制作多少钱代做标书网站
  • logo网站设计论文做100个网站
  • 淘宝网站的建设与运营设计思路网站建设 技术 哪些方面
  • 企业网站搜索引擎推广方法自己的网站 做采集怎么做
  • 网站备案号找回密码衡阳网站建设专家
  • 上饶做网站最好的公司个人社保缴费年限怎么查询