常用機器學習演算法彙總比較(完)
機器學習入門系列(2)--如何構建一個完整的機器學習專案,第九篇!
該系列的前八篇文章:
- 機器學習入門系列(2)--如何構建一個完整的機器學習專案(一)
- 機器學習資料集的獲取和測試集的構建方法
- 特徵工程之資料預處理(上)
- 特徵工程之資料預處理(下)
- 特徵工程之特徵縮放&特徵編碼
- 特徵工程(完)
- 常用機器學習演算法彙總比較(上)
- 常用機器學習演算法彙總比較(中)
常用機器學習演算法彙總比較的最後一篇,介紹提升(Boosting)演算法、GBDT、優化演算法和卷積神經網路的基本原理、優缺點。
9. 提升(Boosting)方法
簡述
提升方法(boosting)是一種常用的統計學習方法,在分類問題中,它通 過改變訓練樣本的權重,學習多個分類器 ,並將這些分類器進行線性組合,提供分類的效能。
boosting 和 bagging
boosting 和 bagging 都是整合學習(ensemble learning)領域的基本演算法, 兩者使用的多個分類器的型別是一致的 。
Bagging
bagging也叫 自助匯聚法(bootstrap aggregating) ,比如原資料集中有 N 個樣本,我們每次從原資料集中 有放回 的抽取,抽取 N 次,就得到了一個新的有 N 個樣本的資料集,然後我們抽取 S 個 N 次,就得到了 S 個有 N 個樣本的新資料集,然後拿這 S 個數據集去訓練 S 個分類器,之後應用這 S 個分類器進行分類,選擇分類器 投票最多的類別 作為最後的分類結果。一般來說 自助樣本的包含有 63% 的原始訓練資料 ,因為:
假設共抽取 N 個樣本,則 N 次都沒有抽到的概率是
則一個樣本被抽到的概率有
所以,當 N 很大時有: 。
這樣,在一次 bootstrap 的過程中,會有 36% 的樣本沒有被取樣到,它們被稱為 out-off-bag(oob) ,這是自助取樣帶給 bagging
的裡一個優點,因為我們可以用 oob
進行**“包外估計”(out-of-bag estimate)**。
bagging 通過降低基分類器的方差改善了泛化誤差,bagging 的效能依賴於基分類器的穩定性。如果基分類器是 不穩定 的,bagging 有助於減少訓練資料的隨機波動導致的誤差 ,如果基分類器是穩定的,即對訓練資料集中的微小變化是魯棒的,則組合分類器的誤差主要由 基分類器偏移 所引起的,這種情況下, bagging 可能不會對基分類器有明顯的改進效果,甚至可能降低分類器的效能。
boosting 與 bagging 的區別
- bagging 通過 有放回的抽取 得到了 S 個數據集,而 boosting 用的始終是 原資料集 ,但是 樣本的權重會發生改變。
- boosting 對分類器的訓練是序列的 ,每個新分類器的訓練都會受到上一個分類器分類結果的影響。
- bagging 裡面各個分類器的權重是相等的,但是 boosting 不是 ,每個分類器的權重代表的是其對應分類器在上一輪分類中的成功度。
AdaBoost 是 boosting 方法中最流行的版本
AdaBoost 演算法
AdaBoost(adaptive boosting)是元演算法,通過組合多個弱分類器來構建一個強分類器。
我們為訓練資料中的每一個樣本都賦予其一個權重,這些權重構成了向量 D,一開始,這些權重都初始化成相等值,然後每次新增一個弱分類器對樣本進行分類,從第二次分類開始, 將上一次分錯的樣本的權重提高,分對的樣本權重降低,持續迭代 。
此外,對於每個弱分類器而言, 每個分類器也有自己的權重,取決於它分類的加權錯誤率,加權錯誤率越低,則這個分類器的權重值 α 越高 ,最後綜合多個弱分類器的分類結果和其對應的權重 α 得到預測結果,AdaBoost 是最好的監督學習分類方法之一。
優缺點
優點
- 泛化誤差低
- 容易實現,分類準確率較高,沒有太多引數可以調
缺點
- 對異常值比較敏感
- 訓練時間過長
- 執行效果依賴於弱分類器的選擇
10. GBDT
簡述
GBDT 是一個 基於迭代累加的決策樹演算法 ,它通過構造一組弱的學習器(樹),並把多顆決策樹的結果累加起來作為最終的預測輸出。
GBDT中的樹是迴歸樹,不是分類樹。
隨機森林(Random Forest,RF) 與 GBDT 對比
- RF 中樹的棵樹是 並行 生成的;GBDT 中樹是 順序 生成的;兩者中過多的樹都會過擬合,但是 GBDT 更容易過擬合
- RF 中每棵樹分裂的特徵 比較隨機 ;GBDT 中前面的樹優先分裂對大部分樣本區分的特徵,後面的樹分裂對小部分樣本區分特徵
- RF 中主要引數是 樹的棵數 ;GBDT 中主要引數是 樹的深度,一般為1
優缺點
優點
LogLoss
缺點
- boosting 是個序列的過程,所以並行麻煩,需要考慮上下樹之間的聯絡
- 計算複雜度大
- 不使用高維稀疏特徵
調參
- 樹的個數 100~10000
- 葉子的深度 3~8
- 學習速率 0.01~1
- 葉子上最大節點樹 20
- 訓練取樣比例 0.5~1
- 訓練特徵取樣比例
xgboost
xgboost 是 boosting Tree 的一個很牛的實現,它在 Kaggle 比賽中大放異彩。它有以下幾個優良的特性:
- 顯示的把樹模型複雜度作為正則項加到優化目標中。
- 公式推導中用到了二階導數,用了二階泰勒展開。
- 實現了分裂點尋找近似演算法。
- 利用了特徵的稀疏性。
- 資料事先排序並且以 block 形式儲存,有利於平行計算。
- 基於分散式通訊框架 rabit,可以執行在 MPI 和 yarn 上。(最新已經不基於 rabit 了)
- 實現做了面向體系結構的優化,針對 cache 和記憶體做了效能優化。
在專案實測中使用發現,Xgboost 的訓練速度要遠遠快於傳統的 GBDT 實現,10 倍量級。
程式碼實現
下面給出簡單使用 xgboost 這個框架的例子。
# 劃分資料集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.01, random_state=1729) print(X_train.shape, X_test.shape) #模型引數設定 xlf = xgb.XGBRegressor(max_depth=10, learning_rate=0.1, n_estimators=10, silent=True, objective='reg:linear', nthread=-1, gamma=0, min_child_weight=1, max_delta_step=0, subsample=0.85, colsample_bytree=0.7, colsample_bylevel=1, reg_alpha=0, reg_lambda=1, scale_pos_weight=1, seed=1440, missing=None) xlf.fit(X_train, y_train, eval_metric='rmse', verbose = True, eval_set = [(X_test, y_test)],early_stopping_rounds=100) # 計算 auc 分數、預測 preds = xlf.predict(X_test) 複製程式碼
11. 優化演算法
常見的最優化方法有梯度下降法、牛頓法和擬牛頓法、共軛梯度法等等
梯度下降法
梯度下降法是最早最簡單,也是最為常用的最優化方法。
梯度下降法實現簡單, 當目標函式是凸函式時,梯度下降法的解是全域性解 。
一般情況下,其解 不保證是全域性最優解 ,梯度下降法的速度也未必是最快的。
梯度下降法的優化思想是用當前位置負梯度方向作為搜尋方向,因為該方向為當前位置的最快下降方向,所以也被稱為是”最速下降法“。最速下降法越接近目標值,步長越小,前進越慢。
梯度下降法的搜尋迭代示意圖如下圖所示:

其缺點是:
(1)靠近極小值時收斂速度減慢,如下圖所示;
(2)直線搜尋時可能會產生一些問題;
(3)可能會“之字形”地下降。

從上圖可以看出,梯度下降法在接近最優解的區域收斂速度明顯變慢,利用梯度下降法求解需要很多次的迭代。
在機器學習中,基於基本的梯度下降法發展了三種梯度下降方法:
- 批量梯度下降法:每次迭代都會採用整個訓練集
- 隨機梯度下降法:每次迭代隨機使用一個訓練樣本
- 小批量梯度下降法:每次迭代採用一個小型的訓練子集
其中小批量梯度下降法是前兩種方法的一個折中,也是目前最常用的梯度下降法,它即避免了批量梯度下降法需要計算整個訓練集的缺點,也不會像隨機梯度下降法一樣會出現訓練震盪,不穩定的缺點。當然,它相比前兩種方法的缺點就是比較容易陷入區域性最小值中。
牛頓法
牛頓法是一種在實數域和複數域上近似求解方程的方法。方法使用函式 f(x) 的泰勒級數的前面幾項來尋找方程 f(x) = 0 的根。
它是二階演算法,它使用了 Hessian 矩陣求權重的二階偏導數,目標是採用損失函式的二階偏導數尋找更好的訓練方向。
牛頓法最大的特點就在於它的收斂速度很快。
牛頓法是基於當前位置的切線來確定下一次的位置,所以牛頓法又被很形象地稱為是"切線法"。牛頓法的搜尋路徑(二維情況)如下圖所示:
牛頓法搜尋動態示例圖:

關於牛頓法和梯度下降法的效率對比:
- 從本質上去看, 牛頓法是二階收斂,梯度下降是一階收斂,所以牛頓法就更快 。如果更通俗地說的話,比如你想找一條最短的路徑走到一個盆地的最底部,梯度下降法每次只從你當前所處位置選一個坡度最大的方向走一步,牛頓法在選擇方向時, 不僅會考慮坡度是否夠大,還會考慮你走了一步之後,坡度是否會變得更大 。所以,可以說牛頓法比梯度下降法看得更遠一點,能更快地走到最底部。(牛頓法目光更加長遠,所以少走彎路;相對而言,梯度下降法只考慮了局部的最優,沒有全域性思想。)
- 根據 wiki上的解釋, 從幾何上說,牛頓法就是用一個二次曲面去擬合當前所處位置的局部曲面,而梯度下降法是用一個平面去擬合當前的局部曲面 ,通常情況下, 二次曲面的擬合會比平面更好 ,所以牛頓法選擇的下降路徑會更符合真實的最優下降路徑。

注:紅色的牛頓法的迭代路徑,綠色的是梯度下降法的迭代路徑。
優缺點
優點
二階收斂,收斂速度快;
缺點
- Hessian 矩陣(海森矩陣的逆)計算量較大,當問題規模較大時,不僅計算量大而且需要的儲存空間也多,因此牛頓法在面對海量資料時由於每一步迭代的開銷巨大而變得不適用;
- 牛頓法在每次迭代時不能總是保證海森矩陣是正定的,一旦海森矩陣不是正定的,優化方向就會“跑偏”,從而使得牛頓法失效,也說明了牛頓法的魯棒性較差。
擬牛頓法
擬牛頓法的本質思想是改善牛頓法每次需要求解複雜的 Hessian 矩陣的逆矩陣的缺陷,它使用正定矩陣來近似 Hessian 矩陣的逆,從而簡化了運算的複雜度。
擬牛頓法和最速下降法一樣只要求每一步迭代時知道目標函式的梯度。通過測量梯度的變化,構造一個目標函式的模型使之足以產生超線性收斂性。這類方法大大優於最速下降法,尤其對於困難的問題。
另外, 因為擬牛頓法不需要二階導數的資訊,而是在每次迭代的時候計算一個矩陣,其逼近海塞矩陣的逆。最重要的是,該逼近值只是使用損失函式的一階偏導來計算 ,所以有時比牛頓法更為有效。
如今,優化軟體中包含了大量的擬牛頓演算法用來解決無約束,約束,和大規模的優化問題。
共軛梯度法(Conjugate Gradient)
共軛梯度法是介於最速下降法與牛頓法之間的一個方法,**它僅需利用一階導數資訊,但克服了最速下降法收斂慢的缺點,又避免了牛頓法需要儲存和計算Hesse矩陣並求逆的缺點,**共軛梯度法不僅是解決大型線性方程組最有用的方法之一,也是解大型非線性最優化最有效的演算法之一。在各種優化演算法中,共軛梯度法是非常重要的一種。 其優點是所需儲存量小,具有收斂快,穩定性高,而且不需要任何外來引數。
在共軛梯度訓練演算法中,因為是沿著 共軛方向(conjugate directions)執行搜尋的 ,所以通常該演算法要比沿著梯度下降方向優化收斂得更迅速。共軛梯度法的訓練方向是與海塞矩陣共軛的。
共軛梯度法已經證實其在神經網路中要比梯度下降法有效得多。並且由於共軛梯度法並沒有要求使用海塞矩陣,所以在大規模神經網路中其還是可以做到很好的效能。
啟發式優化方法
啟發式方法指人在解決問題時所採取的一種根據經驗規則進行發現的方法。其特點是在解決問題時,利用過去的經驗,選擇已經行之有效的方法,而不是系統地、以確定的步驟去尋求答案。啟發式優化方法種類繁多,包括經典的模擬退火方法、遺傳演算法、蟻群演算法以及粒子群演算法等等。
還有一種特殊的優化演算法被稱之多目標優化演算法,它主要針對同時優化多個目標(兩個及兩個以上)的優化問題,這方面比較經典的演算法有 NSGAII 演算法、MOEA/D 演算法以及人工免疫演算法等。
解決約束優化問題--拉格朗日乘數法
這個方法可以參考文章拉格朗日乘數法
Levenberg-Marquardt 演算法
Levenberg-Marquardt 演算法,也稱之為衰減最小二乘法(damped least-squares method),該演算法的損失函式採用平方誤差和的形式。 該演算法的執行也不需要計算具體的海塞矩陣,它僅僅只是使用梯度向量和雅可比矩陣(Jacobian matrix)。
Levenberg-Marquardt 演算法是 為平方誤差和函式所定製的 。這就讓使用這種誤差度量的神經網路訓練地十分迅速。然而 Levenberg-Marquardt 演算法還有一些缺點:
- 不能用於平方根誤差或交叉熵誤差(cross entropy error)等函式,
- 該演算法還和正則項不相容。
- 最後,對於大型資料集或神經網路,雅可比矩陣會變得十分巨大,因此也需要大量的記憶體。所以我們在大型資料集或神經網路中並不推薦採用 Levenberg-Marquardt 演算法。
記憶體與收斂速度的比較
下圖展示了所有上文所討論的演算法,及其收斂速度和記憶體需求。其中收斂速度最慢的是梯度下降演算法,但該演算法同時也只要求最少的記憶體。相反,Levenberg-Marquardt 演算法可能是收斂速度最快的,但其同時也要求最多的記憶體。比較折衷方法是擬牛頓法。

總而言之:
- 如果我們的神經網路有數萬引數,為了節約記憶體,我們可以使用梯度下降或共軛梯度法 。
- 如果 我們需要訓練多個神經網路,並且每個神經網路都只有數百引數、數千樣本,那麼我們可以考慮 Levenberg-Marquardt 演算法 。
- 而其餘的情況,擬牛頓法都能很好地應對。
12. 卷積神經網路(CNN)
CNN 可以應用在場景分類,影象分類,現在還可以應用到自然語言處理(NLP)方面的很多問題,比如句子分類等。
LeNet 是最早的CNN結構之一,它是由大神 Yann LeCun 所創造的,主要是用在字元分類問題。
卷積神經網路主要包含四種不同的網路層,分別是卷積層,非線性層(也就是使用了ReLU函式),Pooling層,全連線層,下面將一一介紹這幾種網路層。
12.1 卷積層
卷積簡介
CNN的名字由來就是因為其使用了卷積運算的緣故。卷積的目的主要是為了提取圖片的特徵。卷積運算可以保持畫素之間的空間關係。
每張圖片可以當做是一個包含每個畫素值的矩陣,畫素值的範圍是 0~255,0 表示黑色,255 是白色。下面是一個 5 × 5 大小的矩陣例子,它的值是 0 或者 1。

接下來是另一個 3 × 3 矩陣:

上述兩個矩陣通過卷積,可以得到如下圖右側粉色的矩陣結果。

黃色的矩陣在綠色的矩陣上從左到右,從上到下,每次滑動的步進值是1個畫素,所以得到一個 3 × 3 的矩陣。
在CNN中,黃色的矩陣被叫做 濾波器(filter)或者核(kernel)或者是特徵提取器 ,而通過卷積得到的矩陣則是稱為“特徵圖(Feature Map)”或者“Activation Map”。
另外, 使用不同的濾波器矩陣是可以得到不同的 Feature Map ,例子如下圖所示:

