1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        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è)極簡(jiǎn)實(shí)例。最近我發(fā)現(xiàn)Huggingface與Streamlit好像更配,所以就開(kāi)發(fā)了一個(gè)簡(jiǎn)易的 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)過(guò)程:

        LightGBM 的參數(shù)

        在完成模型構(gòu)建之后,必須對(duì)模型的效果進(jìn)行評(píng)估,根據(jù)評(píng)估結(jié)果來(lái)繼續(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樹(shù)的最大深度當(dāng)模型過(guò)擬合時(shí),可以考慮首先降低 max_depth
        min_data_in_leaf葉子可能具有的最小記錄數(shù)默認(rèn)20,過(guò)擬合時(shí)用
        feature_fraction例如 為0.8時(shí),意味著在每次迭代中隨機(jī)選擇80%的參數(shù)來(lái)建樹(shù)boosting 為 random forest 時(shí)用
        bagging_fraction每次迭代時(shí)用的數(shù)據(jù)比例用于加快訓(xùn)練速度和減小過(guò)擬合
        early_stopping_round如果一次驗(yàn)證數(shù)據(jù)的一個(gè)度量在最近的early_stopping_round 回合中沒(méi)有提高,模型將停止訓(xùn)練加速分析,減少過(guò)多迭代
        lambda指定正則化0~1
        min_gain_to_split描述分裂的最小 gain控制樹(shù)的有用的分裂
        max_cat_group在 group 邊界上找到分割點(diǎn)當(dāng)類別數(shù)量很多時(shí),找分割點(diǎn)很容易過(guò)擬合時(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 回合中沒(méi)有提高,模型將停止訓(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 來(lái)做 sub-sampling
        用 feature_fraction
        用 bagging_fraction 和 bagging_freq
        設(shè)定 bagging_fraction 和 bagging_freq
        training data 多一些training data 多一些
        用 save_binary 來(lái)加速數(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 控制樹(shù)的深度

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

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

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

        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)是在二分類問(wèn)題中,模型評(píng)估階段常被用作最重要的評(píng)估指標(biāo)來(lái)衡量模型的穩(wěn)定性。ROC曲線下的面積稱為AUC面積,AUC面積越大說(shuō)明ROC曲線越靠近左上角,模型越優(yōu);

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

        Streamlit我就不再多做介紹了,老讀者應(yīng)該都特別熟悉了。就再列一下之前開(kāi)發(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("請(qǐng)選擇模型參數(shù):sunglasses:")

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

        #?劃分訓(xùn)練數(shù)據(jù)和測(cè)試數(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)介紹過(guò)了,這里就順便再講一下步驟吧。

        step1:注冊(cè)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ì)讓輸入用戶名(就是你的注冊(cè)郵箱)和密碼,解決git總輸入用戶名和密碼的問(wèn)題:git config --global credential.helper store

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

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


        1. Python里的self是誰(shuí)?

        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)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            精品天堂| 美女骚逼被操 | 性受XXXX黑人XYX性爽 | 被同桌强行用情趣用品调教我 | 国产传媒在线观看 | 啊啊啊好舒服视频 | 污污网站大全 | 天天日天天射综合网 | 久久久精品www | 精品无码国产污污污免费网站 |