因为才疏学浅,如有不对之处,请发邮件指点liedward@qq.com。非常感谢帮忙指正错误。
图:机器学习框架
1、 特征库:特征库就是我们获取用户信息的源头,所有的挖掘判断全部都需要从这个特征库开始,所以特征库的好坏很大程度上决定了整个数据挖掘的好坏。(名言:垃圾进垃圾处出。再好的算法,如果没有准确的信息量做支撑,也不可能预测出好的结果。)
特征库不等于用户画像,特征库是用户画像的底层建设。通常维度与指标是越细越好,比如用户最近一次访问时长,用户最近两次访问时长,用户1,3,5,7天内访问次数。细的颗粒度可以保留最大的用户信息量。
2、 特征处理:在有一定特征库之后,我们需要进行一些清洗从而让机器使用这些数据。比如我们发现近1天流量特征绝大部分的user_id为null,这表明这些用户确实没有上该APP,那么我们需要根据业务意义将所有null改为0,又比如男女性别特征,我们在很多情况下无法获取,那么在缺失值较多的情况我们应该选择放弃该字段。
1和2在传统意义上就是“特征工程”:这块是数据挖掘约
70%的工作量。
图:特征工程框架
3、 算法:目前工业上用得较多的是GBDT,GBRT,LR-LBGFS。因为这些算法较为成熟且鲁棒性与自动化(特征自动选取)性能较好,调优环节轻松(有些算法调优老半天还没这些算法放进去直接算来得好-_-)。所以如没有负责度响应度的要求,就可以直接使用。
4、 算法评估:通常一个问题,我们会同时使用多个模型进行预跑测试不同算法在不同业务和特征库的性能。
注:损失函数可参考:
SSE,MSE,RMSE,R-square指标讲解:
S(0),BCubed:参考《数据挖掘概念与技术》P319页
5、 工程实施:hadoop上有mahout(其实就是将很多算法mapreduce化,但因为有些算法如SVM无法mapreduce化,且mapreduce化算法的门槛较高所以目前Apache已经放弃mahout在hadoop项目上的维护工作。Mahout现在可以做CF推荐系统,knn等算法)
Spark,因为Spark是内存处理,所以对于ML程序而言能够快速迭代,不需要像mahout一样不停得I/O,所以目前发展的特别快。主要语言:Scala,java,python。