机器学习——海量数据挖掘解决方案

图 9 交叉验证

离线测试得到满意的性能提升之后,就可以进行在线测试。离线测试效果好,并不意味着上线就能取得满意效果。在线测试采用工业界广泛使用的AB测试,首先我们会从线上切一小部分流量(B流量)给新模型、新参数,将效果和使用原先的模型和参数的主流量(A流量)进行对比,如果效果有所提升,再增加B流量的比例。测试通过了就可以全流量上线。

特征工程(feature engineering)的探讨

业界这么多年的实践经验已经证明,能给机器学习系统的性能带来较大提升的,不是换新模型或者调参数,而是特征工程,andrew ng也说过,“Applied machine learning" is basically feature engineering.”。机器学习只是提供了通用的算法,不可能根据不同的应用场景去调整自身的数学模型或算法。这就需要我们加入一些人工干预。

特征工程基于不同应用的领域知识对样本提取关键特征,让机器学习算法能够发挥出最优效果。相对而言特征工程是比较耗费人力的步骤,实际操作中也会遇到较多困难,解决办法只有一个:了解你的问题,了解你的数据。做反作弊检测的时候,我们是细致观察过作弊用户的行为数据,做过一些简单的统计分析。对作弊用户的行为模式有一定的概念,才能设计出有用的特征让预测效果达到要求。

非线性模型 V.S. 线性模型

进入大数据时代,我们面临的都是海量数据的处理问题。我们处理的大数据集合,在完成特征工程之后,通常得到的特征维数很高,上千万维的特征也不少见。在某些应用场景下,比如文本分类,当样本数量足够多、特征维数足够大的时候,我们发现非线性模型的效果并没有比线性模型高出多少,但计算效率明显差很多。这也是台湾林智仁教授及其团队继LIBSVM之后又推出了LIBLINEAR的原因,LIBLINEAR确实更符合当下大数据处理的要求:快速、高效、性能有保证。如果数据量较大特征维数较多,线性模型是不错的选择;一方面,线性模型可以在效果达到使用要求的前提下保证在线应用的及时响应,另一方面也节约了离线训练的计算时间,可以提高特征工程迭代的效率。