機器學習A-Z~分類模型性能評價及選擇

本篇文章將給你們介紹一些宏觀的核心概念和測度來評價分類算法和分類器的表現,尤爲是如何評價分類器預測中會產生的一些錯誤。算法

僞陽性(False Positives)和僞陰性(False Positives)

首先講的是僞陽性和僞陰性,英文叫作False Positives和False Negatives。先回到以前邏輯迴歸的例子,下圖畫出了sigmod函數,用來預測某件事情是否會發生,好比用戶是否會購買產品。網絡

咱們把機率小於0.5的視做不會買,超過0.5的用戶會購買。假設如今已知四個用戶,13沒有購買,24購買了。但咱們依然能夠用分類器去嘗試預測結果。dom

咱們將數據點投射到頭像上,會發現有兩種不一樣的錯誤,對於3號用戶的錯誤,咱們稱做僞陽性,或者叫作1型錯誤,對於2號錯誤,稱做僞陰性或者叫作2型錯誤。通常來講2型錯誤比1型錯誤要嚴重的多。好比判斷艾滋病,假設若是咱們判斷一個沒有疾病的人是陽性的,這個結果有必定的嚴重性,但會作再次的檢測最終解決掉。但若是其實是病毒攜帶者但判斷成陰性,這個結果相對來講要嚴重的多,由於可能會耽誤對疾病的治療。機器學習

混淆矩陣(Confusion Matrix)

混淆矩陣在以前的文章有說起過,這裏再大體解釋一下。以下圖所示,橫軸指的是實際的值,縱軸是預測的值。函數

混淆矩陣

35表明的就是實際值是0咱們預測也是0的個數,50指的是實際1預測也是1的個數。顯然這裏也能夠看出5表明僞陽性的個數,10表明僞陰性的個數。此時能夠獲得兩個比值,一個是正確率即正確的判斷個數35+50=85除以總的個數100,一個是錯誤的個數10+5=15除以總個數100。工具

準確率悖論

混淆矩陣中有時候這兩個比值並不能說明太大的問題,有時候須要更加高級的方法評價分類器的好壞。來看看下面的矩陣:性能

很顯然能夠計算出正確率等於98%,這時是否能說明這個分類器的質量很好?如今咱們給出一個新的分類方法,無論什麼養的數據,都預測爲0.就至關於右邊一列的數字都加到左邊一列中。如今再計算準確率,會發現準確率變成了98.5%。也就是說雖然用的方法很簡單粗暴,但實際準確率卻比前一個更好。這說明經過這種方式在這種情景下不適合判斷分類的結果,須要使用其餘更好的方法。學習

累計準確曲線(Cumulative Accuracy Profile)

上面的案例中能夠看出經過混淆矩陣有時候不能很好的判斷分類結果的質量,如今來看一個更加高級的判斷方法,叫作累計準確曲線(CAP)。來看下面的例子,橫走爲咱們聯繫的客戶,縱軸爲後買的客戶數量。spa

那麼這時能夠獲得一條直線,這些客戶都是經過咱們隨機抽樣聯繫的客戶,隨着抽樣人數的增長,會購買的用戶數量會逐漸變多。此時假設咱們使用訓練好的算法來判斷用戶是否會購買產品,獲得預測的結果後,咱們能夠優先去聯繫預測結果是會購買產品的客戶,這樣咱們剛開始聯繫的客戶會有很大機率是會購買產品的,隨着聯繫人數的增長,好比到了60000,預測剩下的人不會購買產品,此時從公司的角度出發其實是能夠不去聯繫這剩下的客戶,由於他們購買的機率比較小。但這裏爲了完整畫出曲線,仍是繼續畫出後面的點。也就是說無論用什麼樣的模型,當咱們完整的聯繫全部的客戶羣,也就是100000個客戶,最後的點必定是重合的。rest

很顯然這條曲線在以前的圖像之上,由於咱們使用了機器學習算法,使得公司的運營更加的有效率。這個模型越好,那麼這個模型就會越凸。如今將橫縱軸上的值變成百分比。橫軸的100%指的是百分百的客戶羣,縱軸的100%指的是估算出的會購買的用戶總數。

