机器学习入门

一、绪论

1.1引言

机器学习致力于研究如何通过计算的手段,利用经验来改善系统自身的性能。其所研究的主要内容,是关于在计算机上从数据中产生“模型”(model)的算法,即“学习算法”(learning algorithm)。
本书中,“模型”泛指从数据中学得的结果,有的文献中用“模型”指全局性结果,而用“模式”指局部性结果。

1.2基本术语

要进行机器学习,首先要有数据
一批关于某种事物的数据的集合称为一个数据集(data set)。其中,每条记录是关于一个事件或对象的描述,称为一个示例(instance)或者一个样本(sample)。(注意:有时候整个数据集也被称为一个”样本“,因为它可以看作对样本空间的一个采样,故需要通过上下文判断”样本“为单个示例还是整个数据集。)
反映事物在某方面的表现或性质的事项称为属性(attribute)或特征(feature)。其上的具体取值,称为属性值或者特征值。
属性张成的空间称为属性空间、样本空间或输入空间。一般情况下,若某个样本有d个属性,则该样本空间即为d维样本空间,由于每一个示例都在该空间上对应一个点,每一个点对应一个坐标向量,故可以把一个示例称为一个特征向量。
从数据中学得模型的过程称作训练或者学习。

训练过程的数据称为训练数据(training data),其中每个样本称为一个训练样本,训练样本组成的集合称为训练集(training set)。
学得的模型对应了数据中的某一潜在规律,故又称为假设(hypothesis),该潜在规律自身,称为“真实”或“真相”。
关于示例结果的信息,称为标记(label),所有标记的集合,称为“标记空间”或者“输出空间”。(类似方程,x11+x12+x13+…+x1d = y1 )

分类:若预测的是离散值,例如“1”“0”,此类学习任务称为分类(classification)。
回归:若预测的是连续值,则该学习任务称为回归(regression)。

分类中又可分为二分类与多分类任务,二分类顾名思义,只需分2类,一般分别称为“正类”与“反类”,且一般正类用“1”表示,反类用“0”表示。

学得模型后,用其进行预测的过程称为测试(test),被预测的样本称为测试样本(test sample)。

此时引入聚类(clustering)概念,即将训练集中样本分为若干组,每一组称为一“簇”(cluster)。
在这里要明白聚类与分类的区别,就要先明白何为监督学习,何为无监督学习

    监督学习:训练数据有标记信息的学习过程。亦称:有导师学习。
    无监督学习:训练数据没有标记信息的学习过程。亦称:无导师学习。
 

分类和回归属于典型的监督学习问题,而聚类属于无监督学习问题。故分类与聚类的区别显而易见

分类是训练数据已有人为标记信息,计算机通过学习这些训练数据,将未出现在训练样本中的陌生的数据分到已有的类别中的过程。
聚类是训练数据没有任何标记信息,计算机需要自行寻找特征,将这些数据分为几个簇,然后将陌生的数据分到计算机自己划分的几个簇中的过程。
 

需要注意的是,机器学习的目的是使学得的模型可以更好的适用于未知样本。故引入"泛化“定义

泛化:机器学习所学得模型适用于陌生数据的能力。

我们常说泛化性能优劣,即指模型对于陌生数据的适用性的好坏。
一般我们假设全体数据在样本空间上满足一个未知的分布,那么学习的目的就可以认为寻找最契合这个分布的一个函数来把训练样本完美的分到各自的类中。一般情况下,训练样本越多,我们得到的关于该分布的信息就越多,这样就越有可能找到这个函数,也就越有可能通过学习获得具有强泛化能力的模型。

1.3假设空间

归纳与演绎是科学推理的两大基本手段, 前者是从特殊到一般的“泛化”过程,即从具体的事实归结出一般性规律;后者则是从一般到特殊的“特化”,即从基础原理推导出具体状况。
学习过程可以看作是一个在所有假设组成的空间中进行搜索的过程,目的是找到与训练集匹配的假设。而现实中,可能会有多个假设与训练集一致,即存在一个与训练集一致的“假设集合”,称之为“版本空间”。

1.4归纳偏好

定义:机器学习算法在学习过程中对某种假设类型的偏好,称为归纳偏好。

需要注意,任何一个机器学习算法都必有其归纳偏好,否则将无法产生确定的学习结果。
一个神奇的结论:对于算法A来说,若其在某些方面比算法B好,那么必然存在一些方面B比A好。这个结论对任何算法均成立,无一例外!

