0
点赞
收藏
分享

微信扫一扫

【Kaggle】AAAMLP读书笔记

本人希望从0开始,自己的Kaggle竞赛

  1. 12月拿到自己的第一块Kaggle奖牌
  2. 短期内读完Abhishek Thakur的Approaching (Almost) Any Machine Learning Problem并且发博客记录https://github.com/abhishekkrthakur/approachingalmost
  3. 12月至少发21篇博客
  4. 每天保持八小时的学习时间

Evaluation metrics

分类问题

单标签问题

TP:真阳性,预测正确

FP: 假阳性,输出:阳性|  实际:阴性

TN:真阴性,输出:阴性|  实际:阴性

FN:假阴性,输出:阴性|  实际:阳性

Accuracy:传统的准确率,Acc高的模型效果一定好。

Precision:精确率,模型越谨慎精确率越高。即模型认为正确的大概率就是正确。

Recall:召回率,模型越宽松召回率越搞。即模型将大部分正确的都召回。

F1:是P和R的调和平均值。

OCR和AUC:当我们对模型设置不同的找回阈值的时候,我们的TPR和FPR的值会不同,我们有如下曲线。

对于这条曲线,我们希望TPR(召回率)越高的情况下,FPR越小,即图像越靠近左上角。

【Kaggle】AAAMLP读书笔记_数据集

多分类F1:每个类单独计算F1最后加在一起

def weighted_f1(y_true, y_pred):
  # 种类数
  num_classes = len(np.unique(y_true))
  # 统计各种类样本数
  class_counts = Counter(y_true)
  # 初始化F1值
  f1 = 0
  # 遍历0~(种类数-1)
  for class_ in range(num_classes):
    # 若真实标签为class_为1,否则为0
    temp_true = [1 if p = class_ else 0 for p in y_true]
    # 若预测标签为class_为1,否则为0
    temp_pred = [1 if p = class_ else 0 for p in y_pred]
    # 计算精确率
    p = precision(temp_true, temp_pred)
    # 计算召回率
    r = recall(temp_true, temp_pred)
    # 若精确率+召回率不为0,则使用公式计算F1值
    if p + r = 0:
      temp_f1 = 2 * p * r / (p + r)
    # 否则直接为0
    else:
      temp_f1 = 0
    # 根据样本数分配权重
    weighted_f1 = class_counts[class_] * temp_f1
    # 加权F1值相加
    f1 += weighted_f1
    # 计算加权平均F1值
  overall_f1 = f1 / len(y_true)
  return overall_f1


多标签问题

对于多标签问题,每个结果的标签个数不确定,因此我们可以采用对于前k个标签进行准确率计算的方法。

对于单一数据评估:

k 精确率(P@k):指的是对于两个集合交集元素个数/len(pred)

k 平均精确率(AP@k):P@1 P@2 P@3 …… P@k 的平均值

对于整体数据的评估:

k 均值平均精确率(MAP@k):一整个数据集的AP@k 的平均值

 

本章节中,作者使用t-SEN对MNIST数据集进行可视化

回归问题:

【Kaggle】AAAMLP读书笔记_召回率_02

【Kaggle】AAAMLP读书笔记_召回率_03

【Kaggle】AAAMLP读书笔记_召回率_04

【Kaggle】AAAMLP读书笔记_数据_05

【Kaggle】AAAMLP读书笔记_召回率_06

R ⽅接近 1.0表⽰模型与数据的拟合程度相当好,⽽接近 0则表⽰模型不是那么好。当模型只是做出荒谬的预测时,R ⽅也可能是负值。

【Kaggle】AAAMLP读书笔记_数据集_07


举报

相关推荐

0 条评论