你們還記得上一篇《如何教媽媽學會數據準備》嗎?這一期咱們將試圖教會媽媽級小白選手創建模型並進行調優。html
在準備完畢的數據上,咱們再添上「seed1」這一列,以下圖所示。「seed1」列中的數值1表示該id是咱們已知的目標用戶,0表示不是咱們的目標用戶。python
(注意:在這裏咱們略爲粗暴地將未知特質用戶所有打上了0標籤,這是出於建模須要,但願讀者可以與真實情景進行區分)。bash
圖:聚合數據的前5行示意網絡
以後咱們將用 XGBoost 開展建模。 XGBoost 被視爲機器學習的一大利器,若是你還不瞭解它,就去看它的官方文檔吧。這是關於 XGBoost 最好的介紹文檔,簡潔明瞭,圖文並茂:https://xgboost.readthedocs.io/en/latest/index.htmldom
咱們須要對上述聚合數據進行切分,一份做爲訓練集,另外一份做爲測試集。
機器學習
之因此要這樣作,是爲了防止過擬合。所謂的過擬合,即下面的左圖。在過擬合時,訓練所得的模型與樣本數據幾乎能夠徹底貼合。這樣,模型就成爲這一份樣本數據的「量身定製」了,它只適用於這一份數據,泛化能力不好。ide
所以,爲了防止出現左圖的情形,咱們從樣本數據中抽出一部分(而不是所有)來作訓練,獲得模型後,再用另外一部分數據來評估模型好壞。若是在訓練集上獲得的模型可以很好地對測試集進行預測,那麼這就是一個使人滿意的模型。學習
咱們能夠用如下語句實現數據集的拆分。測試
圖:拆分爲訓練集與測試集優化
這個步驟聽起來使人懼怕,實際上只有一行。
訓練的核心語句是
1xgb.train(param, dtrain, num_round, evallist)複製代碼
括號中是咱們填入的參數,分別是xgboost的超級參數、數據集、訓練次數、評估結果。在賦值過程咱們把設定賦予參數,而後運行訓練語句便可。
1)超級參數。在實際運行的代碼中,咱們沒有特地設置超級參數,而是選擇了默認值(param = {})。讀者能夠參考官方文檔進行超級參數的設定。
圖:部分超級參數
2)數據集。以前咱們已經切分好了數據集,但還不夠。在這一步咱們要把數據準備爲 xgboost 可識別的 DMatrix 格式。
3)訓練次數。
4)評估結果。用一些評估方法(如均方偏差根rmse、auc等)對模型在訓練集和測試集上的表現進行評價。
從上圖能夠看出,隨着訓練次數的增多,均方偏差根rmse在降低,說明模型的表如今變好。
若是你對模型如今的效果足夠滿意,就能夠用當前的模型進行預測了。這意味着咱們的任務已經接近尾聲!
圖:用訓練完成的模型進行預測
XGBClassifier是xgboost的sklearn包,一樣的,方法二中的核心代碼也只有一句:
1XGBClassifier().fit(X_train, y_train)複製代碼
在這裏咱們直接使用了默認設定,讀者也可按照官方文檔說明自行設定,參數跟方法一中大致一致,具體見下(感到眼花繚亂的如今能夠跳過不看):
class xgboost.XGBClassifier(max_depth=3, learning_rate=0.1, n_estimators=100, silent=True, objective='binary:logistic', booster='gbtree', n_jobs=1, nthread=None, gamma=0, min_child_weight=1, max_delta_step=0, subsample=1, colsample_bytree=1, colsample_bylevel=1, reg_alpha=0, reg_lambda=1, scale_pos_weight=1, base_score=0.5, random_state=0, seed=None, missing=None, **kwargs)
中文版參數詳解:
https://blog.csdn.net/qq_36603091/article/details/80592157
圖:訓練模型
下圖中的 bst 就是咱們訓練所得的模型,拿來預測就能夠了。
雖然看起來已經完成了任務,但其實模型還有優化的空間,能夠按照下文中的步驟調參。
好了!最後具體的調優就交給讀者們本身完成。以上就是lookalike 任務的所有內容,下一期咱們再見!
本文轉自:TalkingData數據學堂
封面圖來源於網絡,若有侵權,請聯繫刪除