11.3 机器学习基础

机器学习算法尝试根据训练数据(training data)使得表示算法行为的数学目标最大化,并以此来进行预测或作出决定。

机器学习问题分为几种,包括分类、回归、聚类,每种都有不一样的目标。

特征集

所有的学习算法都需要定义每个数据点的特征(feature)集,也就是传给学习函数的值。
举个例子,对于一封邮件来说,一些特征可能包括其来源服务器、提到 free 这个单词的次数、字体颜色等。
在很多情况下,正确地定义特征才是机器学习中最有挑战性的部分。

特征向量

提取特征并转化为特征向量是机器学习过程中很重要的一步。
例如,在文本分类中(比如垃圾邮件和非垃圾邮件的例子),有好几个提取文本特征的方法,比如对各个单词出现的频率进行计数。

数学函数

当数据已经成为特征向量的形式后,大多数机器学习算法都会根据这些向量优化一个定义好的数学函数。

例如,某个分类算法可能会在特征向量的空间中定义出一个平面,使得这个平面能“最好”地分隔垃圾邮件和非垃圾邮件。
这里需要为“最好”给出定义(比如大多数数据点都被这个平面正确分类)。

算法会在运行结束时返回一个代表学习决定的模型(比如这个选中的平面),而这个模型就可以用来对新的点进行预测(例如根据新邮件的特征向量在平面的哪一边来决定它是不是垃圾邮件)。

评估

大多数机器学习算法都有多个会影响结果的参数,所以现实中的机器学习流水线会训练出多个不同版本的模型,然后分别对其进行评估(evaluate)。

要这么做的话,通常需要把输入数据分为“训练集”和“测试集”,并且只使用前者进行训练,这样就可以用后者来检验模型是否过度拟合(overfit)了训练数据。

垃圾邮件分类

构建垃圾邮件分类器的简单程序,根据词频把每个文件中的文本转化为特征向量,然后训练出一个可以把两类消息分开的逻辑回归模型:

这 个 程 序 使 用 了 MLlib 中 的 两 个 函 数: