前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >用机器学习更快了解用户(翻译)

用机器学习更快了解用户(翻译)

作者头像
三猫
发布2018-04-10 11:34:25
5730
发布2018-04-10 11:34:25
举报

英文博文的部分翻译。英文原文链接:https://erikbern.com/2017/12/12/learning-from-users-faster-using-machine-learning.html


几周前我产生了一个非常有意思的想法。通过假设一个例子来解释就是:你正在经营一个电子商务网站,你想优化购买的数量。并且假设,我们希望通过A/B测试或者基本的数据切片分割方法,来尽可能多的从用户本身得到相应经验,预测用户的转化情况,但有一个一直存在的问题就是有太多的不确定性因素。

我们怎样才能加速从用户身上学习经验的过程?特别是,是否有办法以某种方式结合其他数据进行预测?我觉得这是一个非常普遍的问题,所以我写出这个问题并附上一些不错的想法。

  • 简单模型

做了许多理论性学习,我希望可以在实践中尝试一下。我的想法是:通过大量外部数据,建立一个模型,判断是否某用户会购买一个产品。我们使用我们的机器学习模型,而不是使用实际的目标测度(人们购买此商品的比例)。因此,我们向模型中输入多种变量,然后来预测目标(用户是否购买此产品)。

我尝试了几种不同模型,其中最有效的是你能想到的一个非常基础的模型:线性回归。输入的是一些0-1变量,表示用户在浏览网页的过程中,是否点击了某页面,本次模型中一共有70个不同的页面(其中一些比较特殊的页面只有很少的用户点击)。预测得到一个二分类结果,表示用户是否购买该产品。通过计算最小均方误差,得到最终模型。

借助Keras框架,模型只需如下几行代码:

inputs = keras.layers.Input(shape=(X.shape[0],))inputs_dropout = keras.layers.Dropout(0.90)(inputs)outputs = keras.layers.Dense(1, activation='linear')(inputs_dropout)model = keras.models.Model(inputs=inputs, outputs=outputs)model.compile(optimizer=keras.optimizers.SGD(lr=1e-2), loss='mse')model.fit(X, y, batch_size=16, epochs=300)

  • 结果

通过随机选取三个点击我们网站的用户子集,对转化率进行A/B测试。具体过程在这里不进行叙述,我们想知道这三个子集之间的转化率是否不同。

首先来看最一般的方法,我们计算了完成整个点击流,最终购买产品的用户比例。绘制出带有置信区间的转化率图。当我们得到越来越多的数据时,每个群体的置信区间缩小:

接下来,我使用今年早些时候的数据训练模型,因此数据可能会超出我们之前的样本范围。画出同样的图像,但这里用预测值代替真实值。每个预测值都是通过每个用户是否点击这70个页面的数据得到的。我们可以看到,置信区间更紧,转化率曲线更平滑。

得到的这个结果非常好。在这个模型中,我们将置信区间缩小了近50%,这意味着我们计算出相应的统计指标可以提速4倍。如果我们针对更大量数据绘制出转化率和置信区间图像,可以看到用预测值得到的不确定性会持续变小。

  • 结论

这篇文章的结论非常有趣,值得思考。这个模型的一个缺点是方差的变化存在偏差。预测的转化率可能有更严格的置信区间,但它不再保证收敛到“正确”的值。这是可以接受的吗?我不知道。另一个问题是,随着时间的推移,数据分布会发生变化。例如,购买产品的页面转移流变化。

我还没有足够的时间来解决这些问题,也还不确定我是否会将这个模型用到真实场景中。这是一个有点不成熟的想法,希望得到反馈与讨论。


本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-12-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 机器学习养成记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档