统计学习方法概论题
- 统计学习方法概论
- 实现统计学习方法的步骤
- 统计学习方法三要素
- 模型
- 策略
- 损失函数与风险函数
- 定义
- 常用损失函数
- 经验风险最小化(ERM)与结构风险最小化(SRM)
- 模型评估与模型选择
- 过拟合与模型选择
- 正则化与交叉验证
- 泛化能力
- 生成模型与判别模型
- 生成方法
- 判别方法
- 最小二乘法的实现
- 伯努利模型
- 习题1.1
- 解法一:求最大后验估计
- 补充知识:Beta分布
- 解法二:求后验概率分布的期望
- 习题1.2
统计学习方法概论
实现统计学习方法的步骤
统计学习方法三要素:模型,策略,算法
- 得到一个有限的训练数据集合
- 确定包含所有可能的模型的假设空间,即学习模型的集合
- 确定模型选择的准则,即学习的策略
- 实现求解最优模型的算法,即学习的算法
- 通过学习方法选择最优的模型
- 利用学习的最优模型对新数据进行预测或分析
统计学习方法三要素
模型
在监督学习过程中,模型就是所要学习的条件概率分布或者决策函数。
(公式粘贴不上来,有小伙伴知道怎么导入的求告知)
策略
损失函数与风险函数
定义
损失函数度量模型一次预测的好坏,风险函数度量平均意义下模型预测的好坏。
- 损失函数或代价函数
- 损失函数定义为给定输入的预测值和真实值之间的非负实值函数,记作
- 风险函数或期望损失这个和模型的泛化误差的形式是一样的
- 模型关于联合分布的平均意义下的损失(期望损失),但是因为是未知的,所以前面的用词是期望,以及平均意义下的。这个表示其实就是损失的均值,反映了对整个数据的预测效果的好坏
- 经验风险或经验损失
- 模型关于训练样本集的平均损失,根据大数定律,当样本容量N趋于无穷大时,经验风险趋于期望风险
- *结构风险
- 为模型复杂度, 是系数,用以权衡经验风险和模型复杂度。
常用损失函数
理论上 ,损失函数数值越小,模型就越好,需要与过拟合相区别!
- 0-1损失
- 平方损失
- 绝对损失
- 对数损失
这里,对应的对数是负值,所以对数损失中包含一个负号,为什么不是绝对值?因为肯定是负的。
经验风险最小化(ERM)与结构风险最小化(SRM)
- 极大似然估计是经验风险最小化的一个例子
当模型是条件概率分布,损失函数是对数损失函数时,经验风险最小化等价于极大似然估计 - 贝叶斯估计中的最大后验概率估计是结构风险最小化的一个例子
当模型是条件概率分布,损失函数是对数损失函数,模型复杂度由模型的先验概率表示时,结构风险最小化等价于最大后验概率估计
模型评估与模型选择
训练误差和测试误差是模型关于数据集的平均损失。
备注:统计学习方法具体采用的损失函数未必是评估时使用的损失函数。
过拟合与模型选择
例子:
训练数据为
模型为
经验风险最小化策略下
将模型和训练数据带入到上式得到
这个问题要求
对求偏导令其为零,得到一系列方程,求解可以用梯度下降或者矩阵分解。
求解线性方程组,可以表示为,问题展开之后可以涉及到矩阵分解。
正则化与交叉验证
- 正则化
模型选择的典型方法是正则化 - 交叉验证
另一种常用的模型选择方法是交叉验证
- 简单
- S折(K折, K-Fold)[^1]
- 留一法
泛化能力
- 现实中采用最多的方法是通过测试误差来评价学习方法的泛化能力
- 统计学习理论试图从理论上对学习方法的泛化能力进行分析
- 学习方法的泛化能力往往是通过研究泛化误差的概率上界进行的, 简称为泛化误差上界(generalization error bound)
这本书里面讨论的不多,在CH08里面有讨论提升方法的误差分析, 提到不需要知道下界。在CH02中讨论算法的收敛性的时候有提到误分类次数的上界.
注意泛化误差的定义,书中有说事实上,泛化误差就是所学习到的模型的期望风险
生成模型与判别模型
监督学习方法:可分为生成方法(generative approach)与判别方法(discriminative approach)
生成方法
- 可以还原出联合概率分布
- 收敛速度快, 当样本容量增加时, 学到的模型可以更快收敛到真实模型
- 当存在隐变量时仍可以用
判别方法
- 直接学习条件概率或者决策函数
- 直接面对预测, 往往学习准确率更高
- 可以对数据进行各种程度的抽象, 定义特征并使用特征, 可以简化学习问题
总结思路:
最小二乘法的实现
import numpy as np
from scipy.optimize import leastsq
import matplotlib.pyplot as plt
# 目标函数
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
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
# 十个点'
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_]
index = 0
plt.figure(figsize=(15, 8))
def fitting(M=0):
"""
M 为 多项式的次数
"""
# 随机初始化多项式参数
p_init = np.random.rand(M + 1)
# 最小二乘法
p_lsq = leastsq(residuals_func, p_init, args=(x, y))
#p_lsq = leastsq(residuals_func_regularization, p_init, args=(x, y)) #加入正则化
print('Fitting Parameters:', p_lsq[0])
# 可视化
plt.subplot(141 + index)
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
for i in [0, 1, 3, 9]:
lsq_0 = fitting(i)
index += 1
plt.subplots_adjust(top=0.92, bottom=0.08, left=0.10, right=0.95, hspace=0.25,
wspace=0.35) #调整子图间距
plt.savefig("result.jpg")
plt.show()
伯努利模型
习题1.1
- 根据题意:伯努利模型是定义在取值为0与1的随机变量上的概率分布。
对于随机变量XX,则有:
其中,pp为随机变量XX取值为1的概率,1-p1−p则为取0的概率。
由于随机变量XX只有0和1两个值,XX的概率分布函数,即伯努利模型可写为:
则伯努利模型的假设空间为: - 伯努利模型的极大似然估计以及贝叶斯估计中的统计学习方法三要素
(1). 极大似然估计
模型:伯努利模型
策略:经验风险最小化。极大似然估计,等价于当模型是条件概率分布、损失函数是对数损失函数时的经验风险最小化。
算法:极大化似然
(2)贝叶斯估计
模型:伯努利模型
策略:结构风险最小化。贝叶斯估计中的最大后验概率估计,等价于当模型是条件概率分布、损失函数是对数损失函数、模型复杂度由模型的先验概率表示时的结构风险最小化。
算法:最大化后验概率:
(3) 伯努利模型的极大似然估计
极大似然估计的一般步骤:
- 写出随机变量的概率分布函数;
- 写出似然函数;
- 对似然函数取对数,得到对数似然函数,并进行化简;
- 对参数进行求导,并令导数等于0;
- 求解似然函数方程,得到参数的值。
对于伯努利模型nn次独立的数据生成结果,其中kk次的结果为1,可得似然函数为:
对似然函数取对数,得到对数似然函数为:
求解参数p:
对参数p求导,并求解导数为0时的p值:
令从上式可得 ,即
所以
第4步:伯努利模型的贝叶斯估计
解法一:求最大后验估计
- 确定参数\thetaθ的先验概率
- 根据样本集计算似然函数
- 利用贝叶斯公式,写出后验概率最大化公式:
- 利用求导,得到后验概率最大时的参数取值,假设pp的先验分布\pi§π§为均匀分布,则最大后验概率估计等价于极大似然估计。
一般在贝叶斯估计中,如果后验分布与先验分布属于同一分布簇(共轭分布),则称此先验分布为似然函数的共轭先验。
选取共轭先验有如下好处,例如:
(1)符合直观,先验分布和后验分布应该是相同形式的;
(2)可以给出后验分布的解析形式;
(3)可以形成一个先验链,即现在的后验分布可以作为下一次计算的先验分布,如果形式相同,就可以形成一个链条。
伯努利分布的先验分布为Beta分布,则此处假设先验分布\pi§π§为Beta分布。
补充知识:Beta分布
Beta 分布(Beta distribution),是指一组定义在{\displaystyle (0,1)}(0,1)区间的连续概率分布,亦称Β分布。有两个参数, >0,>0。
概率密度函数:
其中B 是Beta函数,亦称 函数。
随机变量 服从参数为 的Beta分布记作: 期望:
与均匀分布关系:当 时, Beta分布就是一个均匀分布
p的先验分布为:
似然函数与第3步相同:
最大化后验概率,求解参数p:
令 ,对函数 先取对数,再对 求导,得
令上式等于 0 ,得 ,其中 为beta分布的参数。
所以最大后验概率估计得到
解法二:求后验概率分布的期望
贝叶斯估计中的最大后验概率估计,得到的是模型参数\thetaθ这个随机变量的后验分布的众数,通常被认为是点估计。而贝叶斯方法的特点是使用分布来总结数据和得出推论,因此贝叶斯方法倾向于得到后验均值或中值,以及可信区间。
贝叶斯估计,利用后验分布的期望(均值)作为参数的估计值的方法,前两步与最大后验概率估计相同,第3、4步如下
3. 利用贝叶斯公式,求\thetaθ的后验概率:
4.计算后验概率分布参数\thetaθ的期望,并求出贝叶斯估计值
已知似然函数和参数pp的先验分布,参数pp的后验分布为:
后验概率分布的期望:
则以参数的后验概率分布的期望作为贝叶斯估计的参数值:
所以贝叶斯估计得到
习题1.2
通过经验风险最小化推导极大似然估计。证明模型是条件概率分布,当损失函数是对数损失函数时,经验风险最小化等价于极大似然估计。
解答思路:
- 根据经验风险最小化定义,写出目标函数;
- 根据对数损失函数,对目标函数进行整理;
- 根据似然函数定义和极大似然估计的一般步骤(计算时需要取对数),可得到结论。
解答步㮛:
假设楻型的条件概率分布是 ,样本集 ,根据书中第 17 页公式 ,对数损失函数为:
根据书中第 18 页公式(1.15),按昭经验风险最小化求最优模型就是求解最优化问题:
结合上述两个式子,可得经验风险最小化函数:
根据㕽然函数定义: ,以及极大似然估计的一般步骤,可得:
即经验风险最小化等价于极大似然估计,得证。
参考: DataWhale.组队学习