機器學習——決策樹(筆記)

目錄

一、認識決策樹

1. 介紹

2. 決策樹生成過程

二、sklearn中的決策樹

1. tree.DecisionTreeClassifier(分類樹)

(1)模型基本參數

(2)模型屬性

(3)接口

2. tree.DecisionTreeRegressor(回歸樹)

3. tree.export_graphviz(將生成的決策樹導出為DOT格式,畫圖專用)

4. 其他(補充)

三、決策樹的優缺點

1. 優點

2. 缺點


一、認識決策樹

1. 介紹

????????決策樹(Decision Tree)是一種非參數的有監督學習方法,它能夠從一系列 有特征和標簽的數據中總結出決策規則,并用樹狀圖的結構來呈現這些規則,以解決分類和回歸問題。決策樹算法容易理解,適用各種數據,在解決各種問題時都有良好表現,尤其是以樹模型為核心的各種集成算法,在各個行業和領域都有廣泛的應用。

2. 決策樹生成過程

????????上面這組數據集為 一系列已知物種以及所屬類別的數據。我們現在的目標是,將動物們分為哺乳類和非哺乳類。根據已經收集到的數據,決策樹算法 可以算出了下面的 這棵決策樹:

????????假如我們現在發現了一種 新物種 A,它是冷血動物,體表帶鱗片,并且不是胎生,我們就可以通過這棵決策樹來判斷它的 所屬類別

涉及關鍵概念:節點

? ?① 根節點:沒有進邊,有出邊。包含最初的,針對特征的提問。

? ?② 中間節點:既有進邊也有出邊,進邊只有一條,出邊可以有很多條。都是針對特征的提問。

? ?③ 葉子節點:有進邊,沒有出邊,每個葉子節點都是一個類別標簽。

? ?④ 子節點和父節點:在兩個相連的節點中,更接近根節點的是父節點,另一個是子節點。

二、sklearn中的決策樹

????????涉及模塊:sklearn.tree

1. tree.DecisionTreeClassifier(分類樹)

(1)模型基本參數

(2)模型屬性

(3)接口

2. tree.DecisionTreeRegressor(回歸樹)

重要參數criterion

????????回歸樹 衡量分枝質量的 指標,支持的標準有三種:

????① 輸入“mse”使用均方誤差mean squared error(MSE),父節點和葉子節點之間的 均方誤差的差額 將被用來作為 特征選擇的標準,這種方法通過使用 葉子節點的均值來 最小化 L2損失。

? ? ?② 輸入“friedman_mse”,使用費爾德曼均方誤差,這種指標使用弗里德曼針對潛在分枝中的問題改進后的均方誤差。

? ? ?③ 輸入“mae”使用絕對平均誤差MAE (mean absolute error),這種指標使用葉節點的中值來 最小化 L1損失。

3. tree.export_graphviz(將生成的決策樹導出為DOT格式,畫圖專用)

4. 其他(補充)

????????① 信息熵的計算比基尼系數緩慢一些,因為基尼系數的計算不涉及對數。另外,因為信息熵對不純度更加敏感,所以信息熵作為指標時,決策樹的生長會更加“精細”,因此對于高維數據或者噪音很多的數據,信息熵很容易過擬合,基尼系數在這種情況下效果往往比較好。

????????② random_state用來設置分枝中的隨機模式的參數,默認None,在高維度時隨機性會表現更明顯,低維度的數據(比如鳶尾花數據集),隨機性幾乎不會顯現。輸入任意整數,會一直長出同一棵樹,讓模型穩定下來。

????????③ splitter也是用來控制決策樹中的隨機選項的,有兩種輸入值,輸入“best”,決策樹在分枝時雖然隨機,但是還是會優先選擇更重要的特征進行分枝(重要性可以通過屬性feature_importances_查看),輸入“random”,決策樹在分枝時會更加隨機,樹會因為含有更多的不必要信息而更深更大,并因這些不必要信息而降低對訓練集的擬合。

????????④ 在不加限制的情況下,一棵決策樹會生長到衡量不純度的指標最優,或者沒有更多的特征可用為止,這樣的決策樹往往會過擬合。為了讓決策樹有更好的泛化性,需要要對決策樹進行剪枝。剪枝策略對決策樹的影響巨大,正確的剪枝策略是優化決策樹算法的核心

三、決策樹的優缺點

1. 優點

????① 易于 理解和解釋,因為樹木可以畫出來被看見。

????② 需要 很少的 數據準備。其他很多算法 通常都需要 數據規范化,需要 創建虛擬變量并刪除空值 等。但 sklearn中的決策樹模塊 不支持對缺失值的處理

????③ 使用 樹的成本(比如說,在預測數據的時候)是用于 訓練樹的數據點的 數量的 對數,相比于 其他算法,這是一個 很低的成本。

????④ 能夠同時 處理數字 和 分類 數據,既可以做 回歸又可以 做分類。其他技術通常專門用于分析僅具有 一種變量類型的 數據集。

