lightgbm 保存模型 過大_一個例子讀懂LightGBM的模型文件

機器學習模型的可解釋性是個讓人頭痛的問題。在使用LightGBM模型的肯定對生成的GBDT的結構是好奇的,我也好奇,所以就解析一個LightGBM的模型文件看看,通過這個解析,你可以看懂GBDT的結構。

另外,了解模型文件,能夠在此基礎上做模型的監控、評估。

訓練配置:

6307410個樣本做訓練集

num_trees = 2 // 樹的棵樹

categorical_feature=1,2,3,5,6,8,299 //類別特征編號

num_leaves = 6 // 每棵樹的葉子數

max_depth = 3 // 樹的深度

learning_rate = 0.1 // 學習率

bagging_fraction = 0.8 // 樣本采樣比例

訓練出的LightGBM模型文件及其含義解析:

tree // 模型中子模型的名字,gbdt的子模型是tree

num_class=1 // 類別數量,二分類問題變成了概率問題

label_index=0 // lable所在列

max_feature_idx=1365 //最大的特征index, 0~1365,LightGBM認為特征從0開始編碼

objective=binary //學習目標

sigmoid=1 //結果輸出時sigmoid的參數 output[0] = 1.0f / (1.0f + std::exp(-sigmoid_ * input[0]));,越大sigmoid越陡峭

feature_names=Column_0 Column_1 Column_2 ... Column_1363 Column_1364 Column_1365 // 特征名字,就是”Column_” + 數據中特征index

feature_infos=none 0:1 [0:10742] 1487112:0 [0:3999191] ...

// 沒有“[]”的是category 特征的bin中的特征取值

// 有“[]”是數值特征的bin中的最小、最大值

// none表示此特征沒有使用

// 第1棵樹

Tree=0 // 樹的編號,從0開始

num_leaves=6 // 樹中葉子的數量

split_feature=150 197 381 63 197 //6個葉子,分裂5次,有5個內部節點和分裂特征,這個特征編號是在原樣本中的特征編號

split_gain=579239.62681873201 101591.49813184602 78186.521895228478 75276.734034747526 57589.418844881991 // 每次分裂的增益

threshold=0.028499999999999998 0.016500000000000001 554.04549999999995 3.1340000000000003 0.043499999999999997 // 分裂特征的特征值分界點

decision_type=0 0 0 0 0 //5個內部節點的判定類型值,判定類型值是int8_t,以bit形式,第一低位存儲是否是category特征,第二低位存儲是否使用左子節點作為默認去向,第三、第四低位存儲是None(0)、Zero(1)、NaN(2)中的哪種

left_child=1 3 -2 -1 -4

right_child=2 -3 4 -5 -6

leaf_parent=3 2 1 4 3 4

// 樹的結構

// 有5個內部節點,默認編號是:0、1、2、3、4

// 有6個葉子節點,編號分別是:-1、-2、-3、-4、-5、-6

// left_child表示這5個內部節點的左子節點,正值表示內部節點的節點編號,負值表示葉子節點的節點編號

// right_child表示這5個內部節點的左子節點

// leaf_parent 表示-1、-2、-3、-4、-5、-6這6個葉子節點的父節點編號

// 于是這個樹的結構就是這樣

leaf_value=0.013151525839652695 -0.0031140914212769983 -0.017382907119786403 0.038475160439658297 -0.10110187665371873 0.091299535945193661 //各個葉子節點的預測值

leaf_count=171831 511580 1078379 893167 1432378 958588 // 各個葉子節點的樣本數量,這里總共有5045923個

internal_value=0 -0.55733646225250466 0.54728595683818304 -0.85735596237957235 0.67893796844992116 // 各個中間節點的預測值

internal_count=5045923 2682588 2363335 1604209 1851755 // 各個中間節點的樣本數,1604209[中間節點3的樣本數] = 171831 [葉子節點-1的樣本數] + 1432378[葉子節點-5的樣本數]

//可以看出這棵樹的訓練只用了5045923個樣本,而實際訓練集樣本有6307410個,這是因為在模型配置文件中設置了采樣比例為0.8

shrinkage=0.1 // 設定的學習率

// 第二棵樹,含義參考第一棵樹

Tree=1

num_leaves=6

split_feature=145 161 198 11 381

split_gain=474253.30131810816 93455.112333323515 62969.704987476958 55878.668231101008 32961.303899061735

threshold=0.026500000000000003 0.018500000000000003 0.043499999999999997 8.4154999999999998 663.125

decision_type=0 0 0 0 0

left_child=1 3 4 -1 -2

right_child=2 -3 -4 -5 -6

leaf_parent=3 4 1 2 3 4

leaf_value=0.010494795842311992 -0.024170274578830017 -0.010405728632592726 0.075110240965977765 -0.08865782202254327 0.038228215007066219

leaf_count=167445 301508 975432 1063548 1556038 981952

internal_value=0 -0.50125289035240339 0.49837677764421778 -0.76617891719378095 0.25393645325883307

internal_count=5045923 2698915 2347008 1723483 1283460

shrinkage=0.1

// 特征重要性

feature importances:

Column_197=2 // 特征197,重要性排最高,重要性值為2,表示在所有樹中有兩次作為中間節點的分裂特征

Column_381=2 // 所有樹中有兩次作為中間節點的分裂特征

Column_11=1 // 所有樹中有一次作為中間節點的分裂特征

Column_63=1

Column_145=1

Column_150=1

Column_161=1

Column_198=1

// 重要性值是統計特征在所有樹中作為中間節點(分裂節點)的分裂特征且分裂增益為正的次數,可以理解成是對分裂作用越大的特征越重要

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/394003.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/394003.shtml
英文地址,請注明出處:http://en.pswp.cn/news/394003.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Oracle Sql 胡亂記

/Oracle查詢優化改寫/ --1、coalesce 返回多個值中,第一個不為空的值 select coalesce(, , s) from dual; --2、order by -----dbms_random.value 生產隨機數,利用隨機數對查詢結果進行隨機排序 select * from emp order by dbms_random.value; --指定查詢結果中的一…

leetcode752. 打開轉盤鎖(bfs)

你有一個帶有四個圓形撥輪的轉盤鎖。每個撥輪都有10個數字: ‘0’, ‘1’, ‘2’, ‘3’, ‘4’, ‘5’, ‘6’, ‘7’, ‘8’, ‘9’ 。每個撥輪可以自由旋轉:例如把 ‘9’ 變為 ‘0’,‘0’ 變為 ‘9’ 。每次旋轉都只能旋轉一個撥輪的一位…

Object Pools 噴泉效果實現

摘錄自:http://catlikecoding.com/unity/tutorials/object-pools/ 工程 效果圖 工程里面有響應的注釋 源碼我就不單獨放出來了

從頭學習計算機網絡_我如何通過從頭開始構建網絡爬蟲來自動進行求職

從頭學習計算機網絡它是如何開始的故事 (The story of how it began) It was midnight on a Friday, my friends were out having a good time, and yet I was nailed to my computer screen typing away.星期五是午夜,我的朋友們出去玩得很開心,但我被釘…

php 動態生成文件,php動態程序生成靜態文件示例

html>{title}{content}tmp.html是模板文件/** 說明:生成靜態頁面,tmp.html是模板文件,news.html是要生成的文件,**///1,先讀取模板中內容$strfile_get_contents(tmp.html);//2,將指定的內容進行替換$title網站標題;…

網管的自我修養-網絡系統

目錄: 序章人際關系工具準備電腦維護網絡系統弱電系統外設相關信息系統服務器相關機房建設其他網管網管,會管網絡才算名副其實。管理一般中小企業的網絡,具備CCNA及以上水平就可以了。 一、規劃 首先要根據公司的人員工位數量、打印機傳真等設…

thinkphp日志泄漏漏洞_ThinkPHP框架被爆任意代碼執行漏洞

昨日ThinkPHP框架被爆出了一個php代碼任意執行漏洞,黑客只需提交一段特殊的URL就可以在網站上執行惡意代碼。ThinkPHP作為國內使用比較廣泛的老牌PHP MVC框架,有不少創業公司或者項目都用了這個框架。不過大多數開發者和使用者并沒有注意到本次漏洞的危害…

leetcode 113. 路徑總和 II(Path Sum II)

目錄 題目描述:示例:解法:題目描述: 給定一個二叉樹和一個目標和,找到所有從根節點到葉子節點路徑總和等于給定目標和的路徑。 說明: 葉子節點是指沒有子節點的節點。 示例: 給定如下二叉樹,以及目標和 sum 22&#x…

VMware下配置固定ip,于本機進行通信。

虛擬機裝好后,會生成虛擬的網絡信息。點開VMware下虛擬網絡編輯器。選擇net模式的記錄會發現設定好的網關及dns。 我們只需要在虛擬機上配好對于的ip 輸入 dns 和網關即可轉載于:https://blog.51cto.com/thlovesky/1967929

leetcode417. 太平洋大西洋水流問題(bfs)

給定一個 m x n 的非負整數矩陣來表示一片大陸上各個單元格的高度。“太平洋”處于大陸的左邊界和上邊界,而“大西洋”處于大陸的右邊界和下邊界。規定水流只能按照上、下、左、右四個方向流動,且只能從高到低或者在同等高度上流動。請找出那些水流既可以…

為什么測試喜歡ie_為什么我現在喜歡測試,以及為什么您也應該如此。

為什么測試喜歡ieby Evelyn Chan通過伊芙琳陳 為什么我現在喜歡測試,以及為什么您也應該如此。 (Why I now appreciate testing, and why you should, too.) There’s a common misconception that writing tests slows down development speed. While the benefit…

java制作五子棋的論文,基于java的五子棋的設計與實現.docx

摘要:隨著社會的不斷發展,我們的科技也不斷的進步,現在我們的計算機也與我們的生活息息相關,這個時候 Internet能夠讓我們快速的知道自己想了解的知識。根據計算機的發展過程我們發現如今計算機應用的現狀還有現在的發展趨勢&…

tomcat 控制臺亂碼 windows下

tomcat啟動時控制臺亂碼。但是看日志又是正常編碼,只是控制臺是亂碼。 找到 config/logging.properties java.util.logging.ConsoleHandler.encoding UTF-8 改成 java.util.logging.ConsoleHandler.encoding GBK! 轉載于:https://www.cnblogs.com/wangge01/p/10786101.html…

python獲取重定向url_python中檢測url重定向到的地址的例子

2016年最長的假期也過了,這周連上7天班,之前還覺得挺恐怖,沒想到這周真是要忙死的節湊,還真沒覺得多漫長,一晃明天就周五了,干運維的就是突發的事情多,冷不丁的不知道哪里就冒出個問題&#xff…

本地模式運行spark streaming程序(win7安裝nc命令通信)

2019獨角獸企業重金招聘Python工程師標準>>> 首先在win7上安裝nc命令 下載nc程序包,放在c盤目錄下,cmd打開命令行,進入nc目錄,執行:nc -l -L -p 8888開始監控。再打開一個命令行窗口進入nc目錄,…

leetcode343. 整數拆分(dp)

給定一個正整數 n,將其拆分為至少兩個正整數的和,并使這些整數的乘積最大化。 返回你可以獲得的最大乘積。 示例 1: 輸入: 2 輸出: 1 解釋: 2 1 1, 1 1 1。 class Solution {public int integerBreak(int n) {int[] dpnew int[n1];dp[1]1;for(int…

java驗證碼畫布類型,【Java工具類】使用Kaptcha生成驗證碼寫回頁面中

1. 導入依賴導入kaptcha依賴:com.github.pengglekaptcha2.3.22. 編寫配置類:Configurationpublic class KaptchaConfig {Beanpublic Producer kaptchaProducer() {Properties properties new Properties();properties.setProperty("kaptcha.image.width","100&…

如何用js獲取瀏覽器URL中查詢字符串的參數

首先要知道Location這個對象以及這個對象中的一些屬性: href:設置或返回完整的url.如本博客首頁返回http://www.cnblogs.com/wymninja/ host:設置或返回主機名和當前的URL的端口號。本博客首頁返回www.cnblogs.com hostname:設置或返回當前URL的主機名。本博客首頁返…

測試無服務器應用程序的最佳方法

Serverless is more than a cloud computing execution model. It changes the way we plan, build, and deploy apps. But it also changes the way we test our apps.無服務器不僅僅是云計算執行模型。 它改變了我們計劃,構建和部署應用程序的方式。 但這也改變了…

nginx反向代理打印日志_nginx啟用TCP反向代理日志配置

Nginx使用TCP反向代理日志配置不同于http修改nginx配置文檔/usr/local/nginx/conf/nginx.conf 設置日志格式stream {log_format proxy ‘$remote_addr [$time_local] ‘‘$protocol $status $bytes_sent $bytes_received ‘‘$session_time "$upstream_addr" ‘‘&qu…