閱讀440 返回首頁    go 阿裏雲 go 技術社區[雲棲]


AI說人“畫” | 什麼?咱倆說的是一個“模型”嘛!

Hello大家好,我是Vicky,今天我們來講一些關於“模型“的事兒。

模型是對事物的抽象,是發現規律模擬真實世界用的。

在數據裏呢,基本上模型有兩類,解釋性和預測性,今天來著重來說預測性的。

所以怎麼評價模型的好壞呢? 當然就是預測的多準了

機器學習模型呢,就是看學習能力如何,也就是看舉一反三的能力。

一般常用的機器學習模型包括:分類,回歸和聚類

今天就以分類模型為例,談談怎麼評價一個“模型”好不好。

檢驗一個機器學習模型時要做的第一件事就是看誤差有多大,

這裏的誤差有偏差和方差兩類:

高偏差的意思就是你從一開始就跑偏了,沒學習到真正的規律,也叫欠擬合。

比如這張圖,把眼罩當成bra,買家確實沒有把“肩帶”當作特征,“形狀”也確實有點類似,不過她居然忽略了size!(驚)

高方差的意思就是你入戲太深了,雖然你的模型完美的解釋了現有的數據,換一組新的就不行了。這也就是過擬合,量身定做過了頭兒,好比你查視力的時候,把視力表背下來了,然後查視力的結果左右眼都是5.3,完美!

90020b00e38fdae313ad1eccd43c90d69ef0058f

然而實際情況是,換一張順序不一樣的視力表,你連醫生指的第幾行都看不見,甚至你連醫生都看不見。這就是沒什麼泛化能力,模型過於複雜,訓練過度了。

那怎樣才能知道自己的模型是否存在高偏差或是高方差呢?

一種直接了當的方法就是把數據一分為二:訓練集和測試集。例如把模型在 70% 的數據上做訓練,然後用剩下的 30% 數據來測量失誤率。

舉個接地氣的例子!就好比談戀愛,暖男就是既不會讓你覺得太粘人,也不會讓你覺得被疏遠,而且不止對你一個人這樣,對誰都這樣,這個撩妹模型就訓練的恰到好處...

f9859c05d094e8bdae48588d80d091e775e08252

(促進一下理解)

回到正題,衡量分類模型好壞的話隻看錯誤率的話肯定是不夠的。

咱們就說算命的,比如問一個算命大師 明年會不會生七胞胎,大家都心知肚明,這個特定時間懷孕這個事兒本來就沒那麼高,況且七胞胎就更不多了,姑且就認為七胞胎在人群中的概率是0.1%,於是乎呢,不管是誰問大師這個問題,他都說沒有的話,那麼他的準確率也是99.9%的,你能說他算的準麼?

所以說,我們不隻關心他算對了多少,更關心懷了七胞胎的人他算出來了多少。

假定有一個二分類問題,比如有幾個男的和幾個女扮男裝的人站在一起 係統想把真男人挑出來。

給係統一個人,係統會判斷這人是“真” 也就是男(Predicted positive),或是“假” 也就是女(Predicted Negative)。

如果你是男的,係統也判你是男的,就是真正TP(True Positive),

原本你是男的係統判定你是女的,就是假負FN(False Negative),

原本女的判成男的,就是假正FP(False Positive),

原本女的,係統判你是女的,就是真負TN(True Negative)。

f391cfead265cf277113440abb19d56a56562a5e

這幾個值可以組成一個混淆矩陣,很多指標都是基於這個混淆矩陣算出來的。

比如我們會關心係統判定是男人的人裏麵到底多少是真的男人 這個也叫查準率,TP/(TP+FP)。

我們還關心這些男人裏,有多少男人被找出來了 這個也叫查全率,TP/(TP+FN)。

所以大家可以看出來,這兩個量其實是相互矛盾的,一個高的時候,另一個可能就低點兒,比如我想把所有男人都挑出來,那最保險的方式就是把所有人都選上..那也沒什麼意義了,如果說希望選出來的人裏麵男人的比例盡可能的多,那就找出最有把握是男人的人,但是這樣可能會漏掉一些長的沒那麼man的人,這樣查全率就低了。

大部分情況下呢,我們是根據預測結果對這些樣本排序,越靠前的就是越有可能是正例的樣本,按照這個順序預測,所以每次就可以得到當前的查準率和查全率,然後呢以查準率為縱軸,查全率為橫軸畫圖,就能得到一個曲線,也就是P-R曲線。

48b02c9eaf08650285b855bf1ba07ed99255e8f0

有的時候呢,輸出的結果是正例還是負例取決於設定的概率閥值概率閾值,這種閾值的選取也一定程度上反映了分類器的分類能力。我們當然希望無論選取多大的閾值,分類都能盡可能地正確。

所以呢我們再引入兩個指標

真正率tpr 和假正率fpr

真正率呢和 查全率一樣

假正率,就是預測為正樣本但是預測錯了的可能性FPR=FP/TN+FP

以真正率為縱軸,假正率為橫軸我們可以得到一個曲線叫ROC曲線

2f31fa0f907d2e921624dd579813e68d5468eeec

ROC曲線一定程度上可以反映分類器的分類效果,但是不夠直觀,我們希望有這麼一個指標,如果這個指標越大越好,越小越差,於是,就有了AUC。AUC實際上就是ROC曲線下的麵積。AUC直觀地反映了ROC曲線表達的分類能力。基本上,曲線下的麵積(AUC)越大,或者說曲線更接近左上角(true positive rate=1, false positive rate=0),那麼模型就越理想,越好。

混淆矩陣還可以組合出好幾種指標,比如F1 score,以及macro-F1 ,方法不同思想類似,這兒就不贅述了

當然,不同的場景下呢,不同失誤的代價不一樣,關注的點也不一樣,

做商品推薦,把不相關的東西給顧客推薦了,這也沒什麼太大的損失,運氣好的話顧客興許也就一起買了。

給罪犯定罪,隻要是有罪的話,立刻死刑的這種情況下,如果無罪的判了有罪,這後果就很嚴重了

所以說 中心思想是什麼呢:

第一,光看指標本身意義不大,要結合實際情況

第二,別走極端,差不多最完美


原文發布時間為:2017-11-11

本文作者:搭建模型的

本文來自雲棲社區合作夥伴“大數據文摘”,了解相關信息可以關注“大數據文摘”微信公眾號

最後更新:2017-11-13 16:34:38

  上一篇:go  NLPIR技術助力中文智能數據挖掘
  下一篇:go  【天池直播】零基礎學會大數據算法