来源:http://tech.meituan.com/mt-mlinaction-how-to-ml.html
前言
随着大数据时代的到来,机器学习成为解决问题的一种重要且关键的工具。不管是工业界还是学术界,机器学习都是一个炙手可热的方向,但是学术界和工业界对机器学习的研究各有侧重,学术界侧重于对机器学习理论的研究,工业界侧重于如何用机器学习来解决实际问题。我们结合美团在机器学习上的实践,进行一个实战(InAction)系列的介绍(带“机器学习InAction系列”标签的文章),介绍机器学习在解决工业界问题的实战中所需的基本技术、经验和技巧。本文主要结合实际问题,概要地介绍机器学习解决实际问题的整个流程,包括对问题建模、准备训练数据、抽取特征、训练模型和优化模型等关键环节;另外几篇则会对这些关键环节进行更深入地介绍。
下文分为1)机器学习的概述,2)对问题建模,3)准备训练数据,4)抽取特征,5)训练模型,6)优化模型,7)总结 共7个章节进行介绍。
机器学习的概述:
###什么是机器学习?
随着机器学习在实际工业领域中不断获得应用,这个词已经被赋予了各种不同含义。在本文中的“机器学习”含义与wikipedia上的解释比较契合,如下:
Machine learning is a scientific discipline that deals with the construction and study of algorithms that can learn from data.
机器学习可以分为无监督学习(unsupervised learning)和有监督学习(supervised learning),在工业界中,有监督学习是更常见和更有价值的方式,下文中主要以这种方式展开介绍。如下图中所示,有监督的机器学习在解决实际问题时,有两个流程,一个是离线训练流程(蓝色箭头),包含数据筛选和清洗、特征抽取、模型训练和优化模型等环节;另一个流程则是应用流程(绿色箭头),对需要预估的数据,抽取特征,应用离线训练得到的模型进行预估,获得预估值作用在实际产品中。在这两个流程中,离线训练是最有技术挑战的工作(在线预估流程很多工作可以复用离线训练流程的工作),所以下文主要介绍离线训练流程。
###什么是模型(model)?
模型,是机器学习中的一个重要概念,简单的讲,指特征空间到输出空间的映射;一般由模型的假设函数和参数w组成(下面公式就是Logistic Regression模型的一种表达,在训练模型的章节做稍详细的解释);一个模型的假设空间(hypothesis space),指给定模型所有可能w对应的输出空间组成的集合。工业界常用的模型有Logistic Regression(简称LR)、Gradient Boosting Decision Tree(简称GBDT)、Support Vector Machine(简称SVM)、Deep Neural Network(简称DNN)等。
模型训练就是基于训练数据,获得一组参数w,使得特定目标最优,即获得了特征空间到输出空间的最优映射,具体怎么实现,见训练模型章节。
###为什么要用机器学习解决问题?
- 目前处于大数据时代,到处都有成T成P的数据,简单规则处理难以发挥这些数据的价值;
- 廉价的高性能计算,使得基于大规模数据的学习时间和代价降低;
- 廉价的大规模存储,使得能够更快地和代价更小地处理大规模数据;
- 存在大量高价值的问题,使得花大量精力用机器学习解决问题后,能获得丰厚收益。
###机器学习应该用于解决什么问题?
- 目标问题需要价值巨大,因为机器学习解决问题有一定的代价;
- 目标问题有大量数据可用,有大量数据才能使机器学习比较好地解决问题(相对于简单规则或人工);
- 目标问题由多种因素(特征)决定,机器学习解决问题的优势才能体现(相对于简单规则或人工);
- 目标问题需要持续优化,因为机器学习可以基于数据自我学习和迭代,持续地发挥价值。
对问题建模
本文以DEAL(团购单)交易额预估问题为例(就是预估一个给定DEAL一段时间内卖了多少钱),介绍使用机器学习如何解决问题。首先需要:
- 收集问题的资料,理解问题,成为这个问题的专家;
- 拆解问题,简化问题,将问题转化机器可预估的问题。
深入理解和分析DEAL交易额后,可以将它分解为如下图的几个问题:
###单个模型?多个模型?如何来选择?