评估迷你项目

文章目录
  1. 1. 项目简介
  2. 2. 测试集
  3. 3. True Positive 数量
  4. 4. 精确率和召回率
  5. 5. 混淆矩阵
  6. 6. 理解指标
  7. 7. POI 识别符指标
  8. 8. 源码分享
  9. 9. 书签

项目简介

返回至你上节课的代码,你在其中使用决策树和一个特征构建了 POI 识别符的首个简单迭代。 将你构建的 POI 识别符复制到 evaluation/evaluate_poi_identifier.py 内的骨架代码中。 回忆一下在该项目结尾,你(测试集上的)识别符有 0.724 的准确率。不是很差,对吧?让我们更为仔细地探究你的预测值。

测试集

对于 POI 识别符的测试集,有多少 POI 被预测到了?
答:4
(注意我们说的是测试集!我们期望看到的不是整个数据集中 POI 的数量。)

你的测试集中的总人数是多少?
答:29

如果测试集中所有人的识别符都被预测为 0(非 POI),其准确率会是多少?
0.8620689655172413

True Positive 数量

把你的过拟合模型的预测与真实测试标签比较,你得到 true positive 了吗?(在此情况下,我们定义的 true positive 中实际标签和预测标签均为 1)
答:Nope

精确率和召回率

如你现在可能看到的,类似于安然数据集(非 POI 多于 POI)中的那些不平衡类会带来一些特殊的挑战,即你可以为每个点推测出更为常见的类标签,虽然这不是一个非常有水准的策略,但却仍然能够获得相当不错的准确率!

精确率和召回率可以更好地说明性能。使用 sklearn.metrics 中可用的 precision_score 和 recall_score 来计算这些数量。

精确率是多少?
答:0

召回率是多少?
答:0

(注意:你可能看到过类似于“用户警告:一些标签的精确率和召回率等于零”的消息。 就像其中所显示的,当精确率和/或召回率为零时,计算其他指标(比如 F1 分数)可能会出现问题,而且在问题发生时,警告消息会显示出来。)

显然,这并不是一个优化得非常好的机器学习策略(我们没有尝试过决策树以外的任何算法,或调整过任何参数,也没有进行过任何特征选择), 现在看来,精确率和召回率要比准确率更直观。

混淆矩阵

在最终项目中,你将使用在本课程中学习到的众多工具优化 POI 识别符。希望结果是你的精确率和/或召回率会提高,但是你必须能够解读它们。

此处为一些编造的预测值和假设的测试集的真标签;在以下方框中填空,练习识别 true positive、false positive、true negative 和 false negative。 让我们按照惯例,使用“1”表示正结果,“0”表示负结果。

预测值 = [0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 1]

真实标签 = [0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 1, 1, 0, 1, 0, 0]

有多少 true positive?
答:6

此示例中有多少 true negative?
答:9

此示例中有多少 false positives?
答:3

此示例中有多少 false negatives?
答:2

这个分类器的精确率是多少?
答:0.666666666667

这个分类器的召回率是多少?
答:0.75

理解指标

1、填空:

“我的 true positive 率很高,这意味着当测试数据中出现(POI)时,我擅长于标记他或她。”

2、填空:

“我的识别符没有很好的(precision),但是有不错的(recall)。 这意味着,无论我测试集中的 POI 何时被标记,我都可以明确地知道那很有可能是真实的 POI 而非虚警。 另一方面,我为此付出的代价是我有时候会错过真实的 POI,因为我实际上不太情愿触及边界情形。 ”

3、填空:

“我的识别符没有很好的(recall),但是有不错的(precision)。 这意味着,无论我测试集中的 POI 何时被标记,我都可以明确地知道那很有可能是真实的 POI 而非虚警。 另一方面,我为此付出的代价是我有时候会错过真实的 POI,因为我实际上不太情愿触及边界情形”

4、填空:

“我的识别符有非常好的(F1 score)。这是两个世界中最好的识别符,我的 false positive 和 false negative 率均为(low),这意味着我可以可靠、准确地识别 POI。 如果我的识别符发现了 POI,那么此人几乎可以肯定是 POI,而且如果识别符没有标记某人,那么几乎可以肯定他们不是 POI。”

POI 识别符指标

我们通常需要在精确率和召回率之间进行取舍——你认为在 POI 识别符中哪个更重要? 答案没有对错,因为无论怎样都会得到很好的论证,但是你应能解读这两个指标,并且清楚表述你发现哪个最重要以及为什么。

源码分享

https://github.com/voidking/ud120-projects

书签

机器学习入门
https://cn.udacity.com/course/intro-to-machine-learning--ud120