决定改掉拖延症,不再等待,能做的东西立马做。
学习目标
1、数据拆分:训练数据集&测试数据集
2、评价分类结果:精准度、混淆矩阵、精准率、召回率、F1 Score、ROC曲线等
3、评价回归结果:MSE、RMSE、MAE、R Squared
学习资料
首先,建议阅读《机器学习的敲门砖:kNN算法(中)》全文。该篇文章以刚刚学习过的kNN算法为例,介绍了数据拆分,即划分训练数据集&测试数据集的方法。还详细讲解了分类准确度accuracy这一知识点。
然后,还需要阅读《评价分类结果(上):混淆矩阵、精准率、召回率》全文,以及《评价分类结果(下):F1 Score、ROC、AUC》,全面了解评价分类结果。
最后,需要阅读《模型之母:线性回归的评价指标》,学习评价回归结果:MSE、RMSE、MAE、R Squared。
西瓜书第二章,介绍了模型评估与选择的相关内容。
20200305
准确度(accuracy)
不一定在所有情况都适用,如对于极端不平衡的分类数据。
混淆矩阵(confusion matrix)
预测值0 | 预测值1 | |
---|---|---|
真实值0 | TN | FP |
真实值1 | FN | TP |
以TN举例,真实值为TRUE,预测为negative,即为0,预测正确,其他三个同理解释。
预测值0 | 预测值1 | |
---|---|---|
真实值0 | 9978 | 12 |
真实值1 | 2 | 8 |
根据上述混淆矩阵我们可以计算出很多数字特征,见下:
精准率(precision)-也叫查准率
p
r
e
c
i
s
i
o
n
=
T
P
T
P
+
F
P
precision = \frac{TP}{TP+FP}
precision=TP+FPTP
所谓的精准率是:分母为所有预测为1的个数,分子是其中预测对了的个数,即预测值为1,且预测对了的比例。即精准率为我们关注的那个事件,预测的有多准。
召回率(recall)-也叫查全率
r
e
c
a
l
l
=
T
P
T
P
+
F
N
recall = \frac{TP}{TP+FN}
recall=TP+FNTP
所谓召回率是:所有真实值为1的数据中,预测对了的个数。也就是我们关注的那个事件真实的发生情况下,我们成功预测的比例是多少。
上述两种指标,在不同的场景有不同的选择。
如果同时需要关注两种指标,那么我们需要使用下面一种指标。
F1 score
F
1
=
2
∗
p
r
e
c
i
s
i
o
n
∗
r
e
c
a
l
l
p
r
e
c
i
s
i
o
n
+
r
e
c
a
l
l
F1 = \frac{2*precision*recall}{precision+recall}
F1=precision+recall2∗precision∗recall
一般来说,F1 score要比上两者更直观。
ROC(Receiver Operation Characteristic Cureve)
precision就是所有正例中,有多少被正确地判定为正;
recall是所有负例中,有多少被错误地判定为正。
ROC就是描述这两者的曲线,前者越大越好,后者越小越好。
AUC(Area Under Curve)
AUC就是ROC曲线下面的面积。这个AUC是横轴范围(0,1 ),纵轴是(0,1)所以总面积是小于1的。
上面几个是针对分类问题的指标,下面介绍回归问题的指标。
比较简单,就列一下公式。
均方误差MSE
1
m
∑
i
=
1
m
(
y
t
e
s
t
i
−
y
t
e
s
t
′
i
)
2
\frac{1}{m}\sum_{i=1}^{m}(y^{i}_{test}-y'^{i}_{test})^2
m1i=1∑m(ytesti−ytest′i)2
均方根误差RMSE
1
m
∑
i
=
1
m
(
y
t
e
s
t
i
−
y
t
e
s
t
′
i
)
2
\sqrt{\frac{1}{m}\sum_{i=1}^{m}(y^{i}_{test}-y'^{i}_{test})^2}
m1i=1∑m(ytesti−ytest′i)2
平均绝对误差MAE
1
m
∑
i
=
1
m
∣
y
t
e
s
t
i
−
y
t
e
s
t
′
i
∣
\frac{1}{m}\sum_{i=1}^{m}|y^{i}_{test}-y'^{i}_{test}|
m1i=1∑m∣ytesti−ytest′i∣
还有R的平方。
代码部分的话全放自己的jupyter里面了!