假設如今有另外一個模型,沒有紅色的模型好。那麼它可能的圖像就會如上面綠色曲線。由於若是用更好的模型,那麼某個點中實際上會購買的用戶的量應該是比較靠上的。相對於以前的混淆矩陣,這是提供了更多的信息來判斷模型的好壞。假設這時有個很是好的模型,咱們稱做作Crystal Ball,這個圖像會是什麼樣子?咱們以前隨機抽樣中知道10000中大約有10000我的會購買產品,也就是說有百分之十的人會購買,那麼這個最好的模型就是一開始就找到這百分之十的人。

如上圖黑色的線,在10%的位置就達到圖像的頂點,後面是一條與橫軸平行的直線。這種模型能夠說是最完美的模型,幾乎不可能達到的,因此叫作水晶球模型。若是咱們有條曲線出如今藍色的曲線下方的話,這說明這個模型非但沒取到更好的預測效果,甚至不如一個隨機的抽樣,這是比較容易發現的。

除了CAP曲線,實際生活中,還有一種可能用到的曲線和其相似,叫作ROC(Receiver Operating Characteristic),你們能夠自行去查詢資料。

那麼咱們知道上圖中紅色的曲線是越靠近完美曲線說明模型越好,如今來看看如何來量化這種好與很差。咱們定義$a_P$表示完美曲線和藍色曲線所包含的面積,定義$a_R$爲本身機器學習模型和藍色曲線的面積。此時再定義$AR=\frac{a_R}{a_P}$,則這個比值越接近1說明咱們創建的模型效果越好。如今已經有一些統計學上的工具來計算這個比值。但本身手動計算或者用機器來計算都比較麻煩,那麼如今提供一個簡單的經驗法則來判斷模型的好壞。

這時要用到一個50%的閾值,就是在x軸上找到50%的點,看看在模型上的點y軸座標是多少。經過這個點就能提供很好的信息。

如上圖所示,咱們將X的值劃分不一樣的區間,當X的值坐落於不一樣區間時,給出不一樣的評價。因爲隨機模型它在50%的點達到了50%,則X<60%說明比隨機好不了多少,則斷定其是個特別差的模型。再好一點就是一個比較差的模型,繼續往上就是好的模型,隨着X的增大則這個模型愈來愈好。

但超過90%時,這個模型就好的誇張了,這時候要引發注意。這並非咱們想要的結果。第一種狀況,若是有個自變量和因變量有着很是緊密的因果關係時,好比跟用戶打電話的次數,這是有着很是強的因果關係,那麼這個時候就須要把這個特徵從咱們的自變量中剔除。第二種狀況就是過擬合,就是模型過多的注意到訓練集中的噪音,這也是須要注意的。但也有一些狀況坐落的大於90%是由於訓練集質量很是高,或者說建的模型很是好。

分類算法總結

分類算法目前已經講了6個,下面提供各個分類模型優劣的彙總於說明(此部分主要節選于于機器學習A-Z課程的第三部分小結):

對於不一樣的案例,如何選擇模型,首先第一步判斷線性仍是非線性:

  • 假如是線性的問題,您應該選擇邏輯迴歸(logistic regression)或者支持向量機SVM。
  • 假如是非線性的問題,您應該選擇樸素貝葉斯(naive bayes),決策樹(decision tree)或者是隨機森林(random forest)。在接下來的課程中咱們會講到神經網絡(neural network),也是一個十分強大的方法。

從實際操做的角度也有一些規則:

  • 假如您想要給最終預測機率進行排序,您應該選擇邏輯迴歸(logistic regression)或是樸素貝葉斯(Naive Bayes)。舉個例子:您想要預測不一樣客戶購買某項產品的機率,並將這些機率從大到小進行排序,以便鎖定目標客戶羣。在這樣的情形下,若是您的問題是線性的,您應該運用邏輯迴歸(logistic regression);假如您的問題是非線性的,您應該選擇樸素貝葉斯(naive bayes)模型。
  • 假如您想要預測每個客戶屬於哪個劃分(segment),您應該選擇SVM。市場和客戶羣體的劃分能夠是已完成的市場調研或者集羣分析(clustering)的結果。
  • 假如您想要很是直觀地展現/闡述模型,那麼決策樹(Decision Tree)是最佳選擇。
  • 假如您想要最好的模型的分類表現,而且不太在乎模型的展現/闡述,那麼隨機森林(random forest)是不錯的選擇。

以上,就是對分類模型的性能評價及選擇的相關基礎知識點。

相關文章
相關標籤/搜索