機器學習工具箱的必備算法:XGBoost

機器學習工具箱的必備算法:XGBoost

> Image by WikiImages from Pixabay

最高效的機器學習算法之一

XGBoost是一種監督學習算法,可用於迴歸和分類。 與所有算法一樣,它也有其優點和缺點,我們一定會逐步介紹其優點。

在本文中,我們將僅從分類問題的背景中學習XGBoost。 對於迴歸部分,請確保隨時關注我在datasciencelessons.com上的博客。

監督學習趕上

我不會在這裡深入探討,但是對於那些需要在有監督的學習中快速複習的人而言; 監督學習是指您有特定的想法要預測時。 例如,您要預測未來的房價; 因此,您有想要預測的內容,下一步就是標記歷史數據,以預測未來。 更深入地研究這個例子; 假設您想出售房屋,但想知道應該支付的價格,則可能會積累有關房屋的數據點以及該房屋在同一時期的價格。 從這一點出發,您將訓練一個模型,將有關您自己房屋的數據點傳遞到該模型,以生成有關房屋價值的預測。 對於您的預測班級的分類示例; 假設您的Gmail想要預測垃圾郵件……這需要一個模型來訓練許多被"標籤"為垃圾郵件的電子郵件,以及相應數量的未標記為垃圾郵件的郵件。

到底是什麼

XGBoost使用所謂的集成方法。 無需過多介紹集成方法,XGBoost的獨特之處在於它如何利用許多模型的輸出來生成其預測! XGBoost利用許多所謂的"弱學習者"來產生"強學習者"。

XGBoost流程如下所示:

· 迭代訓練許多弱模型

· 根據效果加權每個預測

· 結合許多加權預測得出最終輸出。

是什麼使XGBoost如此受歡迎?

· 準確性

· 速度

· 該算法很好地利用了現代計算,使其自身可以並行化

· 與其他算法一致的出色表現

您的第一個XGBoost模型

讓我們分解步驟!

· 首先,請以python導入XGBoost包

· 分別使用y和X分解因變量和自變量

· 打破火車測試分裂

· 實例化您的分類器

· 訓練您的分類器

· 為您的測試集預測

· 評估準確性!

在此示例中,我們將對泰坦尼克號上的生存進行分類。

<code>import xgboost as xgb 
from sklearn.model_selection import train_test_split
X, y = titanic.iloc[:,:-1], titanic.iloc[:,-1]
X_train, X_test, y_train, y_test= train_test_split(X, y, test_size=.2, random_state=44)
xgb_model = xgb.XGBClassifier(objective='binary:logistic', n_estimators= 7, seed=44)
xgb_model.fit(X_train, y_train) 
pred = xgb_model.predict(X_test)
accuracy = float(np.sum(pred == y_test)) / y_test.shape[0]/<code>

做得好! 那是很棒的第一關! 讓我們進一步瞭解如何評估模型的質量。

績效評估

我們已經在上面的代碼片段中看到了準確性,但是混淆矩陣還有其他方面,即準確性和召回率。 我在這裡不會談論這兩個問題,但是如果您想了解更多信息,請跳至有關隨機森林算法的這篇文章:
https://datasciencelessons.com/2019/08/13/random-forest-for- r-分類/

除了這些,我想談談AUC。

簡而言之; 如果您選擇一個正數據點和一個負數據點,則AUC是正數據點比負數據點排名更高的概率。

XGBoost允許您運行交叉驗證測試並指定您在核心算法調用本身中關心的指標。 這部分是通過創建一個稱為dmatrix的數據結構來完成的,該數據結構由X和y值組成。

這次的核心區別在於,我們將創建dmatrix,指定模型參數,然後生成將指標指定為AUC的輸出。

<code>titanic_dm = xgb.DMatrix(data=X, label=y)
params = {"objective":"reg:logistic", "max_depth":3}
output = xgb.cv(dtrain=titanic_dm, params=params, nfold=3, num_boost_round=5, metrics="auc", as_pandas=True, seed=123)
print((output["test-auc-mean"]).iloc[-1])/<code>

您應該多久使用一次?

XGBoost並非在每次需要預測某些內容時都使用。 但是,在正確的情況下它可能非常有用:

· 你有很多訓練數據

· 您不僅擁有分類數據,而且還可以很好地混合使用數字變量和分類變量,或者僅僅是數字變量。

您肯定要使XGBoost遠離計算機視覺和與nlp相關的任務…或者如果您的數據非常有限。

與往常一樣,我希望這對您的數據科學工作有幫助! 請務必在datasciencelessons.com上查看我的其他帖子!

快樂數據科學!

(本文翻譯自Robert Wood的文章《A Must-have Algorithm for Your Machine Learning Toolbox: XGBoost》,參考:
https://towardsdatascience.com/a-must-have-algorithm-for-your-machine-learning-toolbox-xgboost-3e295cf8d69b)


分享到:


相關文章: