Ensemble learning - 集成算法
▒ 目的
讓機器學習的效果更好, 量變引起質變
繼承算法是競賽與論文的神器, 注重結果的時候較為適用
集成算法 - 分類
▒ Bagging - bootstrap aggregation
◈ 公式
◈ 原理
訓練多個分類器取平均, 並行 的訓練一堆的分類器
◈ 典例
隨機森林
◈ 隨機
輸入 - 數據源采樣隨機 - 在原有數據上的進行 60% - 80% 比例的有放回的數據取樣
數據量相同, 但是每個樹的樣本數據各不相同
特征 - 特征選擇隨機
特征的選擇加劇隨機性
◈ 森林
多個決策樹並行放在一起
每個樹的特征數一樣, 數據量一樣
由於二重的隨機性(數據集, 特征) , 每個樹基本上都不會一樣, 最終的結果也不一樣
隨機保證了泛化能力, 如果每個樹都是一樣, 那就無意義了
◈ 優勢
能夠處理 高緯度 ( feature 很多 ) 的數據, 而且不用做特征選擇 (見ps)
在訓練后, 可以對 feature 重要程度 進行比對
容易做成 並行化 方法, 速度較快
可進行 可視化展示 , 便於分析
◈ ps
特征選擇
特征選擇的目的是為了查找出權重較大對最終結果影響較大的特征
比如可以使用將某一特征的數據進行完全破壞再用無用數據填充
然后與之前的正常特征數據得到的結果比對從而兩個的差值大小判斷此特征的有用性
也可以建模忽略預測定的某特征進行與帶有此特征的進行比對也是相同的道理
注意 : 破壞后的特征別用 0 之類的一樣的數據進行填充, 完全一樣的特征就沒意義了
◈ 樹模型臨界值
隨機森林中的樹模型理論上是越多越好, 但是其實也會達到臨界值
達到一定數量后就會在臨界點附近上下浮動
▒ Boosting
◈ 公式
◈ 原理
串行算法, 后面的樹基於前面樹的殘差計算
從弱學習器開始加強, 通過加權來進行訓練 ( 加入一顆比原來強的樹 )
例子說明:
比如第一顆樹預測的結果相差了50, 那么第二顆的任務就是預測這50
然后第二顆預測結果是 30 , 與目標又只差了20, 於是第三顆樹的任務就是預測剩余的 20
以此往下類推, 直到盡可能的填滿這50的差值讓預測結果和真實結果統一
◈ 典例
AdaBoost
Xgboost - 詳細的內容 點擊這里
◈ AdaBoost 原理
根據前一次的分類效果調整數據權重
如果某一個數據分錯了, 那么在下一次的分配中會給與更高的權重使其更加精准
最終的結果根據每個分類器自身的准確性確定各自的權重再合並
如圖所示, 第一個分類器分錯了 第一個數據, 因此第二分類器給了第一個數據更高的權重
但是二號又分錯了第五個數據, 因此第三個分類器對第五數據更高的權重
▒ Stacking
聚合多個分類或者回歸模型. ( 可以分階段來做 )
◈ 原理
堆疊 直接一堆分類器疊加起來用, 比如有多個算法直接算完了求平均
可以堆疊各種各樣的分類器 (KNN, SVM, RF 等等)
分階段 第一階段得出各自結果, 第二階段再用前一階段的結果來訓練
如圖, 使用 4 種分類器的結果作為二階段 LR 分類器的輸入再次處理后得到最終結果
◈ 優勢
准確率確實可以提升, 但是速度是個問題