统计学习方法:
统计学习是概率论、统计论、信息论、计算理论、最优化理论及计算机科学等多个领域的交叉学科,其基本假设是同类数据具有一定的统计规律性,这是统计学习的前提,其在计算机科学中所处位置如下:
计算机科学由三维组成,即系统、计算和信息,统计学习属于信息这一维,向下又可以分为统计学习方法,统计学习理论和统计学习应用;统计学习方法由模型、策略和算法这三要素构成。
变量与空间
在机器学习模型中涉及的空间包括输入空间、特征空间、输出空间、参数空间。将输入所有可能取值的集合称为输入空间,将输出所有可能取值的集合称为输出空间,每一个输入实例由特征向量表示,所有特征向量所在空间是特征空间,有时假设输入空间与特征空间为相同空间,对他们不予区分(我本人到目前为止不区分这两个空间);有时假设输入空间与特征空间为不同空间,将实例从输入空间映射到特征空间,模型实际上都是定义在特征空间上的。
在监督学习过程中,将输入与输出定义在输入空间与输出空间上的随机变量(大写)的取值,即输入变量X,输出变量Y,变量的具体取值称为实例(小写),输入实例
,输出实例
,第i个实例
,其中
表示第
个实例的第3个特征,其输出实例为
,定义
为样本点,这样我们就可以表示数据集为
,参数空间即参数向量
的所有可能取值构成的空间。
机器学习算法分类
一般我们所说的机器学习,主要是指统计机器学习,机器学习算法可以分为监督学习、非监督学习、半监督学习和强化学习。监督学习简单理解为有类标签,非监督学习理解为没有类标签,《统计学习方法》以监督学习为主,同时监督学习的模型也是统计学习中内容最丰富、应用最广泛的部分,监督学习的基本假设是输入变量X与输出变量Y具有联合概率分布
,上面提到的数据集
就可以理解为从联合概率分布
独立同分布产生的。;非监督学习主要指聚类问题。
{这里留空将来总结半监督学习和强化学习}
监督学习问题可以分为回归问题、分类问题、标注问题,输入变量和输出变量均是连续变量的预测问题称为回归问题,回归问题的学习等价于函数拟合;输入变量可以是离散也可以是连续的但输出变量为有限个离散变量的预测问题称为分类问题,许多统计学习方法可以用于分类,包括k近邻法、感知机、朴素贝叶斯法、决策树、决策列表、logistic回归、SVM、提升方法、贝叶斯网络、神经网络、Winnow等;输入变量与输出变量均为变量序列的预测问题称为标注问题,标注问题是分类问题的推广,也是更复杂结构预测的简单形式,分类问题输出一个类标签,而标记问题输出多个标签(和输入变量长度n一样),对第i个输入 ,第i个预测输出为 ,假设输出空间包含m个标记,则所有可能的输出结果 有 个,标注常用的统计学习方法有:隐马尔可夫模型、条件随机场。
模型分类:
模型可以分为参数模型和非参数模型,参数模型的参数个数已知,非参数模型的参数个数未知。
监督学习生成模型可以分为概率模型与非概率模型,其中概率模型学习的是条件概率分布
,例如朴素贝叶斯分类器,非概率模型学习的是一个决策函数
,以SVM为例为
。
监督学习生成的模型还可以分为生成模型和判别模型,生成模型学习联合概率分布
,得到模型
,例如朴素贝叶斯法和隐马尔可夫模型;而判别模型直接学习决策函数
或者条件概率分布
,如k近邻法、感知机、决策树、logistic回归、最大熵模型、SVM、提升方法和条件随机场等。生成模型学习收敛速度快,可以还原出联合概率分布
,当存在隐变量时仍可使用;判别模型准确率更高,但在隐变量情况不能使用。
统计学习方法三要素
统计学习方法=模型+策略+算法,构建一种统计学习方法就是确定具体的统计学习三要素,统计学习方法之间的不同,就是三要素的不同。
- 模型
这一步主要确定假设空间。假设空间 包含所有可能的模型,一般含有无穷多个模型,例如模型为线性决策函数,假设空间就是所有线性函数的集合。
或
为参数空间中的参数向量 - 策略
指定从假设空间选出最优模型的策略,包含期望损失最小化、经验风险最小化和结构风险最小化三个策略。
期望损失(expected loss)最小化:
为损失函数,为预测值 与真实输出 的偏差,常见的损失函数有0-1损失函数 、平方损失函数 、绝对损失函数 、对数损失函数 等。
为输入与输出的联合分布,我们一般不知道 具体是什么(如果你知道具体是什么,就可以直接求 ,不需要学习了),所以期望风险最小化不好使用,一般用于理论分析,因而提出了下面的经验风险最小化。
我个人这样理解期望损失最小化的公式,从 与 两个维度考虑, 有大值(x,y同时出现可能性大)和小值(x,y同时出现可能性小), 也有大值( 与 偏差较大)和小值( 与 偏差较小),当 大值与 的大值碰到,其乘积会很大,期望风险就会变大,我们的目的就是找到这样的模型 ,使得 在 取大值时, 取小值,即预测值 与真实输出 最接近。当然也可以从不等式角度考虑,令a= ,b= ,根据不等式 ,且当a=b时等号成立,即a,b都取大值或小值时, 趋向 ,期望损失增大。
经验风险(empirical risk)最小化:
当样本容量很大,经验风险最小化趋于期望损失最小化,当样本容量较小,就容易产生过拟合,为了防止过拟合,提出结构风险最小化。
结构风险最小化(structural risk minimization):
和经验风险最小化相比,多了一个正则化项(regularizer)或者叫罚项(penalty item), 为模型的复杂度,一般用模型参数向量的范数, 为权衡经验风险和模型复杂度的系数,属于超参数,在机器学习的上下文中,超参数是在开始学习过程之前设置值的参数,而不是通过训练得到的参数数据。。 - 算法
把统计学习问题归结为最优化问题,统计学习的算法称为求解最优化问题的算法,其实就是考虑用什么方法计算求解最优模型。
过拟合与应对方案
当模型的复杂度增大时,训练误差会逐渐减小并趋向与0,;而测试误差会先减小,后增大。一旦测试误差开始增大,往往意味着进入过拟合。
我们可以通过正则化与交叉验证方法应对过拟合。
- 正则化:
正则化是结构风险最小化策略(上面有讲到)的实现,正则化符合奥卡姆剃刀原理:在所有可能选择的模型中,能够很好地解释已知数据并且十分简单的才是最好的模型。 - 交叉验证:
这篇blog总结的很好 https://blog.csdn.net/aliceyangxi1987/article/details/73532651
总结一下就是,当数据量非常充足,可以利用留出法(holdout cross validation),将数据切分成训练集、验证集和测试集;当数据量不够充分,可以使用K折交叉验证,最后选出K次评测中平均测试误差最小的模型;数据缺乏时,使用留一法。
训练集、验证集和测试集
验证集和测试集的区别之前一直不太懂,下面的blog说的不错 https://blog.csdn.net/jmh1996/article/details/79838917 ,这里简单总结一下,我们知道训练模型需要得到模型参数和超参数的值,而训练集就是训练模型的模型参数,而验证集就是确定模型的最优超参数,测试集用于估计模型对样本的泛化误差。以多项式回归为例,我们想要确定这样的回归函数
,我们就需要知道模型参数向量
和模型超参数
,在执行机器学习算法之前,我们有很多超参数不同的多项式模型,例如
,经过训练集,我们知道了在不同的
时,模型参数向量
的最优解,经过验证集,我们发现
时候多项式模型最好,在测试集,我们就可以评估最优
和最优
的多项式模型的泛化能力。
右上角带*表示最优,最左边5个模型其超参数和模型参数都没确定,经过训练集,我们知道了每个
下
的最优解,经过验证集,我们知道了
和
都最优的解,经过测试集我们得到了最优的
和
的模型的泛化能力评估指标。很多人会把验证集和测试集混淆,其实验证集和测试集功能完全不一样,真要说的话,验证集和训练集功能有一点相似,验证集用于确定最优超参数,训练集用于确定最优模型参数。
主要参考书籍:《统计学习方法》