关于机器学习应用的一些思考

----------------------------------------------------------------------------------------
问1:基于成本定价是怎么做的?
答1:1)背景:有些订单耗时长,成本高,但收取配送费少,配送这些订单是亏本的,这是不合理的。
2)方案思路:主要是在高峰时段、低收入、高成本订单加配送费,一方面,减少其单量,调整订单分布;另一方面,增加其配送费收入
3)具体方案:通过各种数据分析挖掘,定义一系列规则,通过仿真系统确定各规则权重,生成成本定义,从而在忙时对低客单价订单加价
4)效果:单均配送距离减少20米,单量稳定,收入提升0.2元
5)这个项目中算法层面较少,主要是业务理解、业务建模



问2:难度定价有哪些地方可以用算法发挥价值?
答2:1)实时订单难度的计算上,取餐时长、交付时长都是使用的历史统计值,其实可以考虑进行回归预测
2)距离直接进行的规则定义,更好的方式是预测出耗时,然后所有单位都是分钟,就不用进行归一化,也不用进行参数权重设置





----------------------------------------------------------------------------------------
问1:关键词提取是怎么做的?
答1:1)背景:属于非结构化数据进行结构化处理;一个功能是替换编辑人工打标签,一方面工作量大;另一方面随意性比较强。另一个功能支持聚合阅读
2)方案思路:topic主题词抽取(lda)、词位置信息的关键词抽取(KE),然后通过一些策略共选取5个关键词
3)具体方案:首先,过滤掉停用词 其次,根据三级策略进行提取。第一级策略是:主题词+标题中的词取交际;第二级策略是:KE+标题中的词;第三级策略是:主题词
4)我这边主要负责主题词抽取,详细过程:分词、特征选择、lda模型训练、主题词抽取
4)分词:直接使用微博的分词工具,调用接口
5)特征选择:浅度特征选择和深度特征选择
6)lda模型训练:吉布斯采样

7)主题词抽取:根据文章主题分布和特征




问2:特征选择的常用方法有哪些?
答2:信息增益、卡方、基尼系数、信息增益率



问3:信息增益的公式是什么?
答3:IG(T)=H(C)-H(C|T)
H(C)=-∑p(Ci)log(p(Ci))
H(C|T)=∑p(Ti)H(Ci|Ti)
信息增益越大,特征相关性越大



问4:卡方的公式是什么?
答4:D=D11+D12+D21+D22
D11=(A-E11)^2/E11
E11=(A+C)((A+B)/N)
x^2=(AD-BC)^2/((A+B)(A+C)(B+D)(C+D))
≈(AD-BC)^2/((A+B)(C+D))
卡方值越大,特征相关性越大
                属于类C 不属于类C
包含特征           A        B
不包含特征         C         D



问5:基尼系数的公式是什么?
答5:G(D)=1-∑pi^2
G(D|T)=(|D1|/|D|)*G(D1)+(|D2|/|D|)*G(D2)
△G(D)=G(D)-G(D|T)
基尼系数增长越大,特征相关性越大
当T包含多个值时,选取G(D|T)最小的值为分裂后的基尼系数



问6:LDA生成一个文档的过程是什么样的?
答6:1)根据预料级参数α,生成文档d的主题分布Θ_d~p(Θ|α)
2)对于文档d中每个位置i对应的单词,按如下方式生成
2.1)根据主题分布Θ_d,按概率生成该位置i的主题z_i~p(z|Θ_d)
2.2)根据主题z_i和语料级参数β,按概率生成该位置i的词w_i~p(z|z_i,β)
3)生成一篇文档联合概率为:p(Θ,Z,W|α,β)=p(Θ|α)*∏p(z_i|Θ)*p(w_i|z_i,β)



  

问7:LDA怎样使用吉布斯采样进行模型训练?
答7:1)随机初始化:对文档中每个词w,随机分配topic编号z
2)重新扫描语料库,对每个词w按照吉布斯采样公式,按照概率生成新的topic,在语料中进行更新
3)重复以上采样过程,直到吉布斯采样收敛
4)统计语料库的topic-word共现频率矩阵,该矩阵就是LDA的模型



问8:LDA怎样使用吉布斯采样进行模型预测?
答8:1)随机初始化:对文档中每个词w,随机分配topic编号z
2)重新扫描语料库,对每个词w按照吉布斯采样公式,按照概率生成新的topic,在语料中进行更新
3)重复以上采样过程,直到吉布斯采样收敛
4)统计文档的topic分布
5)注:模型与测试topic-word共现频率矩阵不更新



问9:LDA中吉布斯采样公式是什么?
答9:1)参数α为向量,对应每个topic的值为α_k
2)参数β为向量,对应每个词的值为β_t
3)忽略第m篇文档中第i个单词,文档m属于主题k的频次n_m_k定义为:文档中主题k的单词的个数(不包括第i个单词)
4)忽略第m篇文档中第i个单词,主题k下词t的频次n_k_t定义为:主题k下所有文档中词t的个数(不包括文档m中第i个词)
5)第m篇文档,第i个单词,属于主题k的概率如下:p(z=k|d=m,t=i)∝((n_m_k+α_k)/∑_k(n_m_k+α_k))*((n_k_t+β_t)/∑_t(n_k_t+β_t))





----------------------------------------------------------------------------------------
问1:看了还看是怎么推荐的?
答1:1)背景:之前新浪新闻有基于热度的热点推荐、基于用户的个性化推荐;但这些都不是针对用户的当前兴趣点。看了还看,主要是推荐当前浏览页面相关的其他页面。
2)方案思路:被同一个用户点击的新闻具有相似性,从用户行为角度定义新闻相似性
3)具体方案:数据过滤:对访问频次低于10次的url过滤,url数量减少到原来1/10
2)推荐产生:关联规则计算置信度
3)模型优化:关联规则容易进行热门推荐,使用jaccard相似度代替置信度进行推荐
4)新点击数据10分钟拉取一次,模型每小时进行增量更新,兜底方案是使用前一天的推荐结果
5)有点遗憾的是没有针对内容相似性做一些推荐



问2:皮尔森相关系数的公式是什么?
答2:∑(xi-x')(y-y')/sqrt(∑(xi-x')^2)sqrt(∑(yi-y')^2)



问3:欧式距离的公式是什么?
答3:sqrt(∑(xi-yi)^2)






----------------------------------------------------------------------------------------
问1:先知项目是怎么做的?
答1:1)背景:在京东呼叫中⼼心,客户打通电话后,必须按相应数字键,会由匹配的POP客服或⾃自营客服对此客户进⾏行服务。⼀一⽅方⾯面操作繁琐,⽤用户体验差;另⼀一⽅方⾯面会有⼤大量的⽤用户选
2)方案思路:据⽤用户的历史行为数据,预测⽤用户咨询问题类型,加⼊入智能IVR系统
3)具体方案:定义单一规则,使用决策树进行规则选择及组合,使用bagging思路得到最优模型,每天进行一次特征更新
4)效果:模型⽇日均预测话务请求覆盖率70%,准确率90%



问2:什么是bagging?
答2:1)每次从样本集中有放回抽样n个,生成k各训练集合
2)使用每个训练集合进行模型训练
3)k个模型使用投票决定分类



问3:什么是boosting?
答3:1)初始化对每个样本赋予相同权重1/n
2)每次训练之后更新权重,给予较大的权重,并重新训练



问4:bagging和boosting区别?
答4:1)bagging样本是随机且独立的,boosting样本权重受前一次训练影响
2)bagging可训练并行,boosting训练需串行
3)bagging代表是随机森林






----------------------------------------------------------------------------------------
问1:恶意经销商模型是怎么做的?
答1:1)背景: 在618、双11、国庆、元旦等重要节⽇日,电商会进⾏大量的促销活动。⼀方⾯吸引⼤大量正常⽤用户购买;但另⼀方⾯大量经销商也在等待这个时机,进⾏行补货,经销商购买商品越多,电商损失越⼤大。
2)策略思路:建立黑名单,进行订单拦截、降低优惠券中奖概率等
3)具体方案:通过case分析和场景分析,识别出【候选恶意抢购商品】,在此基础上定义大单抢购场景和拆单抢购场景,从而识别经销商账号
4)效果:经销商拆单抢购⽉月均识别经销商数为5w+;经销商⼤大单抢购共识别恶意经销商600+。





----------------------------------------------------------------------------------------
问1:单量预测模型怎么演进的?
答1:1)背景:对低敏感度的用户加配送费(单量损失少),对高敏感度的用户减配送费(单量增加多),在保证收入的前提下,提高单量
2)具体这个模型构建其实经理了3个阶段
2.1)第一个阶段,预测目标是每个配送区每天的单量,使用特征包括配送区优惠力度,是否工作日,使用的算法是线性回归。每个配送区一个模型
2.2)第二个阶段,预测目标是每个配送区每天的单量,使用特征为历史1天、3天、7天、15天单量,配送费,uv,优惠力度,使用算法为随机森林,线性回归。多个配送区一个模型。
2.3)第三个阶段,预测目标是单量变化比例,使用特征为配送费变化,uv变化,优惠力度变化,使用算法是半对数模型。每个城市一个模型,相似城市公用一个模型。
3)效果:MAE在5%左右,无偏



