1 监督学习(supervised learn)与无监督学习(unsupervised learn)
机器学习系统通常被看作是有无人类监督学习两种方式。监督学习问题是,从成对的已经标记好的输入和输出经验数据作为一个输入进行学习,用来预测输出结果,是从有正确答案的例子中学习。而无监督学习是程序不能从已经标记好的数据中学习。它需要在数据中发现一些规律。假如我们获取了人的身高和体重数据,非监督学习的例子就是把数据点分成组别。一种程序可能是把数据分成男人与女人,儿童与成人等不同组别。
常见的监督式机器学习任务就是分类(classification)和回归(regression)。分类认为需要学会从若干变量约束条件中预测出目标变量的值,就是必须预测出新观测值的类型,种类或标签。分类的应用包括预测股票的涨跌,新闻头条是政治新闻还是娱乐新闻。回归问题需要预测连续变量的数值,比如预测新产品的销量,或者依据工作的描述预算工资水平等。与分类方式类似,回归问题需要监督学习。
常见的无监督式机器学习任务是通过训练数据发现相关观测值的组别,称为类(clusters)。对应的任务称为聚类(clustering),通过一些相似性度量方法把一些观测值分成同一类。聚类常用来分析数据集。比如有一些影评数据,聚类算法可以分辨积极的和消极的影评。系统是不能给类加上“积极”或“消极”的标签的;没有监督,系统只能通过相似性度量方法把观测值分成两类。聚类分析的应用场景是用市场产品销售数据为客户分级。通过挖掘一组用户的共同属性,销售人员可以为这类客户提供定制服务。聚类还被用于互联网广播服务,比如有一些歌曲,聚类算法能够按风格流派把歌曲分组。通过不同的相似性度量方法,同样的聚类算法可能通过关键词来分组,也可能通过使用的乐器来分组。
降维(Dimensionality reduction)是另一个常见的无监督学习任务。有些问题可能包含成千上万个解释变量,处理起来非常麻烦。另外,有些解释变量属于噪音,也有些完全是无边的变量,这些影响都会降低程序的归纳能力。降维是发现对响应变量影响最大的解释变量的过程。降维可以更容易的实现数据可视化。如不同面积房子的价格数据可视化,房子的面积可以画在x轴,其价格可以画在y轴,很容易实现可视化。再加一个解释变量,也很容易可视化房屋价格的回归问题,比如房间里卫生间的数量可以画在z轴。但是,几千个解释变量的问题是不可能可视化的。
2 训练数据和测试数据
训练集里面的观测值构成了算法用来学习的经验数据。在监督学习问题中,每个观测值都由一个响应变量和若干个解释变量组成。
测试集是一个类似的观测值集合,用一些度量标准来评估模型的运行效果。需要注意的是,测试集的数据不能出现在训练集中。否则,很难评价算法是否从训练集中学到了归纳能力,或者仅仅只是简单的记录了结果。归纳很好的程序能够用新数据有效地完成任务。相反,一个通过记忆训练数据来学习复杂模型的程序,可能通过训练集准确预测响应变量的值,但是在处理新问题的时候由于没有归纳能力会预测失败。
训练集的记忆称为过度拟合(over-fitting)。一个记住了观测值的程序不一定能够很好的完成工作,因为它在记忆关系和结果的时候,把噪声也同时记住了。平衡记忆能力与归纳能力,或者说是过度拟合与拟合不够,是许多机器学习算法面对的共同问题。后面的章节,我们会介绍正则化(regularization),可以用来减轻许多模型的过度拟合程度。
除了训练集和测试集,还有一个观测值集合称为验证集(validation set或 hold-out set),有时候需要用到。验证集用来调整超参数(hyperparameters)变量,这类变量控制模型是如何学习的。这个程序也通过测试集来评估其真实的效果,验证集的效果不能用于评估其真实的效果,由于程序参数已经用验证数据调整过了。通常会把监督学习的观测值分成训练、验证和测试集三部分。各部分的大小没有要求,按实际观测值的规模来定。一般把50%以上的数据作为训练集,25%的数据做测试集,剩下的作为验证集。
有的训练集只包含几百个观测值,有的可能有几百万。随着存储成本越来越便宜,网络连接范围不断扩大,内置传感器的智能手机的普及,以及对隐私数据态度的转变都在为大数据新动力,千万甚至上亿级别的训练集成为可能。本书不会涉及这类需要上百个机器并行计算才能完成的任务,许多机器学习算法的能力会随着训练集的丰富变得更强大。但是,机器学习算法也有句老话“放入的是垃圾,出来的也是垃圾”。一个学习了一大堆错误百出的教材的学生不会比只读一点好书的学生考得好。同理,对一堆充满噪声、没有关联、或标签错误的数据进行学习的算法,也不会比只学习一小部分更有代表性的训练集的算法效果更好。
许多监督学习的训练集都是手工准备的,或者半自动处理。建一个海量监督数据集需要耗费许多资源。好在scikit-learn有些数据集,可以让开发者直接验证自己的模型。在开发阶段,尤其是训练集不够的时候,交叉验证(cross-validation )的方法可以用相同的数据对算法进行多次训练和检验。在交叉验证中,训练数据是分成N块的。算法用N-1块进行训练,再用最后一块进行测试。每块都被算法轮流处理若干次,保证算法可以在训练和评估所有数据。下图就是5块数据的交叉验证方法:

