目錄html
上篇文章中,咱們就機器學習的相關基礎概念進行了闡述,包括機器學習的基本概念以及機器學習的分類。不瞭解的童鞋能夠看一下補補課,機器學習系列(一)——基礎概念及分類。
分類和迴歸問題做爲典型的機器學習問題,一直困擾了我好久,在查了好多文獻和推文後,整理下來下面的文檔,但願能夠幫助你們,更加細緻全面的瞭解這兩種算法。算法
分類算法和迴歸算法的區別:網絡
分類算法和迴歸算法是對真實世界不一樣建模的方法。分類模型是認爲模型的輸出是離散的,例如大天然的生物被劃分爲不一樣的種類,是離散的。迴歸模型的輸出是連續的,例如人的身高變化過程是一個連續過程,而不是離散的。框架
所以,在實際建模過程時,採用分類模型仍是迴歸模型,取決於你對任務(真實世界)的分析和理解。機器學習
接下來首先介紹經常使用分類算法的優缺點,如表2-1所示。分佈式
表2-1 經常使用分類算法的優缺點函數
算法 | 優勢 | 缺點 |
---|---|---|
Bayes 貝葉斯分類法 | 1)所需估計的參數少,對於缺失數據不敏感。 2)有着堅實的數學基礎,以及穩定的分類效率。 |
1)須要假設屬性之間相互獨立,這每每並不成立。(喜歡吃番茄、雞蛋,卻不喜歡吃番茄炒蛋)。 2)須要知道先驗機率。 3)分類決策存在錯誤率。 |
Decision Tree決策樹 | 1)不須要任何領域知識或參數假設。 2)適合高維數據。 3)簡單易於理解。 4)短期內處理大量數據,獲得可行且效果較好的結果。 5)可以同時處理數據型和常規性屬性。 |
1)對於各種別樣本數量不一致數據,信息增益偏向於那些具備更多數值的特徵。 2)易於過擬合。 3)忽略屬性之間的相關性。 4)不支持在線學習。 |
SVM支持向量機 | 1)能夠解決小樣本下機器學習的問題。 2)提升泛化性能。 3)能夠解決高維、非線性問題。超高維文本分類仍受歡迎。 4)避免神經網絡結構選擇和局部極小的問題。 |
1)對缺失數據敏感。 2)內存消耗大,難以解釋。 3)運行和調參略煩人。 |
KNN K近鄰 | 1)思想簡單,理論成熟,既能夠用來作分類也能夠用來作迴歸; 2)可用於非線性分類; 3)訓練時間複雜度爲O(n); 4)準確度高,對數據沒有假設,對outlier不敏感; |
1)計算量太大。 2)對於樣本分類不均衡的問題,會產生誤判。 3)須要大量的內存。 4)輸出的可解釋性不強。 |
Logistic Regression邏輯迴歸 | 1)速度快。 2)簡單易於理解,直接看到各個特徵的權重。 3)能容易地更新模型吸取新的數據。 4)若是想要一個機率框架,動態調整分類閥值。 |
特徵處理複雜。須要歸一化和較多的特徵工程。 |
Neural Network 神經網絡 | 1)分類準確率高。 2)並行處理能力強。 3)分佈式存儲和學習能力強。 4)魯棒性較強,不易受噪聲影響。 |
1)須要大量參數(網絡拓撲、閥值、閾值)。 2)結果難以解釋。 3)訓練時間過長。 |
Adaboosting | 1)adaboost是一種有很高精度的分類器。 2)可使用各類方法構建子分類器,Adaboost算法提供的是框架。 3)當使用簡單分類器時,計算出的結果是能夠理解的。並且弱分類器構造極其簡單。 4)簡單,不用作特徵篩選。 5)不用擔憂overfitting。 |
對outlier比較敏感 |
分類評估方法主要功能是用來評估分類算法的好壞,而評估一個分類器算法的好壞又包括許多項指標。瞭解各類評估方法,在實際應用中選擇正確的評估方法是十分重要的。性能
幾個經常使用術語
這裏首先介紹幾個常見的模型評價術語,如今假設咱們的分類目標只有兩類,計爲正例(positive)和負例(negative)分別是:
1) True positives(TP): 被正確地劃分爲正例的個數,即實際爲正例且被分類器劃分爲正例的實例數;
2) False positives(FP): 被錯誤地劃分爲正例的個數,即實際爲負例但被分類器劃分爲正例的實例數;
3) False negatives(FN):被錯誤地劃分爲負例的個數,即實際爲正例但被分類器劃分爲負例的實例數;
4) True negatives(TN): 被正確地劃分爲負例的個數,即實際爲負例且被分類器劃分爲負例的實例數。
四個術語組成混淆矩陣:
1)P=TP+FN表示實際爲正例的樣本個數。
2)True、False描述的是分類器是否判斷正確。
3)Positive、Negative是分類器的分類結果,若是正例計爲一、負例計爲-1,即positive=一、negative=-1。用1表示True,-1表示False,那麼實際的類標=TF*PN,TF爲true或false,PN爲positive或negative。
4)例如True positives(TP)的實際類標=1*1=1爲正例,False positives(FP)的實際類標=(-1)*1=-1爲負例,False negatives(FN)的實際類標=(-1)*(-1)=1爲正例,True negatives(TN)的實際類標=1*(-1)=-1爲負例。學習
評價指標
1) 正確率(accuracy)
正確率是咱們最多見的評價指標,accuracy = (TP+TN)/(P+N),正確率是被分對的樣本數在全部樣本數中的佔比,一般來講,正確率越高,分類器越好。
2) 錯誤率(error rate)
錯誤率則與正確率相反,描述被分類器錯分的比例,error rate = (FP+FN)/(P+N),對某一個實例來講,分對與分錯是互斥事件,因此accuracy =1 - error rate。
3) 靈敏度(sensitivity)
sensitivity = TP/P,表示的是全部正例中被分對的比例,衡量了分類器對正例的識別能力。
4) 特異性(specificity)
specificity = TN/N,表示的是全部負例中被分對的比例,衡量了分類器對負例的識別能力。
5) 精度(precision)
precision=TP/(TP+FP),精度是精確性的度量,表示被分爲正例的示例中實際爲正例的比例。
6) 召回率(recall)
召回率是覆蓋面的度量,度量有多個正例被分爲正例,recall=TP/(TP+FN)=TP/P=sensitivity,能夠看到召回率與靈敏度是同樣的。
7) 其餘評價指標
計算速度:分類器訓練和預測須要的時間;評估速度的經常使用指標是每秒幀率(Frame Per Second,FPS),即每秒內能夠處理的圖片數量。固然要對比FPS,你須要在同一硬件上進行。另外也可使用處理一張圖片所需時間來評估檢測速度,時間越短,速度越快。
魯棒性:處理缺失值和異常值的能力;
可擴展性:處理大數據集的能力;
可解釋性:分類器的預測標準的可理解性,像決策樹產生的規則就是很容易理解的,而神經網絡的一堆參數就很差理解,咱們只好把它當作一個黑盒子。
8) 精度和召回率反映了分類器分類性能的兩個方面。若是綜合考慮查準率與查全率,能夠獲得新的評價指標F1-score,也稱爲綜合分類率:\(F1=\frac{2 \times precision \times recall}{precision + recall}\)。測試
爲了綜合多個類別的分類狀況,評測系統總體性能,常常採用的還有微平均F1(micro-averaging)和宏平均F1(macro-averaging )兩種指標。
(1)宏平均F1與微平均F1是以兩種不一樣的平均方式求的全局F1指標。
(2)宏平均F1的計算方法先對每一個類別單獨計算F1值,再取這些F1值的算術平均值做爲全局指標。
(3)微平均F1的計算方法是先累加計算各個類別的a、b、c、d的值,再由這些值求出F1值。
(4)由兩種平均F1的計算方式不難看出,宏平均F1平等對待每個類別,因此它的值主要受到稀有類別的影響,而微平均F1平等考慮文檔集中的每個文檔,因此它的值受到常見類別的影響比較大。
ROC曲線和PR曲線
ROC曲線是(Receiver Operating Characteristic Curve,受試者工做特徵曲線)的簡稱,是以靈敏度(真陽性率)爲縱座標,以1減去特異性(假陽性率)爲橫座標繪製的性能評價曲線。能夠將不一樣模型對同一數據集的ROC曲線繪製在同一笛卡爾座標系中,ROC曲線越靠近左上角,說明其對應模型越可靠。也能夠經過ROC曲線下面的面積(Area Under Curve, AUC)來評價模型,AUC越大,模型越可靠。
PR曲線是Precision Recall Curve的簡稱,描述的是precision和recall之間的關係,以recall爲橫座標,precision爲縱座標繪製的曲線。該曲線的所對應的面積AUC其實是目標檢測中經常使用的評價指標平均精度(Average Precision, AP)。AP越高,說明模型性能越好。 mAP 即 Mean Average Precision即平均AP值,是對多個驗證集個體求平均AP值,做爲 object dection中衡量檢測精度的指標。
圖像目標檢測的IOU是什麼?
IoU 做爲目標檢測算法性能 mAP 計算的一個很是重要的函數。IoU 的全稱爲交併比(Intersection over Union),經過這個名稱咱們大概能夠猜到 IoU 的計算方法。IoU 計算的是 「預測的邊框」 和 「真實的邊框」 的交集和並集的比值。
不一樣算法有不一樣特色,在不一樣數據集上有不一樣的表現效果,根據特定的任務選擇不一樣的算法。如何評價分類算法的好壞,要作具體任務具體分析。對於決策樹,主要用正確率去評估,可是其餘算法,只用正確率能很好的評估嗎?
答案是否認的。
正確率確實是一個很直觀很好的評價指標,可是有時候正確率高並不能徹底表明一個算法就好。好比對某個地區進行地震預測,地震分類屬性分爲0:不發生地震、1發生地震。咱們都知道,不發生的機率是極大的,對於分類器而言,若是分類器不加思考,對每個測試樣例的類別都劃分爲0,達到99%的正確率,可是,問題來了,若是真的發生地震時,這個分類器毫無察覺,那帶來的後果將是巨大的。很顯然,99%正確率的分類器並非咱們想要的。出現這種現象的緣由主要是數據分佈不均衡,類別爲1的數據太少,錯分了類別1但達到了很高的正確率缺忽視了研究者自己最爲關注的狀況。
對某一個任務,某個具體的分類器不可能同時知足或提升全部上面介紹的指標。
若是一個分類器能正確分對全部的實例,那麼各項指標都已經達到最優,但這樣的分類器每每不存在。好比以前說的地震預測,既然不能百分百預測地震的發生,但實際狀況中能容忍必定程度的誤報。假設在1000次預測中,共有5次預測發生了地震,真實狀況中有一次發生了地震,其餘4次則爲誤報。正確率由原來的999/1000=99.9降低爲996/1000=99.6。召回率由0/1=0%上升爲1/1=100%。對此解釋爲,雖然預測失誤了4次,但真的地震發生前,分類器能預測對,沒有錯過,這樣的分類器實際意義更爲重大,正是咱們想要的。在這種狀況下,在必定正確率前提下,要求分類器的召回率儘可能高。
廣義線性模型家族裏,依據因變量不一樣,能夠有以下劃分:
(1)若是是連續的,就是多重線性迴歸。
(2)若是是二項分佈,就是邏輯迴歸。
(3)若是是泊松(Poisson)分佈,就是泊松迴歸。
(4)若是是負二項分佈,就是負二項迴歸。
(5)邏輯迴歸的因變量能夠是二分類的,也能夠是多分類的,可是二分類的更爲經常使用,也更加容易解釋。因此實際中最經常使用的就是二分類的邏輯迴歸。
邏輯迴歸可用於如下幾個方面:
(1)用於機率預測。用於可能性預測時,獲得的結果有可比性。好比根據模型進而預測在不一樣的自變量狀況下,發生某病或某種狀況的機率有多大。
(2)用於分類。實際上跟預測有些相似,也是根據模型,判斷某人屬於某病或屬於某種狀況的機率有多大,也就是看一下這我的有多大的可能性是屬於某病。進行分類時,僅須要設定一個閾值便可,可能性高於閾值是一類,低於閾值是另外一類。
(3)尋找危險因素。尋找某一疾病的危險因素等。
(4)僅能用於線性問題。只有當目標和特徵是線性關係時,才能用邏輯迴歸。在應用邏輯迴歸時注意兩點:一是當知道模型是非線性時,不適用邏輯迴歸;二是當使用邏輯迴歸時,應注意選擇和目標爲線性關係的特徵。
(5)各特徵之間不須要知足條件獨立假設,但各個特徵的貢獻獨立計算。
邏輯迴歸與樸素貝葉斯區別有如下幾個方面:
(1)邏輯迴歸是判別模型, 樸素貝葉斯是生成模型,因此生成和判別的全部區別它們都有。
(2)樸素貝葉斯屬於貝葉斯,邏輯迴歸是最大似然,兩種機率哲學間的區別。
(3)樸素貝葉斯須要條件獨立假設。
(4)邏輯迴歸須要求特徵參數間是線性的。
線性迴歸與邏輯迴歸的區別以下描述:
(1)線性迴歸的樣本的輸出,都是連續值,$ y\in (-\infty ,+\infty )\(,而邏輯迴歸中\)y\in (0,1)$,只能取0和1。
(2)對於擬合函數也有本質上的差異:
線性迴歸:\(f(x)=\theta ^{T}x=\theta _{1}x _{1}+\theta _{2}x _{2}+...+\theta _{n}x _{n}\)
邏輯迴歸:\(f(x)=P(y=1|x;\theta )=g(\theta ^{T}x)\),其中,\(g(z)=\frac{1}{1+e^{-z}}\)
能夠看出,線性迴歸的擬合函數,是對f(x)的輸出變量y的擬合,而邏輯迴歸的擬合函數是對爲1類樣本的機率的擬合。
那麼,爲何要以1類樣本的機率進行擬合呢,爲何能夠這樣擬合呢?
\(\theta ^{T}x=0\)就至關因而1類和0類的決策邊界:
當\(\theta ^{T}x>0\),則y>0.5;若$\theta ^{T}x\rightarrow +\infty \(,則\)y \rightarrow 1 $,即y爲1類;
當\(\theta ^{T}x<0\),則y<0.5;若$\theta ^{T}x\rightarrow -\infty \(,則\)y \rightarrow 0 $,即y爲0類;
這個時候就能看出區別,在線性迴歸中\(\theta ^{T}x\)爲預測值的擬合函數;而在邏輯迴歸中\(\theta ^{T}x\)爲決策邊界。下表2-3爲線性迴歸和邏輯迴歸的區別。
表2-3 線性迴歸和邏輯迴歸的區別
線性迴歸 | 邏輯迴歸 | |
---|---|---|
目的 | 預測 | 分類 |
\(y^{(i)}\) | 未知 | (0,1) |
函數 | 擬合函數 | 預測函數 |
參數計算方式 | 最小二乘法 | 極大似然估計 |
下面具體解釋一下: