统计学习(statistical learning)是关于计算机基于数据构建概率统计模型并运用模型对数据进行预测与分析的一门学科。统计学习也称为统计机器学习(statistical machine learning)。统计学习方法包括模型的假设空间、模型选择的准则以及模型学习的算法,称其为统计学习方法的三要素,简称为模型(model)、策略(strategy)和算法(algorithm)。
1、统计学习方法
基本概念
统计学习的方法是基于数据构建统计模型从而对数据进行预测与分析。统计学习由监督学习(supervised learning)、非监督学习(unsupervised learning)、半监督学习(semi-supervised learning)和强化学习(reinforcement learning)等组成.
统计学习的方法可以概括如下:从给定的、有限的、用于学习的训练数据(training data)集合出发,假设数据是独立同分布产生的;并且假设要学习的模型属于某个函数的集合,称为假设空间(hypothesis space);应用某个评价准则(evaluation criterion),从假设空间中选取一个最优的模型,使它对已知训练数据及未知测试数据(test data)在给定的评价准则下有最优的预测;最优模型的选取由算法实现.这样,统计学习方法包括模型的假设空间、模型选择的准则以及模型学习的算法,称其为统计学习方法的三要素,简称为模型(model)、策略(strategy)和算法(algorithm)。
实现统计学习方法的步骤如下:
(1)得到一个有限的训练数据集合;
(2)确定包含所有可能的模型的假设空间,即学习模型的集合;
(3)确定模型选择的准则,即学习的策略;
(4)实现求解最优模型的算法,即学习的算法;
(5)通过学习方法选择最优模型;
(6)利用学习的最优模型对新数据进行预测或分析.
2、三要素
模型
-
假设空间 F \mathcal{F} F定义为决策函数的集合 F = { f ∣ Y = f ( X ) } \begin{aligned} & \mathcal{F} = \left\{ f | Y = f \left( X \right) \right\} \end{aligned} F={f∣Y=f(X)}
其中, X X X是定义在输入空间 X \mathcal{X} X上的变量, Y Y Y是定义在输入空间 \mathcal{} 上的变量。
-
假设空间 F \mathcal{F} F通常是由一个参数向量决定的函数族 F = { f ∣ Y = f θ ( X ) , θ ∈ R n } \begin{aligned} & \mathcal{F} = \left\{ f | Y = f_{\theta} \left( X \right), \theta \in R^{n} \right\} \end{aligned} F={f∣Y=fθ(X),θ∈Rn}
其中,参数向量 θ \theta θ取值于 n n n维向量空间 R n R^{n} Rn,称为参数空间。
-
假设空间 F \mathcal{F} F也可定义为条件概率的集合 F = { P ∣ P ( Y ∣ X ) } \begin{aligned} & \mathcal{F} = \left\{ P | P \left( Y | X \right) \right\} \end{aligned} F={P∣P(Y∣X)}
其中, X X X是定义在输入空间 X \mathcal{X} X上的随机变量, Y Y Y是定义在输入空间 \mathcal{} 上的随机变量。
-
假设空间 F \mathcal{F} F通常是由一个参数向量决定的概率分布族 F = { P ∣ P θ ( Y ∣ X ) , θ ∈ R n } \begin{aligned} & \mathcal{F} = \left\{ P | P_{\theta} \left( Y | X \right), \theta \in R^{n} \right\} \end{aligned} F={P∣Pθ(Y∣X),θ∈Rn}
其中,参数向量 θ \theta θ取值于 n n n维向量空间 R n R^{n} Rn,称为参数空间。
策略
损失函数和风险函数
损失函数(代价函数)来度量预测错误的程度,是预测输出 f ( X ) f\left(X\right) f(X)和实际输出 Y Y Y的非负实值函数,记作 L ( Y , f ( X ) ) L \left(Y, f \left( X \right) \right) L(Y,f(X))。
-
0-1损失函数(0-1 loss function) L ( Y , f ( X ) ) = { 1 , Y ≠ f ( X ) 0 , Y = f ( X ) L \left(Y, f \left( X \right) \right) = \left\{ \begin{aligned} \ & 1, Y \neq f \left( X \right) \\ & 0, Y = f \left( X \right) \end{aligned} \right. L(Y,f(X))={ 1,Y=f(X)0,Y=f(X)
-
平方损失函数(quadratic loss function)
L ( Y , f ( X ) ) = ( Y − f ( X ) ) 2 \begin{aligned} L \left(Y, f \left( X \right) \right) = \left( Y - f \left( X \right) \right)^{2} \end{aligned} L(Y,f(X))=(Y−f(X))2 -
绝对值损失函数(absolute loss function)
L ( Y , f ( X ) ) = ∣ Y − f ( X ) ∣ \begin{aligned} L \left(Y, f \left( X \right) \right) = \left| Y - f \left( X \right) \right| \end{aligned} L(Y,f(X))=∣Y−f(X)∣ -
对数值损失函数(logarithmic loss function)或对数似然损失函数(1og-
likelihood loss function)
L ( Y , f ( X ) ) = − log P ( Y ∣ X ) \begin{aligned} L \left(Y, f \left( X \right) \right) = - \log P \left( Y | X \right) \end{aligned} L(Y,f(X))=−logP(Y∣X)
损失函数值越小,模型就越好。
风险损失(期望损失)是模型 f ( X ) f\left(X\right) f(X)关于联合概率分布 P ( X , Y ) P\left(X,Y\right) 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} \left( f \right) = E_{P} \left[L \left(Y, f \left( X \right) \right) \right] = \int_{\mathcal{X} \times \mathcal{Y}} L \left(Y, f \left( X \right) \right) P \left(x,y\right) dxdy \end{aligned} Rexp(f)=EP[L(Y,f(X))]=∫X×YL(Y,f(X))P(x,y)dxdy
经验风险最小化与结构风险最小化
经验风险(empirical risk )是模型 f ( X ) f\left(X\right) f(X)关于训练数据集 T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , ⋯ , ( x N , y N ) } \begin{aligned} & T = \left\{ \left( x_{1}, y_{1} \right), \left( x_{2}, y_{2} \right), \cdots, \left( x_{N}, y_{N} \right) \right\} \end{aligned} T={(x1,y1),(x2,y2),⋯,(xN,yN)}
的平均损失 R e m p ( f ) = 1 N ∑ i = 1 N L ( y i , f ( x i ) ) \begin{aligned} R_{emp} \left( f \right) = \dfrac{1}{N} \sum_{i=1}^{N} L \left(y_{i}, f \left( x_{i} \right) \right) \end{aligned} Remp(f)=N1i=1∑NL(yi,f(xi))
经验风险最小化 min f ∈ F 1 N ∑ i = 1 N L ( y i , f ( x i ) ) \begin{aligned} \min_{f \in \mathcal{F}} \dfrac{1}{N} \sum_{i=1}^{N} L \left(y_{i}, f \left( x_{i} \right) \right) \end{aligned} f∈FminN1i=1∑NL(yi,f(xi))其中, F \mathcal{F} F是假设空间。
结构风险最小化 min f ∈ F 1 N ∑ i = 1 N L ( y i , f ( x i ) ) + λ J ( f ) \begin{aligned} \min_{f \in \mathcal{F}} \dfrac{1}{N} \sum_{i=1}^{N} L \left(y_{i}, f \left( x_{i} \right) \right) + \lambda J \left(f\right) \end{aligned} f∈FminN1i=1∑NL(yi,f(xi))+λJ(f)其中, J ( f ) J \left(f\right) J(f)是模型复杂度,是增则化项,是定义在建设空间 F \mathcal{F} F上的泛函; λ ≥ 0 \lambda \geq 0 λ≥0是系数,用以权衡风险和模型复杂度。
算法
算法是指学习模型的具体计算方法。统计学习基于训练数据集,根据学习策略,从假设空间中选择最优模型,最后需要考虑用什么样的计算方法求解最优模型。
这时,统计学习问题归结为最优化问题,统计学习的算法成为求解最优化问题的算法。如果最优化问题有显式的解析解,这个最优化问题就比较简单。但通常解析解不存在,这就需要用数值计算的方法求解。
3、正则化和交叉验证
训练误差和测试误差
训练误差是模型 Y = f ^ ( X ) Y = \hat f \left(X\right) Y=f^(X)关于训练数据集的平均损失 R e m p ( f ^ ) = 1 N ∑ i = 1 N L ( y i , f ^ ( x i ) ) \begin{aligned} R_{emp} \left( \hat f \right) = \dfrac{1}{N} \sum_{i=1}^{N} L \left(y_{i}, \hat f \left( x_{i} \right) \right) \end{aligned} Remp(f^)=N1i=1∑NL(yi,f^(xi))其中, N N N是训练样本容量。
测试误差是模型 Y = f ^ ( X ) Y = \hat f \left(X\right) Y=f^(X)关于测试数据集的平均损失 e t e s t = 1 N ′ ∑ i = 1 N ′ L ( y i , f ^ ( x i ) ) \begin{aligned} e_{test} = \dfrac{1}{N'} \sum_{i=1}^{N'} L \left(y_{i}, \hat f \left( x_{i} \right) \right) \end{aligned} etest=N′1i=1∑N′L(yi,f^(xi))其中, N ′ N' N′是测试样本容量。
最小二乘法
高斯于1823年在误差 e 1 , … , e n e_1,…,e_n e1,…,en独立同分布的假定下,证明了最小二乘方法的一个最优性质: 在所有无偏的线性估计类中,最小二乘方法是其中方差最小的! 对于数据 ( x i , y i ) ( i = 1 , 2 , 3... , m ) (x_i, y_i) (i=1, 2, 3...,m) (xi,yi)(i=1,2,3...,m)
对于数据 ( x i , y i ) ( i = 1 , 2 , 3... , m ) (x_i, y_i)(i=1, 2, 3...,m) (xi,yi)(i=1,2,3...,m),拟合出函数 h ( x ) h(x) h(x),有误差(残差): r i = h ( x i ) − y i r_i=h(x_i)-y_i ri=h(xi)−yi
此时L2范数(残差平方和)最小时, h ( x ) h(x) h(x) 和 y y y 相似度最高,更拟合。
一般的 H ( x ) H(x) H(x)为 n n n次的多项式, H ( x ) = w 0 + w 1 x + w 2 x 2 + . . . w n x n H(x)=w_0+w_1x+w_2x^2+...w_nx^n H(x)=w0+w1x+w2x2+...wnxn,其中 w ( w 0 , w 1 , w 2 , . . . , w n ) w(w_0,w_1,w_2,...,w_n) w(w0,w1,w2,...,wn)为参数。最小二乘法就是要找到一组 w ( w 0 , w 1 , w 2 , . . . , w n ) w(w_0,w_1,w_2,...,w_n) w(w0,w1,w2,...,wn) 使得 ∑ i = 1 n ( h ( x i ) − y i ) 2 \sum_{i=1}^n(h(x_i)-y_i)^2 ∑i=1n(h(xi)−yi)2 (残差平方和) 最小,即求 m i n ∑ i = 1 n ( h ( x i ) − y i ) 2 min\sum_{i=1}^n(h(x_i)-y_i)^2 min∑i=1n(h(xi)−yi)2
举例:我们用目标函数 y = s i n 2 π x y=sin2{\pi}x y=sin2πx, 加上一个正太分布的噪音干扰,用多项式去拟合【例1.1 11页】
import numpy as np
import scipy as sp
from scipy.optimize import leastsq
import matplotlib.pyplot as plt
ps: numpy.poly1d([1,2,3]) 生成 1 x 2 + 2 x 1 + 3 x 0 1x^2+2x^1+3x^0 1x2+2x1+3x0
# 目标函数
def real_func(x):
return np.sin(2*np.pi*x)
# 多项式
def fit_func(p, x):
f = np.poly1d(p)
return f(x)
# 残差
def residuals_func(p, x, y):
ret = fit_func(p, x) - y
return ret
# 十个点
x = np.linspace(0, 1, 10)
x_points = np.linspace(0, 1, 1000)
# 加上正态分布噪音的目标函数的值
y_ = real_func(x)
y = [np.random.normal(0, 0.1)+y1 for y1 in y_]
def fitting(M=0):
"""
M 为 多项式的次数
"""
# 随机初始化多项式参数
p_init = np.random.rand(M+1)
# 最小二乘法
p_lsq = leastsq(residuals_func, p_init, args=(x, y))
print('Fitting Parameters:', p_lsq[0])
# 可视化
plt.plot(x_points, real_func(x_points), label='real')
plt.plot(x_points, fit_func(p_lsq[0], x_points), label='fitted curve')
plt.plot(x, y, 'bo', label='noise')
plt.legend()
return p_lsq
# M=0
p_lsq_0 = fitting(M=0)
Out:
Fitting Parameters: [0.00164123]
# M=1
p_lsq_1 = fitting(M=1)
Out:
Fitting Parameters: [-1.30031388 0.65179817]
# M=3
p_lsq_3 = fitting(M=3)
Out:
Fitting Parameters: [ 19.05362997 -27.74343879 8.70678294 0.11715508]
# M=9
p_lsq_9 = fitting(M=9)
Fitting Parameters: [ 2.35687617e+04 -1.06903523e+05 2.03079132e+05 -2.09483087e+05
1.27079276e+05 -4.57762852e+04 9.37628698e+03 -9.83860188e+02
4.31804753e+01 2.11312435e-01]
当M=9时,多项式曲线通过了每个数据点,但是造成了过拟合
正则化
模型选择的典型方法是正则化(regularization).正则化是结构风险最小化策略的实现,是在经验风险上加一个正则化项(regularizer)或罚项(penalty tem)。
引入正则化项(regularizer),降低过拟合
Q ( x ) = ∑ i = 1 n ( h ( x i ) − y i ) 2 + λ ∣ ∣ w ∣ ∣ 2 Q(x)=\sum_{i=1}^n(h(x_i)-y_i)^2+\lambda||w||^2 Q(x)=i=1∑n(h(xi)−yi)2+λ∣∣w∣∣2
回归问题中,损失函数是平方损失,正则化可以是参数向量的L2范数,也可以是L1范数。
-
L1: r e g u l a r i z a t i o n ∗ a b s ( p ) regularization*abs(p) regularization∗abs(p)
-
L2: 0.5 ∗ r e g u l a r i z a t i o n ∗ n p . s q u a r e ( p ) 0.5 * regularization * np.square(p) 0.5∗regularization∗np.square(p)
regularization = 0.0001
def residuals_func_regularization(p, x, y):
ret = fit_func(p, x) - y
ret = np.append(ret, np.sqrt(0.5*regularization*np.square(p))) # L2范数作为正则化项
return ret
# 最小二乘法,加正则化项
p_init = np.random.rand(9+1)
p_lsq_regularization = leastsq(residuals_func_regularization, p_init, args=(x, y))
plt.plot(x_points, real_func(x_points), label='real')
plt.plot(x_points, fit_func(p_lsq_9[0], x_points), label='fitted curve')
plt.plot(x_points, fit_func(p_lsq_regularization[0], x_points), label='regularization')
plt.plot(x, y, 'bo', label='noise')
plt.legend()
正则化项可以是参数向量的 L 2 L_{2} L2范数 L 2 = ∥ w ∥ \begin{aligned} L_{2} = \| w \|\end{aligned} L2=∥w∥其中, ∥ w ∥ \|w\| ∥w∥表示参数向量 w w w的 L 2 L_{2} L2范数。
正则化项可以是参数向量的 L 1 L_{1} L1范数 L 1 = ∥ w ∥ 1 \begin{aligned} L_{1} = \| w \|_{1} \end{aligned} L1=∥w∥1
其中, ∥ w ∥ 1 \|w\|_{1} ∥w∥1表示参数向量 w w w的 L 1 L_{1} L1范数。
4、概要总结
1.统计学习是关于计算机基于数据构建概率统计模型并运用模型对数据进行分析与预测的一门学科。统计学习包括监督学习、非监督学习、半监督学习和强化学习。
2.统计学习方法三要素——模型、策略、算法,对理解统计学习方法起到提纲挈领的作用。
3.本书主要讨论监督学习,监督学习可以概括如下:从给定有限的训练数据出发, 假设数据是独立同分布的,而且假设模型属于某个假设空间,应用某一评价准则,从假设空间中选取一个最优的模型,使它对已给训练数据及未知测试数据在给定评价标准意义下有最准确的预测。
4.统计学习中,进行模型选择或者说提高学习的泛化能力是一个重要问题。如果只考虑减少训练误差,就可能产生过拟合现象。模型选择的方法有正则化与交叉验证。学习方法泛化能力的分析是统计学习理论研究的重要课题。
5.分类问题、标注问题和回归问题都是监督学习的重要问题。本书中介绍的统计学习方法包括感知机、 k k k近邻法、朴素贝叶斯法、决策树、逻辑斯谛回归与最大熵模型、支持向量机、提升方法、EM算法、隐马尔可夫模型和条件随机场。这些方法是主要的分类、标注以及回归方法。它们又可以归类为生成方法与判别方法。