(北京物资学院 北京 101149)
21世纪被认为是一个互联网爆发的世纪,诸多行业伴随着互联网的兴起或焕发新的生机,或是直接井喷。电商行业的兴起无疑直接踏入井喷的行业之一,其需求量也是增长迅速。随着消费者画像概念的兴起,消费者的特征与诉求被更好的展现了出来,这样厂家就可以根据消费者的年龄、性别、职位、兴趣爱好、住址、婚姻状况等对消费者进行特征勾勒,深层挖掘消费者的潜在消费意向,更好的使消费者获得满足。用户画像能更多的反应消费者的真实需求,而不是设计人员和产品经理强行塞给客户的需求,设计人员与产品经理有很多都认为自己喜欢的客户也会喜欢,自己不喜欢的客户也不会喜欢,然而事实情况是它们自己并不能为推出的产品买单,最后买单的是客户,一旦客户不买账,那就意味着产品的崩盘,设计人员和产品经理精心设计的产品和可能被客户认为糟糕。因此,本文立足于大数据进行消费者精准画像研究,为行业提供高效低成本的发展依据。
图1 2008-2017年电商行业用户数量和增长曲线
考虑所有机器学习的问题时,机器学习可以从两个角度考虑模型的学习。一个是将模型看作一个预测函数,训练过程就是令损失函数最小化以求得相应的参数w,预测过程就是输入新样本的特征值x,输出标签值y。另一个则是将模型看作一个概率密度函数,它可以表示数据的分布,训练过程就是概率分布的参数估计过程,预测过程就是求条件概率P(y=?|x)。在特征值取值为x的条件下,y值取哪个值条件概率最大,就属于哪一类。本文将要提出的LR+FTRL物流服务推荐模型中除了将LR作为基本学习器外,还需要采用在线学习的优化算法使得算出的结果更加精确以及符合时代的步调。
LR是线性回归模型通过logistic的分布函数,将预测结果映射到概率空间,进而预测不同分类的概率,其概率由条件概率P(Y|X)表示。LR模型既可以做二分类也可以做多分类,因为本文只是想确定是否对于给定公司的推定合理能得到消费者的满意,故这次只阐述LR模型的二分类原理及其实现。二分类的LR模型的条件概率分布如下所示:
选用LR模型的好处也是显而易见的,比如:
1.作为统计模型与机器学习的结合点,具有较好的预测结果以及可解释性。
2.直接对分类的可能性建模,无需事先假设数据的分布,这就避免了假设分布不准确带来的影响。
3.不仅预测得到分类,还有分类对应的概率,这对很多需要使用概率辅助决策的任务很有用。
4.sigmod函数是高阶可导的凸函数,具有很好的数学性质,很多数值优化的算法都可以直接用于求解最优解。
FTRL[55]是属于在线凸优化算法中的一个算法思想,是谷歌的Brendan在2013年提出的,在融合了FOBOS与RDA的优点之后,改善了过拟合的问题。FTRL算法设计思想归纳起来并不复杂,其目的就是每次算出让之前所有目标函数(损失函数加正则项)的和为最小的参数。这个算法当在处理像逻辑回归这种类型的的带非光滑正则化项(如L1正则项)的凸优化问题上表现非常好,在计算特征的稀疏性和精度上做到了很好的平衡与取舍,而且它在工程实现上做了很多优化,性能表现优异。
权值的优化过程:
FTRL算法就是在FTL优化目标的基础上,加入正规化,防止过拟合的现象。
其中,R(ω)是正规化项。
FTRL算法的损失函数,一般来说也不是能够很快求解的,这种情况下,一般情况下需要找一个代理的损失函数。
代理损失函数需要满足几个要求:
代理损失函数相对容易求解,最好的是有解析解
优化代理损失函数的求解,和优化原函数所得到的解差距不可以太大
为了衡量条件2中两个解的差距,需要引入regret概念。
假设每一步用的代理函数是ht(ω)
每次取
wt=argminwht-1(w)
随着训练样本的增多,这两个优化目标优化出的参数的实际损失值差距越来越小。
如果ft(ω)是凸函数,我们可以用下面的代理损失函数:
其中gi是fi(ω)次梯度(如果fi(ω)是可导的,次梯度就是梯度)。ηt满足:
为了产生稀疏的效果,我们也可以加入L1正规化:
只要ft(ω)是凸函数,上面的代理函数一定满足:
上面的式子我们可以得出w的解析解:
(A) (B) (C)
其中(A)代表累积梯度项,(B)代表正则化处理项,(C)代表累加和项(该项限制了新的迭代结果不要与之前的迭代结果偏离太远,也就是FTRL算法中proximal的含义)。
从类型上来看,简单截断法、TG、FOBOS属于同一类,都是梯度下降类的算法,并且TG在特定条件可以转换成简单截断法和FOBOS;RDA属于简单对偶平均的扩展应用;FTRL可以视作RDA和FOBOS的结合,同时具备二者的优点。目前来看,RDA和FTRL是最好的稀疏模型Online Training的算法。FTRL并行化处理,一方面可以参考ParallelSGD,另一方面可以使用高维向量点乘,及梯度分量并行计算的思路。
从学习的维度来看,FTRL算法的每个维度的学习都是单独考虑的,这有别于OGD传统学习的理论-每个样本都是使用的相同的学习速率。举例说明就是当机器学习投硬币这个事件时,假设使用相同的学习速率,用coini表示正面的概率,coinj表示背面出现的概率,当投掷一定次数的硬币后如果正面出现的次数更多,那么coini的学习速率应该下降的更快,表现为coini具有更多的数据,而coinj的速率应该还是保持在比较高的状态,这就表示着coinj依旧对数据保持很高的敏感度。而如果这个事件发散到多维,倘若硬币在投掷过程中一次也没有出现正面,而因为其他维度的频繁出现而一并调低该维度的学习速率,这是有位常理的。
当样本集比较少的时候,每个样本都很珍贵,那么该特征维度所对应的训练速率可以独自维持比较大的值,每出现一个包含该特征的样本,就可以在这个样本的梯度上前进一大步,而不会被迫与其他特征维度的学习步调强行保持一致。
所以FTRL算法与w所有特征维度使用统一的学习速率相比,这种方法考虑了训练样本本身在不同特征上分布的不均匀性。
首先要通过数据提炼出每个物流服务供应商的特征,并对应构建出模型,本文选择了4个物流服务供应商,并把第三章选取的17个属性作为它的特征,将之前爬取的物流信息筛选出包含4个物流服务供应商的数据。因为选取了4个物流服务供应商,那么最后将会得到4组模型,最终的选择结果应该在输入各个模型后取输出值最接近1的那个模型对应的物流服务供应商作为推荐供应商。
消费者对各个指标针对该物流服务供应商的评价的好坏特征值,作为算法的输入变量X,用户在购买过该公司物流服务最终打分作为标签值,作为算法的输出Y。
当做完上述的步骤后将数据分为两份,一份为数据总量的60%作为A数据,一份为数据总量的20%用于验证和新一轮在线学习数据作为B数据,剩下的20%用于验证在线学习的效果作为C数据。拿出A数据进行在线学习调参后得出模型M1,将B数据的XB输入到模型中,输出Yb与原本B中的YB进行比对,并统计出正确率R1,倘若正确率高于90%,则认为该模型没有问题,可以有效的推荐用户购买哪种物流服务。将B中的数据放入模型中再进行训练得到模型M2,将C数据的XC输入到模型中,输出Yc与原本中的YC进行比对,并统计出正确率R2,倘若正确率相较于R1提高1%以上,则认为在线学习的优化方式强于传统离线学习,就可以验证基于在线学习的物流服务推荐模型是可行的。
本文给出了四个参数α,β,λ1,λ2。α是全局学习速率,而β唯一的作用是为了避免在第一次遇到第i维特征时由于梯度太小而使得学习率过高的问题,一般设为1就使得这种情况下学习率与全局学习率α接近。λ1,λ2为正则化系数,λ1可以使解更加稀疏,λ2使求解结果更加平滑。为控制模型的复杂度,通常在损失函数中加L1或L2范数做正则化(regularization),通过惩罚过大的参数来防止过拟合。L1范数是指向量中各个元素绝对值之和,也称为Lasso regularization;L2范数是指向量中各个元素平方之和,也称为Ridge Regression。L1正则化产生稀疏的权值,因此可用来做特征选择,在高维数据中使用更为广泛一些;L2正则化产生平滑的权值(还有一种说法认为L2限制了解的空间,因此可以加速收敛速度,但实际作用并不大)。L1在实际中使用的更多一些,L2和L1要配合使用,增加L2会减弱L1的系数作用。
当输入A数据用B数据验证时,得到的模型M1中的w的权值分别为:[-0.20643208,0.05337572,0.02230369,-0.20103844,-0.18545858,0.18834476,0.21569858,0.12562398,0.09625056,0.2021136,-0.20011114,0.15564337,-0.14094467,-0.21531557,0.04882969,0.16891462,-0.1744338]
此时各项参数分别为α=0.1,β=1.0,λ1=0.8,λ2=0.6,准确率为90.83%。说明LR+FTRL构建的模型准确度可以达到要求。
当M1中输入数据B作为在线学习的数据时,得到的模型M2中的w的权值分别为:
[-0.45656009,0.17982253,0.06603741,-0.41315945,-0.40623559,0.23822012,0.42470959,0.13409622,0.05876127,0.40251397,-0.39827032,0.3084882,-0.20718602,-0.47891542,0.13075843,0.0666782,-0.20014235]
此时各项参数分别为α=0.1,β=1.0,λ1=0.8,λ2=0.6,准确率为93.59%。可见准确率提升了2.76%,谷歌工程师认为机器学习的准确率只要提高1%就能说明该算法能显著优化机器学习,基于这样的考虑,可以认为该算法的建立及优化达到了要求,是可行且有显著效果的。
本文使用Python编出LR+FTRL的程序,输入的是已经数值化的指标样本集,通过在线机器学习的方法,输出权值和准确率,选取了其他的机器学习方法与LR+FTRL算法做了对比,证明本文所选取的方法具有可实施性和优越性。另外重点给出了在线学习算法与传统离线学习算法的区别,并给出了准确率的比较,可以从准确率的比较上直观的看出在线学习算法的准确率是明显要高于传统离线学习算法的,实现了基于FTRL算法的消费者精准画像求解。