统计学习方法概论


(李航老师《统计学分析第二版》读书笔记,仅记录自己的心得与觉得重点的地方,如果有不正确的地方,请留言讨论,谢谢)
ps:爱生活,love11

统计学习的基本假设是同类数据具有一定的统计规律性,这是统计分析的前提。统计学习的目的是为了抽象出数据的模型,发现数据的知识,回到数据中进行分析与预测。

统计学习的分类

基本分类

  1. 监督学习
  2. 无监督学习
  3. 强化学习
  4. 半监督学习与主动学习

监督学习与无监督学习可以简单理解为,训练数据是否是已经标注好的数据,如果是标注好的数据,则为监督学习问题,反之,则为无监督学习问题。

强化学习套用书中的描述:强化学习是指智能徐通在与环境的连续互动中学习最优行为策略的机器学习问题。

半监督学习是指训练数据中同时存在已标注的数据与未标注的数据。半监督学习目的在于利用未标注数据中的信息,辅助已标注数据,进行监督学习。数据的标注一般都是耗时耗力的活,一份完美的标注数据需要花费较大的人力物力,因此半监督学习能够有效的降低数据标注造成的花费,以较低的成本达到较好的效果。

主动学习是指机器不断主动给出实例让教师进行标注,然后利用标注数据学习预测模型的机器学习问题。换句话说,也就是主动学习需要人工参与,将那些机器学习“比较难学习”的实例通过人工干预,然后再反馈给机器学习算法的过程。通常的监督学习使用给定的标注数据,往往是随机得到的,可以看作“被动学习”,而主动学习的目标是找出对学习最有帮助的实例让教师标注,以最小的标注代价,达到较好的学习效果。

生成模型与判别模型

生成模型由数据学习联合概率分布P(X,Y),然后求出条件概率分布P(Y/X)作为预测的模型,即生成模型P(Y/X)=P(X,Y)/P(X)

这样的方式之所以称为生成模型,是因为模型表示了给定输入X产生输出Y的生成关系。典型的生成模型有:朴素贝叶斯法,隐马尔可夫模型等。

判别模型是由数据直接学习决策函数f(x)或条件概率分布P(Y/X)作为预测模型,即判别模型。判别模型关心的是给定的输入X,应该预测什么样的输出Y,典型的判别模型包括:K近邻,感知机,决策树,逻辑回归,最大熵模型,支持向量机,条件随机场和提升方法等。

生成模型的特点:生成方法可以还原出联合概率分布P(X,Y),而判别模型不行;生成模型的学习收敛速度更快,即当样本容量增加的时候,学习到的模型可以更加快速的收敛于真实模型;当存在隐变量的时候,仍可以使用生成学习,此时判别模型就不能用。

判别模型的特点:判别模型直接学习的是条件概率P(Y/X)或决策函数f(x),直接面对预测,往往准确率更高。由于直接学习P(Y/X)或决策函数f(x),可以对数据进行各种程度上的抽象、定义特征并使用特征,因此可以简化学习问题。

对判别模型与生成模型的通俗理解:
对于测试数据X,要预测其类别。判别模型的做法是,直接抽象测试数据X,抽取其特征,输入到从训练数据中提取的规则(已经训练好的模型)中,直接给出判别结果。
而生成模型的做法为,从训练数据中,对每个类别都生成一个规则(类别模型),将测试数据X输入到每个规则中,选取输出结果最优的类别最为测试数据的类别。

概率模型与非概率模型

在监督学习中,概率模型取条件概率分布形式P(X/Y),非概率模型取函数形式y=f(x),其中x是输入,y是输出。在无监督学习中,概率模型取条件概率分布形式P(Z|X)或者P(X|Z),非概率模型取函数形式z=g(x),其中x是输入,z是输出。

在监督学习中,概率模式就是生成模式,非概率模式就是判别模式。

概率模型与非概率模型的区别不在于输入与输出之间映射关系,而在于模型的内在结构。概率模型一定可以表示为联合概率分布的形式,其中的变量表示输入、输出、隐变量甚至参数。而针对非概率模型不一定存在这样的联合概率分布。