问2:以上三个模型有什么区别?
答2:1)模型3是最终使用的模型,模型1和模型2在我们的场景下无法使用
2)首先,模型1来说,前期预测效果不错,后期预测效果变坏。原因是:
2.1)前期单量近似线性增长,优惠力度也程线性增长,两者间呈线性关系,我们用线性模型拟合,效果好
2.2)后期单量仍然存在自然的线性增长,优惠力度不增长,甚至某些区域出现下降,两者间不存在线性关系,所以拟合效果不好
2.3)所以前期其实是伪线性关系,被学习到了;而随着业务变化,这种伪线性关系不存在
3)其次,对于模型1来说,还存在一个问题,配送费对单量的影响很小
3.1)在整个优惠力度的角度来看,配送费加减一块钱对其影响很小
3.2)对于用户来说,配送费增加一块钱很敏感,但菜品增加一块钱很可能都无感
3.3)由于上述两点,所以配送费通过优惠力度来预测单量,体现不出配送费的真实影响力,所以需要把配送费单独作为一个特征
4)对于模型2,预测效果是可以的,但配送费的权重很低,对单量影响很小
4.1)我们的场景来说,即使绝对的单量预测特别准,也没法用;我们更关注配送费对单量的影响
4.2)原因是:历史单量是由竞对、优惠力度、配送费、服务、商家质量等多种因素综合决定的,权重会很大;配送费作为单量某一侧面的反应被综合特征替换掉了
4.3)模型使用随机森林,所以特征方面没有进行很多特征选择
5)模型3是我们最终使用的模型
5.1)它的核心是使用配送费明显变化前后各一周的数据进行建模
5.2)这样,对于每一个配送区来说,由于在极短时间内,竞对、市占、商家供给、服务等影响单量的特征不会突变,
5.3)对于单量变化来说,可以认为这些特征是一个常数;对于单量来说,是很重要的特征
5.4)uv、配送费、优惠力度是变的,其他的是衡量



问3:模型怎么评估的?
答3:1)模型指标:R^2,F值,t值
2)测试集上进行测试:cross validation。虽然更经常是用于超参数的选择,但这里是进行模型评估。ME、MAE、MSE、RMSE
3)abtest线上测试:能够保证只有配送费的差异



问4:R^2,F值,t值,ME、MAE、MSE、RMSE定义分别是什么?
答4:1)R^2:模型对观测值的拟合程度,在0~1之间,越接近1拟合程度越高
2)t值:评估在其他解释变量不变的前提下,解释变量X对被解释变量Y的影响,越接近0越显著
3)F值:各解释变量联合起来,对被解释变量Y的影响,越接近0越显著
4)有偏性(ME):AVG(yi'-yi)
5)平均绝对差值(MAE):AVG(|yi'-yi|)
6)均方误差(MSE):∑(yi'-yi)^2/n
7)均方根误差(RMSE):sqrt(∑(yi'-yi)^2/n)



问5:还有什么可优化的地方?
答5:1)一部分城市进行模型训练,大多数城市根据是运营根据经验选取相似城市使用相同策略,其实可以通过聚类的方法,更自动化
2)在应用过程中,降价效果仅仅是涨价效果的一半,究其原因是需要C端推广配合,否则无法触达用户
3)从定价理论角度来看,更高级的方式应该针对用户提供差异化服务,提供不同价格,这里差异化服务可以是不同配送时长,或者是相同服务的不同包装形式



问6:怎样在线上应用的?
答6:1)工程架构是这样的:价格敏感度模型是离线的,计算出不同场景的敏感度系数
2)另外一个同事完成调价模块,根据敏感度系数,在一定的收入约束下,以单量增长为目标,确定各场景的具体配送费伸缩系数,并导入mysql库
3)客户下单时,会根据不同场景乘以不同的伸缩系数
4)第一步是用R实现,第二步用python实现,第三步用java实现



问7:配送费基础价格是如何确定的?
答7:1)根据配送区的平均配送费
2)每单的配送耗时占配送区平均耗时的比例
3)每单耗时=由商家的历史取餐时长+预估的配送时长+所在位置的交付时长求



问8:模型如何在线定期更新?
答8:1)主要是构建在线的训练样本集
2)可以通过抽取abctest进行,5%加价,5%等比例减价,90%不变,可以保证在不影响收入单量的前提下获取训练样本
发布了21 篇原创文章 · 获赞 37 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/zhixiongzhao/article/details/73549147