“没有免费的午餐”定理(No Free Lunch Theorem, NFL):无论学习算法A多么聪明,学习算法B多么笨拙,它们的期望性能完全一样(总误差与学习算法无关)。
但是需要注意,NFL定理的前提是所有问题出现的机会相同或者所有问题同等重要,但是实际情形并不是这样。
那么NFL定理有什么用呢?
NFL定理是让我们意识到:脱离具体问题而空泛的谈论哪一个算法更好毫无意义

1.5发展历程

1.6应用现状

二、模型评估与选择

2.1过拟合和欠拟合

经验误差与过拟合

错误率(error rate):分类错误的样本数占样本总数的比例称为错误率。
精度(accuracy):精度 = 1 - 错误率。

如果在m个样本中有a个样本分类错误,那么错误率 E = a/m,精度 = 1 - E。 更一般地,把学习器的实际预测输出与样本的真实输出之间的差异称为误差(error)。 学习器在训练集上的误差称为训练误差(training error)或经验误差(empirical error),在新样本上的误差称为泛化误差(generalization error)。 实际所希望的,是在新样本上能表现得很好的学习器,在这里引入两个重要概念:过拟合与欠拟合。
过拟合:学习器把训练样本学习的太好了,已经把训练样本自身的特点当做了所有潜在样本会存在的一般性质,会导致泛化性能下降,这种现象称为过拟合(overfitting)。
欠拟合:与过拟合恰恰相反。

上图即为学习发现过拟合时候的情况,可以看到随着学习轮数的增加,训练误差一直在下降,然而泛化误差在经历一小段下降后却开始升高,此时便需要采用一些措施来缓解过拟合问题。 而在过拟合的时候,训练集的loss和测试(验证)集的loss则有如下变化: train_loss下降,test_loss下降一点后不再下降保持很高或者test_loss在下降一点后开始升高。 需要认识到,欠拟合通常是因为学习能力低下而导致的,这一点可以较容易克服,然而过拟合是无法彻底避免的,所能做的只有运用各种方法来缓解,常见的缓解过拟合的方法有正则化与dropout等。

2.2评估方法

通常,我们使用一个测试集来测试学习器对新样本的判别能力,然后以测试集上的“测试误差”来作为泛化误差的近似。需要注意,测试集应与训练集互斥,即测试样本尽量不在训练集中出现或未在训练集中使用过。
很多时候,我们最初都会得到一个包含m个数据样本的数据集D,那么如何得到训练集S和测试集T呢?自然是选择合适的方法对D进行划分,产生出训练集S和测试集T。
以下介绍几种常见的划分方法:

2.2.1 留出法 何谓留出法(hold-out)? 留出法:直接将数据集D划分为两个互斥的集合,其中一个作为训练集S,另一个作为测试集T,保证S∩T=∅且S∪T=D。 1 注意:训练集与测试集的划分要尽可能保证数据分布的一致性,避免因数据划分过程引入额外的偏差而对最终结果产生影响。

2.2.2 交叉验证法 何谓交叉验证法(cross validation)? 交叉验证法:将数据集D划分为k个大小相似的互斥子集,即D=D1∪D2∪…∪Dk,Di∩Dj=∅(i≠j)。每个子集Di都尽可能保持数据分布的一致性,即从D中分层采样得到。然后每次用k-1个子集的并集作为训练集,剩下的那个子集作为测试集,这样就可以得到k组训练/测试集,从而进行k次训练和测试,最终返回这k次测试的均值。 

2.2.3 自助法 在留出法和交叉验证法中,由于保留了一部分样本作为测试,所以实际评估的模型中所使用的训练集比D小,而我们希望评估的是D训练出的模型,所以这必然会引入一些因训练样本规模不同而导致的估计偏差。所以我们在这里介绍自助法(bootstrapping)来解决这个问题。 自助法以自助采样(bootstrap sampling)为基础(自助采样也叫“可重复采样”与“有放回采样”): 给定包含m个样本的数据集D,我们对它进行采样产生数据集D’:每次从D中随机选一个样本,将其拷贝如D’中,再将其放回D中,重复m次,那么就可以得到包含m个样本的数据集D’。显然D中一部分样本会在D’中多次出现,而另一部分不出现,由一个简单的估计可以得到样本在m次采样中不被采到的概率如下: 于是我们可以把D’当做训练集,D-D’作为测试集,这样,实际评估模型与期望评估模型都有m个训练样本,而我们仍然有数据总量1/3的样本用于测试,这样的测试结果,称为“包外估计”。 注意:自助法在数据量较少,难以有效划分训练集和测试集的时候很有用,然而自助法改变了初始数据分布,引入了估计偏差,故在数据量足够的时候,留出法和交叉验证法更常用一些。

2.3调参与验证集