上圖通過濾波器矩陣,實現了不同的操作,比如邊緣檢測,銳化以及模糊操作等。
在實際應用中,CNN 是可以在其訓練過程中學習到這些濾波器的值,不過我們需要首先指定好濾波器的大小,數量以及網路的結構。使用越多的濾波器,可以提取到更多的影象特徵,網路也就能夠有更好的效能。
Feature Map 的尺寸是由以下三個引數來決定的:
- 深度(Depth) : 深度等於濾波器的數量 。
- 步進(Stride) : 步進值是在使用濾波器在輸入矩陣上滑動的時候,每次滑動的距離。步進值越大,得到的 Feature Map 的尺寸越小。
- Zero-padding : 有時候可以在輸入矩陣的邊界填補 0,這樣就可以將濾波器應用到邊緣的畫素點上,一個好的 Zero-padding 是能讓我們可以控制好特徵圖的尺寸的。使用該方法的卷積稱為 wide convolution ,沒有使用的則是 narrow convolution 。
卷積公式和引數量
卷積是大自然中最常見的運算,一切訊號觀測、採集、傳輸和處理都可以用卷積過程實現,其用公式表達如下:
上述公式中 表示卷積核。
在 CNN 中的卷積層的計算步驟與上述公式定義的二維卷積有點差異,首先是維度升至三維、四維卷積,跟二維卷積相比多了一個**“通道”(channel)**,每個通道還是按照二維卷積方式計算,而多個通道與多個卷積核分別進行二維卷積,得到多通道輸出,需要“合併”為一個通道; 其次是卷積核在卷積計算時沒有“翻轉”,而是與輸入圖片做滑動視窗“相關”計算 。用公式重新表達如下:
這裡假定卷積層有 L 個輸出通道和 K 個輸入通道,於是需要有 K×L 個卷積核實現通道數目的轉換。其中 X^k 表示第 k 個輸入通道的二維特徵圖,Y^l 表示第 l 個輸出通道的二維特徵圖,H^{kl} 表示第 k 行、第 l 列二維卷積核。
假定卷積核大小是 I×J,每個輸出通道的特徵圖大小是 M×N,則該層每個樣本做一次前向傳播時卷積層的計算量是
Calculations(MAC)=I×J×M×N×K×L。
卷積層的學習引數,也就是 卷積核數目乘以卷積核的尺寸-- 。
這裡定義計算量-引數量之比是 CPR = 。
因此可以得出結論: 卷積層的輸出特徵圖尺寸越大,CPR 越大,引數重複利用率越高。若輸入一批大小為 B 的樣本,則 CPR 值可提高 B 倍。
優點
卷積神經網路通過**『引數減少』與『權值共享』**大大減少了連線的個數,即需要訓練的引數的個數。
假設我們的影象是 1000×1000
的,則有 10^6 個隱層神經元,那麼它們全連線的話,也就是每個隱層神經元都連線影象的每個畫素點,就有 10^12 個連線,也即 10^12 個權值引數需要訓練,這顯然是不值得的。
但是對於一個只識別特定特徵的卷積核,需要大到覆蓋整個影象的所有畫素點嗎?
通常是不需要的, 一個特定特徵,尤其是第一層需要提取的特徵,通常都相當基礎,只佔影象很小的一部分。所以我們設定一個較小的區域性感受區域,比如 10*10
,也即每個神經元只需要和這 10*10
的區域性影象相連線,所以 10^6 個神經元也就有 10^8 個連線。這就叫引數減少。
那什麼叫權值共享呢?
在上面的區域性連線中,10^6 個神經元,每個神經元都對應 100 個引數,所以是 10^8 個引數, 那如果每個神經元所對應的引數都是相同的,那需要訓練的引數就只有 100 個 。
這後面隱含的道理在於, 這 100 個引數就是一個卷積核,而卷積核是提取特徵的方式,與其在影象上的位置無關,影象一個區域性的統計特徵與其他區域性的統計特徵是一樣的,我們用在這個區域性抽取特徵的卷積核也可以用在影象上的其它任何地方 。
而且這 100 個引數只是一種卷積核,只能提取一種特徵,我們完全可以採用 100 個卷積核,提取 100 種特徵,而所需要訓練的引數也不過 10^4,最開始我們訓練 10^12 個引數,還只能提取一種特徵。選取 100 個卷積核,我們就能得到 100 張特徵圖,每張特徵圖可以看做是一張影象的不同通道。
CNN 主要用來識別位移、縮放及其他形式扭曲不變性的二維圖形。
由於 CNN 特徵檢測層通過訓練資料進行學習,在使用 CNN 時, 避免了顯式的特徵抽取 ,而隱式地從訓練資料中進行學習;
再者,由於同一個特徵圖上的神經元權值相同,所以 網路可以並行學習,這也是卷積網路相對於神經元彼此相連網路的一大優 勢。
卷積神經網路以其 區域性權值共享的特殊結構 在語音識別和影象處理方面有著獨特的優越性,其佈局更接近於實際的生物神經網路, 權值共享降低了網路的複雜性,避免了特徵提取和分類過程中資料重建的複雜 度。
12.2 非線性層(ReLU)
非線性修正函式**ReLU(Rectified Linear Unit)**如下圖所示:

這是一個對每個畫素點實現點乘運算,並用 0 來替換負值畫素點。
其目的是在 CNN 中加入非線性, 因為使用 CNN 來解決的現實世界的問題都是非線性的,而卷積運算是線性運算,所以必須使用一個如ReLU的非線性函式來加入非線性的性質 。
其他非線性函式還包括 tanh 和 Sigmoid ,但是 ReLU 函式已經被證明在大部分情況下效能最好。
12.3 Pooling層
**空間合併(Spatial Pooling)**也可以叫做子取樣或者下采樣,可以在保持最重要的資訊的同時降低特徵圖的維度。它有不同的型別,如最大化,平均,求和等等。
對於 Max Pooling 操作,首先定義一個空間上的鄰居,比如一個 2×2 的視窗,對該視窗內的經過 ReLU 的特徵圖提取最大的元素。除了提取最大的元素,還可以使用視窗內元素的平均值或者是求和的值。
不過, Max Pooling 的效能是最好的。例子可以如下圖所示:

上圖中使用的步進值是 2。
根據相關理論,特徵提取的誤差主要來自兩個方面:
- 鄰域大小受限 造成的估計值方差增大;
- 卷積層引數誤差 造成估計均值的偏移。
一般來說,mean-pooling 能減小第一種誤差,更多的保留影象的背景資訊,max-pooling 能減小第二種誤差,更多的保留紋理資訊。
使用Pooling的原因有如下幾點:
- 不變性,更關注是否存在某些特徵而不是特徵具體的位置。可以看作加了一個很強的先驗,讓學到的特徵要能容忍一些的變化。
- 減小下一層輸入大小,減小計算量和引數個數。
- 獲得定長輸出。(文字分類的時候輸入是不定長的,可以通過池化獲得定長輸出)
- 防止過擬合或有可能會帶來欠擬合
12.4 全連線層
全連線層就是 一個傳統的多層感知器 ,它在輸出層使用一個 softmax 啟用函式。
其主要作用就是將 前面卷積層提取到的特徵結合在一起然後進行分類 。
Softmax函式可以將輸入是一個任意實數分數的向量變成一個值的範圍是 0~1 的向量,但所有值的總和是 1。
在 CNN 出現之前,最早的深度學習網路計算型別都是全連線形式的。
比較卷積層和全連線層,卷積層在輸出特徵圖維度實現了 權值共享 ,這是降低引數量的重要舉措,同時,卷積層 區域性連線 特性(相比全連線)也大幅減少了引數量。
因此卷積層引數量佔比小,但計算量佔比大,而全連線層是引數量佔比大,計算量佔比小。所以在進行計算加速優化時,重點放在卷積層;在進行引數優化、權值剪裁時,重點放在全連線層。
12.5 反向傳播(Backpropagation)
CNN的整個訓練過程如下所示:
- 首先是隨機初始化所有濾波器以及其他引數和權重值;
- 輸入圖片,進行前向傳播,也就是經過卷積層,ReLU 和 pooling 運算,最後到達全連線層進行分類,得到一個分類的結果,也就是輸出一個包含每個類預測的概率值的向量;
- 計算誤差,也就是代價函式,這裡代價函式可以有多種計算方法,比較常用的有平方和函式;
- 使用反向傳播來計算網路中對應各個權重的誤差的梯度,一般是使用梯度下降法來更新各個濾波器的權重值,目的是為了讓輸出的誤差,也就是代價函式的值儘可能小。
- 重複上述第二到第四步,直到訓練次數達到設定好的值。
小結
常用的機器學習演算法就簡單介紹到這裡,下一篇會介紹模型的評估方法。
參考:
- 《統計學習方法》
- Ensemble learning:Bagging,Random Forest,Boosting
- 機器學習(四)--- 從gbdt到xgboost
- xgboost入門與實戰(原理篇)
- 機器學習演算法中GBDT和XGBOOST的區別有哪些?
- 常見的幾種最優化方法
- An Intuitive Explanation of Convolutional Neural Networks
- 對CNN中pooling的理解
- 《深度學習輕鬆學:核心演算法與視覺實踐》
- ResNet解析
歡迎關注我的微信公眾號--機器學習與計算機視覺,或者掃描下方的二維碼,大家一起交流,學習和進步!