线性模型与非线性模型

线性模型与非线性模型的区别在于函数y=f(x)是否是线性函数,如果是线性函数则为线性模型,反之则为非线性模型。

常见的线性模型为:感知机,线性SVM,k近邻,Kmeans,潜在语义分析
非线性模型为:核SVM,AdaBoost,神经网络

参数模型与非参数模型

参数模型通常假设总体(随机变量)服从某一个分布,该分布由一些参数确定(比如正态分布由均值和方差确定)

假设可以极大地简化学习过程,但是同样可以限制学习的内容。简化目标函数为已知形式的算法就称为参数机器学习算法。

Eg: 感知机、朴素贝叶斯、逻辑回归、k均值、高斯混合模型

非参数模型对于总体的分布不做任何假设,只是知道总体是一个随机变量,其分布是存在的(分布中也可能存在参数),但是无法知道其分布的形式,更不知道分布的相关参数,只有在给定一些样本的条件下,能够依据非参数统计的方法进行推断。

通过不做假设,算法可以自由的从训练数据中学习任意形式的函数。

Eg: 决策树、支持向量机、adaboost、k近邻、潜在语义分析、概率潜在语义分析

从上述的区别中可以看出,问题中有没有参数,并不是参数模型和非参数模型的区别。

其区别主要在于总体的分布形式是否已知。而为何强调“参数”与“非参数”,主要原因在于参数模型的分布可以由参数直接确定。

参数化模型假设模型参数的维度是固定的,模型可以由有限维参数完全刻画,非参数化模型假设模型参数的维度是不固定的或者说无穷大,随着训练数据量的增加而不断扩大。

损失和风险

模型一次预测的好坏通过损失函数度量,模型平均意义上预测的好坏通过风险函数度量。

损失函数与风险函数

在监督学习中,对于给定的输入X,由f(X)给出相应的输出,这个预测值f(X)与真实Y可能会有一定的差异,用一个损失函数(loss function)或者代价函数(cost function)来度量预测错误的程度。损失函数是f(X)与Y的非负实值函数,记作L(Y,f(X))

