1. 项目简介
返回至你上节课的代码,你在其中使用决策树和一个特征构建了 POI 识别符的首个简单迭代。 将你构建的 POI 识别符复制到 evaluation/evaluate_poi_identifier.py 内的骨架代码中。 回忆一下在该项目结尾,你(测试集上的)识别符有 0.724 的准确率。不是很差,对吧?让我们更为仔细地探究你的预测值。
2. 测试集
对于 POI 识别符的测试集,有多少 POI 被预测到了?
答:4
(注意我们说的是测试集!我们期望看到的不是整个数据集中 POI 的数量。)
你的测试集中的总人数是多少?
答:29
如果测试集中所有人的识别符都被预测为 0(非 POI),其准确率会是多少?
0.8620689655172413
3. True Positive 数量
把你的过拟合模型的预测与真实测试标签比较,你得到 true positive 了吗?(在此情况下,我们定义的 true positive 中实际标签和预测标签均为 1)
答:Nope
4. 精确率和召回率
如你现在可能看到的,类似于安然数据集(非 POI 多于 POI)中的那些不平衡类会带来一些特殊的挑战,即你可以为每个点推测出更为常见的类标签,虽然这不是一个非常有水准的策略,但却仍然能够获得相当不错的准确率!
精确率和召回率可以更好地说明性能。使用 sklearn.metrics 中可用的 precision_score 和 recall_score 来计算这些数量。
精确率是多少?
答:0
召回率是多少?
答:0
(注意:你可能看到过类似于“用户警告:一些标签的精确率和召回率等于零”的消息。 就像其中所显示的,当精确率和/或召回率为零时,计算其他指标(比如 F1 分数)可能会出现问题,而且在问题发生时,警告消息会显示出来。)
显然,这并不是一个优化得非常好的机器学习策略(我们没有尝试过决策树以外的任何算法,或调整过任何参数,也没有进行过任何特征选择), 现在看来,精确率和召回率要比准确率更直观。
5. 混淆矩阵
在最终项目中,你将使用在本课程中学习到的众多工具优化 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
6. 理解指标
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。”
7. POI 识别符指标
我们通常需要在精确率和召回率之间进行取舍——你认为在 POI 识别符中哪个更重要? 答案没有对错,因为无论怎样都会得到很好的论证,但是你应能解读这两个指标,并且清楚表述你发现哪个最重要以及为什么。
8. 源码分享
https://github.com/voidking/ud120-projects
9. 书签
机器学习入门
https://cn.udacity.com/course/intro-to-machine-learning--ud120