李航·《统计学习方法》学习笔记

第一章 统计学习的方法概论

本文主要参考 李航·《统计学习方法》,围绕统计学习的过程来展开,分红五个部分:综述、模型、策略、算法、模型评估和选择。方便小白对机器学习流程有个总体的了解。web

1.1 统计学习概述

1. 统计学习的过程:

  • 肯定包含全部可能模型的假设空间
  • 肯定各个模型学习的策略
  • 利用不一样的算法求解各个模型
  • 进行模型评估和选择:对各个模型进行评估,最终选择最优模型
  • 利用最优的模型对数据进行预测或分析

例子:房屋价格预测的例子更好理解这一个过程。
真实房价 y 与房屋面积 ( x 1 ) 、房间数量 ( x 2 ) 等特征有关。如今要求咱们建模实现房屋价格的预测问题。算法

  • 第一步,咱们应该先肯定假设空间机器学习

    • 能够用线性回归模型 f 1 ( x ) = w T x svg

      • 假设1:咱们认为房价很只取决于房屋面积 ( x 1 )
        h 1 ( x ) = ω 0 + ω 1 x 1
      • 假设2:咱们认为房价只取决于房屋面积 ( x 1 ) 和房间数量 ( x 2 )
        h 2 ( x ) = ω 0 + ω 1 x 1 + ω 2 x 2
    • 也能够用多项式回归模型拟合曲线: f 2 ( x ) = w 0 + w 1 x 1 + w 2 x 2 2 函数

    则假设空间为:
    Ω = { f 1 ( x ) , f 2 ( x ) } 性能

    其实,假设空间的就是你要选择什么模型去解决一个问题,从大方向上说,你能够选择线性模型,也能够多项式回归模型,选择了一个模型后还要继续作假设,探究在不一样特征数量下哪一个模型的性能更好。学习

  • 第二步,肯定` f 1 ( x ) , f 2 ( x ) 两个模型各自的学习的策略测试

    • 在线性回归问题中,采用最小化平方损失函数法

    m i n w , θ ( f w , θ ( x ) y ) 2 优化

  • 选择算法分别求解 f 1 ( x ) , f 2 ( x ) 两个模型:atom

    • 对于 f 1 ( x ) = ω T x + b : 能够采用梯度降低算法求解最佳参数 ω ,获得最优模型: y = ω T x + b .

    • 相似的,获得对 f 2 ( x ) = w T x + θ T x 2 的最优模型: f 2 ( x ) = w T x + θ T x 2

  • 进行模型评估和选择:对各个模型进行评估,最终选择最优模型

    • 经过一些模型选择的方法,从 f 1 ( x ) , f 2 ( x ) 中选择出好的模型,假设是 f 1 ( x )
  • f 1 ( x ) 进行预测或分析。

2. 统计学习的分类:

  • 监督学习:数据集含有标记,对给定的输入,对应的有一个输出。
  • 非监督学习:数据集不含标记。典型的应用是聚类
  • 强化学习: 基本概念是回报函数,经过定义好的行为和坏的行为,加上趋好避坏的学习型算法,让程序做出一系列正确的决策。

3. 监督学习的分类

监督学习有两种分法,一种把监督学习分红生成学习和判别学习;另外一种把监督学习分红分类问题、标注问题和回归问题。

3.1 生成方法与判别模方法

3.1.1 生成方法

生成方法由数据学习获得联合几率分布 P ( X , Y ) ,而后利用条件几率公式生成条件几率分布 P ( Y | X ) ,做为预测的模型,所以称为生成方法。

  • P ( Y | X ) = P ( X , Y ) P ( X )
  • 典型的模型有:朴素贝叶斯算法、隐马尔可夫模型
  • 模型特色:学习时收敛速度快
3.1.1 判别方法

判别方法:由数据直接学习决策函数 f ( x ) 或条件几率 P ( Y | X )
- 典型的模型有: k 近邻法、感知机、决策树、逻辑回归算法、最大熵模型、支持向量机、提高方法和条件随机场。
- 模型特色:学习准确率每每比较高。

3.2 分类问题、标注问题和回归问题

3.2.1 分类问题

监督学习中,当输出变量Y的取值是有限个离散值时,预测问题便成为分类问题。这时的输入变量能够是离散的,也能够是连续的。

评价一个分类器主要有三个指标精确率P召回率R和精确率与召回率的调和均值F1值
精确率P的定义:

P = T P T P + F P

召回率R的定义:
R = T P T P + F N
F1值的定义:
F 1 = 2 T P 2 T P + F P + F N

TP(Ture - Positive):将正类预测成正类的数
FN(False - Negative):负类预测成负类数
FP(False - Positive):负类预测成正类数
TN(Ture - - Negative):负类预测成负类数

3.2.2 标注问题

  • 标注问题的例子就是信息提取问题中,给一个句子的每个词进行 标注。

  • 标注问题经常使用的统计统计学习方法:隐马儿可夫模型、条件随机场。

  • 标注问题在信息抽取、天然语言处理等领域有不少应用。

3.2.3 回归问题

  • 回归问题输出Y是连续变量,求解回归问题的损失函数是平方损失。

1.2 模型

在监督学习中,模型表示输入到输出的一种映射关系,其形式能够是条件几率型P(Y|X),也能够是决策函数型Y = f(x).

模型可能有不少个,不一样模型复杂度不一样,解决问题的效果不一样。即便是同个线性模型,也会随着参数的个数不一样而致使最后的模型不一样。咱们能够先作不少模型假设,造成一个假设空间

假设空间能够定义为决策函数Y = f(x) 的集合:

Ω = { f | Y = f θ ( X ) , θ ϵ R n }

其中, θ 为参数向量, R n 称为参数空间。

假设空间也能够定义为一个条件几率P(Y | X)的集合:

Ω = { P | P θ ( Y | X ) , θ ϵ R n }

其中, θ 为参数向量, R n 称为参数空间。

例如:

能够用一次线性模型拟合曲线 f 1 ( x ) = ω T x + b

也能够用二次模型拟合曲线: f 2 ( x ) = w T x + θ T x 2

则假设空间为:
Ω = { f 1 ( x ) , f 2 ( x ) }

1.3 策略

肯定了假设空间,统计学习接着考虑要用什么样准则去选择假设空间中各个决策函数或者条件几率的最佳形式(最佳参数),这种准则就叫策略

经典的策略就是最小化经验损失函数最小化结构损失函数。那么首先应该引入损失函数的概念。

1.3.1 损失函数

损失函数用于度量模型预测的错误程度。损失函数的值越小,模型就越好。损失函数记做 L ( Y , f ( x ) ) .

  • 损失函数的种类主要有:

    • 0-1损失函数

      • L ( Y , f ( x ) ) = { 0   f ( x ) 1 Y = f ( x )
    • 平方损失函数

      • L ( Y , f ( x ) ) = ( Y f ( x ) ) 2
    • 对数损失函数
      • L ( Y , f ( x ) ) = l o g P ( Y | X )
    • 绝对损失函数
      • L ( Y , f ( x ) ) = | Y f ( x ) |

1.3.2 经验损失、指望损失和结构损失

  • 指望损失(风险)函数
    指望损失(风险)函数定义为损失函数的均值

    • R e x p ( f ) = E p [ L ( Y , f ( x ) ) ] = L ( Y , f ( x ) ) P ( x , y ) d x d y .

    实际中咱们没法知道(X,Y)遵循什么样联合分布P(X,Y), 因此指望损失并不可能精确计算。但当咱们的训练集容量不少时,能够能用经验损失来估计指望损失。

    • 经验损失(风险)函数:模型 f ( x ) 关于训练集平均损失称为经验损失。
      假设给定一个包含N个数据的训练集:

    • T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . ( x N , y N ) } `

    那么数据集的经验损失或经验风险为:

    • ` R e m p = 1 N i = 1 N L ( y i , f ( x i ) ^ )

      当训练集的个数N趋于无穷时,指望损失的等于经验损失,经验损失能够当作是对指望损失的估计

  • 结构损失函数:当样本容量很大时,经验损失最小化能够保证很好的学习效果,由于样本容量N趋于无穷时,经验损失等于指望损失。可是当样本容量比较小时,很容易因为过拟合而致使预测结果不理想。为了防止过拟合,能够在经验损失的基础上加上一个正则化项,也叫惩罚项

    • 结构损失 = 经验风险 + 正则化项
    • R s r m = 1 N i = 1 N L ( y i , f ( x i ) ^ ) + λ J ( f )

    正则化项 J ( f ) 与决策函数 f 的复杂度有关。模型 f 越复杂,正则化项 J ( f ) 就越大。 λ 0 为调节系数。正则化项能够是模型参数向量的范数.

    例如,在回归问题中,损失函数时平方损失,正则化项能够是参数向量的 L 2 范数:

    • L ( w ) = 1 N i = 1 N ( f ( x i ; w ) y i ) 2 + λ 2 | | w | | 2

    正则化项能够是参数向量的$L_1$范数:

    • L ( w ) = 1 N i = 1 N ( f ( x i ; w ) y i ) 2 + λ | w | | 1

    第一项经验风险比较小的模型可能比较复杂,拟合效果很好,这时由于模型比较复杂,所以第二项比较大。这样,正则化后就能够选择出经验风险和模型复杂度同时较小的模型。

1.3.3 经验风险最小化、结构风险最小化和目标函数

上面介绍了经验损失、结构损失的概念,而咱们的目标时最小化经验损失或结构损失,把监督问题转化为最优化问题。这时的经验或结构损失函数就是最优化的目标函数

  • m i n f ϵ Ω ; w
    • J ( w ) = 1 N i = 1 N L ( y i , f w ( x i ) ) + λ J ( f )

1.4 算法

最后,根据策略,接着考虑要什么算法来实现策略,求解最优模型.例如在线性回归问题中用梯度降低算法最小化平方损失函数,从而求解w最佳参数,从而获得了最佳模型。

经常使用的求解模型算法有
1. 牛顿法
2. 梯度降低法
3. 正规方程组
4. …

1.5 模型评估和模型选择

通过算法的运算,如今咱们已经求解了假设空间中全部的模型,那么假设空间中到底哪一个模型时最好的呢?这须要对假设空间中的每个模型进行模型评估,最后选择一种最优模型,称为模型选择

1.5.1 模型评估

训练出来的模型性能的好坏,主要取决于训练模型对未知数据是否有较好预测能力。咱们把这种能力称为泛化能力。泛化能力能够由测试偏差判断,也能够由泛化偏差上界评估。并且泛化能力很大程度上收到模型的过拟合程度的影响。

  • 测试偏差:定义为测试数据集的经验(风险)损失。

    • E t e s t = 1 N i = 1 N L ( y i , f ( x ) ^ )
    • 若是测试数据集的数目N’比较小,那么测试偏差的评价结果可能不可靠,那么能够应用泛化偏差上界来评估模型的泛化能力。
  • 泛化偏差上界:定义为测试数据集的指望(风险)损失(也就是泛化偏差)的最大值。

    • 对于二分类问题,当假设空间是有限个函数的集合 Ω = { f 1 , f 2 , . . . , f d } 时,对任意一个函数 f ϵ Ω ,至少以 1 δ 的几率,使得不等式成立:
      • R ( f ) R ( f ) ^ + ε ( d , N , δ )
      • 其中, ε ( d , N , δ ) = 1 2 N ( l o g 2 d + l o g 2 1 δ )

    能够看到,不等式左边 R ( f ) 是泛化偏差,右端为泛化偏差上界。在泛化偏差中,第一项是训练偏差,训练偏差越小,泛化偏差也越小。在第二项中 ε ( d , N , δ ) 样本数目N的减函数,同时是假设空间数目d的增函数,空间 Ω 的数目d越大,泛化偏差上界就越大。

    由此,若是测试数据集的数目N’比较小泛化偏差上界来告诉咱们能够根据经验偏差 R ( f ) ^ 、训练样本数目N假设空间数目d来评估模型的泛化能力。

  • 过拟合和模型复杂度:
    • 过拟合: 通常来讲,越复杂的模型,对训练数据的拟合效果越好,可是因为训练数据自己存在噪声。所以对训练数据高度拟合的模型,应用到新的数据集上不必定能达到很好的预测效果。这就是过拟合问题
    • 模型复杂度:参数的个数,函数多项式的形式都会影响模型的复杂度,模型复杂度和预测能力相关,下图能够表示训练样本和测试样本的模型复杂度和预测能力之间的关系。
      image
      • 能够看到训练样本的预测偏差随着模型复杂度的增长而将低,而测试样本随着模型复杂度的增长先降低,但因为过拟合,预测偏差转而上升。
    • 奥卡姆剃刀:在全部的模型中,选择可以解释已知数据且十分简单的模型才是最好的模型。

1.2.1 模型选择

典型的模型选择的方法有特征选择、特征过滤、正则化、交叉验证等
- 交叉验证
- 简单交叉验证:数据集分红测试集和训练集,而后训练集在各类条件下训练模型,从而获得不一样模型。在测试集评测各类偏差,选出测试偏差最小的一个模型。
- S折交叉验证:将数据集随机划分为S个不一样的子集,S-1个用于训练,剩下的用于测试;重复这一过程。
- 留一交叉验证:N个样本的数据集,且N比较小时,直接令S = N,那么每次只会留一个样本用于测试。
- 自助法:对数据集D进行N次有放回的采样获得D’,把没出如今D’的样本用于测试,出现过的样本用于训练(参考西瓜书p27)
- 正则化:在前面已经做了介绍。

  • 特征选择:前面提到,不一样的参数个数w,会致使模型的复杂度不一样,而复杂的模型容易引发过拟合的问题。正则化的方法能够以使用保留全部参数w的方法来减小过拟合的风险。而特征选择能够经过减小一些无用的特征,也就是减小w的个数,从而减小模型的复杂度,下降过拟合的风险。*(参考吴恩达视频10)*

    • 对于n 个特征来讲,特征子集的个数有2n 个,如何进行选择呢?可使用如下方法:

      • 前向选择法(Forward Search)
        1) 初始化特征子集为ℱ = Φ。
        2) 对于不属于ℱ的每一个特征,计算添加该特征后模型精度的提高。
        3) 选择提高最大的特征.
        4) 重复第2 步和第3步,直到模型精度再也不上升为止。

      • 后向选择法(Backward Search):

        和前向选择法相似,每次删除对精度影响最不大的特征。

      • 特征过滤

        上面的方法虽然能够达到较优的特征选择结果,可是因为其反复屡次调用模型训练算法,其计算量会至关的大,尤为在训练数据量比较大的时候。为了是特征选择更简便,可使用一种更简单的特征过滤方法。

        过滤特征选择(Filter Feature Selection)

        采用一种启发式的规则对特征进行评分, 选择评分较优的特征。

        互信息(mutual information,MI)
        就是一种可选的评分函数。互信息能够衡量特征 x i 和类别标号 y 的相关性,从而选择出与类别标号 y 最相关的特征 x i 。当 x i 是离散型变量的时候,互信息 MI 的计算公式以下:

        • M I ( x i , y ) = x i y P ( x i , y ) P ( x i , y ) P ( x i ) P ( y )

        使用 M I 进行衡量后,咱们获得了各个特征的评分,那么选择多少个特征可让模型的效果达到最好呢?标准的方法仍是采用交叉检验的方式进行选择。