混淆矩阵
Guessed Positive | Guessed Negative | |
---|---|---|
Positive | True Positives | False Negatives |
Negative | False Negatives | True Negatives |
准确率 (Accuracy)
- Code
from sklearn.metrics import accuracy
accuracy_score (y_true, y_pred)
- 准确率不适用的情形
e.g Credit Card Fraud
The model says all the transactions are good. This model is not catching any of the bad ones. And the point of the model is to catch the fraudulent transactions.
假负例与假正例
不同情况下假负例与假正例,这两种错误判断对结果的影响不同
- 医疗模型
positive :病人 此处,FP-->ok, FN --> not ok => ok if not all are sick, find all the sick people. 找到的人不一定要全是病人,但最好判断为健康人的人都是健康人 - 垃圾邮件检测器模型
positive :垃圾邮件 此处,FP--> not ok, FN--> ok => don't necessarily need to find all the spam ,better be spam. 不一定要找到所有的垃圾文件,但最好判断为垃圾邮件的都是垃圾邮件 - 由此引出 精度和召回率
精度 (Precision)
判断的正例中真正例的比例 --> 更希望判断的垃圾邮件更准确
召回率 (Recall)
实际的正例中真正例的比例 --> 可以看做算法的覆盖范围 -->更希望发现更多的患病者 重点:发现了多少
F1得分
调和平均数(Harmonic Mean) 始终比arithmetic mean 更小,更接近于较小的那个数。
F1 Score = Harmonic Mean (Precision, Recall)
= 2(PrecisionRecall)/(Precision+Recall)
F- b(beta)得分
F0.5 score --> 更重视precision -->beta越小越接近精度
F2 score --> recall
Fb score

ROC 曲线 (Receiver Operating Characteristic)
回归指标
- Mean Absolute Error(平均绝对误差)
预测值与真实值差距的平均值
from sklearn.metrics import mean_absolute_error
from sklearn.linear_model import LinearRegression
classifier = LinearRegression()
classifier.fit(X,y)
guess = classfier.predict(X)
error = mean_absolute_error(y, guesses)
但绝对值函数不便于求导,对梯度下降不适用,所以更常用的是均方误差
- Mean Squared Error (均方误差)
平方
from sklearn.metrics import mean_squared_error
from sklearn.linear_model import LinearRegression
classifier = LinearRegression()
classifier.fit(X,y)
guess = classfier.predict(X)
error = mean_squared_error(y, guesses)
- R2 Score
通过将我们的模型与最简单的可能模型(取平均值然后花一条直线)相比得出
Screen Shot 2018-08-30 at 10.58.07 PM.png
from sklearn.metrics import r2_score
y_true = [1, 2, 4]
y_pred = [1.3, 2.5, 3.7]
r2_score(y_true, y_pred)
附:今日题目:什么是overfitting,什么是underfitting,各自该如何解决?
解答
- 过拟合
- 解释:把训练样本自身一些特点当作了所有潜在样本都会具有的一般性质,导致泛化能力下降
- 解决办法:
- 经验误差最小化
- 重新洗清数据
- 增大训练量
- 采用正则化方法
- 欠拟合
- 解释:对训练样本的一般性质尚未学好
- 解决办法:
- 决策树中拓展分支
- 在神经网络学习中增加训练轮数
- 添加其他特征项
- 添加多项式特征
- 减少正则化参数
(解决方法参考了 13-huan-北京 同学)
网友评论