換個新方式實現ML調優:3D視覺化了解下!

人工智慧頻道發表於2018-11-20

這篇文章的大部分內容是互動視覺化,都是可以懸停、縮放和移動的。在計算機上閱讀比在手機上閱讀更好,如果一定要用手機的話,橫向模式會比縱向模式更好一些。(原文連結:https://towardsdatascience.com/using-3d-visualizations-to-tune-hyperparameters-of-ml-models-with-python-ba2885eab2e9)

如果你正在嘗試開發Kaggle的解決方案,如一場Rossmann商店銷售競賽。那麼您可能已經完成了許多特徵工程並建立了大量的新變數,它們可以幫助您更好地預測未來的銷售。

您已經建立了一個隨機森林,並且您可能正嘗試找到其最佳超引數。您想要評估1000種可能的組合,可以執行隨機搜尋以僅分析它們的子樣本或網格搜尋來探索完整的引數網格。

換個新方式實現ML調優:3D視覺化了解下!

一些引數在對數刻度上均勻分佈。你可以用np.logspace做到這一點

如果你做後者,現在可能會有一些資料。使用rf_gridsearch.best_params_,您可以獲得在測試集上產生的最佳結果的3個引數(max_features:0.25,min_samples_split:13,n_estimators:45)。但是,如果您想要在3個維度上視覺化所訓練的所有隨機森林的表現,該怎麼辦?

這些流行語是什麼意思?

決策樹是一種受監督的機器學習演算法,在給定資料集的情況下,遞迴地將其劃分為具有彼此更相似的目標變數的子集。給定一些用於訓練它的自變數的新資料,它可以預測因變數。

換個新方式實現ML調優:3D視覺化了解下!

用於迴歸的決策樹

隨機森林(從現在開始的RF)是決策樹的集合,其在完整訓練資料的子集上訓練並使用特徵的子集。這允許他們具有較少相關的個體決策樹,從而它們將更好地概括並且具有更少的過度擬合。它們比神經網路訓練更快,並且是解決結構化資料的分類和迴歸問題的第一次嘗試。

我們可以在RF中設定幾個超引數。在scikit-learn的文件中閱讀所有這些內容。其中最重要的是:

  • n_estimators:RF中的樹數。

  • min_samples_split:子集(也稱為節點)中的最小樣本數,以將其拆分為兩個以上的子集。與min_samples_leaf和max_depth相關

  • max_features:拆分節點時要考慮的最大特徵數(獨立變數)

RF的複雜性隨著更高的n_estimators,max_features和更低的min_samples_split而增加。

交叉驗證是一種用於在機器學習模型中查詢最佳超引數的技術。為了執行它,我們必須將資料劃分為3個子集:一組訓練集(用於訓練模型)、一組驗證集(用於優化超引數)和一組測試集(用於檢查模型最終的效能,就好像我們已經在生產中了)。我們使用一些得分來評估模型的效能,該得分將根據我們試圖解決的問題型別(迴歸、分類、聚類......)而變化。

對於迴歸,R2(R平方)執行良好。一般來說,模型越複雜,在訓練組中的得分就越高。在測試集上,它也會隨著模型的複雜性而增加,但在某一點之後它不會增加反而也會減少。我們用交叉驗證做的就是試圖找到這一點。

換個新方式實現ML調優:3D視覺化了解下!


在我們的例子中,模型複雜度是3個超引數的函式。我們接下來要做的是嘗試在超引數的三維網格中找到最好的模型,以及所有的組合是如何執行的。請注意,在圖中我使用了測試集和測試分數,但我所指的是驗證。

第一:2D熱圖

作為一種快速方法,我們可以使用不同引數對上繪製熱圖,以檢視在測試和訓練設定中達到最大R2的區域。這可以通過幾行來完成:

換個新方式實現ML調優:3D視覺化了解下!


換個新方式實現ML調優:3D視覺化了解下!


換個新方式實現ML調優:3D視覺化了解下!

測試集的R2分數

換個新方式實現ML調優:3D視覺化了解下!


換個新方式實現ML調優:3D視覺化了解下!

訓練集的R2分數

但是這樣做我們仍然只會看到一小部分結果。要檢視所有這些(並且以比熱圖更清晰的方式),我們需要建立3D視覺化。

Scatter3D

通過Plotly,我們可以建立各種各樣的互動式視覺化。首先,讓我們建立一個三維散點圖,其中點的大小與訓練時間成正比,顏色與測試集中的R2得分成比例。

換個新方式實現ML調優:3D視覺化了解下!


儘管效果還不錯,但我們仍然看不到多少。可以說max_features越大,min_samples_split越小,測試得分就越大,但是很難將滑鼠懸停在3D散點圖中間的點上。

詳細程式碼:https://github.com/xoelop/Medium-posts/blob/master/3d%20cross%20validation/ML%206%20-%20Gridsearch%20visulizations%20.ipynb

更好的方式:新增滑塊

我們有3個自變數,首先我們試圖優化3個引數,更直觀的方法是保持其中一個的值固定,並繪製測試R2分數相對於其他兩個變數的3D曲面。

這更接近我們以前看到的1維驗證曲線,如果我們新增滑塊來移動第三個變數,我們可以有效地看到與前一個圖中相同的資訊,但是會以更加清晰的方式。

換個新方式實現ML調優:3D視覺化了解下!


或者,如果您更喜歡3D散點圖,這樣你就可以看到每個單獨的點。如果點的大小與訓練時間成正比,那麼顏色與R2分數成正比。

換個新方式實現ML調優:3D視覺化了解下!


最後一步

換個新方式實現ML調優:3D視覺化了解下!

我們看看縮放後氣泡的大小如何

有一種方法可以顯示第一個3D散點圖,但是使得測試得分最高的點比其他點大得多,這樣我們就可以專注於它們。這是通過將平均測試分數除以其最大值,並以特殊方式縮放以獲得我們想要的大小來完成的。

換個新方式實現ML調優:3D視覺化了解下!


最後,如果我們這樣做,這個圖就是這樣子的。現在看到的重點更清楚了:

換個新方式實現ML調優:3D視覺化了解下!


如果我們想進一步優化4個超引數,我們可以將第4維作為滑塊新增到此圖中,就像之前的情況一樣,並且能夠通過4維有效地視覺化資料。

換個新方式實現ML調優:3D視覺化了解下!



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31545819/viewspace-2220768/,如需轉載,請註明出處,否則將追究法律責任。

相關文章