统计学习方法(一)概论
开始学习李航老师的《统计学习方法》。
1.1 统计学习
定义
统计学习也称为统计机器学习,计算机系统通过运用数据及统计方法提高系统性能的机器学习。
方法
- 从给定的、有限的、用于学习的训练数据集合出发
- 假设数据独立同分布,要学习的模型属于某个函数的集合(假设空间)
- 应用某个评价准则,从假设空间中选取一个最优模型,使其对训练数据与测试数据有最优的预测
- 最优模型的选取由算法实现
三要素
- 模型 model
- 策略 strategy
- 算法 algorithm
步骤
- 得到一个有限的训练数据集合
- 确定所有可能模型的假设空间,即学习模型的集合
- 确定模型选择的准则,即学习的策略
- 实现求解最优模型的算法,即学习的算法
- 通过学习方法选择最优模型
- 利用学习的最优模型对新数据进行预测或分析
1.2 监督学习
基本概念
- 输入空间&输出空间:输入与输出所有可能取值的集合
- 特征空间:所有特征向量存在的空间
- 每个具体的输入是一个实例,通常由特征向量表示。
- 特征控件的每一维对应于每一个特征。
- 样本:输入与输出对 \[ T = \{(x_1, y_1), (x_2, y_2), ..., (x_N, y_N)\} \]
- 回归问题:X与Y均为连续变量
- 分类问题:Y为有限个离散变量
- 标注问题:X与Y均为变量序列
1.3 统计学习三要素
\[ 方法 = 模型+策略+算法 \]
模型
X和Y是定义在输入空间与输出空间上的变量,F通常是由一个参数向量决定的函数组,此时为非概率模型。 \[ {\cal F} = \{f|Y = f_\theta(X), \theta\in R^n\} \] 假设空间也可以定义为条件概率的集合,此时表示的模型为概率模型。 \[ {\cal F} = \{P|P_\theta(Y|X), \theta\in R^n\} \]
策略
损失函数
损失函数(loss function)或代价函数(cost function),度量预测错误的程度,是f(X)和Y的非负实值函数,记作L(Y, f(X))。
常用的损失函数: \[ \begin{align} 0-1: L(Y, f(X)) &=& \begin{cases} 1, Y\neq f(X) \\ 0, Y= f(X) \end{cases} \\ quadratic: L(Y, f(X)) &=& {(Y - f(X))}^2 \\ absolute: L(Y, f(X)) &=& |Y - f(X)| \\ logarithmic: L(Y, f(X)) &=& -logP(Y|X) \\ \end{align} \]
风险函数
风险函数,表示理论上模型关于联合分布平均意义下的损失。 \[ R_{exp}(f) = E_p[L(Y, f(X))] = \int _{x\times y} L(y, f(x))P(x, y)dxdy \] 学习的目标是选择期望风险最小的模型,实际上P(X, Y)未知,所以才需要学习。
经验风险(empirical risk)定义为模型关于训练数据集的平均损失。 \[ R_{emp}(f) = \frac 1 N \sum _{i=1} ^N L(y_i, f(x_i)) \] 现实中训练样本数目有限,用经验风险估计并不理想,所以需要制定策略。
风险最小化
- 经验风险最小化(ERM)
- 极大似然估计
- 容易产生过拟合
- 结构风险最小化(SRM)
- 等价于正则化,在经验风险上加上正则化项或罚项
- 最大后验概率估计
1.4 模型评估与模型选择
训练误差&测试误差
训练误差是模型关于训练集的平均损失 \[ R_{emp}(f) = \frac 1 N \sum _{i=1} ^N L(y_i, f(x_i)) \] 测试误差是模型关于测试集的平均损失 \[ R_{test}(f) = \frac 1 N \sum _{i=1} ^N L(y_i, f(x_i)) \]
1.5 正则化与交叉验证
正则化
正则化是结构风险最小化策略的实现,在经验风险上加一个正则化项或罚项。
正则化项一般是模型复杂度的单调递增函数,模型越复杂,正则化值越大。 \[ \min _{f\in {\cal F}} \frac 1 N \sum _{i=1} ^N L(y_i, f(x_i)) + \lambda J(f), \lambda \geq 0 \]
\[ L1: L(w) = \frac 1 N \sum _{i=1} ^N (f(x_i;w)-y_i)+ \frac \lambda 2 \Vert w\Vert ^2 \\ L2: L(w) = \frac 1 N \sum _{i=1} ^N (f(x_i;w)-y_i)+ \lambda \Vert w\Vert \]
奥卡姆剃刀:在所有可能选择的模型中,能够很好解释已知数据并十分简单才是最好的模型。
交叉验证
- 简单交叉验证
- 将数据分为训练集与测试集
- S折交叉验证
- 首先随机切分数据,分为S个大小相同的不相交子集。
- 用S-1个子集的数据训练模型,用余下的测试。
- 对S种选择重复进行,选出平均测试误差最小的模型。
- 留一交叉验证
1.6 泛化能力
泛化能力,是指该方法学习到的模型对未知数据的预测能力。 \[ 泛化误差 \ \ R_{exp}(\hat f) = E_P[L(Y, \hat f(X))] = \int _{x\times y} L(y, \hat f(x))P(x,y)dxdy \]