自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

深度學(xué)習(xí)二分類評估詳細(xì)解析與代碼實(shí)戰(zhàn)

發(fā)布于 2024-12-20 11:20
瀏覽
0收藏

如果你關(guān)心前面的深度學(xué)習(xí)二分類的實(shí)戰(zhàn)代碼,可以參考下述官方的技術(shù)文檔:使用 Trainer API 微調(diào)模型. https://huggingface.co/learn/nlp-course/zh-CN/chapter3/3

如果你剛接觸 自然語言處理,huggingface 是你繞不過去的坎。但是目前它已經(jīng)被墻了,相信讀者的實(shí)力,自行解決吧。

設(shè)置代理,如果不設(shè)置的話,那么huggingface的包無法下載;

import os
os.environ['HTTP_PROXY'] = 'http://127.0.0.1:7890'
os.environ['HTTPS_PROXY'] = 'http://127.0.0.1:7890'

在探討二分類問題時(shí),經(jīng)常會遇到四種基本的分類結(jié)果,它們根據(jù)樣例的真實(shí)類別與分類器的預(yù)測類別來定義。以下是對這些分類結(jié)果的詳細(xì)解釋:

這四個(gè)定義均由兩個(gè)字母組成,它們各自代表了不同的含義。

第一個(gè)字母(True/False)用于表示算法預(yù)測的正確性,而第二個(gè)字母(Positive/Negative)則用于表示算法預(yù)測的結(jié)果。

  • 第1個(gè)字母(True/False):描述的是分類器是否預(yù)測正確。True表示分類器判斷正確,而False則表示分類器判斷錯(cuò)誤。
  • 第2個(gè)字母(Positive/Negative):表示的是分類器的預(yù)測結(jié)果。Positive代表分類器預(yù)測為正例,而Negative則代表分類器預(yù)測為負(fù)例。
  1. 真正例(True Positive,TP):當(dāng)樣例的真實(shí)類別為正例時(shí),如果分類器也預(yù)測其為正例,那么我們就稱這個(gè)樣例為真正例。簡而言之,真實(shí)情況與預(yù)測結(jié)果均為正例。
  2. 假正例(False Positive,F(xiàn)P):有時(shí),分類器可能會將真實(shí)類別為負(fù)例的樣例錯(cuò)誤地預(yù)測為正例。這種情況下,我們稱該樣例為假正例。它代表了分類器的“過度自信”或“誤報(bào)”現(xiàn)象。
  3. 假負(fù)例(False Negative,F(xiàn)N):與假正例相反,假負(fù)例指的是真實(shí)類別為正例的樣例被分類器錯(cuò)誤地預(yù)測為負(fù)例。這種情況下的“遺漏”或“漏報(bào)”是分類器性能評估中需要重點(diǎn)關(guān)注的問題。
  4. 真負(fù)例(True Negative,TN):當(dāng)樣例的真實(shí)類別和預(yù)測類別均為負(fù)例時(shí),我們稱其為真負(fù)例。這意味著分類器正確地識別了負(fù)例。

數(shù)據(jù)準(zhǔn)備

做深度學(xué)習(xí)的同學(xué)應(yīng)該都默認(rèn)裝了 torch,跳過 torch的安裝

!pip install evaluate

導(dǎo)包

import torch
import random
import evaluate

隨機(jī)生成二分類的預(yù)測數(shù)據(jù) pred 和 label;

label = torch.tensor([random.choice([0, 1]) for i in range(20)])
pred = torch.tensor([random.choice([0, 1, label[i]]) for i in range(20)])
sum(label == pred)

下述是隨機(jī)生成的 label 和 pred

# label
tensor([0, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0])

# pred
tensor([0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0])

使用 random.choice([0, 1, label[i]]? 是為了提高 pred 的 準(zhǔn)確率;因?yàn)?label[i] 是真實(shí)的 label;

下述的是計(jì)算TP、TN、FP、FN的值:

Tips:

pred : 與第2個(gè)字母(Positive/Negative)保持一致,

label: 根據(jù)第一個(gè)字母是否預(yù)測正確,再判斷填什么

TP = sum((label == 1) & (pred == 1))
TN = sum((label == 0) & (pred == 0))
FP = sum((label == 0) & (pred == 1))
FN = sum((label == 1) & (pred == 0))

標(biāo)簽

Value

TP

6

TN

8

FP