给定包含m个样本的数据集D,在模型评估与选择过程中由于需要留出一部分数据进行评估测试,事实上我们只使用了一部分数据训练模型。 需要注意的是,我们通常把学得模型在实际使用中遇到的数据称为测试数据,为了加以区分,模型评估与选择中用于评估测试的数据集称为验证集(validation set)。例如,在研究对比不同算法的泛化性能时,我们用测试集上的判别效果来估计泛化性能,而把训练数据另外划分为测试集和验证集,基于验证集上的性能来进行模型选择和调参。

三、线性模型

3.1 基本形式

给定由d个属性描述的示例x = (x1;x2;…;xd),其中xi是x的第i个属性上的取值,线性模型(linear model)试图学得一个通过属性的线性组合来进行预测的函数,即:

一般用向量写成:

线性模型形式简单且易于建模,而且有很好的可解释性(comprehensibility)。 本章主要介绍几种经典的线性模型。我们先从回归任务开始,然后讨论三分类和多分类任务。

3.2 线性回归

给定数据集D = {(x1,y1),(x2,y2),…,(xm,ym)},其中xi = (xi1;xi1;…;xid),线性回归试图学得一个线性模型以尽可能准确地预测实值输出标记。即线性回归试图学得:

可见关键在于确定w和b,也就是衡量f(x)与y之间的差别。而之前介绍过,均方误差是回归任务中最常用的性能度量,因此我们可试图让均方误差最小化,即:

均方误差有非常好的几何意义,它对应了常用的欧几里得距离。而基于均方误差最小化求解模型的方法被称为最小二乘法(least square method),在线性回归中,最小二乘法就是试图找到一条直线,使所有样本到直线上的欧式距离之和最小。 求解w和b使得上式最小化的过程,被称为线性回归模型的最小二乘参数估计(parameter estimation)。我们可将上式(记为E(w,b))分别对w和b求导,得到:

即可得到w和b的最优解的闭式(closed-form)解。 更一般的情形如开头的数据集D,样本由d个属性描述,此时被称为多元线性回归。 此处我们依然可以用最小二乘法来求解,不同的是我们把w和b吸收入向量形式定义为w^,把数据集D表示为一个m×(d+1)大小的矩阵X,每行对应一个示例,则有如下:

同理把标记也写成向量模式,则有

令上式等于Ew^,则有:

上式为零即可得到最优解的闭式解。 如果XTX为满秩矩阵或者正定矩阵,那么令上式为零可有:

3.3多分类学习

在现实中,我们所遇到的大多数问题其实是多分类学习任务。
考虑N个类别C1…CN,多分类学习的基本思路是“拆解法”,即将多分类任务拆为若干个二分类任务求解。
最经典的拆分策略有三种:“一对一”(one vs. one ,OvO),“一对其余”(One vs. Rest, OvR),和“多对多”(Many vs. Many, MvM)。
一对一的基本思想如下:将数据集中的N个类别两两配对,产生N(N-1)/2个二分类任务。在测试时,把新样本同时交给所有分类器,于是得到N(N-1)/2个分类结果,最终结果可以通过投票产生;即把被预测的最多的类别别作为最终结果。
一对其余的思想如下:每次将一个类的样例作为正类,其他都作为反类来训练N个分类器。在测试时若只有一个分类器预测为正类,则对应的类别标记为最终结果,若有多个分类器预测为正类,则考虑各分类器的预测置信度,选择置信度最大的类别标记作为分类结果。
下图为简单的示意图

容易看出,OvR 只需训练N 个分类器,而OvO需训练N(N - 1)/2个分类器,因此,OvO的存储开销和测试时间开销通常比OvR 更大. 但在训练时,OvR 的每个分类器均使用全部训练样例,而OvO的每个分类器仅用到两个类的样例,因此,在类别很多时。OvO 的训练时间开销通常比OvR 更小,至于预测性能,则取决于具体的数据分布,在多数情形下两者差不多。 MvM 略。

3.4类别不平衡问题

前面所述分类学习方法都有一个共同的基本假设:不同类别的训练样例数目相同。 类别不平衡(class-imbalance)就是指分类任务中不同类别的训练样例数目差别很大的情况。本文假设反例数目远大于正例。 介绍类别不平衡学习的一个基本策略——“再缩放”(rescaling)。 目前有三类做法: 直接对训练集的反类样例进行“欠采样”,即去除一些反例使得正反例数目接近。 对训练集的正例进行“过采样”,即增加一些正例使得正反例数目相似。 第三类则是基于原始训练集进行学习,在用训练好的分类器进行预测时再进行其他操作

决策树

支持向量机

神经网络

贝叶斯分类器

集成学习

聚类

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

喃寻1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值