机器学习之模型评估与模型选择(学习笔记)

时间:2014.06.26

地点:基地

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

一、训练误差和测试误差

机器学习或者说统计学习的目的就是使学习到的模型不仅对已知数据而且对未知数据都都很好的预测能力。不同的学习方法会得出不同的模型。在评判学习方法的好坏时,常用的是:

1.基于损失函数的模型的训练误差                          2。模型的测试误差

假设学习到的模型为:  

那么训练误差即是模型  关于训练数据集的平均损失:

                      N为训练样本的容量

测试误差是模型 关于测试数据集的平均损失:

当损失函数是0-1损失时,测试误差就是常见的测试数据集上的误差率了:

    --------------------------------------------------------------------(1)

I 在这里是指示函数,即括号部分取不等于时为1,否则为0(指示函数:括号中条件为真时取1,为假时取0)

对应的,测试数据集上的准确率为:

     --------------------------------------------------------------------(2)

x显然有:准确率+误差率=1,即 (1)式+(2)式=1

训练误差的大小,对判断给定问题是不是容易学习的问题是有意义的,但本质上并不太重要,重要的是测试误差反映了学习方法对未知的测试数据集的预测能力,给定两种学习方法,测试误差小的方法具有更好的预测能力,是更为有效的方法。通常将学习方法对未知数据的预测能力叫做泛化能力。

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

二、过拟合与模型选择

我们知道,模型的假设空间中有很多候选模型,这些模型不同复杂度,假设这个模型空间中存在一个真模型,即理想模型,那么,我们希望是选择和学习到一个尽量逼近这个理想模型的模型,这将表现在:学习到的模型与理想模型参数个数相同,所学习到的模型的参数向量与理想模型参数向量相近。但其中有个问题,因为我们是用有限的训练数据来学习模型,若是一味的追求模型对训练数据的表达能力,所得模型将很有可能比理想真模型的复杂度还要高,我们称之为过拟合。即我们学习到的模型所包含的参数过多,对已知的数据表达得过分的好,却对未知的数据预测得很差的现象。模型的选择即是旨在避免过拟合并提高模型的预测能力。

举个例来说:假设给定一个训练数据集:

即给定一组输入——输出观测值,多项式函数拟合的任务就是假设给定数据由M次多项式函数生成,选择最有可能产生这些数据的M次多项式函数。即在M次多项式函数中(对应模型假设空间)选择一个对已知数据以及未知数据都有很好预测能力的函数。下面来求解这个函数:

设M次多项式为:

式中x是单变量输入,w是M+1个参数构成的向量。

我们首先可确定模型的复杂度,即确定多项式次数,然后在给定的模型复杂度下,按经验风险最小化策略,求解参数(多项式系数),在这里我们求经验风险最小化,即:

这里的系数1/2是为了计算方便,将模型与训练数据代入得:

然后针对w求偏导,即可求得拟合多项式系数。

我们也容易知道当M=0时曲线时一条常数直线,数据拟合效果很差,M=1时曲线是一条斜直线拟合效果也很差,当M很大时,拟合曲线会通过每个训练数据点,训练误差为0,对于训练数据来说这是最好的,但这种太过好的效果反而是有问题的,因为数据本身就存在噪声,不是理想数据,这种训练误差为0的倒不正常了,再有是这种拟合曲线对未知数据的预测能力不好,当M足够差不多时,曲线对训练数据拟合效果可能已经足够好,此时模型也简单,这便是一种较好的选择。

总得来说,通过上面分析,我们可发现,随着M的增大,模型复杂度也增加,训练误差减小趋向于0,但测试误差随着多项式次数的增加先减小后增大,而我们学习的目的就是为了使得模型的测试误差最小。所以M的选择要防止过拟合的出现。

机器学习之模型评估与模型选择(学习笔记)

时间: 2024-10-16 21:36:30

机器学习之模型评估与模型选择(学习笔记)的相关文章

模型评估与模型选择

机器学习算法 原理.实现与实战——模型评估与模型选择 1. 训练误差与测试误差 机器学习的目的是使学习到的模型不仅对已知数据而且对未知数据都能有很好的预测能力. 假设学习到的模型是$Y = \hat{f}(X)$,训练误差是模型$Y = \hat{f}(X)$关于训练数据集的平均损失: $$R_{emp}(\hat{f}) = \frac{1}{N}\sum_{i=1}^NL(y_i,\hat{f}(x_i))$$ 其中$N$是训练样本容量. 测试误差是模型$Y = \hat{f}(X)$关于测

X/Open DTP模型与XA协议的学习笔记

