机器学习概论

目录

1,机器学习介绍

1.1,什么是机器学习

1.2,机器学习的目的

2,机器学习的分类

3,统计机器学习方法三要素

4,模型的评估和模型的选择

5,模型的泛化能力

6,性能度量

6.1,错误率和精度

6.2,查准率,查全率和

6.3,偏差和方差

7,机器学习算法分类


1,机器学习介绍

1.1,什么是机器学习

在介绍机器学习之前,我们先来讨论一下什么是学习这个问题,其中一位大咖赫尔波特.西蒙给出的结论是:“如果一个系统能够通过执行某一个过程,进而改进它的性能,那么这个过程,就可以称之为学习”。那么按照这一个观点,机器学习就是计算机系统通过运用数据及统计方法提高系统的性能的机器学习过程。

1.2,机器学习的目的

那么了解了什么是机器学习,现在我们讨论为什么要机器学习,简单的来说,机器学习就是对我们的数据进行预测和分析,特别是对我们未知的新数据集进行预测和分析,对数据的预测和分析,是通过建立模型实现的,机器学习总的目的就是考虑学习什么样的模型以及如何学习模型以使得我们的模型能够对未知的数据集作出准确的预测和判断,同时也要考虑特高我们的学习效率。

2,机器学习的分类


机器学习一般包括监督学习无监督学习,强化学习,半监督学习和主动学习,接下来,我们主要针对每一种学习方法进行解释。

 

  1. 监督学习:简单的来说,监督学习,就是我们人为的给我们的数据集添加一个标注,使得我们的机器学习模型可以借助外力从我们的数据中去学习。标注数据表示我们的输入与输出的对应关系,我们建立的模型,对给定的新数据集,产生相应的输出,监督学习的本质就是学习输入到输出的映射规律。
  2. 无监督学习:无监督学习是指从无标注的数据集中进行学习预测的机器学习,它和监督学习刚好相反,监督学习需要我们人为的添加标注,而无监督学习不需要我们人为的添加标注,模型会自动从给定的数据集中学习,然后对我们给出的新的数据集进行预测判断,无监督学习本质是学习数据中统计规律和潜在的结构。
  3. 强化学习:强化学习是指智能系统在与环境的连续互动中学习最优行为策略的机器学习问题。
  4. 半监督学习:半监督学习是指利用标注数据和未标注数据学习预测模型的机器学习问题,通过有少量的标注数据,大量的未标注数据,半监督学习的目的是在利用未标注数据中的信息,辅助标注数据进行监督的学习以较低的成本达到较好的学习效果。
  5. 主动学习:主动学习是指机器不断主动给出实例让教师进行标注,然后利用标注数据学习预测模型的机器学习问题,通常监督学习使用给定的标注数据集,往往是随机得到的,可以看做是被动学习,主动学习的目标是找出对学习有帮助的实例让教师标注,以较小的标注代价,达到较好的学习效果。

3,统计机器学习方法三要素

统计学习方法是由模型,策略和算法构成的,这三个要素统称为统计学习三要素。

  1. 模型:统计学习首先要考虑的就是使用什么样的模型,在监督学习的过程中,模型就是要学习的条件概率分布或者说是决策函数,模型的假设空间包含所有可能的条件概率分布和决策函数。假设空间用\pounds标示,那么假设空间可以定义为决策函数的集合:\pounds =\left \{ f|Y=f(x)) \right \},其中XY是定义在输入空间和输出空间上面的变量,这个时候,\pounds通常是一个由参数向量决定的函数族,\pounds=\left \{ f|Y=f_{\theta } (X)),\theta \in R^{n}\right \},参数向量\theta取值于n维欧式空间R_{n}。假设空间也可以是条件概率的集合:\pounds =\left \{ P|P(Y|X))\right \},其中XY是定义在输入空间和输出空间上的变量,这时\pounds通常是一个由参数向量决定的条件概率分布族:\pounds =\left \{ P|P_{\theta }(Y|X),\theta \in R^{n} \right \},参数向量\theta取值于n维欧式空间R_{n}
  2. 策略:在我们有了假设空间之后,统计学习的目标在于通过什么样的学习方法,从假设空间中选取最优的模型,为此,我们引入损失函数和风险函数的概念,损失函数度量模型一次预测的好坏,风险函数度量平均意义下模型预测的好坏。
    损失函数和风险函数:监督学习问题是在假设空间中选取一个最优的模型\pounds作为决策函数,对于给定的输入X,由F\left ( X \right )给出相应的输出Y,其中预测的输出值Y和我们的真实标签值,可能相同,也可能不同,我们使用一个损失函数(LOSS function)或者代价函数(cost funvtion)来度量预测的错误程度,损失函数是F\left ( X \right )Y的非负实值函数,记做L\left ( Y,f(X)) \right )
    下面介绍几种常见的损失函数:
    0-1损失函数:当我们的的标签预测正确,损失函数的值为1,否则预测错误值就为0.
    平方损失函数(注意和均方误差函数分开):L\left ( Y,F(X) \right )=\left ( Y-f(X) \right )^{2}
    绝对损失函数:L(Y,f(X))=|Y-f(X)|
    对数损失函数(对数似然损失函数):L(Y,f(X))=-log(P(Y|X)))
    损失函数越小,我们的模型就越好,由于模型的输入输出都是随机变量,遵循联合概率分布P(X,Y),所以损失函数的期望是:R_{exp}(f)=E_{p}[L(Y,f(X))]=\int L(y,f(x))P(x,y)dxdy,这是理论上模型f(X)关于联合分布P(x,y)平均意义下的损失,称为奉献函数或者期望损失。我们学习的目标就是选择期望风险最小的模型。
  3. 算法:算法就是指我们模型的具体计算方法,统计学习基于训练数据集,然后根据学习的策略,从我们的假设空间中选取最优的模型,最后考虑使用什么样的计算方法计算我们的最优模型。

