拟合及分类评价指标和处理分类样本不均衡的smote算法

1、 拟合

介绍拟合在sklearn中四种基本评价尺度,分别为mean_squared_error、mean_absolute_error、explained_variance_score 和 r2_score。
公式中yi是第i个样本的真实值,y^i是i个样本的预测值。
1、均方差(mean-squared-error)

MSE

2、平均绝对值误差(mean_absolute_error)

MAE

3、可释方差得分(explained_variance_score,最好情况为1,越小越差) explained variation measures the proportion to which a mathematical model accounts for the variation (dispersion) of a given data set

variance score

4、中值绝对误差(Median absolute error)

MedAE

适合含有离群点的数据集,不支持多输出。
5、R2 决定系数(拟合优劣,范围在[0,1],也可能为负,为0时拟合效果最差,为负时无意义)

R2 score

这里


2、 分类

分类的评价指标有很多,这里列举较常用的几个。论文中一般常用 precision,recall,f1-score,嫌麻烦可以直接生成分类报告Classification report:

from sklearn.metrics import classification_report
y_true = [0, 1, 2, 2, 0]
y_pred = [0, 0, 2, 1, 0]

target_names = ['class 0', 'class 1', 'class 2']
print(classification_report(y_true, y_pred, target_names=target_names))
##结果(前面是三个主要指标,support是被分到的这个类里元素出现的个数):
             precision    recall  f1-score   support

    class 0       0.67      1.00      0.80         2
    class 1       0.00      0.00      0.00         1
    class 2       1.00      0.50      0.67         2

avg / total       0.67      0.60      0.59         5

1、混淆矩阵Confusion Matrix
也叫为错误矩阵,通过它可以直观地观察到算法的效果。它的每一列是样本的预测分类,每一行是样本的真实分类(反过来也可以),它反映了分类结果的混淆程度。(直观来看,主对角线的颜色越深,模型越好)

混淆矩阵

下面准确率召回率中有表格图例。

2、准确率与召回率
准确率与召回率多用于二分类问题。准确率(Precision)指的是模型判为正的所有样本中有多少是真正的正样本;召回率(Recall)指的是所有正样本有多少被模型判为正样本,即召回率。
具体见下图:
true positive简写为TP,其余以此类推


分类评价

网上的一些表不太适合理解,自己画一个:

混淆矩阵

那么,
Precision = TP/(TP+FP)
Recall = TP(TP+FN)
简单解释就是:
准确率代表你预测的结果有多少是对的,而召回率代表正例中你预测出来的正例覆盖了多少。

更直观的图:

图片来自知乎

如果需要在精确率与召回率间进行权衡,可以画出准确率-召回率曲线(Precision-Recall Curve),曲线下的面积(AUC)被称为AP分数(Average precision score);AP分数可以理解为分类器的平均准确率,是一种适合比较不同分类器性能的方法。

3、ROC
ROC曲线适用于二分类问题,ROC曲线的每一个点表示一个阈值,分类器给每个样本一个得分,得分大于阈值的我们认为是正样本,小于阈值的认为是负样本。那么纵坐标是正样本的召回率,横坐标是(1-负样本的召回率)。

4、ROC-AUC(Area under Curve)
Roc曲线下的面积,介于0.1和1之间。AUC值是一个概率值,当你随机挑选一个正样本以及负样本,当前的分类算法根据计算得到的Score值将这个正样本排在负样本前面的概率就是AUC值,AUC值越大,当前分类算法越有可能将正样本排在负样本前面。Auc作为数值可以直观的评价分类器的好坏,值越大越好,随机情况大概是0.5,所以一般不错的分类器AUC至少要大于0.5。

选择ROC和ROC下曲线面积是因为分类问题经常会碰到正负样本不均衡的问题,此时准确率和召回率不能有效评价分类器的性能,而ROC曲线有个很好的特性:当测试集中的正负样本的分布变换的时候,ROC曲线能够保持不变。

5、F1 score
也被称作F-score 或 F-measure,是准确率和召回率的调和平均数(加权平均),一般来说准确率和召回率是很难兼顾的,很可能一个高,另一个就低,理想情况是希望准确率和召回率都高,F1就是一个两者的综合评价。
F1=2* Precision * Recall/(Precision + Recall)

6、精度accuracy
正确率是我们最常见的评价指标,accuracy =(TP+TN)/(P+N),就是被分对的样本数除以所有的样本数。样本均衡时这个指标相对客观,正确率越高,分类器越好。

7、对数损失Log loss
也叫逻辑回归损失(Logistic regression loss)或交叉熵损失(Cross-entropy loss)。

sklearn

##均方差
from sklearn.metrics import mean_absolute_error
##平均绝对误差
from sklearn.metrics import mean_squared_error
##可释方差得分
from sklearn.metrics import explained_variance_score
##R2 决定系数
from sklearn.metrics import r2_score
##中值绝对误差
from sklearn.metrics import median_absolute_error
##混淆矩阵
from sklearn.metrics import confusion_matrix
##准确率
from sklearn.metrics import precision_score
##召回率
from sklearn.metrics import recall_score
#同时计算上面两个
from sklearn.metrics import precision_recall_curve
##AP分(准确率-召回率-AUC)
from sklearn.metrics import average_precision_score
##ROC
from sklearn import metrics##然后调用方法metrics.roc_curve()
##ROC-AUC
from sklearn.metrics import roc_auc_score
##f1
from sklearn.metrics import f1_score
##精度
from sklearn.metrics import accuracy_score

3.smote算法,处理分类训练样本不均衡问题:

分类时,经常会碰到到样本不均衡的问题,例如正样本多于负样本几倍。由于分类模型需要准确率和召回率同时高才算好(f1高或者曲线下面积大),那么正负样本数量接近的时候最适合训练,可是如果把多余的样本去掉模型又丢失了很多信息。
那么有几种常用方法缓解样本不均衡的影响:
1.对数据进行采样(over-sampling上采样和under-sampling下采样)
2.训练时调整类别惩罚权重
3.生成样本,smote算法就是常用的生成样本算法。可以对样本少的类别生成样本直到样本数量均衡。
生成的策略是对每个少数类样本a,从它的最近邻中随机选一个样本b,然后在a、b之间的连线上随机选一点作为新合成的少数类样本。

算法流程如下。
(1)对于少数类中每一个样本x,以欧氏距离为标准计算它到少数类样本集中所有样本的距离,得到其k近邻。
(2)根据样本不平衡比例设置一个采样比例以确定采样倍率N,对于每一个少数类样本x,从其k近邻中随机选择若干个样本,假设选择的近邻为xn。
(3)对于每一个随机选出的近邻xn,分别与原样本按照如下的公式构建新的样本。



伪代码:

伪代码

论文:https://www.jair.org/media/953/live-953-2037-jair.pdf

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,222评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,455评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,720评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,568评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,696评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,879评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,028评论 3 409
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,773评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,220评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,550评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,697评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,360评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,002评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,782评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,010评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,433评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,587评论 2 350

推荐阅读更多精彩内容