机器学习之正则化与交叉验证

时间:2014.07.01

地点:基地

--------------------------------------------------------------------------------

零、简述

今天学习两种模型选择方法,一种是正则化方法,还一种是交叉验证。

--------------------------------------------------------------------------------

一、正则化(regularization)

正则化(regularization)是模型选择的一种典型方法。是结构风险最小化的策略实现。它在经验风险上还加上了一个正则化项(regularizer)或罚项(penalty term),在这里,正则化项一般是模型复杂度的单调递增函数,模型越复杂,正则化值就越大。

正则化公式如下:

正则化公式前一项即是经验风险,后一项为正则化项, 在这里大于或等于0
,为调整经验风险项和正则化项之间关系的系数。

正则化项可以有多种不同形式,比如在回归问题中,损失函数为平方损失,正则化项是参数向量的L2范数:

这里的||w||表示的是参数向量w的L2范数

当然正化项也可以是参数向量的L1范数,这样,正则化公式为:

在这里||w||1为参数向量的L1范数。

这样一来,经验风险较小的模型可能比较复杂,含多个非零参数,于是第2项正则化项就会较大。正则化的目的就是为了选择经验风险与模型复杂度同时都比较小的模型。

正则化符合奥卡姆剃刀原理:在所有可能选择的模型中,能够很好地解释已知数据且十分简单的模型才是最好的模型。从贝叶斯估计的角度来看,就是正则化项对应于模型的先验概率,复杂的模型具有较小的先验概率,而简答的模型具有较大的先验概率。

--------------------------------------------------------------------------------

二、交叉验证(cross validation)

当给定样本数据充足,进行模型选择的方法一般为:

随机将数据集划分为三部分,分别为:训练集,验证集,测试集。我们用训练集数据来训练模型,用验证集数据来选择模型,用测试集数据最终对学习方法进行评估。一般来说,我们选择对验证集有最小预测误差的模型,由于验证集有足够多的数据,因此对模型进行选择也是有效的。但由于许多实际应用中,数据本身不充足,为了选择好的模型,我们需要用到交叉验证:即重复使用数据,把给定数据进行切分,将切分数据集组合为训练集与测试集,在此基础上反复进行训练,测试已经模型选择。

2.1简单交叉验证

1.随机将数据分为两个部分:训练集(70%)+测试集(30%)

2.然后用训练集在各种条件下(比如不同参数个数)训练模型,从而得到不同模型

3.在测试集上评价各个模型的测试误差,选出测试误差最小的模型。

2.2 S折 交叉验证

S折交叉验证(S-fold cross validation)应用最多,它的步骤为

首先:随机将已知数据切分为S个互不相交的大小相同的子集

然后:利用S-1个子集的数据训练模型,利用剩下的一个子集测试模型,将这一过程对可能的S种可能(即划分后,把每个子集都当一次测试集其余训练集)重复进行

最后选择出S次评测中平均测试误差最小的模型

2.3 留一 交叉验证

S折交叉验证的特殊情形就是S=N,,称为留一交叉验证(leave-one-out cross validation),在数据比较缺乏的情况下使用,N恰好为给定数据集的容量)

机器学习之正则化与交叉验证

时间: 2024-10-08 06:45:49

机器学习之正则化与交叉验证的相关文章

正则化、交叉验证、泛化能力

一.正则化 1.模型选择典型的方式就是正则化.正则化就是结构风险最小化策略的实现,就是在经验风险项中添加一个郑泽华想或者叫做惩罚项. 正则化项与模型的关系一般是模型复杂度越高,正则化项的值就会越大. 正则化项的作用就是平衡经验风险较小与模型复杂度较小.最好的结果就是经验风险和模型复杂度同时较小. 正则化的一般形式为:  其中,第一项为经验风险项,第二项为正则化项.值λ是为了调整两者关系的系数. 二.交叉验证 通常情况下,我们做模型选择的时候将数据分为训练集.验证集和测试集.但是实际应用中,往往数

Spark2.0机器学习系列之2:基于Pipeline、交叉验证、ParamMap的模型选择和超参数调优