4,模型的评估和模型的选择

  1. 训练误差和测试误差:统计学习的目标是是我们的模型对未知的数据有很好的预测能力,不同的学习方法给出的预测模型是不同的,当损失函数给定的时候,基于损失函数模型的训练误差和测试误差就成为我们的模型预测能力的评估指标,(但是我们模型的损失函数未必是评估模型时使用的损失函数)。
    假设我们学习到的模型是:Y=f(X),训练误差就是模型关于训练集的平均损失:R_{emp}(f)=\frac{1}{N}\sum_{i=1}^{N}L(y_{i},f(x_{i})),N是我们的样本容量。同理,测试误差是我们的模型关于测试集的平均损失。当我们的损失函数是0-1损失的时候,我们的测试误差就变成测试数据集上面的误差率,准确率就是测试数据集上面判断正确样本比例占整个数据集的比例。
  2. 过拟合:当我们的假设空间含有不同复杂度的模型的时候时,就要面临模型的选择问题,而对于我们来说,肯定是想选择更加逼近我们真实模型的模型,也就是说所选择的模型的参量要尽可能与真实的模型参量相同,但是如果我们一味的追求高的预测能力,那我们所选择的模型复杂度就会很高,也就是说我们选择的模型就会变得很复杂,即我们的模型学习到了与数据集不相关的一些干扰的信息,此时,我们的模型就可能发生了过拟合的问题,过拟合就是我们在选择模型的时候,模型的参数过多,以至于模型对我们的训练数据集预测的很好,但是对于我们的测试数据集预测能力很差的情况,,所以在选择模型的过程中,我们要避免这种情况的发生。

    上面的图片描述了模型的训练误差和模型的测试误差与模型的复杂度之间的关系,很明显,当我们的模型复杂度很低的时候,我们的模型预测能力很低,不管在测试集还是训练数据集,都是有很高的预测误差,但是当我们的模型复杂度逐渐的增大,我们的模型的预测能力会逐渐的上升,但是在这个过程中,有一个阈值点,也就是在这一点的时候,我们的模型不管在训练数据集上,还是在测试集数据集上,预测能力都是很高的,但是过了这个阈值点,随着我们模型复杂度再次逐渐的提高,尽管在训练数据集上预测误差还在逐渐减小,但是在测试集上面,我们的预测误差反而在逐渐增大,这个时候就是发生了过拟合,也就是说我们的模型过于复杂,学习到了一些不必要的信息,所以,此时我们就要减小我们的模型复杂度,找到这个变化的阈值点。

  3. 模型选择:我们在我们的假设空间中如何选取我们的最佳模型呢?这就涉及了模型的选择问题。我们给出两种模型选择的方法:正则化和交叉验证。
    正则化:正则化方法是结构风险最小化策略的实现,就是在经验风险上面添加上一个正则项或者说是惩罚项,正则化项一般是模型复杂度的单调递增函数,模型越是复杂,正则化值就越大,我们常用的正则化项就是向量的范数。正则化的一般形式:min\frac{1}{N}\sum_{i=1}^{N}L(y_{i},f(x_{i}))+\lambda J(f),第一项是我们的经验风险,第二项是我们的正则化项,\lambda是调整两者之间关系的系数。正则化项通常取参数向量的L1或者L2范数。L1范数:||\omega ||_{1}L2范数:||\omega ||^{2},其中的\omega代表是我们的参数向量。如果第一项经验风险小的模型可能较复杂,这个时候我们的第二项就会很大,正则化的作用就是选择经验风险和我们的复杂度都同时较小的模型。
    交叉验证:当样本数据集充分的时候,我们就会把数据集随机的分为训练集,验证集和测试数据集三份,训练数据集用来训练我们的模型,验证数据集用于我们的模型的选择,而测试数据集用于对我们最终学习方法的评估,在不同的模型中,选择验证集有最小的预测误差的模型。这种方法很好,但是现实中,我们可能会遇到数据集很小的情况,这个时候为了选择更好的模型,我们可以使用交叉验证的方法,根据数据集的划分方法不同,我们分成三种交叉验证。
    简单的交叉验证:就是随机的把我们的数据集分为训练集和测试集,然后用训练集来训练和选择我们的模型,使用测试集来评估我们的模型预测的好坏。
    S折交叉验证:将我们的数据集划分为S折互不相交的子数据集,数据集的大小相同,然后用其中的S-1个子集训练我们的模型,剩余的一个子集用于测试我们的模型,重复S次这样的操作,然后选出S测试中误差最小的模型使用。
    留一交叉验证S折交叉验证中的k=N的情况为留一交叉验证,这种情况往往在数据集缺乏的情况下使用。

