目錄
1.邏輯回歸
二項logistic回歸模型是一種分類模型,由條件概率分布P(Y|X)表示,形式為參數化的logistic分布。這里隨機變量X取值為實數,隨機變量Y取值為1或0。可以通過有監督的方法來估計模型參數。
優點:
1. 計算代價不高,易於理解和實現;
2. 適用於需要得到有分類概率額場景;3.對小數據噪聲的魯棒性好,不會收輕微的多重共線性的影響
缺點:
1. 容易欠擬合,分類精度可能不高;
2.數據有缺失和特征很大的時候表現不好 。
2.支持向量機
對於兩類線性可分學習任務,SVM找到一個間隔最大的超平面將兩類樣本分開,最大間隔能夠保證該超平面具有最好的泛化能力。
優點:
1. 可以解決小樣本情況下的ML問題;
2. 可以提高泛化性能;
3. 可以解決高維問題,避免維數災難;
4. 可以解決非線性問題;
5. 可以避免神經網絡結構選擇和局部極小點問題。
參數C和g的選擇對分類性能的影響:
C是懲罰系數,C越大,交叉validation高,容易過學習;
g是核函數的到達0的速率,g越小,函數下降快,交叉validation高,也容易造成過學習。
缺點:
1. 對缺失數據敏感;
2. 對非線性問題沒有通用解決方案,必須謹慎選擇kernel function來處理。
SVM算法的主要優點有:
1) 解決高維特征的分類問題和回歸問題很有效,在特征維度大於樣本數時依然有很好的效果。
2) 僅僅使用一部分支持向量來做超平面的決策,無需依賴全部數據。
3) 有大量的核函數可以使用,從而可以很靈活的來解決各種非線性的分類回歸問題。
4)樣本量不是海量數據的時候,分類准確率高,泛化能力強。
SVM算法的主要缺點有:
1) 如果特征維度遠遠大於樣本數,則SVM表現一般。
2) SVM在樣本量非常大,核函數映射維度非常高時,計算量過大,不太適合使用。(不適用於大數據集)
3)非線性問題的核函數的選擇沒有通用標准,難以選擇一個合適的核函數。
4)SVM對缺失數據敏感。
1)一般推薦在做訓練之前對數據進行歸一化,當然測試集中的數據也需要歸一化。。
2)在特征數非常多的情況下,或者樣本數遠小於特征數的時候,使用線性核,效果已經很好,並且只需要選擇懲罰系數C即可。
3)在選擇核函數時,如果線性擬合不好,一般推薦使用默認的高斯核'rbf'。這時我們主要需要對懲罰系數C和核函數參數γ進行艱苦的調參,通過多輪的交叉驗證選擇合適的懲罰系數C和核函數參數γ。
4)理論上高斯核不會比線性核差,但是這個理論卻建立在要花費更多的時間來調參上。所以實際上能用線性核解決問題我們盡量使用線性核。
3.決策樹
一種啟發式算法,核心是在決策樹各個節點上應用信息增益等准則來選取特征,進而遞歸地構造決策樹。
優點:
1. 計算復雜度不高,易於理解和解釋,可以理解決策樹所表達的意義;
2. 數據預處理階段比較簡單,且可以處理缺失數據;
3. 能夠同時處理數據型和分類型屬性,且可對有許多屬性的數據集構造決策樹;
4. 是一個白盒模型,給定一個觀察模型,則根據所產生的決策樹很容易推斷出相應的邏輯表達式;
5. 在相對短的時間內能夠對大數據集合做出可行且效果良好的分類結果。
6. 可以對有許多屬性的數據集構造決策樹。
缺點:
1. 對於那些各類別樣本數目不一致的數據,信息增益的結果偏向於那些具有更多數值的屬性;
2. 對噪聲數據較為敏感;
3. 容易出現過擬合問題;
4. 忽略了數據集中屬性之間的相關性;
5.處理缺失數據時的困難
決策樹優點:
1)簡單直觀,生成的決策樹很直觀。
2)基本不需要預處理,不需要提前歸一化,處理缺失值。
3)使用決策樹預測的代價是
。 m為樣本數。
4)既可以處理離散值也可以處理連續值。很多算法只是專注於離散值或者連續值。
5)可以處理多維度輸出的分類問題。
6)相比於神經網絡之類的黑盒分類模型,決策樹在邏輯上可以得到很好的解釋
7)可以交叉驗證的剪枝來選擇模型,從而提高泛化能力。
8) 對於異常點的容錯能力好,健壯性高。
決策樹算法的缺點:
1)決策樹算法非常容易過擬合,導致泛化能力不強。可以通過設置節點最少樣本數量和限制決策樹深度來改進。
2)決策樹會因為樣本發生一點點的改動,就會導致樹結構的劇烈改變。這個可以通過集成學習之類的方法解決。
3)尋找最優的決策樹是一個NP難的問題,我們一般是通過啟發式方法,容易陷入局部最優。可以通過集成學習之類的方法來改善。
4)有些比較復雜的關系,決策樹很難學習,比如異或。這個就沒有辦法了,一般這種關系可以換神經網絡分類方法來解決。
5)如果某些特征的樣本比例過大,生成決策樹容易偏向於這些特征。這個可以通過調節樣本權重來改善。
4.KNN算法
一種惰性分類方法,從訓練集中找出k個最接近測試對象的訓練對象,再從這k個訓練對象中找出居於主導的類別,將其賦給測試對象。
優點:
1. 簡單有效,容易理解和實現;
2. 重新訓練的代價較低(類別體系的變化和訓練集的變化);
3. 計算時間和空間線性於訓練集的規模;
4. 錯誤率漸進收斂於貝葉斯錯誤率,可作為貝葉斯的近似;
5. 適合處理多模分類和多標簽分類問題;
6. 對於類域的交叉或重疊較多的待分類樣本集較為適合;
缺點:
1. 是懶散學習方法,比一些積極學習的算法要慢;
2. 計算量比較大,需對樣本點進行剪輯;
3. 對於樣本不平衡的數據集效果不佳,可采用加權投票法改進;
4. k值的選擇對分類效果有很大影響,較小的話對噪聲敏感,需估計最佳k值。
5.可解釋性不強,計算量大。
KNN的主要優點有:
1) 理論成熟,思想簡單,既可以用來做分類也可以用來做回歸
2) 可用於非線性分類
3) 訓練時間復雜度比支持向量機之類的算法低,僅為O(n)
4) 和朴素貝葉斯之類的算法比,對數據沒有假設,准確度高,對異常點不敏感
5) 由於KNN方法主要靠周圍有限的鄰近的樣本,而不是靠判別類域的方法來確定所屬類別的,因此對於類域的 交叉或重疊較多的待分樣本集來說,KNN方法較其他方法更為適合
6)該算法比較適用於樣本容量比較大的類域的自動分類,而那些樣本容量較小的類域采用這種算法比較容易產生誤分
KNN的主要缺點有:
1)計算量大,尤其是特征數非常多的時候
2)樣本不平衡的時候,對稀有類別的預測准確率低
3)KD樹,球樹之類的模型建立需要大量的內存
4)使用懶散學習方法,基本上不學習,導致預測時速度比起邏輯回歸之類的算法慢
5)相比決策樹模型,KNN模型可解釋性不強
5.朴素貝葉斯算法
貝葉斯分類器的分類原理是利用各個類別的先驗概率,再利用貝葉斯公式及獨立性假設計算出屬性的類別概率以及對象的后驗概率,即該對象屬於某一類的概率,選擇具有最大后驗概率的類作為該對象所屬的類別。
優點:
1. 數學基礎堅實,分類效率穩定,容易解釋;
2. 所需估計的參數很少,對缺失數據不太敏感;
3. 無需復雜的迭代求解框架,適用於規模巨大的數據集。
缺點:
1. 屬性之間的獨立性假設往往不成立(可考慮用聚類算法先將相關性較大的屬性進行聚類);
2. 需要知道先驗概率,分類決策存在錯誤率。
朴素貝葉斯的主要優點有:
1)朴素貝葉斯模型發源於古典數學理論,有穩定的分類效率。
2)對小規模的數據表現很好,能個處理多分類任務,適合增量式訓練,尤其是數據量超出內存時,我們可以一批批的去增量訓練。
3)對缺失數據不太敏感,算法也比較簡單,常用於文本分類。
朴素貝葉斯的主要缺點有:
1) 理論上,朴素貝葉斯模型與其他分類方法相比具有最小的誤差率。但是實際上並非總是如此,這是因為朴素貝葉斯模型給定輸出類別的情況下,假設屬性之間相互獨立,這個假設在實際應用中往往是不成立的,在屬性個數比較多或者屬性之間相關性較大時,分類效果不好。而在屬性相關性較小時,朴素貝葉斯性能最為良好。對於這一點,有半朴素貝葉斯之類的算法通過考慮部分關聯性適度改進。
2)需要知道先驗概率,且先驗概率很多時候取決於假設,假設的模型可以有很多種,因此在某些時候會由於假設的先驗模型的原因導致預測效果不佳。
3)由於我們是通過先驗和數據來決定后驗的概率從而決定分類,所以分類決策存在一定的錯誤率。
4)對輸入數據的表達形式很敏感。
6.隨機森林
RF的主要優點有:
1) 訓練可以高度並行化,對於大數據時代的大樣本訓練速度有優勢。最主要的優點。
2) 由於可以隨機選擇決策樹節點划分特征,這樣在樣本特征維度很高的時候,仍然能高效的訓練模型。
3) 在訓練后,可以給出各個特征對於輸出的重要性
4) 由於采用了隨機采樣,訓練出的模型的方差小,泛化能力強。
5) 相對於Boosting系列的Adaboost和GBDT, RF實現比較簡單。
6) 對部分特征缺失不敏感。
RF的主要缺點有:
1)在某些噪音比較大的樣本集上,RF模型容易陷入過擬合。
2) 取值划分比較多的特征容易對RF的決策產生更大的影響,從而影響擬合的模型的效果。
7.AdaBoost算法
提升方法是從弱學習算法出發,反復學習,得到一系列的弱分類器(即基本分類器),然后組合這些弱分類器,構成一個強分類器,大多數的提升方法都是改變訓練數據集的概率分布(訓練數據的權值分布),針對不同的訓練數據分布調用弱學習算法學習一系列的弱分類器。
優點:
1. 分類精度高;
2. 可以使用各種方法構建子分類器,Adaboost算法提供的是框架;
3. 簡單,且不用做特征篩選;
4. 不會造成overfitting。
缺點:
1. 對分類錯誤的樣本多次被分錯而多次加權后,導致權重過大,影響分類器的選擇,造成退化問題;(需改進權值更新方式)
2. 數據不平衡問題導致分類精度的急劇下降;
3. 算法訓練耗時,拓展困難;
4. 存在過擬合,魯棒性不強等問題。
Adaboost的主要優點有:
1)Adaboost作為分類器時,分類精度很高
2)在Adaboost的框架下,可以使用各種回歸分類模型來構建弱學習器,非常靈活。
3)作為簡單的二元分類器時,構造簡單,結果可理解。
4)不容易發生過擬合
Adaboost的主要缺點有:
1)對異常樣本敏感,異常樣本在迭代中可能會獲得較高的權重,影響最終的強學習器的預測准確性。
8.GBDT算法
GBDT主要的優點有:
1) 可以靈活處理各種類型的數據,包括連續值和離散值。
2) 在相對少的調參時間情況下,預測的准確率也可以比較高。這個是相對SVM來說的。
3)使用一些健壯的損失函數,對異常值的魯棒性非常強。比如 Huber損失函數和Quantile損失函數。
GBDT的主要缺點有:
1)由於弱學習器之間存在依賴關系,難以並行訓練數據。不過可以通過自采樣的SGBT來達到部分並行。
9.XGBoost
1.XGBoost與GBDT相比,其優勢:
- 將樹模型的復雜度加入到正則項中,來避免過擬合,因此泛化性能會優於GBDT。
- 損失函數用泰勒展開式展開,同時用到了一階和二階導數,可以加快優化速度。
- GBDT只支持CART作為基學習器,XGBoost還支持線性分類器作為基學習器。
- 引進了特征子采樣,像隨機森林那樣,既能避免過擬合,又能減少計算。
- 在尋找最優分割點時,考慮到傳統的貪心算法效率較低,實現了一種近似貪心算法,用來加速和減少內存小號,除此之外,還考慮了稀疏數據集合缺失值的處理。
- XGBoost支持並行處理。XGBoost的並行不是模型生成的並行,而是在特征上的並行,將特征排序后以block的形式存儲在內存中,在后面迭代重復使用這個結構。這個block也使得並行化成為了可能,其次在節點分裂時,計算每個特征的增益,最終選擇增益最大的那個特征去做分割,那么各個特征的增益計算就可以開多線程進行。
2.與lightGBM相比的不足點:
- XGBoosting采用預排序,在迭代之前,對結點的特征做預排序,遍歷選擇最優分割點,數據量大時,貪心法耗時,LightGBM方法采用histogram算法,占用的內存低,數據分割的復雜度更低。
- XGBoosting采用level-wise生成決策樹,同時分裂同一層的葉子,從而進行多線程優化,不容易過擬合,但很多葉子節點的分裂增益較低,沒必要進行跟進一步的分裂,這就帶來了不必要的開銷;LightGBM采用深度優化,leaf-wise生長策略,每次從當前葉子中選擇增益最大的結點進行分裂,循環迭代,但會生長出更深的決策樹,產生過擬合,因此引入了一個閾值進行限制,防止過擬合。
參考:https://zhuanlan.zhihu.com/p/58292935
10.人工神經網絡
優點:
1. 分類的准確度高,並行分布處理能力強,分布存儲及學習能力強;
2. 對噪聲神經有較強的魯棒性和容錯能力,能充分逼近復雜的非線性關系,具備聯想記憶的功能等。
缺點:
1. 神經網絡需要大量的參數,如網絡拓撲結構、權值和閾值的初始值;
2. 不能觀察之間的學習過程,輸出結果難以解釋,會影響到結果的可信度和可接受程度;
3. 學習時間過長,甚至可能達不到學習的目的。
遺傳算法
優點:
1. 與問題領域無關且快速隨機的搜索能力;
2. 搜索從群體出發,具有潛在的並行性,可以進行多個個體的同時比較,魯棒性好;
3. 搜索使用評價函數啟發,過程簡單;
4. 使用概率機制進行迭代,具有隨機性;
5. 具有可擴展性,容易與其他算法結合。
缺點:
1. 遺傳算法的編程實現比較復雜,找到最優解之后還需要對問題進行解碼;
2. 三個算子的實現也有許多參數,如交叉率和變異率,並且這些參數的選擇嚴重影響解的品質,而目前這些參數的選擇大部分是依靠經驗。
3.算法的搜索速度比較慢,要得要較精確的解需要較多的訓練時間;
4. 算法對初始種群的選擇有一定的依賴性,能夠結合一些啟發算法進行改進。