在此总结一下基本的模型评价指标和使用方法:
附上几个写的比较清晰的博客:
常见的回归评价
一文读懂分类算法常用评价指标
解sklearn中logloss的计算过程
评价指标的选择是很重要的
回归问题
MSE(均方误差)
真实值与预测值的差值的平方然后求和平均
from sklearn import metrics
a=np.array([1,2,3,4])
b=np.array([2,3,2,4])
ans=metrics.mean_squared_error(a,b)
RMSE(均方根误差)
平滑可微的,是很多模型的默认评价指标
ans=np.sqrt(metrics.mean_squared_error(a,b))
MAE(平均绝对误差)
ans=metrics.mean_absolute_error(a, b)
RMSE与MAE的主要区别是:
①RMSE比MAE惩罚更高的差异
②RMSE是平滑可微的
③MAE对异常值更鲁棒
MAE对异常值具有鲁棒性而RMSE不强的原因:
最小化一组数字上的平方误差RMSE会导致找到它的均值,并且最小化平均绝对误差MAE会导致找到它的中位数。
R-Squared
若等于1,说明拟合效果最好;
若等于0,说明和均值(相当于瞎猜)的结果一样
也可以是任意低的负数 最大为1
ans=metrics.r2_score(a,b)
MSPE(均方百分比误差)
代码实现可有MSE变形得到
MAPE(平均绝对百分比误差)
RMSLE(均方根平方对数误差)
分类问题
Accuracy
from sklearn import metrics
import numpy as np
a=np.array([1,2,3])
b=np.array([2,2,1])
metrics.accuracy_score(a,b)
Logloss(对数损失)
N:样本数
M:类别数,比如上面的多类别例子,M就为4
yij:第i个样本属于分类j时为为1,否则为0
pij:第i个样本被预测为第j类的概率
logloss计算过程中,必须要求将输出用one-hot表示
sklearn中one-hot编码转换过程
from sklearn import metrics
import numpy as np
from sklearn.preprocessing import OneHotEncoder
one_hot = OneHotEncoder(sparse=False)
y_true = one_hot.fit_transform([[0,1,3]])
y_pred = one_hot.fit_transform([[1,2,1]])
ans=metrics.log_loss(y_true, y_pred)
print(ans)
AUC(Area Under Curve)
a=np.array([1,2,3])
b=np.array([2,3,1])
metrics.auc(a,b)
Cohen’s Kappa(kappa系数)
metrics.cohen_kappa_score(a,b)