5,模型的泛化能力

  • 学习方法的泛化能力指的是对于我们训练好的模型,它对未知数据集预测的这种能力,简单来说可以理解为推广的能力,所以我们使用泛化这个词来评价我们的模型对未知数据的预测能力。如果我们学习到的模型是f,那么使用这个模型对未知数据的预测的误差就是泛化误差(generalization error):R_{exp}(f)=E_{p}[L(Y,f(X))]=\int L(y,f(x))P(x,y)dxdy,泛化误差反映了学习方法的泛化能力,也就是学习的迁移能力,我们在选择模型的时候,更期望与选择泛化误差小的模型作为我们的最优模型,实际上,泛化误差就是所学习到的模型的期望风险。

6,性能度量

针对我们模型的泛化能力进行评估,需要有衡量模型的泛化能力的评价标准,这就是性能度量,下面,我们从回归和分类两个方面讨论我们模型的性能度量。要评估学习器f的性能,就要把预测结果f(x)和标签的真实值y进行比较。

  • 回归任务经常使用的性能度量指标是:“均方误差”(mean squared error)。
    E(f,D)=\frac{1}{m}\sum_{i=1}^{m}(f(x_{i})-y_{i})^{2}
  • 对于数据分布D和概率密度函数p(.),均方误差可以描述为:
    E(f,D)=\int (f(x)-y)^{2}p(x)dx

6.1,错误率和精度

错误率和精度是分类任务中常用的两种性能度量的指标,即适用于二分类问题,也适用于多分类问题,错误率定义为分类错误的样本占样本总数的比例,精度定义为分类正确的样本占总样本数的比例,对于样本数据集D

  • 分类的错误率:E(f,D)=\frac{1}{m}\sum_{i=1}^{m}\mathbb{I}(f(x_{i})\not\equiv y_{i})
  • 分类正确的精度E(f,D)=\frac{1}{m}\sum_{i=1}^{m}\mathbb{I}(f(x_{i})= y_{i})=1-E(f;D)

对于数据分布D的数据集和密度函数p(.),可以定义错误率和精度为:

  • 错误率E(f;D)=\int \mathbb{I}(f(x)\neq y)p(x)dx
  • 精度acc(f;D)=\int \mathbb{I}(f(x)=y)p(x)dx=1-E(f,D)

6.2,查准率,查全率和F_{1}

首先考虑为什么我们需要这三个指标,我们的错误率和精度是衡量我们分类错误或者正确所占的比例,但是,对于现实问题,比如web搜索问题,我们可能关心,检索出的信息有多少是用户很感兴趣的,用户感兴趣的信息有多少被我们检索出来了,此时准确率和错误率并不能反映我们需要的指标,所以我们定义查准率和查全率来反映我们需要的指标,简单理解查准确就是查询的准确率,比如网页搜索,我们每一次检索都会检索出很多信息,那么究竟有多少是用户喜欢的,或者说是感兴趣的,这就是我们的查准率,而查全率,在拿搜索举例子就是说,用户可能对某一个话题感兴趣,用户通过搜索,有多少个关于用户喜欢的话题被检索出来,也就是检索出来的用户感兴趣话题,占据这个话题总数的比例。

