西瓜书《机器学习》学习笔记--模型评估及选择(二) 留出法
2018-01-23 21:24
417 查看
前言
在现实任务中,我们往往有多种学习算法可供选择,甚至对于同一学习算法,不同参数都会有截然不同的结果;那么我们应该如何选择模型呢?既然需要选择模型,那么肯定需要通过一定的指标方法取评估一个模型的好坏,这就是这一篇文章的内容。评估方法有不少,很重要的内容就是划分训练集及测试集,通常我们在开始选取模型之前,已经拿到带标签的样本数据,为了评估一个模型的好坏,需要将样本数据分为两部分:训练集和测试集,训练集用来fit模型,然后拿测试集验证,根据最后得出的性能度量数据区分模型好坏。留出法
评估方法中比较简单的一种是留出法,“留出法”直接将样本数据划分成两个互斥的集合,其中一个作为训练集S,另一个作为测试集T;划分比例是一个难点,如果S中样本较少,无法较好的代表样本全集D,得到的模型可能不准确;如果T中样本数比较少,评估结果可能就不具有代表性;一般划分2/3~4/5的样本用于训练。划分方法是进行采样,按照“分层采样”的规则,训练集和测试集中正例和反例的分布必须和样本总数中分布一致,以最大限度保证数据无偏差。即假设100个样本,其中正例40个,反例60个,取30个作为测试集,那么测试集S中必须有12个是正例,18个是反例。在留出法这种情况下,有一个问题划分具有随机性对于评估结果有所影响,多次得到的结果可能有比较大的差异,为了避免这个问题,往往随机划分多次,取最后平均值作为评估结果。代码实现
import random # 分层 def layered(data_set): n = len(data_set[0]) classifications = {} # 遍历数据集,获取分布情况 for data in data_set: classification_list = [] label = data[n-1] if classifications.__contains__(label): classification_list = classifications[data[n-1]] else: classifications[label] = classification_list classification_list.append(data) return classifications # 留出法 def hold_out(data_set, scale): classifications = layered(data_set) s = [] t = [] for label in classifications.keys(): classification_list = classifications.get(label) m = len(classification_list) for count in range(int(scale*m)): random_pos = random.randint(0, m-1) data = classification_list[random_pos] s.append(data) classification_list.remove(data) t = t +classification_list return (s, t)
相关文章推荐
- 『机器学习——周志华』学习笔记——第二章:模型评估与选择
- Stanford机器学习笔记-6. 学习模型的评估和选择
- 《机器学习》(周志华)学习笔记(二)模型评估与选择
- 斯坦福大学机器学习笔记——当训练模型性能不好时的措施(假设评估、模型选择和交叉验证集、正则化、学习曲线)
- 西瓜书《机器学习》笔记--模型评估与选择(一) 经验误差与过拟合
- 机器学习 - 模型选择与评估学习笔记
- Stanford机器学习笔记-6. 学习模型的评估和选择
- 机器学习之模型评估与模型选择(学习笔记)
- 机器学习笔记(IV)模型评估与选择(III)
- 机器学习笔记(PART II)模型的评估和选择(I)
- 第2章 模型评估与选择学习笔记
- 公开课机器学习笔记(17)学习理论二 VC维、ERM总结、模型选择、特征选择
- 机器学习笔记(二)模型评估与选择
- 周志华《机器学习》笔记:2、模型评估与选择
- 《机器学习》第二章 模型评估与选择 笔记3 查准率、查全率
- 【机器学习-斯坦福】学习笔记9 规则化和模型选择(Regularization and model selection)
- 机器学习笔记(III)模型评估与选择(II)
- 机器学习笔记-模型评估与选择, Training set、Validation set 和 Testing set的区别与作用
- 机器学习笔记2.模型评估于选择----教材周志华西瓜书
- 《机器学习》第二章 模型评估与选择 笔记1