首页 > 代码库 > 机器学习基本问题

机器学习基本问题

如何解决过拟合问题

过拟合:为了得到一致假设而使假设变得过度复杂称为过拟合。

过拟合的产生原因: 
1)由于对样本数据,可能存在隐单元的表示不唯一,即产生的分类的决策面不唯一。

2)权值学习迭代次数足够多,拟合了训练数据中的噪声和训练样例中没有代表性的特征。

过度拟合解决方法: 
1)权值衰减。 

2)适当的停止准则。

3)增加数据 

4)减少特征 

5)交叉验证。

6)正则化 

7)dropout

交叉验证

  交叉验证的基本思想是把在某种意义下将原始数据进行分组,一部分做为训练集,另一部分做为验证集,首先用训练集对分类器进行训练,再利用验证集来测试训练得到的模型,以此来做为评价分类器的性能指标。

常见的交叉验证形式: 

1)K-fold cross-validation 
K折交叉验证,初始采样分割成K个子样本,一个单独的子样本被保留作为验证模型的数据,其他K-1个样本用来训练。交叉验证重复K次,每个子样本验证一次,平均K次的结果或者使用其它结合方式,最终得到一个单一估测。这个方法的优势在于,同时重复运用随机产生的子样本进行训练和验证,每次的结果验证一次,10折交叉验证是最常用的。
2)Holdout 验证 
常识来说,Holdout 验证并非一种交叉验证,因为数据并没有交叉使用。 随机从最初的样本中选出部分,形成交叉验证数据,而剩余的就当做训练数据。 一般来说,少于原本样本三分之一的数据被选做验证数据。 
3)留一验证 :相当于Holdone验证
正如名称所建议, 留一验证(LOOCV)意指只使用原本样本中的一项来当做验证资料, 而剩余的则留下来当做训练资料。 这个步骤一直持续到每个样本都被当做一次验证资料。 事实上,这等同于和K-fold 交叉验证是一样的,其中K为原本样本个数。 在某些情况下是存在有效率的演算法,如使用kernel regression 和Tikhonov regularization。

L1和L2的区别L1与L2区别:

使用L1可以得到稀疏的权值;用L2可以得到平滑的权值。

实际上L1也是一种妥协的做法,要获得真正sparse的模型,要用L0正则化。

L1范数可以使权值稀疏,是指向量中各个元素绝对值之和,用于特征选择;

L2范数是指向量各元素的平方和然后求平方根,用于防止过拟合,提升模型的泛化能力。

生成模型和判别模型的区别

生成模型:由数据学习联合概率密度分布P(X,Y),求出条件概率分布P(Y|X)作为预测的模型,即生成模型P(Y|X)=P(X,Y)/P(X),再利用它分类。 
判别模型:由数据直接学习决策函数y=f(x)或者条件概率分布P(Y|X)作为预测的模型。基本思想是有限样本条件下建立判别函数,不考虑样本的产生模型,直接研究预测模型。 
典型的判别模型包括K近邻、感知机、决策树、支持向量机等。 
由生成模型可以得到判别模型,但由判别模型得不到生成模型。生成模型学习联合概率分布P(X,Y),而判别模型学习条件概率分布P(Y|X)。

 

机器学习基本问题