对于二分类问题,我们分别引入四个指标:真正例(TP),假正例(FP),真反例(TN),假反例(FN),显然这四个例的总数等于样本总数。我们用混淆矩阵标示这种关系:

真实情况预测结果
正例反例
正例TPFN
反例FPTN

下面我们开始定义查准率(P)和查全率(R):(上面表格中对角线的数值标示所有预测正确的样本总数)

  • 查准率:P=\frac{TP}{(TP+FP)},查准率也就是在所有预测为正类的样本中,真实标签为正类并且预测结果也正确,也就是正类样本所占的比例。
  • 查全率:R=\frac{TP}{(TP+FN)},查全率也就是在数据集的所有正类的样本中,预测正确的样本所占的比例。

查准率和查全率是一对矛盾的度量,查准率高时,查全率就偏低,而查全率高时,查准率往往偏低。

6.3,偏差和方差

偏差方差也是评估算法性能的一种度量指标。下面假设我们的数据集服从同一分布,对于测试样本xy_{D}标示对我们数据集的标记,也就是标签,yx的真实标记,f(x,D)为对样本的预测输出标签,以回归任务为例:

  • 学习算法的期望预测为:f(x)=E_{D}[f(x;D)]
  • 使用样本数相同的不同训练集产生的方差是:avr(x)=E_{D}[(f(x;D)-f(x))^{2}]
  • 噪声为:\xi ^{2}=E[(y_{D}-y)^{2}]
  • 期望的输出与真实的标记的差别称为偏差(bias):bias^{2}(x)=(f(x)-y)^{2}

假设我们的噪声为0,通过对期望的泛化误差进行分解:

E(f;D)=E_{D}[(f(x,D)-f(x))^{2}]+(f(x)-y)^{2}+E_{D}[(y_{D}-y)^{2}],展开过程参考西瓜书。

也就是说最后我们的泛化误差=bias^{2}(x)+var(x)+\varepsilon ^{2},即泛化误差可以分解为:偏差,方差和噪音三者的和。偏差度量了学习算法的期望预测与真实结果的偏离程度,即刻画学习算法本身的拟合能力,方差度量了同样大小的训练集的变化所导致的学习性能的变化,即刻画了数据的扰动所造成的影响,噪声表达了在当前任务上任何的学习算法所能达到的期望泛化误差的下界,即刻画学习问题本身的难度。所以给定的问题,为了使得模型具有好的泛化能力,我们需要有小的偏差,即可以充分的拟合数据,并且使方差尽可能的小,也就是使得数据的扰动产生的影响尽可能的小。

图片展示了偏差,方差和模型泛化能力的关系:给定的学习任务,当模型训练程度不是很强的时候,也即是学习器的拟合能力不足,此时轻微的数据扰动,就可以是我们模型的泛化误差发生大的变化,这个时候,也就是说是我们的偏差主导我们模型的泛化误差,随着学习能力的加强,模型学习到数据的扰动带来的影响,而方差又成为主导模型泛化误差的因素,此时,训练数据的轻微扰动,就会带来泛化误差巨大的变化,所以,我们训练的模型,就是要找到这一个方差,偏差的临界点,此时模型的泛化误差最低,也就是我们要找的模型。

7,机器学习算法分类

方法适用问题模型特点模型类型学习策略学习的损失函数学习算法
感知机二分类分离超平面判别模型极小化分点到超平面距离误分点到超平面的距离随机梯度下降
k近邻多分类,回归特征空间,样本点判别模型k近邻不具有显示的学习过程
朴素贝叶斯多分类

特征与类别的联合概率分布,条件

独立性假设

生成模型极大似然估计,极大后验估计对数似然损失概率计算公式,EM算法
决策树多分类,回归分类树,回归树判别模型正则化的极大似然估计对数似然损失特征选择,生成,剪枝
支持向量机二分类分离超平面,核技巧(到高维的映射技巧)判别模型极小化正则化损失函数,软间隔最大化合页损失序列最小优化算法(SMO)
bosting二分类弱分类器的线性组合判别模型极小化加法模型的指数损失对数损失前向分步加法算法
EM算法概率模型参数估计含隐变量概率模型 极大似然估计,极大后验概率估计对数似然损失迭代算法

参考资料:

[1]《机器学习》周志华著

[2]《统计学习方法》李航著

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值