????⑤ 能夠處理 多輸出問題,即含有 多個標簽的問題(注意與一個標簽中含有多種標簽分類的問題區別開)

????⑥ 是一個 白盒模型,結果很容易 能夠被解釋。如果 在模型中可以觀察 到給定的情況,則可以通過布爾邏輯 輕松解釋 條件。相反,在 黑盒模型中(例如,在人工神經網絡中),結果可能更難以解釋。

????⑦ 可以 使用統計測試驗證 模型,這讓 我們可以 考慮模型的 可靠性。即使 其假設 在某種程度上 違反了生成數據的 真實模型,也能夠表現良好。

2. 缺點

????① 決策樹學習者 可能創建 過于復雜的樹,這些 樹不能很好地 推廣數據。這稱為過度擬合。修剪,設置葉節點所需的最小樣本數或設置樹的最大深度等機制是 避免此問題所必需的。

????② 決策樹 可能不穩定,數據中 微小的變化 可能導致 生成完全 不同的樹,這個問題需要通過 集成算法來解 決。

????③ 決策樹的 學習是 基于貪婪算法,它靠 優化局部最優(每個節點的最優)來 試圖達到整體的最優,但這種 做法 不能保證返回 全局最優決策樹。這個問題 也可以 由集成算法 來解決,在隨機森林中,特征和樣本會 在分枝過程中 被隨機采樣。

????④ 有些概念 很難學習,因為決策樹 不容易表達它們,例如 XOR,奇偶校驗 或多路復用器問題。

????⑤ 如果標簽中的 某些類占 主導地位,決策樹學習者 會創建偏向 主導類的樹。因此,建議在 擬合決策樹 之前 平衡數據集

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

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

相關文章

最新開源免費數字人工具

使用步驟更是簡單到不行: 1. 輸入圖片:選擇你想要生成動態視頻的肖像圖片。 2. 輸入音頻:提供與圖片匹配的音頻文件,EchoMimic會根據音頻內容驅動肖像的動態效果。 3. 設置參數:一般保持默認設置即可,當然&…

排序題目:最小時間差

文章目錄 題目標題和出處難度題目描述要求示例數據范圍 解法思路和算法代碼復雜度分析 題目 標題和出處 標題:最小時間差 出處:539. 最小時間差 難度 3 級 題目描述 要求 給定一個 24 \texttt{24} 24 小時制的時間列表,時間以 &quo…

暗黑魅力:Xcode全面擁抱應用暗黑模式開發指南

暗黑魅力:Xcode全面擁抱應用暗黑模式開發指南 隨著蘋果在iOS 13和iPadOS 13中引入暗黑模式,用戶可以根據自己的喜好或環境光線選擇不同的界面主題。作為開發者,支持暗黑模式不僅能提升用戶體驗,還能彰顯應用的專業性。Xcode提供了…

《夢醒蝶飛:釋放Excel函數與公式的力量》11.4 ISERROR函數

第11章:信息函數 第四節 11.4 ISERROR函數 11.4.1 簡介 ISERROR函數是Excel中的一個信息函數,用于檢查指定單元格或表達式是否產生錯誤。如果單元格或表達式產生任何類型的錯誤(如N/A、VALUE!、REF!等),則返回TRUE&…

全開源TikTok跨境商城源碼/TikTok內嵌商城+搭建教程/前端uniapp+后端

多語言跨境電商外貿商城 TikTok內嵌商城,商家入駐一鍵鋪貨一鍵提貨 全開源完美運營 海外版抖音TikTok商城系統源碼,TikToK內嵌商城,跨境商城系統源碼 接在tiktok里面的商城。tiktok內嵌,也可單獨分開出來當獨立站運營 二十一種…

FPGA原型驗證(八):如何選擇現成的原型驗證平臺?

第6章 如何選擇現成的原型驗證平臺? 在第5章中,我們探討了為基于FPGA的原型項目創建FPGA硬件平臺時應考慮的詳細因素。 現在,我們將考慮所謂的“自制還是購買”爭論的另一方面。什么時候使用現成的FPGA板或甚至是更復雜的基于FPGA的系統,而不是設計定制板更有意義? 什么…

leetcode165.解密數字

題目表述: 這道題目和斐波那契數列以及跳臺階問題十分相似。 斐波那契數列:0、1、1、2、3、5, 8、13、21、34 …… leetcode跳臺階問題:1、1、2、3、5, 8、13、21、34....... 這類題目的特點都是第N項的結果等于前兩項的和。 但是解密數…

java 在pdf中根據關鍵字位置插入圖片(公章、簽名等)

java 在pdf中根據關鍵字位置插入圖片&#xff08;公章、簽名等&#xff09; 1.使用依賴 <dependency><groupId>com.itextpdf</groupId><artifactId>itext7-core</artifactId><version>7.1.12</version><type>pom</type>…

【深度學習】圖形模型基礎(7):機器學習優化中的方差減少方法(1)

摘要 隨機優化是機器學習中至關重要的組成部分&#xff0c;其核心是隨機梯度下降算法&#xff08;SGD&#xff09;&#xff0c;這種方法自60多年前首次提出以來一直被廣泛使用。近八年來&#xff0c;我們見證了一個激動人心的新進展&#xff1a;隨機優化方法的方差降低技術。這…

車載測試資料學習和CANoe工具實操車載項目(每日直播)

每日直播時間&#xff1a;&#xff08;直播方式&#xff1a;騰訊會議&#xff09; 周一到周五&#xff1a;20&#xff1a;00-23&#xff1a;00 周六與周日&#xff1a;9&#xff1a;00-17&#xff1a;00 向進騰訊會議學習的&#xff0c;可以關注我并后臺留言 直播內容&#xff…

Simscape物理建模步驟

為了介紹構建和仿真物理模型的步驟&#xff0c;這里以simulink自帶示例模型Mass-Spring-Damper with Controller為例&#xff0c;下圖為建立好的模型。 詳細物理建模和仿真分析步驟如下&#xff1a; 步驟 1&#xff1a;使用 ssc_new 創建新模型 使用 ssc_new 是開始構建 Sims…

李彥宏所說的卷應用到底是什么?

李彥宏在2024世界人工智能大會上的發言強調了一個重要的觀點&#xff0c;那就是在AI時代&#xff0c;技術的應用比技術本身更為關鍵。他所提出的“卷應用”而非“卷模型”&#xff0c;實際上是在呼吁業界關注AI技術的實際落地和價值創造&#xff0c;而不是單純地在模型精度或規…

【 RESTful API 】

RESTful API 是一種用于構建 web 應用程序的設計風格和架構模式。它提供了通過 HTTP 協議訪問和操作資源的規范方式。 REST&#xff08;Representational State Transfer&#xff09;是一種軟件架構風格&#xff0c;它強調在網絡中以資源的形式進行數據傳輸和狀態管理。RESTfu…

Memcached與Redis:緩存解決方案的較量與選擇

標題&#xff1a;Memcached與Redis&#xff1a;緩存解決方案的較量與選擇 在現代應用架構中&#xff0c;緩存是提升性能的關鍵技術之一。Memcached和Redis作為兩款流行的開源緩存解決方案&#xff0c;它們各自有著獨特的特點和使用場景。本文將深入比較Memcached和Redis的特性…

案例|LabVIEW連接S7-1200PLC

附帶&#xff1a; 寫了好的參考文章&#xff1a; 通訊測試工具和博圖仿真機的連接教程【內含圖文完整過程軟件使用】 解決博圖V15 V16 V17 V18等高版本和低版本在同款PLC上不兼容的問題 目錄 前言一、準備條件二、步驟1. HslCommunicationDemo問題1&#xff1a;連接失敗?問題…

Lingo學習(二)——線性規劃基礎、矩陣工廠

一、線性規劃基礎 &#xff08;一&#xff09;方法 ① 一個線性規劃中只含一個目標函數。(兩個以上是多目標線性規劃,Lingo無法直接解) ② 求目標函數的最大值或最小值分別用max …或min …來表示。 ③ 以!開頭,以;結束的語句是注釋語句; ④ 線性規劃和非線性規劃的本質…

Android11 MTK 狀態欄添加無Sim卡圖標

1、近日&#xff0c;查看測試提出的bug時&#xff0c;發現了一個問題&#xff0c;設備在未安裝sim卡時&#xff0c;狀態欄中不顯示無sim卡的圖標。 2、解決 路徑&#xff1a;****\frameworks\base\packages\SystemUI\src\com\android\systemui\statusbar\phone\StatusBarSign…

01、Kerberos安全認證之原理及搭建命令使用學習筆記

文章目錄 前言一、Kerberos原理1.1、數據安全防護&#xff08;kerberos所屬的層次&#xff09;1.2、Kerberos介紹1.3、Kerberos名詞介紹1.4、Kerberos術語1.5、Kerberos認證流程1.5.1、Kerberos流程圖1.5.2、第一次通信&#xff1a;客戶端與AS1.5.3、第二次通信&#xff1a;客戶…

cpp使用第三方庫

使用第三方庫在C中進行編程是一種常見的做法&#xff0c;因為它可以讓利用現成的代碼來實現更復雜的功能&#xff0c;而不必從頭開始編寫。下面是一個示例&#xff0c;演示如何在C項目中引入并使用一個第三方庫。這個例子將使用Boost庫&#xff0c;它是C中廣泛使用的一個庫&…

60、基于淺層神經網絡的數據擬合(matlab)

1、基于淺層神經網絡的數據擬合的簡介、原理以及matlab實現 1&#xff09;內容說明 基于淺層神經網絡的數據擬合是一種常見的機器學習方法&#xff0c;用于通過輸入數據來擬合一個非線性函數。這種方法通常包括一個輸入層、一個或多個隱藏層和一個輸出層。神經網絡通過學習權…