几种常见的损失函数有以下几种:

  1. 0-1损失函数(0-1 loss function)
    L ( Y , f ( X ) ) = { 1 , Y ≠ f ( X ) 0 , Y = f ( X ) L(Y,f(X))=\left\{ \begin{array}{c} 1, Y \neq f(X) \\ 0, Y = f(X) \\ \end{array}\right. L(Y,f(X))={1,Y=f(X)0,Y=f(X)

  2. 平方损失函数(quadratic loss function)
    L ( Y , f ( X ) ) = ( Y − f ( X ) ) 2 \begin{array}{c} L(Y,f(X))=(Y-f(X))^2 \end{array} L(Y,f(X))=(Yf(X))2

  3. 绝对损失函数(adsolute loss function)
    L ( Y , f ( X ) ) = ∣ Y − f ( X ) ∣ \begin{array}{c} L(Y,f(X))=|Y-f(X)| \end{array} L(Y,f(X))=Yf(X)

  4. 对数损失函数(logarithmic loss function)或对数似然损失函数(log-likelihood loss function)
    L ( Y , P ( Y ∣ X ) ) = − l o g P ( Y ∣ X ) \begin{array}{c} L(Y,P(Y|X))=-logP(Y|X) \end{array} L(Y,P(YX))=logP(YX)

损失函数值越小,表示预测值与真实值越接近,模型就越好。由于模型的输入、输出 ( X , Y ) (X,Y) (X,Y)是随机变量,遵循联合分布 P ( X , Y ) P(X,Y) P(X,Y),所以损失函数的期望是
R e x p ( f ) = E p [ L ( Y , f ( X ) ) ] = ∫ x × y L ( y , f ( x ) ) P ( x , y ) d x d y \begin{aligned} R_{exp}(f) & = E_{p}[L(Y,f(X))] \\ & = \int_{x \times y} L(y,f(x))P(x,y)dxdy \end{aligned} Rexp(f)=Ep[L(Y,f(X))]=x×yL(y,f(x))P(x,y)dxdy
这是理论上模型 f ( x ) f(x) f(x)关于联合分布 P ( X , Y ) P(X,Y) P(X,Y)的平均意义下的损失,称为风险函数或者期望损失。

机器学习的目标就是选择期望风险最小的模型。由于联合分布 P ( X , Y ) P(X,Y) P(X,Y)是未知的, R e x p ( f ) R_{exp}(f) Rexp(f)不能直接求出。实际上,如果知道了联合分布 P ( X , Y ) P(X,Y) P(X,Y),可以从联合分布直接求出条件概率分布 P ( Y ∣ X ) P(Y|X) P(YX),也就不需要学习了。正是因为不知道联合概率分布,所以才需要学习。这样依赖,一方面根据期望风险最小学习模型要用到联合分布,另一方面联合分布又是未知的,所以监督学习就成了一个病态问题。

给定一个训练集
T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x N , y N ) } . T=\left\{ \begin{array}{c} (x_{1},y_{1}),(x_{2},y_{2}),...,(x_{N},y_{N}) \\ \end{array}\right\}. T={(x1,y1),(x2,y2),...,(xN,yN)}.
模型 f ( X ) f(X) f(X)关于训练数据集的平均损失称为经验风险或者经验损失,记作 R e m p R_{emp} Remp
R e m p = 1 N ∑ i = 1 N L ( y i , f ( x i ) ) \begin{array}{c} R_{emp}=\frac{1}{N}\sum^N_{i=1}L(y_{i},f(x_{i})) \end{array} Remp=N1i=1NL(yi,f(xi))
期望风险是模型关于联合分布的期望损失,经验风险是模型关于训练数据集的平均损失。根据大数定律,当样本容量N趋于无穷大时,经验风险趋于期望风险。所以一个很自然的想法是用经验风险估计期望风险。

经验风险最小化与结构风险最小化

在假设空间、损失函数以及训练数据集确定的情况下,经验风险函数就可以确定,经验风险最小化策略认为,经验风险最小的模型就是最优的模型。根据这一想法,按照经验风险最小化求最优模型就是求解最优化问题:
m i n 1 N ∑ i = 1 N L ( y i , f ( x i ) ) \begin{array}{c} min\frac{1}{N}\sum^N_{i=1}L(y_{i},f(x_{i})) \end{array} minN1i=1NL(yi,f(xi))
当样本容量足够大时,经验风险最小化能够保证较好的学习效果,比如极大似然估计就是经验风险最小化的一个例子。

但是当样本容量较小,经验风险最小化的策略可能会产生过拟合的现象,因此需要对该模型加以惩罚。结构风险最小化就是为了应对过拟合现象而提出的一种策略。结构风险最小化等价于正则化,在经验风险上加上表示模型复杂度的正则化项或惩罚项。结构风险定义如下:
R s r m = 1 N ∑ i = 1 N L ( y i , f ( x i ) ) + λ J ( f ) \begin{array}{c} R_{srm}=\frac{1}{N}\sum^N_{i=1}L(y_{i},f(x_{i}))+ \lambda J(f) \end{array} Rsrm=N1i=1NL(yi,f(xi))+λJ(f)
其中 J ( f ) J(f) J(f)为模型的复杂程度,模型 f f f越复杂,复杂度 J ( f ) J(f) J(f)就越大,反之相反。 λ \lambda λ为惩罚系数,是一个大于等于0的实数,用来权衡经验风险和模型复杂度。结构风险小需要经验风险与模型复杂度同时都较小。

模型评估

训练误差与测试误差

机器学习算法模型的好坏最终体现在模型的泛化能力上。当损失函数确定时,基于损失函数的模型的训练误差和模型的测试误差就自然成为了学习方法评估的标准。

假设学习到的模型是 Y = f ( X ) Y=f(X) Y=f(X),训练误差是模型关于训练数据集的平均损失:
R e m p = 1 N ∑ i = 1 N L ( y i , f ( x i ) ) \begin{array}{c} R_{emp}=\frac{1}{N}\sum^N_{i=1}L(y_{i},f(x_{i})) \end{array} Remp=N1i=1NL(yi,f(xi))
其中N是训练样本容量。
测试误差是模型关于测试数据集的平均损失:
e t e s t = 1 N ∑ i = 1 N L ( y i , f ( x i ) ) \begin{array}{c} e_{test}=\frac{1}{N}\sum^N_{i=1}L(y_{i},f(x_{i})) \end{array} etest=N1i=1NL(yi,f(xi))
其中N是测试样本容量。
训练误差的大小,对判断给定的问题是不是一个容易学习的问题是有意义的,但本质上不重要。测试误差反应了学习方法对未知的测试数据集的预测能力,是学习中的重要概念。显然,给定两种学习方法,测试误差小的方法具有更好的预测能力,是更有效的方法。通常将学习方法对未知数据的预测能力称为泛化能力。

偏差与方差

机器学习中有两个主要的误差来源:偏差与方差。
这里非正式的对偏差与方差做以下定义。
偏差:算法在训练集上的错误率
方差:算法在测试集上的表现比训练集上差多少。

在统计学中对方差和偏差有着十分准确的定义,但是在机器学习领域,将偏差与方差做以上定义也足够使用。

熟悉偏差与方差对模型的改进十分有帮助。

假如你的模型表现如下:

  • 训练集错误率=1%
  • 测试集错误率=11%

更具方差与偏差的定义,我们估计偏差为1%,方差为11%,默许下具有很高的方差,虽然模型的训练误差非常低,但是并没有成功泛化到测试集上,过拟合

假如你的模型表现如下:

  • 训练集错误率=15%
  • 测试集错误率=16%

我们估计偏差为15%,方差为1%,该模型的错误率为15%,没有很好的拟合训练集,但他在测试集上的误差并没有比在训练集上的误差高多少,因此,该模型具有很高的偏差,而方差较低,欠拟合

假如你的模型表现如下:

  • 训练集错误率=15%
  • 测试集错误率=30%

我们估计偏差为15%,方差为15%,该模型具有高偏差与高方差:在训练集上表现的很差,在测试集上表现的更差,因此,方差与偏差同样很高。由于模型同时过拟合和欠拟合,过拟合、欠拟合术语很难只缺应用于此。

假如你的模型表现如下:

  • 训练集错误率=0.5%
  • 测试集错误率=1%

该模型效果很好,具有低方差和低偏差。

处理偏差与方差

假如模型具有很高的偏差,可以尝试以下办法:

  1. 加大模型规模(例如神经元的数量):这项技术能够使算法更好的拟合训练集,从而减少偏差。但是复杂的算法往往会带来更高的方差,当发现方差增大时,通过加入正则化可以抵消方差的增加。
  2. 根据误差分析结果修改输入特征:假如误差分析结果鼓励你增加额外特征,从而帮助算法消除某个特定类别的误差。这些新的特征对处理偏差和方差都有所帮助,理论上,添加更多的特征将增大方差,当这种情况出现时,可以添加正则。
  3. 减少或者去除正则化(L1正则,L2正则,dropout):这将减少可避免偏差,但会增大方差。
  4. 修改模型架构(例如神经网络架构):这将同时影响偏差和方差。

假如模型具有很高的方差,可以尝试以下办法:

  1. 添加更多的训练数据:这是最简单最可靠的一种处理方差的策略,只要你有大量的数据和对应的计算能力。添加更多数据,以为着降低噪声对数据的影响,使得模型在训练过程中不必专注每一个数据,使得拟合曲线更加平滑。
  2. 加入正则化:这项技术可以降低方差,但是增大了偏差
  3. 加入提前终止条件:这项技术可以降低方差,但却增大了偏差。提前终止有点像正则化理论,一些些学者认为它就是正则化技术之一。
  4. 通过特征选择减少输入特征的数量和种类:这种技术或许有帮助于解决方差问题,但也可能增加偏差。稍微减少特征的数量(比如从1000个特征减少到900个)也许不会对偏差产生很大的影响,但是如果显著的减少他们(比如从1000减少到100个)则很可能产生很大的影响,也许你排除了太多有用的特征。
  5. 减少模型规模(例如神经元个数):请谨慎使用。这项技术可以减少方差,但会增加偏差。减少模型规模的好处是能够减低运算成本,从而加上训练速度。如果加速训练是有用的,并且对偏差、方差影响较小,无论如何都要考虑减少模型规模,但是如果你的目标仅仅只是为了降低方差,且不关心计算成本,那么添加正则将比减少模型规模更有用。

修改模型架构使得更加适用于特定问题以及根据误差分析结果修正输入特征也能够降低方差。

目前在大部分针对学习算法的改进中,有一些能够减少偏差,但代价是增大方差,反之亦然。因此在偏差和方差之间就产生了权衡。需要找到一种权衡的方法,在降低偏差\方差的同时,减少多方差\偏差的影响。

模型评估标准

准确率、查准率、查全率、F1

准确率:对于给定的测试数据集,分类器正确分类的样本数与样本总数之比。
TP ---- 将正类预测成正类数
FN ---- 将正类预测成负类数
FP ---- 将负类预测成正类数
TN ---- 将负类预测成负类数
准 确 率 = T P + T N / T P + F N + F P + F N 准确率 = TP + TN / TP +FN + FP + FN =TP+TN/TP+FN+FP+FN
精确率 : 查准率。正确预测为正的样本数占全部预测为正的样本数的比例。
T P / T P + F P TP / TP + FP TP/TP+FP
召回率: 查全率。 正确预测为正的样本数占全部实际为正的样本数的比例。
T P / T P + F N TP / TP + FN TP/TP+FN
查准率是预测为正的样本与预测结果的比值。
召回率是预测为正的样本与真实结果的比值。

F1值: 是精确率P与召回率R的调和均值,并且越大越好。
2 / F 1 = 1 / P + 1 / R 2/F1 = 1/P + 1/R 2/F1=1/P+1/R
F 1 = 2 / ( 1 / P + 1 / R ) F1 = 2/ (1/P+1/R) F1=2/(1/P+1/R)
F 1 = 2 P R / P + R F1 = 2PR/P+R F1=2PR/P+R
从公式可以看出,当P不变时,R越大F1越大
当R 不变时,P越大F1越大

PR曲线、roc与auc

PR曲线实则是以precision(精准率)和recall(召回率)这两个为变量而做出的曲线,其中recall为横坐标,precision为纵坐标。
在这里插入图片描述
如果一个学习器的P-R曲线被另一个学习器的P-R曲线完全包住,则可断言后者的性能优于前者,例如上面的A和B优于学习器C。但是A和B的性能无法直接判断,我们可以根据曲线下方的面积大小来进行比较,但更常用的是平衡点或者是F1值。平衡点(BEP)是P=R时的取值,如果这个值较大,则说明学习器的性能较好。

ROC曲线
在ROC曲线中,横轴是假正例率(FPR),纵轴是真正例率(TPR)。
(1)真正类率(True Postive Rate) T P R : T P / ( T P + F N ) TPR: TP/(TP+FN) TPR:TP/(TP+FN),代表分类器预测的正类中实际正实例占所有正实例的比例。
(2)负正类率(False Postive Rate) F P R : F P / ( F P + T N ) FPR: FP/(FP+TN) FPR:FP/(FP+TN),代表分类器预测的正类中实际负实例占所有负实例的比例。
我们可以发现:TPR=Recall
在这里插入图片描述
通过看图,可以看出:左上角的点(0,1)代表假正率为0,正真率为1,所以模型效果最好(理想状态)。因此,ROC曲线越接近左上角该分类器的效果越好。
AUC (Area under Curve):ROC曲线下的面积,介于0.1和1之间,作为数值可以直观的评价分类器的好坏,值越大越好。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值