Spark中的CrossValidation Spark中采用是k折交叉验证 (k-fold cross validation).举个例子,例如10折交叉验证(10-fold cross validation),将数据集分成10份,轮流将其中9份做训练1份做验证,10次的结果的均值作为对算法精度的估计. 10折交叉检验最常见,是因为通过利用大量数据集.使用不同学习技术进行的大量试验,表明10折是获得最好误差估计的恰当选择,而且也有一些理论根据可以证明这一点.但这并非最终结论,争议仍然存在.而且似

机器学习 libsvm交叉验证与网格搜索(参数选择)

首先说交叉验证. 交叉验证(Cross validation)是一种评估统计分析.机器学习算法对独立于训练数据的数据集的泛化能力(generalize), 能够避免过拟合问题. 交叉验证一般要尽量满足: 1)训练集的比例要足够多,一般大于一半 2)训练集和测试集要均匀抽样 交叉验证主要分成以下几类: 1)Double cross-validation Double cross-validation也称2-fold cross-validation(2-CV),作法是将数据集分成两个相等大小的子集

机器学习:weka中Evaluation类源码解析及输出AUC及交叉验证介绍

在机器学习分类结果的评估中,ROC曲线下的面积AOC是一个非常重要的指标.下面是调用weka类,输出AOC的源码: try { // 1.读入数据集 Instances data = new Instances( new BufferedReader( new FileReader("E:\\Develop/Weka-3-6/data/contact-lenses.arff"))); data.setClassIndex(data.numAttributes() - 1); // 2.

Python下的数据处理和机器学习,对数据在线及本地获取、解析、预处理和训练、预测、交叉验证、可视化

http://blog.csdn.net/pipisorry/article/details/44833603 在[1]: %matplotlib inline 抓取的数据 一个简单的HTTP请求 在[2]: import requests print requests.get("http://example.com").text <!doctype html> <html> <head> <title>Example Domain<

机器学习基础:(Python)训练集测试集分割与交叉验证

在上一篇关于Python中的线性回归的文章之后,我想再写一篇关于训练测试分割和交叉验证的文章.在数据科学和数据分析领域中,这两个概念经常被用作防止或最小化过度拟合的工具.我会解释当使用统计模型时,通常将模型拟合在训练集上,以便对未被训练的数据进行预测. 在统计学和机器学习领域中,我们通常把数据分成两个子集:训练数据和测试数据,并且把模型拟合到训练数据上,以便对测试数据进行预测.当做到这一点时,可能会发生两种情况:模型的过度拟合或欠拟合.我们不希望出现这两种情况,因为这会影响模型的可预测性.我们有

小白学习之pytorch框架(6)-模型选择(K折交叉验证)、欠拟合、过拟合(权重衰减法(=L2范数正则化)、丢弃法)、正向传播、反向传播

下面要说的基本都是<动手学深度学习>这本花书上的内容,图也采用的书上的 首先说的是训练误差(模型在训练数据集上表现出的误差)和泛化误差(模型在任意一个测试数据集样本上表现出的误差的期望) 模型选择 验证数据集(validation data set),又叫验证集(validation set),指用于模型选择的在train set和test set之外预留的一小部分数据集 若训练数据不够时,预留验证集也是一种luxury.常采用的方法为K折交叉验证.原理为:把train set分割成k个不重合

机器学习-CrossValidation交叉验证详解

版权声明:本文为原创文章,转载请注明来源. 1.原理 1.1 概念 交叉验证(Cross-validation)主要用于模型训练或建模应用中,如分类预测.PCR.PLS回归建模等.在给定的样本空间中,拿出大部分样本作为训练集来训练模型,剩余的小部分样本使用刚建立的模型进行预测,并求这小部分样本的预测误差或者预测精度,同时记录它们的加和平均值.这个过程迭代K次,即K折交叉.其中,把每个样本的预测误差平方加和,称为PRESS(predicted Error Sum of Squares). 1.2

周志华《机器学习》课后习题练习——ch3.4 交叉验证法练习

题目:选择两个UCI数据集,比较10折交叉验证法和留一法所估计出的对率回归的错误率. 其中代码主要参考:https://blog.csdn.net/snoopy_yuan/article/details/64131129 为了练习我采用的数据集与原博客中的有所区别,是UCI中一个霓虹人搞的有关于大肠杆菌中蛋白质的分布的数据集...传送门:http://archive.ics.uci.edu/ml/datasets/Ecoli 其中一共有8个属性,包括大肠杆菌的名字,以及其余7个不同的指标,最终的