机器学习评估方法(基本)

机器学习评估方法

Accuracy准确率

其定义是: 对于给定的测试数据集,分类器正确分类的样本数与总样本数之比。也就是损失函数是0-1损失时测试数据集上的准确率。

由准确率,我们可以在一些场合,从某种意义上得到一个分类器是否有效,但它并不总是能有效的评价一个分类器的工作。

比如 搜索引擎 抓取了 CSDN 100个页面,而它索引中共有10,000,000个页面,随机抽一个页面,如果以 accuracy 来判断我的工作,而 accuracy 已经到了99.999%(9,999,900/10,000,000),所以我会把所有的页面都判断为"不是 CSDN 的页面"。

那怎么解决呢?这就需要用到Precision,Recall 和 F1-score 了。

Precision精确率,Recall召回率,F1-scoreF分数

  • 被检索到:
  • 相关,正类:TP: true positives 正类判定为正类
  • 无关,负类:FP: false positives 负类判定为正类,存伪
  • 未被检索到:
  • 相关,正类:FN: false negatives 正类判定位负类,去真
  • 无关,负类:TN: true positives 负类判定为负类

Precision精确率的公式:P= T P T P + F P \frac{TP}{TP+FP} TP+FPTP
它计算的是所有"正确被检索的结果(TP)"占所有"实际被检索到的(TP+FP)"的比例。

Recall召回率的公式:R= T P T P + F N \frac{TP}{TP+FN} TP+FNTP
它计算的是所有"正确被检索的结果(TP)"占所有"应该检索到的结果(TP+FN)"的比例。

F1-score就是精确率和召回率的调和均值,也就是

2 F 1 \frac{2}{F1} F12= 1 P \frac{1}{P} P1+ 1 R \frac{1}{R} R1
亦即
F1= 2 P R P + R \frac{2PR}{P+R} P+R2PR= 2 T P 2 T P + F P + F N \frac{2TP}{2TP+FP+FN} 2TP+FP+FN2TP
在F1-score中,我们认为精确率和召回率的权重相等。

Fβ=(β^2+1)* P R β 2 + P + R \frac{PR}{β^2+P+R} β2+P+RPR是一般化公式
通过调整β可以改变精确率和召回率的权重。

代码实现

def divide_information(predictions, y):
    TP = 0  # 正确判定正类
    FP = 0  # 错误判断正类,实际为负类
    TN = 0  # 正确判定负类
    FN = 0  # 错误判定负类,实际为正类
    for i in range(len(predictions)):
        if predictions[i] == 1:
            if y[i] == 1:
                TP += 1
            else:
                FP += 1
        else:
            if y[i] == 1:
                FN += 1
            else:
                TN += 1
    return TP, FP, TN, FN
def getAccuracy(predictions, y):
    return (predictions == y).sum()/len(y)


def getPrecision(predictions, y):
    # TP/(TP+FP)
    TP, FP, TN, FN = divide_information(predictions, y)
    precision = TP/(TP + FP)
    return precision


def getRecall(predictions, y):
    # TP/(TP+FN)
    TP, FP, TN, FN = divide_information(predictions, y)
    recall = TP / (TP + FN)
    return recall


def getF1score(predictions, y):
    # 2P*R/(P+R)
    # 2TP/(2TP+FP+FN)
    precision = getPrecision(predictions, y)
    recall = getRecall(predictions, y)
    F1score = 2 * precision * recall / (precision + recall)
    return F1score


ROC & AUC

……………………

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值