数据集被等分成5块,从A标到E。开始的时候,模型用B到E进行训练,在A上测试。下一轮,在A,C,D和E上训练,用B进行测试。依次循环,直到每一块都测试过。交叉验证为模型的效果评估提供了比只有一个数据集更准确的方法。
3 效果评估,偏差和方差
许多度量方法可以用于评估一个程序是否学会了有效处理任务。在监督学习问题中,很多效果度量标准用来评估预测误差。有两种基本的预测误差:模型的偏差(bias)和方差(variance)。假设你有很多训练集都是不一样的,但是都具有代表性。一个高偏差的模型会产生类似的误差,无论它使用哪个训练集。模型偏离自己对真实关系假设的误差超过了模型在训练集训练的结果。模型有高偏差是固定不变的,但是模型有高方差可能是灵活的,因为模型发觉了训练集里面的噪音部分。就是说,高方差的模型是过度拟合了训练集数据,而一个模型有高偏差的时候,其实是拟合不够的表现。
偏差和方差就像飞镖射到靶子上。每个飞镖就是从不同数据集得出的预测结果。高偏差、低误差的模型就是把飞镖扔到了离靶心很远的地方,但是都集中在一个位置。而高偏差、高误差的模型就是把飞镖扔到了靶子上,但是飞镖离靶心也很远,而且彼此间很分散。低偏差、高误差的模型就是把飞镖扔到了离靶心很近的地方,但是聚类效果不好。最后就是低偏差、低误差的模型,把飞镖扔到了离靶心很近的地方,聚类效果也很好。如下图所示:

在理想情况下,模型具有低偏差和低误差,但是二者具有背反特征,即要降低一个指标的时候,另一个指标就会增加。这就是著名的偏差-方差均衡(Bias-Variance Trade-off)。后面我们会介绍很多模型的偏差-方差均衡特点。
无监督学习问题没有误差项要评估,其效果的是评估数据结构的一些属性。
大多数效果评估方法只能用于具体的任务。机器学习系统应该可以这样评估:用系统在真实世界中发生错误的代价来表示效果评估方法。这看起来很明显,下面例子描述的是适用于一般任务而不只是具体任务的效果评估方法。
有一个对肿瘤数据进行观察的机器学习系统分类任务,需要预测肿瘤是恶性的(malignant)还是良性的(benign)。准确度,或者是正确分类的比例,就是对程序效果评价的直观度量方法。准确度能够评价程序效果,不过它不能区分出,误把良性肿瘤分为恶性肿瘤,和误把恶性肿瘤分为良性肿瘤的效果差异。在一些应用里,发生不同类型错误的代价是相同的。但是,在这个问题里面,没有识别出恶性肿瘤的代价要比误把良性肿瘤分为恶性肿瘤的代价要大的多。
我们可以通过对每一种可能的预测结果进行评估来建立分类系统效果的不同评价方法。当系统正确地识别出一个恶性肿瘤,这个预测叫真阳性(True positive);如果把一个良性肿瘤分成了一个恶性肿瘤,叫假阳性(False positive);正确地识别出一个良性肿瘤叫真阴性(True negative);把一个恶性肿瘤分成了一个良性肿瘤,叫假阴性(False negative)。这四个结果可以用来计算分类系统效果的评价体系,包括准确率(accuracy),精确率(precision)和召回率(recall)三项指标。
准度率计算公式如下,TP是真阳性统计结果,TN是真阴性统计结果,FP是假阳性统计结果,FN是假阴性统计结果:
ACC=TP+TNTP+TN+FP+FN
精确率是被判断为恶性肿瘤中,真正为恶性肿瘤统计结果所占比例:
P=TPTP+FP
召回率是指真正为恶性肿瘤被分类系统判断出来的比例:
R=TPTP+FN
在这个例子中,精确率是评估被系统判断为恶性肿瘤中的肿瘤里面,确实为恶性肿瘤的比例。而召回率是评估真实的恶性肿瘤被系统正确判断出来的比例。
从精确率和召回率评估指标可以看出,高准确率的分类系统实际没有发现出所有的恶性肿瘤。如果绝大多数肿瘤都是良性的,那么分类器没有预测出恶性肿瘤也可以获得极高的准确率。而一个具有低准确率和高召回率的分类系统反而更好,因为它能够识别出更多恶性肿瘤。
许多其他效果评估方法都可以用于分类方法中,后面我们会介绍一些,包括多标签分类问题的评价标准。

本文介绍了机器学习中的核心概念,包括监督学习与无监督学习的区别、训练数据与测试数据的作用、偏差与方差的概念及其权衡关系,并探讨了如何评估机器学习系统的性能。
888

被折叠的 条评论
为什么被折叠?



