首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

机器学习基本素养-如何利用你的数据集以及如何评价算法的表现

我们之前进行的几次小小的编程练习中,都是简单地使用数据集完成了对模型的拟合。

之所以去拟合这个模型的目的呢,是想通过已有数据的情况,去判断一个新的样本出现的时候会有什么结果,那么问题来了,分类算法有好多,我用哪一种呢,这不同的算法之间差距又有多少呢,这一次我们就来解决这个问题。

创造“新”样本。

之前我们都是把所有的训练样本用在对模型的训练上,导致我们根本没办法测试新样本出现的时候模型的准确率啊,而且如果真的有新样本,我也不知道他正确的计算结果应该是什么吧,所以看似好像没什么办法去测试样本表现啊!

别急,我们从训练数据里挑一部分出来,把结果去掉,假装他们是新样本就好了。

具体怎么挑,有以下几种常用的办法:

1. 留出法

最简单的方法,人工把数据集分开,一部分用作训练,另一部分用作检测。

2. 交叉验证法

先将数据集D分成k个大小相似的互斥子集,每个子集Di保持分布的一致性。一共做k次训练和测试,每次都用不同的Di做测试集,剩余的其他数据用于训练,最终取这k次测试结果的平均值作为评价的最终结果。(评价的量化方法在本文后面部分会讲)

常取k=10,这个时候我们可以称这种方法为:十折交叉验证法。

3. 自助法

给定包含m个样本的数据集D,从数据集中有放回地抽取m次样本,每次抽取一个,得到一个总数仍为m的数据集D’,用D’做训练集,用D\D’(在D中但不在D’中的数据)做测试集,这样得到的结果称为“包外估计”。

当然啦,这几种方法也都是有不足之处的,后两种办法相对比第一种要好一些,大家可以根据自己的喜好来选择。

好了分好数据集之后来看一下怎么评价吧,前面也提到了量化的评价,这里的评价主要是针对二分类问题来说的,其他问题可以通过这些思想的拓展来构造评价指标。

最简单的,错误率:

e = 正确分类的样本数/样本总数

精度:c = 1-e

多么常用简单的指标啊,难道就是这么简单?来看一个极端情况:

面对一个二分类问题,我的算法结果就是1。就是说不论什么样本进来,算法给出的分类结果都是1,很明显这个算法根本就不能用的。但是如果测试样本有100个,其中99个的分类结果是1,一个的分类结果是0,请回答本次测试的错误率和精度。

不得已,就又出现了以下几个指标:

首先是有一个叫混淆矩阵的东西:

TP表示真实的情况是正例,用算法预测结果也是正例的样本的个数,FN、FP、TN的定义与TP类似。

查全率(召回率):R = TP/(TP+FN)

查准率:P = TP/(TP+FP)

F值:F = 2*P*R / (P+R)

F值的本质是P、R的调和平均:

(调和平均的特点是在求平均的过程中相对较小的数值对平均值结果影响更大)

以上就是常用的几种指标啦,他们之间是相互弥补的,所以在对结果进行说明的时候往往要对多种指标进行计算,才能评价或者比较几种算法的优劣。

记得关注和转发哦!

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20171212G0IYB000?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券