如果这段时间一直研究Edward的的话,我就写一直写下去。
先说一下背景。机器学习里,有一种“冠军挑战者”的玩法。例如微软的AZUREML(机器学习平台)、FICO或EXPERIAN(美国个人消费信用评估公司)都有这样的产品形式。更多更小的科技公司追逐大公司脚步,将“冠军挑战者”吹成了一个似乎很多行业里必备的“标准配置”。当“冠军挑战者”这事落在我头上时,我要么追随大家的做法,要么提出替代方案。我能想到的是贝叶斯方法,我希望一个问题最好只有一个模型,这个模型有一定自适应更新能力。我不知道这个想法能否实现。
Edward有一个关于“ Linear Mix Effects Model "(线性混合效应模型)的案例。关于这个案例,Edward使用了下面两篇参考文献。
先看第一篇参考文献。这篇文章提到下面这个例子。
这个案例研究不睡觉对人的影响有多大。请18个人做这个试验,连续十天每晚只睡三个小时,然后每天测量他们的反应时间。试验结果如下:
横坐标表示连续不睡觉的天数,纵坐标表示平均反应时间。每个长方形代表一个人的数据,例如左上角编号”335“那个人,很明显,熬夜几乎对他没影响,他的反应时间没有明显变化,右下角编号“308”那个人,基本符合大多数人的生理特征,熬夜确实会影响反应时间。
如果我们想实现上面这张图,不是件很难的事情。例如,用SQL语句把每个人的数据提取出来,然后对每个人的数据做一次线性回归计算,得出每个人反应时间关于熬夜时间的系数。但还是要花点时间写这样的程序,复杂一点可能会“我要不要写一个类,这个类有一个方法是求线性回归系数的”。
第二篇参考文献有一个更复杂的例子。作者Andrew Gelman是Stan的主要开发者。
这个例子是研究学生的成绩和哪些因素有关。这里提出了两个模型,Varying-intercept model,这个模型认为,学生的成绩,受家庭关系、学生努力程度这两个因素影响,其中家庭关系是差异化的,家庭关系受家庭收入影响,所以要再建一个关系式(或方程),学生努力程度和成绩之间是常系数beta。下一个模型呢,Varying-intercept,varying slope model,认为学生努力程度和成绩之间这个系数beta,是不能常数的,这个beta,还是得和家庭收入有关,所以就又多了一个beta关于家庭收入的关系式(或方程),意思就是学生努力的效果也是和家庭收入有关的。
所以呢,以后就不要再批评小朋友不努力了。成绩不好,原因可能出在家庭收入上。我现在这么努力的码字,主要就是想提高家庭收入,顺便提高我娃的学习成绩。
通过这个例子,混合效应模型还是很复杂的,到了一定程度,靠编程可能就不够了,得用数学来解决了。
混合效应模型有没有一些实际应用呢?举个例子,就说贷款,我们经常说普通人对价格不敏感,因为普通人急需钱的时候,即使利率很高他也会借(这也是为什么要反对高利贷的原因),富人对价格敏感,富人可选择的渠道多,如果利率高了,富人就去找更便宜的资金了。所以,对普通人贷款,可以使用相同的beta,对富人贷款,就得用差异化的beta,最好每个人都有一个beta[i]。