換個新方式實現ML調優:3D視覺化了解下!
這篇文章的大部分內容是互動視覺化,都是可以懸停、縮放和移動的。在計算機上閱讀比在手機上閱讀更好,如果一定要用手機的話,橫向模式會比縱向模式更好一些。(原文連結:https://towardsdatascience.com/using-3d-visualizations-to-tune-hyperparameters-of-ml-models-with-python-ba2885eab2e9)
如果你正在嘗試開發Kaggle的解決方案,如一場Rossmann商店銷售競賽。那麼您可能已經完成了許多特徵工程並建立了大量的新變數,它們可以幫助您更好地預測未來的銷售。
您已經建立了一個隨機森林,並且您可能正嘗試找到其最佳超引數。您想要評估1000種可能的組合,可以執行隨機搜尋以僅分析它們的子樣本或網格搜尋來探索完整的引數網格。
如果你做後者,現在可能會有一些資料。使用rf_gridsearch.best_params_,您可以獲得在測試集上產生的最佳結果的3個引數(max_features:0.25,min_samples_split:13,n_estimators:45)。但是,如果您想要在3個維度上視覺化所訓練的所有隨機森林的表現,該怎麼辦?
這些流行語是什麼意思?
決策樹是一種受監督的機器學習演算法,在給定資料集的情況下,遞迴地將其劃分為具有彼此更相似的目標變數的子集。給定一些用於訓練它的自變數的新資料,它可以預測因變數。
隨機森林(從現在開始的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平方)執行良好。一般來說,模型越複雜,在訓練組中的得分就越高。在測試集上,它也會隨著模型的複雜性而增加,但在某一點之後它不會增加反而也會減少。我們用交叉驗證做的就是試圖找到這一點。
在我們的例子中,模型複雜度是3個超引數的函式。我們接下來要做的是嘗試在超引數的三維網格中找到最好的模型,以及所有的組合是如何執行的。請注意,在圖中我使用了測試集和測試分數,但我所指的是驗證。
第一:2D熱圖
作為一種快速方法,我們可以使用不同引數對上繪製熱圖,以檢視在測試和訓練設定中達到最大R2的區域。這可以通過幾行來完成:
但是這樣做我們仍然只會看到一小部分結果。要檢視所有這些(並且以比熱圖更清晰的方式),我們需要建立3D視覺化。
Scatter3D
通過Plotly,我們可以建立各種各樣的互動式視覺化。首先,讓我們建立一個三維散點圖,其中點的大小與訓練時間成正比,顏色與測試集中的R2得分成比例。
儘管效果還不錯,但我們仍然看不到多少。可以說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維驗證曲線,如果我們新增滑塊來移動第三個變數,我們可以有效地看到與前一個圖中相同的資訊,但是會以更加清晰的方式。
或者,如果您更喜歡3D散點圖,這樣你就可以看到每個單獨的點。如果點的大小與訓練時間成正比,那麼顏色與R2分數成正比。
最後一步
有一種方法可以顯示第一個3D散點圖,但是使得測試得分最高的點比其他點大得多,這樣我們就可以專注於它們。這是通過將平均測試分數除以其最大值,並以特殊方式縮放以獲得我們想要的大小來完成的。
最後,如果我們這樣做,這個圖就是這樣子的。現在看到的重點更清楚了:
如果我們想進一步優化4個超引數,我們可以將第4維作為滑塊新增到此圖中,就像之前的情況一樣,並且能夠通過4維有效地視覺化資料。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31545819/viewspace-2220768/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 巧用模糊實現視覺的 3D 效果視覺3D
- 查詢效能提升3倍!Apache Hudi 查詢優化了解下?Apache優化
- 用TensorFlow實現ML模型並調優:每秒可做3億次預測模型
- 三個3D視覺化案例:不只酷炫,實用最重要3D視覺化
- 3D視覺化|疫情態勢視覺化3D視覺化
- 資料視覺化呈現方式有哪些視覺化
- 揭秘空間站模型3D視覺化新紀元模型3D視覺化
- 基於WebGL架構的3D視覺化平臺—三維裝置管理(ThingJS實現樓宇裝置管理3D視覺化)Web架構3D視覺化JS
- AutoCAD Plant 3D 2024:實現工廠設計視覺化的強大引擎3D視覺化
- 探索跨海大橋新境界:3D視覺化技術的魔力3D視覺化
- Etsy使用交錯新演算法實現更快的ML實驗演算法
- Hive-常見調優方式 && 兩個面試sqlHive面試SQL
- 基於 HTML5 WebGL + WebVR 的 3D 虛實現實視覺化培訓系統HTMLWebVR3D視覺化
- 3d視覺化建模定製3D視覺化
- 3d視覺化模具定製3D視覺化
- 被優化了怎麼辦?優化
- 3D視覺:一張影像如何看出3D效果?3D視覺
- 第37篇 JVM調優方式JVM
- Diff到底是怎麼更新的?這個小玩具將Diff的過程視覺化了出來視覺化
- Python 如何實現資料視覺化Python視覺化
- 現實生活中的視覺符號視覺符號
- 虛擬現實 VR + 3D 視覺化,打造一體化高階管控平臺VR3D視覺化
- 來了解下計算機視覺的八大應用計算機視覺
- 3d視覺化產品定製3D視覺化
- 10個最佳的3D視覺化軟體平臺推薦3D視覺化
- 2020 一個 30 歲的程式設計師被優化了程式設計師優化
- 企業市值排名3D視覺化,重塑商業版圖新維度3D視覺化
- 發現一個實現簡單地圖示註的視覺化軟體地圖視覺化
- threejs+tweenjs實現3D粒子模型切換JS3D模型
- css3帶你實現3D轉換效果CSSS33D
- 虛擬現實 VR 碰撞 3D 視覺化,圖撲打造一體化管控平臺VR3D視覺化
- 一個較為完備的 antd 視覺化編輯器實現視覺化
- AudioContext+canvas實現音訊視覺化ContextCanvas音訊視覺化
- 視覺單目測距原理及實現視覺
- Rosbag使用:bag檔案視覺化實現ROS視覺化
- 使用Echarts來實現資料視覺化Echarts視覺化
- 大資料視覺化該如何實現大資料視覺化
- 3D視覺演算法初學概述3D視覺演算法