一樣是分類:SVM、LR、決策樹,三者之間有什麼優劣勢呢?html
答:Are decision tree algorithms linear or nonlinear: nonlinear! 更接近 "神經網絡"。算法
Ref:邏輯迴歸,決策樹,支持向量機 選擇方案網絡
LR的優點:app
LR的劣勢:框架
SVM的優勢:dom
SVM的缺點:機器學習
決策樹的優勢:函數
決策樹的缺點: post
我總結出了一個工做流程來讓你們參考如何決定使用哪一個模型: 學習
1. 使用LR試一把總歸不會錯的,至少是個baseline
2. 看看決策樹相關模型例如隨機森林,GBDT有沒有帶來顯著的效果提高,即便最終沒有用這個模型,也能夠用隨機森林的結果來去除噪聲特徵
3. 若是你的特徵空間和觀測樣本都很大,有足夠的計算資源和時間,試試SVM吧,
Ref: 算法雜貨鋪——分類算法之決策樹(Decision tree)
屬性選擇度量算法有不少,通常使用自頂向下遞歸分治法,並採用不回溯的貪心策略。這裏介紹ID3和C4.5兩種經常使用算法。
使用屬性選擇度量來選擇將元組最好地劃分紅不一樣的類的屬性。所謂決策樹的構造就是進行屬性選擇度量肯定各個特徵屬性之間的拓撲結構。
官方文檔:https://scikit-learn.org/stable/modules/generated/sklearn.tree.DecisionTreeRegressor.html
也可用於 」迴歸問題「:迴歸樹,模型樹。
Ensemble method(集成方法),參考博文:機器學習--集成學習(Ensemble Learning)
Bootstrap 樣本集,「有放回去」 的方式。 舉個栗子:構造 Random Forest(隨機森林)
(1) 得到 Bootstrap 作爲一個 dataset
(2) 隨機選擇d個特徵
開始訓練一顆樹。
boost算法是基於PAC學習理論(probably approximately correct)而創建的一套集成學習算法(ensemble learning)。
其根本思想在於經過多個簡單的弱分類器,構建出準確率很高的強分類器,PAC學習理論證明了這一方法的可行性。
(1)在每一輪如何改變訓練數據的權值或機率分佈?
經過提升那些在前一輪被弱分類器分錯樣例的權值,減少前一輪分對樣例的權值,來使得分類器對誤分的數據有較好的效果。
【劃分的很差就多重視一點】
(2)經過什麼方式來組合弱分類器?
經過加法模型將弱分類器進行 "線性組合",好比以下三種方式:
* AdaBoost(Adaptive boosting)算法:剛開始訓練時對每個訓練例賦相等的權重,而後用該算法對訓練集訓練t輪,每次訓練後,對訓練失敗的訓練例賦以較大的權重,也就是讓學習算法在每次學習之後更注意學錯的樣本,從而獲得多個預測函數。
經過擬合殘差的方式逐步減少殘差,將每一步生成的模型疊加獲得最終模型。
# AdaBoost Algorithm from sklearn.ensemble import AdaBoostClassifier clf = AdaBoostClassifier() ... clf.fit(x_train,y_train) clf.predict(x_test)
* GBDT(Gradient Boost Decision Tree),每一次的計算是爲了減小上一次的殘差,GBDT在殘差減小(負梯度)的方向上創建一個新的模型。
# Gradient Boosting from sklearn.ensemble import GradientBoostingClassifier clf = GradientBoostingClassifier() # n_estimators = 100 (default) # loss function = deviance(default) used in Logistic Regression clf.fit(x_train,y_train) clf.predict(x_test)
* XGBoost (Extreme Gradient Boosting),掀起了一場數據科學競賽的風暴。
# XGBoost from xgboost import XGBClassifier clf = XGBClassifier() # n_estimators = 100 (default) # max_depth = 3 (default) clf.fit(x_train,y_train) clf.predict(x_test)
Bagging:訓練集是在原始集中有放回選取的,從原始集中選出的各輪訓練集之間是獨立的。
Boosting:每一輪的訓練集不變,只是訓練集中每一個樣例在分類器中的權重發生變化。而權值是根據上一輪的分類結果進行調整。
Bagging:使用均勻取樣,每一個樣例的權重相等
Boosting:根據錯誤率不斷調整樣例的權值,錯誤率越大則權重越大。
Bagging:全部預測函數的權重相等。
Boosting:每一個弱分類器都有相應的權重,對於分類偏差小的分類器會有更大的權重。
Bagging:各個預測函數能夠並行生成
Boosting:各個預測函數只能順序生成,由於後一個模型參數須要前一輪模型的結果。
1)Bagging + 決策樹 = 隨機森林
2)AdaBoost + 決策樹 = 提高樹 Boosting Tree
3)Gradient Boosting + 決策樹 = GBDT
Ref: 數據挖掘競賽利器-Stacking和Blending方式
用不一樣特徵訓練出來的三個GBDT模型進行融合時,咱們會將三個GBDT做爲基層模型,在其上在訓練一個次學習器(一般爲線性模型LR)【有點像mlp】
/* continue ... */