<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          LightGBM 可視化調(diào)參

          共 4531字,需瀏覽 10分鐘

           ·

          2022-04-12 02:10

          ↓↓↓點(diǎn)擊關(guān)注,回復(fù)資料,10個(gè)G的驚喜

          大家好,在100天搞定機(jī)器學(xué)習(xí)|Day63 徹底掌握 LightGBM一文中,我介紹了LightGBM 的模型原理和一個(gè)極簡實(shí)例。最近我發(fā)現(xiàn)Huggingface與Streamlit好像更配,所以就開發(fā)了一個(gè)簡易的 LightGBM 可視化調(diào)參的小工具,旨在讓大家可以更深入地理解 LightGBM

          網(wǎng)址:
          https://huggingface.co/spaces/beihai/LightGBM-parameter-tuning

          只隨便放了幾個(gè)參數(shù),調(diào)整這些參數(shù)可以實(shí)時(shí)看到模型評(píng)估指標(biāo)的變化。代碼我也放到文章中了,大家有好的優(yōu)化思路可以留言。

          下面就詳細(xì)介紹一下實(shí)現(xiàn)過程:

          LightGBM 的參數(shù)

          在完成模型構(gòu)建之后,必須對(duì)模型的效果進(jìn)行評(píng)估,根據(jù)評(píng)估結(jié)果來繼續(xù)調(diào)整模型的參數(shù)、特征或者算法,以達(dá)到滿意的結(jié)果。

          LightGBM,有核心參數(shù),學(xué)習(xí)控制參數(shù),IO參數(shù),目標(biāo)參數(shù),度量參數(shù),網(wǎng)絡(luò)參數(shù),GPU參數(shù),模型參數(shù),這里我常修改的便是核心參數(shù),學(xué)習(xí)控制參數(shù),度量參數(shù)等。

          Control Parameters含義用法
          max_depth樹的最大深度當(dāng)模型過擬合時(shí),可以考慮首先降低 max_depth
          min_data_in_leaf葉子可能具有的最小記錄數(shù)默認(rèn)20,過擬合時(shí)用
          feature_fraction例如 為0.8時(shí),意味著在每次迭代中隨機(jī)選擇80%的參數(shù)來建樹boosting 為 random forest 時(shí)用
          bagging_fraction每次迭代時(shí)用的數(shù)據(jù)比例用于加快訓(xùn)練速度和減小過擬合
          early_stopping_round如果一次驗(yàn)證數(shù)據(jù)的一個(gè)度量在最近的early_stopping_round 回合中沒有提高,模型將停止訓(xùn)練加速分析,減少過多迭代
          lambda指定正則化0~1
          min_gain_to_split描述分裂的最小 gain控制樹的有用的分裂
          max_cat_group在 group 邊界上找到分割點(diǎn)當(dāng)類別數(shù)量很多時(shí),找分割點(diǎn)很容易過擬合時(shí)

          CoreParameters含義用法
          Task數(shù)據(jù)的用途選擇 train 或者 predict
          application模型的用途選擇 regression: 回歸時(shí),binary: 二分類時(shí),multiclass: 多分類時(shí)
          boosting要用的算法gbdt, rf: random forest, dart: Dropouts meet Multiple Additive Regression Trees, goss: Gradient-based One-Side Sampling
          num_boost_round迭代次數(shù)通常 100+
          learning_rate如果一次驗(yàn)證數(shù)據(jù)的一個(gè)度量在最近的 early_stopping_round 回合中沒有提高,模型將停止訓(xùn)練常用 0.1, 0.001, 0.003…
          num_leaves
          默認(rèn) 31
          device
          cpu 或者 gpu
          metric
          mae: mean absolute error , mse: mean squared error , binary_logloss: loss for binary classification , multi_logloss: loss for multi classification

          Faster Speedbetter accuracyover-fitting
          將 max_bin 設(shè)置小一些用較大的 max_binmax_bin 小一些
          num_leaves 大一些num_leaves 小一些
          用 feature_fraction 來做 sub-sampling
          用 feature_fraction
          用 bagging_fraction 和 bagging_freq
          設(shè)定 bagging_fraction 和 bagging_freq
          training data 多一些training data 多一些
          用 save_binary 來加速數(shù)據(jù)加載直接用 categorical feature用 gmin_data_in_leaf 和 min_sum_hessian_in_leaf
          用 parallel learning用 dart用 lambda_l1, lambda_l2 ,min_gain_to_split 做正則化
          num_iterations 大一些,learning_rate 小一些用 max_depth 控制樹的深度

          模型評(píng)估指標(biāo)

          以分類模型為例,常見的模型評(píng)估指標(biāo)有一下幾種:

          混淆矩陣
          混淆矩陣是能夠比較全面的反映模型的性能,從混淆矩陣能夠衍生出很多的指標(biāo)來。

          ROC曲線
          ROC曲線,全稱The Receiver Operating Characteristic Curve,譯為受試者操作特性曲線。這是一條以不同閾值 下的假正率FPR為橫坐標(biāo),不同閾值下的召回率Recall為縱坐標(biāo)的曲線。讓我們衡量模型在盡量捕捉少數(shù)類的時(shí)候,誤傷多數(shù)類的情況如何變化的。

          AUC
          AUC(Area Under the ROC Curve)指標(biāo)是在二分類問題中,模型評(píng)估階段常被用作最重要的評(píng)估指標(biāo)來衡量模型的穩(wěn)定性。ROC曲線下的面積稱為AUC面積,AUC面積越大說明ROC曲線越靠近左上角,模型越優(yōu);

          Streamlit 實(shí)現(xiàn)

          Streamlit我就不再多做介紹了,老讀者應(yīng)該都特別熟悉了。就再列一下之前開發(fā)的幾個(gè)小東西:

          核心代碼如下,完整代碼我放到Github,歡迎大家給個(gè)Star

          https://github.com/tjxj/visual-parameter-tuning-with-streamlit

          from?definitions?import?*

          st.set_option('deprecation.showPyplotGlobalUse',?False)
          st.sidebar.subheader("請選擇模型參數(shù):sunglasses:")

          #?加載數(shù)據(jù)
          breast_cancer?=?load_breast_cancer()
          data?=?breast_cancer.data
          target?=?breast_cancer.target

          #?劃分訓(xùn)練數(shù)據(jù)和測試數(shù)據(jù)
          X_train,?X_test,?y_train,?y_test?=?train_test_split(data,?target,?test_size=0.2)

          #?轉(zhuǎn)換為Dataset數(shù)據(jù)格式
          lgb_train?=?lgb.Dataset(X_train,?y_train)
          lgb_eval?=?lgb.Dataset(X_test,?y_test,?reference=lgb_train)

          #?模型訓(xùn)練
          params?=?{'num_leaves':?num_leaves,?'max_depth':?max_depth,
          ????????????'min_data_in_leaf':?min_data_in_leaf,?
          ????????????'feature_fraction':?feature_fraction,
          ????????????'min_data_per_group':?min_data_per_group,?
          ????????????'max_cat_threshold':?max_cat_threshold,
          ????????????'learning_rate':learning_rate,'num_leaves':num_leaves,
          ????????????'max_bin':max_bin,'num_iterations':num_iterations
          ????????????}

          gbm?=?lgb.train(params,?lgb_train,?num_boost_round=2000,?valid_sets=lgb_eval,?early_stopping_rounds=500)
          lgb_eval?=?lgb.Dataset(X_test,?y_test,?reference=lgb_train)??
          probs?=?gbm.predict(X_test,?num_iteration=gbm.best_iteration)??#?輸出的是概率結(jié)果??

          fpr,?tpr,?thresholds?=?roc_curve(y_test,?probs)
          st.write('------------------------------------')
          st.write('Confusion?Matrix:')
          st.write(confusion_matrix(y_test,?np.where(probs?>?0.5,?1,?0)))

          st.write('------------------------------------')
          st.write('Classification?Report:')
          report?=?classification_report(y_test,?np.where(probs?>?0.5,?1,?0),?output_dict=True)
          report_matrix?=?pd.DataFrame(report).transpose()
          st.dataframe(report_matrix)

          st.write('------------------------------------')
          st.write('ROC:')

          plot_roc(fpr,?tpr)

          上傳Huggingface

          Huggingface 前一篇文章(騰訊的這個(gè)算法,我搬到了網(wǎng)上,隨便玩!)我已經(jīng)介紹過了,這里就順便再講一下步驟吧。

          step1:注冊Huggingface賬號(hào)

          step2:創(chuàng)建Space,SDK記得選擇Streamlit

          step3:克隆新建的space代碼,然后將改好的代碼push上去

          git?lfs?install?
          git?add?.
          git?commit?-m?"commit?from?$beihai"
          git?push

          push的時(shí)候會(huì)讓輸入用戶名(就是你的注冊郵箱)和密碼,解決git總輸入用戶名和密碼的問題:git config --global credential.helper store

          push完成就大功告成了,回到你的space頁對(duì)應(yīng)項(xiàng)目,就可以看到效果了。

          https://huggingface.co/spaces/beihai/LightGBM-parameter-tuning


          1. Python里的self是誰?

          2. 用Excel玩機(jī)器學(xué)習(xí)!

          3. Transformer總結(jié)-2022版

          4. 用瀏覽器玩機(jī)器學(xué)習(xí),贊!

          5. AI黑科技!從此只看高清視頻

          6. AI 黑科技,老照片修復(fù),模糊變高清

          瀏覽 57
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  高清在线视频一区 | 色色色五月天婷婷 | AA黄色片视频 | 韩国三级精品 | 久久久无码精品成人A片小说 |