PRML系列:1.3 Model Selection

PRML系列:1.3 Model Selection

模型选择

模型选择一般采用交叉验证,本节提到了S-fold cross-validation,原理如下,把数据集D随机划分成S份,其中S-1份用来训练模型,1份用来验证模型的效果。这样,一方面能充分利用所给数据集的几乎全部有用信息,另外一方面,可以有效避免过拟合现象的发生。

当S取数据集个数N时,这种技术叫做留一法,在样本稀缺的情况下尤其有用。

缺点:

  1. 随着S的增大,模型训练时间也增大,毕竟要训练S次,得到S个模型,在模型本身比较耗时的情况下,时间复杂度相当高。
  2. 对于单一模型,如果自身需要手动调节多个参数,如若干个正则化参数。在最坏情况下,探索这些参数的组合需要的训练次数可能是参数个数的指数函数。

针对第二个缺点,比如给定多项式拟合函数的阶数M和正则化系数λ\lambda, M可选择9种,λ\lambda可选择5种,那么自然有9 x 5 = 45种选择,随着需要手动调节参数的增多,训练次数也会指数上升。

这些参数的共同特点是,模型不能自动学得,需要手动调节,我们称为超参数。理想情况下,模型选择应该只依赖于训练数据,并且应该允许在一轮训练中对比多个超参数以及模型类型。因此,我们需要找到一种模型表现的度量,它只依赖于训练数据,并且不会由于过拟合产生偏移的问题。

文中提出了针对似然函数的一种”信息准则”,Akaike information criterion, 简称AIC,选择下面使这个量最大的模型:

不过令我好奇的是,是有特定的算法能够通过验证集能够自动选择最优模型么?书中暂未提到。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏项勇

笔记68 | 切换fragmengt的replace和add方法笔记

1434
来自专栏xingoo, 一个梦想做发明家的程序员

Spark踩坑——java.lang.AbstractMethodError

百度了一下说是版本不一致导致的。于是重新检查各个jar包,发现spark-sql-kafka的版本是2.2,而spark的版本是2.3,修改spark-sql-...

1190
来自专栏java闲聊

JDK1.8 ArrayList 源码解析

当运行 ArrayList<Integer> list = new ArrayList<>() ; ,因为它没有指定初始容量,所以它调用的是它的无参构造

1192
来自专栏计算机视觉与深度学习基础

Leetcode 114 Flatten Binary Tree to Linked List

Given a binary tree, flatten it to a linked list in-place. For example, Given...

1928
来自专栏拭心的安卓进阶之路

Java 集合深入理解(6):AbstractList

今天心情比天蓝,来学学 AbstractList 吧! ? 什么是 AbstractList ? AbstractList 继承自 AbstractCollec...

19110
来自专栏MelonTeam专栏

ArrayList源码完全分析

导语: 这里分析的ArrayList是使用的JDK1.8里面的类,AndroidSDK里面的ArrayList基本和这个一样。 分析的方式是逐个API进行解析 ...

4469
来自专栏刘君君

JDK8的HashMap源码学习笔记

3008
来自专栏后端之路

LinkedList源码解读

List中除了ArrayList我们最常用的就是LinkedList了。 LInkedList与ArrayList的最大区别在于元素的插入效率和随机访问效率 ...

19010
来自专栏Hongten

ArrayList VS Vector(ArrayList和Vector的区别)_面试的时候经常出现

1642
来自专栏alexqdjay

HashMap 多线程下死循环分析及JDK8修复

1K4

扫码关注云+社区