2

FN

4

準(zhǔn)確率 Accuracy

準(zhǔn)確率(Accuracy): 分母通常指的是所有樣本的數(shù)量,即包括真正例(True Positives, TP)、假正例(False Positives, FP)、假負(fù)例(False Negatives, FN)和真負(fù)例(True Negatives, TN)的總和。而分子中的第一個(gè)字母為“T”(True),意味著我們計(jì)算的是算法預(yù)測正確的樣本數(shù)量,即TP和TN的總和。

然而,準(zhǔn)確率作為一個(gè)評價(jià)指標(biāo)存在一個(gè)顯著的缺陷,那就是它對數(shù)據(jù)樣本的均衡性非常敏感。當(dāng)數(shù)據(jù)集中的正負(fù)樣本數(shù)量存在嚴(yán)重不均衡時(shí),準(zhǔn)確率往往不能準(zhǔn)確地反映模型的性能優(yōu)劣。

例如,假設(shè)有一個(gè)測試集,其中包含90%正樣本和10%負(fù)樣本。若模型將所有樣本都預(yù)測為正樣本,那么它的準(zhǔn)確率將輕松達(dá)到90%。從準(zhǔn)確率這一指標(biāo)來看,模型似乎表現(xiàn)得非常好。但實(shí)際上,這個(gè)模型對于負(fù)樣本的預(yù)測能力幾乎為零。

因此,在處理樣本不均衡的問題時(shí),需要采用其他更合適的評價(jià)指標(biāo),如精確度(Precision)、召回率(Recall)、F1分?jǐn)?shù)(F1 Score)等,來更全面地評估模型的性能。這些指標(biāo)能夠更準(zhǔn)確地反映模型在各類樣本上的預(yù)測能力,從而幫助我們做出更準(zhǔn)確的決策。

精準(zhǔn)率的公式如下:

深度學(xué)習(xí)二分類評估詳細(xì)解析與代碼實(shí)戰(zhàn)-AI.x社區(qū)

accuracy = evaluate.load("accuracy")
accuracy.compute(
        predictinotallow=pred, 
        references=label
    )

Output:

{'accuracy': 0.7}

下述三種方法都可以用來計(jì)算 accuracy:

print(
    (TP + TN) / (TP + TN + FP +FN),
    (TP + TN) / len(label),
    sum((label == pred)) / 20
)

Output:

tensor(0.7000) tensor(0.7000) tensor(0.7000)

使用公式計(jì)算出來的與通過evaluate庫,算出來的結(jié)果一致,都是 0.7。

precision 精準(zhǔn)率

深度學(xué)習(xí)二分類評估詳細(xì)解析與代碼實(shí)戰(zhàn)-AI.x社區(qū)

precision = evaluate.load("precision")
precision.compute(
        predictinotallow=pred, 
        references=label
    )

Output:

{'precision': 0.75}

TP / (TP + FP)

recall 召回率

深度學(xué)習(xí)二分類評估詳細(xì)解析與代碼實(shí)戰(zhàn)-AI.x社區(qū)

recall = evaluate.load("recall")
recall.compute(
        predictinotallow=pred, 
        references=label
    )

Output:

{'recall': 0.6}

TP / (TP + FN)

F1

f1 = evaluate.load("f1")
f1.compute(
        predictinotallow=pred, 
        references=label
    )

Output:

{'f1': 0.6666666666666666}

深度學(xué)習(xí)二分類評估詳細(xì)解析與代碼實(shí)戰(zhàn)-AI.x社區(qū)

2 * 0.7500 * 0.6000 / (0.7500 + 0.6000)

Output:

0.6666666666666665

參考資料

  • 如何在python代碼中使用代理下載Hungging face模型. https://www.jianshu.com/p/209528bed023
  • [機(jī)器學(xué)習(xí)] 二分類模型評估指標(biāo)---精確率Precision、召回率Recall、ROC|AUC. https://blog.csdn.net/zwqjoy/article/details/78793162
  • 使用 Trainer API 微調(diào)模型. https://huggingface.co/learn/nlp-course/zh-CN/chapter3/3
  • Huggingface Evaluate 文檔. https://huggingface.co/docs/evaluate/index?

本文轉(zhuǎn)載自 ??AI悠閑區(qū)??,作者: JieShen


收藏
回復(fù)
舉報(bào)
回復(fù)
相關(guān)推薦