最近的任务是里了解XA协议.要了解XA协议,必须先了解X/Open DTP模型,稍微总结一下: X/Open DTP(Distributed Transaction Process)是一个分布式事务模型.这个模型主要使用了两段提交(2PC - Two-Phase-Commit)来保证分布式事务的完整性.在这个模型里面,有三个角色: AP: Application,应用程序.也就是业务层.哪些操作属于一个事务,就是AP定义的. TM: Transaction Manager,事务管理器.接收AP的

逻辑斯谛回归与最大熵模型-《统计学习方法》学习笔记

0. 概述: Logistic回归是统计学中的经典分类方法,最大熵是概率模型学习的一个准则,将其推广到分类问题得到最大熵模型,logistic回归模型与最大熵模型都是对数线性模型. 本文第一部分主要讲什么是logistic(逻辑斯谛)回归模型,以及模型的参数估计,使用的是极大对数似然估计以及梯度下降法,第二部分介绍什么是最大熵模型,首先介绍最大熵原理, 然后根据最大熵原理推出最大熵模型,在求解最大熵模型时候,要引入拉格朗日对偶性(在下一篇文章中)的讲解,将最大熵模型的学习归结为对偶函数的极大化,

模型评估:模型状态评估

模型状态 过拟合和欠拟合 过拟合:在训练集上的准确率较高,而在测试集上的准确率较低 欠拟合:在训练集和测试集上的准确率均较低 学习曲线(Learning Curves) 1)概念概述 学习曲线就是通过画出不同训练集大小时训练集和交叉验证的准确率,可以看到模型在新数据上的表现,进而来判断模型是否方差偏高或偏差过高,以及增大训练集是否可以减小过拟合. 先明确两个概念: 偏差:指的是分类器对训练集和测试集的准确率与基准分类器的准确率有比较大的差距,是分类器与其他分类器的比较 方差:指的是分类器对训练集

Coursera 机器学习 第5章 Neural Networks: Learning 学习笔记

5.1节 Cost Function神经网络的代价函数. 上图回顾神经网络中的一些概念: L  神经网络的总层数. sl  第l层的单元数量(不包括偏差单元). 2类分类问题:二元分类和多元分类. 上图展现的是神经网络的损失函数,注意这是正则化的形式. 正则化部分,i.j不为0.当然i.j可以为0,此时的损失函数不会有太大的差异,只是当i.j不为0的形式更为常见. 5.2节 Backpropagation Algorithm最小化损失函数的算法——反向传播算法:找到合适的参数是J(θ)最小. 如

《机器学习算法原理与编程实践》学习笔记(一)

第一章 机器学习的基础 1.1编程语言与开发环境 1.1.1 Python 安装(略) 1.2.2 Python安装包的安装:可以选选择安装集成包anaconda(略) 1.1.3 IDE配置及安装测试 IDE选择UltraEdit高级文本编辑器,配置步骤如下: (1)选择"高级"-->"用户工具"命令,如图1.4所示. 图1.5 配置UltraEdit步骤1 (2)在如图1.5所示输入各项参数,然后单击"应用按钮" 图1.5 配置Ultr

郑捷《机器学习算法原理与编程实践》学习笔记(第六章 神经网络初步)6.3 自组织特征映射神经网路(SMO)

具体原理网址:http://wenku.baidu.com/link?url=zSDn1fRKXlfafc_tbofxw1mTaY0LgtH4GWHqs5rl8w2l5I4GF35PmiO43Cnz3YeFrrkGsXgnFmqoKGGaCrylnBgx4cZC3vymiRYvC4d3DF3 自组织特征映射神经网络(Self-Organizing Feature Map.也称Kohonen映射),简称为SMO网络,主要用于解决模式识别类的问题.SMO网络属于无监督学习算法,与之前的Kmeans算

《机器学习算法原理与编程实践》学习笔记(二)

(上接第一章) 1.2 对象.矩阵与矢量化编程 1.2.1对象与维度(略) 1.2.2初识矩阵(略) 1.2.3矢量化编程与GPU运算(略) 1.2.4理解数学公式与NumPy矩阵运算 1.矩阵的初始化 #coding:utf-8 import numpy as np #导入NumPy包 #创建3*5的全0矩阵和全1的矩阵 myZero = np.zeros([3,5])#3*5的全0矩阵 print myZero myZero = np.ones([3,5])##3*5的全1矩阵 print

《机器学习算法原理与编程实践》学习笔记(三)

(上接第一章) 1.2.5 Linalg线性代数库 在矩阵的基本运算基础之上,NumPy的Linalg库可以满足大多数的线性代数运算. .矩阵的行列式 .矩阵的逆 .矩阵的对称 .矩阵的秩 .可逆矩阵求解线性方程 1.矩阵的行列式 In [4]: from numpy import * In [5]: #n阶矩阵的行列式运算 In [6]: A = mat([[1,2,3],[4,5,6],[7,8,9]]) In [7]: print "det(A):",linalg.det(A)