iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 8
0

Classifictaion

在前面討論完了classifiers的誤差率與正確率

其中誤差其實有若干種不同的型態

False positives, false negatives, and confusion matrices

我們使用confusion matrix來研究classifiers的錯誤

classifiers做出的預測為Predicted label而真實的結果為True label,在這樣的情境下會有四種的結果

我們只探討錯誤的部份,一共可以分成兩種狀況

Predicted label + Predicted label -
True label + True Positive False Negative
True label - False Negativ True Negativ
  • False negative︰classifiers預測為False,真實結果為True
  • False positive︰classifiers預測為True,真實結果為False

想像一下有兩種情境,分別是垃圾郵件的過濾與醫療的診斷,我們分別要付出什麼代價?

  • 垃圾郵件過濾
    • False negative︰要動手清除郵件,有點煩躁
    • False positive︰這代表你有一封相對重要信件有可能永遠看不到了
  • 醫療診斷
    • False negative︰我的病沒有被診斷出來,嚴重的話可能會導致延誤就醫
    • False positive︰我沒病卻判定有病,我可能要吃一堆根本沒用的藥,然後承受那些藥的副作用

我們在來看個超過兩種分類的confusion matrix

假設有100個測試樣本,分成三類:健康、感冒、流感(70、20、10)

健康 感冒 流感
健康 60 8 2
感冒 4 12 4
流感 0 2 8

-正確率=(60+12+8)/100 = 80%

透過這個矩陣我們可以得知,我們可以了解我們犯的錯誤,以及它代表的意義

earning curves

在回歸模型中我們討論正確/誤差率與模型複雜度之間的關係

到底一個模型要多少資料才能夠成為一個夠好的模型?理論上資料當然越多越好

實際上呢?實際上我們有技巧可以讓我們知道現在的模型誤差有多大?常犯那些錯誤

在資料與模型的關係中有個極為重要的指標,我們稱之為earning curves

我們將我們的資料量與測試誤差率關聯在一起

直覺上我們可以知道,當你的資料量越小的時候,你的測試錯誤率理當越高

從earning curves來看會發現,當資料量大到一定程度時,會形成一個偏差

那這個偏差有辦法變成0嗎?事實上偏差代表著,即便你的資料無限大,它也沒辦法變成0,為什麼呢?

在真實世界中,越複雜的模型將存在著越小的偏差,比如前面提到的食記

如果只是簡單的詞,好、棒、讚、屎、普通....

那簡單的classifiers也能做到,但即便你有全世界的資料,你也會遇到諸如:"not good"這樣的字句(筆者在這邊本來想用不好吃,但是我後來想想用not good來呈現還是比較直覺)

原因是因為只考慮了"not"以及"good",所以會有更複雜的狀況需要更複雜的模型

但是當你的模型變得複雜(不管是感冒、健康多增加了一個流感,或是"good"與"not good")

當參數變多了,資料就需要更多

回過頭來看earning curves,當資料量少的時候,相對複雜的模型其錯誤率就會比較高

但是隨著資料量的提昇,它將會贏過資料量相對少的模型,因為它能夠辨別"good"與"not good"

值得注意的是,即便模型變得更棒棒了,但是偏差依舊存在

Class probabilities

截至目前為止,我們討論許多的例子,但一般來說我們會想做更多一點,舉例來說

-味增湯很好喝,服務品質優良 <- ""+""
-味增湯好喝,涼麵普通 <-不確定

所以一個classifiers不光光只是給出正/負兩種結果而已,還要給出它對這個結果信心有多大

解答這個問題的方式之一,就是機率

所以當你輸入一個句子X時,它必須輸出一個句子為正/負的機率

-味增湯很好喝,服務品質優良 <- P(y=+|x) = 0.99 //正面機率為0.99
-味增湯好喝,涼麵普通 <- P(y=+|x) = 0.55 //負面機率為0.55,因為我們不是很確定

在後面的課程會再深入討論,在知道機率之後,我們該使用那些策略來因應

Classification ML block diagram

同樣的我們若將之前回歸的流程圖,再用在Classifictaion會是這個樣子的

https://ithelp.ithome.com.tw/upload/images/20171226/20107448hDNnMVmuyz.png

  • 每一個評論都帶有情緒標籤(正/負)
  • 我們針對評論進行一次特徵提取
  • 每一個評論都可以得到一個單字計數x
  • 若有其他參數則稱為w-hat,在本章節中常用是單字的權重(好吃2分/難吃-2.5...)
  • 接著從ML model可以得到ŷ(我們的預測結果),當它大於0時為正向,反之亦然
  • 再來我們將每一次的測試結果ŷ與y(測試集)做比較
  • 最後將分類的正確率餵給 ML algorithm,讓他來提高我的正確率

後記

接下來會有一連串的長假(其實也只有三天),會開始前兩個主題的實作拉XDDD

Reference:


上一篇
[day 6] 分類-3
下一篇
[day 8] 回歸分析-實作(上)
系列文
到底是在learning什麼拉30

尚未有邦友留言

立即登入留言