经验风险最小化与模型选择

来源:互联网 发布:linux控制台显示中文 编辑:程序博客网 时间:2024/06/05 01:57

经验风险最小化,是使得<<具有最小训练误差的假设的一般误差>>与<<具有最小一般误差的假设的一般误差>>之间的值尽量小。

这样才能使得我们根据训练数据训练得到的模型有普适性。

可以推导出来二者的差值存在一个上界,可以根据这个上界,得到

<<要达到某一精度至少需要多少训练数据>>或者<<特定数量的训练数据能以多大概率达到某一精度>>,进一步可知存在偏差方差平衡。

这个上界直观上理解,主要与模型的复杂度(如假设的个数、参数数量等)、训练样本数相关,

而且可以直观得得到这个上界与模型复杂度成正相关,与样本数成负相关。

这里关于模型复杂度的度量方法,可以用VC维的方式来表征,而这个上界最终可表示成VC维与样本数的一个关系。

关于Andrew Ng公开课第九讲的笔记整理可以参考博客:https://www.cnblogs.com/madrabbit/p/7095575.html

————————————————————————————————————————————————————

模型选择的目的在于防止欠拟合与过拟合。

如对文本分类,其维度会非常高,这时选择特征是非常重要的。

特征少了,容易欠拟合,特征多了(增加了很多无用特征)容易过拟合。关于特征选择主要的方法有:

1、启发式搜索。有前向与后向算法,前向算法开始设置一个空的特征集合,

然后从所有特征中用交叉验证的方法找到最优的一个特征(即只用一个特征作为输入),

将这个最佳特征添加到特征集中,然后从剩下的集合中依次挑选特征A,并将其与特征集中的所有特征共同作为输入,

用交叉验证选择最佳的A,并添加到特征集中,依次类推,知道选择够需要的特征数为止;

2、过滤特征选择算法。判断每个特征与y的影响度,如皮尔森系数、协方差,此外还有相互信息MI。

根据这些度量值,选择最佳的K个特征。关于K值得确定也可以采用交叉验证的方式进行选择,

依次遍历K的值,直到选择出最佳的K为止。这里的相互信息MI具体形式可以参考Andrew Ng公开课第九讲。

相互信息MI可以理解成p(x,y)与p(x)*p(y)这两个概率的KL距离。

————————————————————————————————————————————————————

生成方法与判别方法:

前者一般需要少量数据。前者需要最大化联合概率似然函数,后者用最大条件概率似然。

生成方法的两种:

高斯判别方法与文本分类(朴素贝叶斯方法)

高斯判别方法假定某一类(y)的数据服从高斯分布,并且类别(y)服从伯努利分布,用最大似然的导数为0求解参数。

高斯判别方法最终结果与logistic回归有联系,最终概率分布于其类似(sigmod函数),但高斯判别模型是一个更强的假设,

即假设了数据分布是高斯分布,即高斯判别方法可以得到logistic回归模型,反之不行。

文本分类与之前博客中的EM算法的文本分类问题一样,并且未知参数也相同,不同的是这里用的方法是最大化似然函数

的方法,而EM的文本分类则用EM的算法迭代求解。

————————————————————————————————————————————————————

关于文本分类问题:对文本进行建模一般有两种方式:

(1)针对一个文本,其建模后的向量长度为字典的长度,对字典中的每一个词,若在这个文本中出现,则其位置为1,

否则为0,这里对应的参数为p(xi | y==1),p(xi | y==0),p(y=1),这里 i 的范围为字典长度。

(2)针对一个文本,其建模后的向量长度为文本的长度,对文本中的每个词,向量对应位置的值为其在字典中的索引index。

这里对应的参数为p(xj=k | y==1),p(xj=k | y==0),p(y=1),这里的概率值与单词所在文本中的顺序无关,第一个概率值

表示在文本中的某一个位置,当y为1时,其单词为字典中第k个单词概率,这个概率与其在文本哪个位置无关。

一般来讲第二种建模方法效果更好。

————————————————————————————————————————————————————

logistic回归与神经网络的分类本质区别:

前者是一个线性分类模型,后者是一个非线性分类模型。

关于logistic是线性的判别方法为:找出其分界面,若分界面为平面,那么logistic回归就为线性分类模型。


logistic回归模型:输入数据x为一个列向量,参数θ的转置为一行向量,则二者乘积为一个数,这个数直接经过sigmod函数进行判别。

简单的神经网络模型:输入数据x为一个列向量,参数w1的转置为一矩阵,则二者乘积为一个列向量,这个列向量中的每个值

都经过sigmod函数后得到一个新的列向量,再用一个行向量参数w2乘以这个新的列向量得到一个数,这个数再经过sigmod函数进行判别。

这里用到了两个步骤的sigmod函数,其分界面不能用一个平面来表示,其为非线性分类模型。