機器學習決策樹實戰演練
譯者 | 朱先忠
審校 | 孫淑娟
機器學習中的決策樹
# #現代機器學習演算法正在改變我們的日常生活。例如,像BERT這樣的大型語言模型正在為谷歌搜尋提供支持,GPT-3正在為許多高級語言應用程式提供支援。
另一方面,今天建立複雜的機器學習演算法比以往任何時候都容易得多。然而,無論機器學習演算法有多複雜,都屬於把它們歸納為以下學習類別之一:
#監督學習
無監督學習
半監督學習
強化學習
其實,決策樹算是最古老的有監督的機器學習演算法之一,可以解決廣泛的現實問題。研究表明,決策樹演算法的最早發明可以追溯到1963年。
- 接下來,讓我們深入研究這個演算法的細節,看看為什麼這類演算法今天仍然廣為流行。 什麼是決策樹?
- 決策樹演算法是一種流行的監督機器學習演算法,因為它處理複雜資料集的方法相對簡單得多。決策樹的名字來自於它們與「樹」這種結構的相似性;樹結構包括以節點和邊緣形式存在的根、枝和葉等幾個組成部分。它們用於決策分析,很像一個基於if-else的決策流程圖,這些決策會產生所需的預測。決策樹能夠學習這些if-else決策規則,從而拆分資料集,最後產生樹狀資料模型。
- 決策樹在分類問題的離散結果預測和迴歸問題的連續數值結果預測中得到了應用。多年來科學家們開發了許多不同的演算法,如CART、C4.5和ensemble演算法,如隨機森林和梯度增強樹等。
#決策樹演算法的目標是預測輸入資料集的結果。樹的資料集共劃分為三種形式:屬性、屬性的值和要預測的種類。與任何監督學習演算法一樣,資料集被劃分為訓練集和測試集兩種類型。其中,訓練集定義了演算法學習並應用於測試集的決策規則。
- 在聚集介紹決策樹演算法的步驟之前,讓我們先來了解決策樹的組成部分:
- 根節點:它是決策樹頂部的起始節點,包含所有屬性值。根節點根據演算法學習到的決策規則分成決策節點。
- 分支:分支是對應於屬性值的節點之間的連接器。在二進位拆分中,分支表示真路徑和假路徑。
- 決策節點/內部節點:內部節點是根節點和葉節點之間的決策節點,對應決策規則及其答案路徑。節點表示問題,分支顯示基於這些問題的相關答案的路徑。
葉節點:葉節點是表示目標預測的終端節點。這些節點不會進一步分裂。
#########以下是決策樹及其上述元件的視覺化表示,決策樹演算法經過以下步驟以達到所需的預測:########## #####演算法從具有所有屬性值的根節點開始。 ############根節點根據演算法從訓練集學習到的決策規則分成決策節點。 ############基於問題及其答案路徑,透過分支/邊緣傳遞內部決策節點。 ############繼續前面的步驟,直到到達葉節點或使用了所有屬性。 ###############為了在每個節點上選擇最佳屬性,將根據以下兩個屬性選擇度量之一進行拆分:#######- #基尼係數#(Gini index)測量基尼不純度(Gini Impurity),以指示演算法對隨機類別標籤進行錯誤分類的可能性。
- #資訊增益#測量分割後熵的改善,以避免預測類別的50/ 50分割。熵是給定資料樣本中不純度的數學量測。決策樹中的混沌狀態由接近#50/50的分割表示。
使用決策樹演算法的花卉分類案例
在了解了上述基礎知識後,接下來讓我們著手實現一個應用案例。在本文中,我們將使用Scikit學習庫在Python中實作決策樹分類模型。
關於資料集的簡單說明
本教學的資料集是一個鳶尾花資料集。 Scikit開源庫中已經內建了這個資料集,所以不需要開發人員再從外部載入它。此資料集共包括四個鳶尾屬性及對應的屬性值,這些屬性將輸入到模型中,以便預測三種類型的鳶尾花之一。
- 資料集中的屬性/特徵:萼片長度、萼片寬度、花瓣長度、花瓣寬度。
- 資料集中的預測標籤/花卉類型:Setosis、Versicolor、Virginica。
接下來,將給出決策樹分類器基於python語言實作的逐步程式碼說明。
匯入庫
首先,透過下面的一段程式碼匯入執行決策樹實作所需的函式庫。
import pandas as pd import numpy as np from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.tree import DecisionTreeClassifier
載入鳶尾花(Iris)資料集
#以下程式碼展示了使用load_iris函數載入儲存到data_set變數中的sklearn.dataset庫中的鳶尾花數據集。接下來的兩行程式碼將實現列印鳶尾花類型和特徵資訊。
data_set = load_iris() print('Iris plant classes to predict: ', data_set.target_names) print('Four features of iris plant: ', data_set.feature_names)
分離屬性和標籤
#下面的程式碼行實現了將花的特性和類型資訊分開來,並將它們儲存在相應的變數中。其中,shape[0]函數負責決定儲存在X_att變數中的屬性數;資料集中的屬性值總數為150。
#提取花的特性和类型信息 X_att = data_set.data y_label = data_set.target print('数据集中总的样本数:', X_att.shape[0])
其實,我們也可以建立一個視覺化表格來展示資料集中的一部分屬性值,方法是將X_att變數中的值加入panda函式庫中的DataFrame函數中即可。
data_view=pd.DataFrame({ 'sepal length':X_att[:,0], 'sepal width':X_att[:,1], 'petal length':X_att[:,2], 'petal width':X_att[:,3], 'species':y_label }) data_view.head()
拆分資料集
以下程式碼展示了使用train_test_split函數將資料集拆分為訓練集和測試集兩部分。其中,此函數中的random_state參數用於為函數提供隨機種子,以便在每次執行時為給定資料集提供相同的結果;test_size表示測試集的大小;0.25表示拆分後測試資料佔25%而訓練資料佔75%。
#数据集拆分为训练集和测试集两部分 X_att_train, X_att_test, y_label_train, y_label_test = train_test_split(X_att, y_label, random_state = 42, test_size = 0.25)
應用決策樹分類函數
下面的程式碼透過使用DecisionTreeClassifier函數來建立一個#分類模型#來實作一棵決策樹,分類標準設定為「entropy」方式。此標準能夠將屬性選擇度量設定為資訊增益(Information gain)。然後,程式碼將模型與我們的屬性和標籤訓練集相符。
#应用决策树分类器 clf_dt = DecisionTreeClassifier(criterion = 'entropy') clf_dt.fit(X_att_train, y_label_train)
计算模型精度
下面的代码负责计算并打印决策树分类模型在训练集和测试集上的准确性。为了计算准确度分数,我们使用了predict函数。测试结果是:训练集和测试集的准确率分别为100%和94.7%。
print('Training data accuracy: ', accuracy_score(y_true=y_label_train, y_pred=clf_dt.predict(X_att_train))) print('Test data accuracy: ', accuracy_score(y_true=y_label_test, y_pred=clf_dt.predict(X_att_test)))
真实世界中的决策树应用程序
当今社会,机器学习决策树在许多行业的决策过程中都得到广泛应用。其中,决策树的最常见应用首先是在金融和营销部门,例如可用于如下一些子领域:
- 贷款批准
- 支出管理
- 客户流失预测
- 新产品的可行性分析,等等。
如何改进决策树?
作为本文决策树主题讨论的总结,我们有充分的理由安全地假设:决策树的可解释性仍然很受欢迎。决策树之所以容易理解,是因为它们可以被人类以可视化方式展现并便于解释。因此,它们是解决机器学习问题的直观方法,同时也能够确保结果是可解释的。机器学习中的可解释性是我们过去讨论过的一个小话题,它也与即将到来的人工智能伦理主题存在密切联系。
与任何其他机器学习算法一样,决策树自然也可以加以改进,以避免过度拟合和出现过于偏向于优势预测类别。剪枝和ensembling技术是克服决策树算法缺点方案最常采用的方法。决策树尽管存在这些缺点,但仍然是决策分析算法的基础,并将在机器学习领域始终保持重要位置。
译者介绍
朱先忠,51CTO社区编辑,51CTO专家博客、讲师,潍坊一所高校计算机教师,自由编程界老兵一枚。
原文标题:An Introduction to Decision Trees for Machine Learning,作者:Stylianos Kampakis
以上是機器學習決策樹實戰演練的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

圖像標註是將標籤或描述性資訊與圖像相關聯的過程,以賦予圖像內容更深層的含義和解釋。這個過程對於機器學習至關重要,它有助於訓練視覺模型以更準確地識別圖像中的各個元素。透過為圖像添加標註,使得電腦能夠理解圖像背後的語義和上下文,從而提高對圖像內容的理解和分析能力。影像標註的應用範圍廣泛,涵蓋了許多領域,如電腦視覺、自然語言處理和圖視覺模型具有廣泛的應用領域,例如,輔助車輛識別道路上的障礙物,幫助疾病的檢測和診斷透過醫學影像識別。本文主要推薦一些較好的開源免費的圖片標註工具。 1.Makesens

在機器學習和資料科學領域,模型的可解釋性一直是研究者和實踐者關注的焦點。隨著深度學習和整合方法等複雜模型的廣泛應用,理解模型的決策過程變得尤為重要。可解釋人工智慧(ExplainableAI|XAI)透過提高模型的透明度,幫助建立對機器學習模型的信任和信心。提高模型的透明度可以透過多種複雜模型的廣泛應用等方法來實現,以及用於解釋模型的決策過程。這些方法包括特徵重要性分析、模型預測區間估計、局部可解釋性演算法等。特徵重要性分析可以透過評估模型對輸入特徵的影響程度來解釋模型的決策過程。模型預測區間估計

本文將介紹如何透過學習曲線來有效辨識機器學習模型中的過度擬合和欠擬合。欠擬合和過擬合1、過擬合如果一個模型對資料進行了過度訓練,以至於它從中學習了噪聲,那麼這個模型就被稱為過擬合。過度擬合模型非常完美地學習了每一個例子,所以它會錯誤地分類一個看不見的/新的例子。對於一個過度擬合的模型,我們會得到一個完美/接近完美的訓練集分數和一個糟糕的驗證集/測試分數。略有修改:"過擬合的原因:用一個複雜的模型來解決一個簡單的問題,從資料中提取雜訊。因為小資料集作為訓練集可能無法代表所有資料的正確表示。"2、欠擬合如

1950年代,人工智慧(AI)誕生。當時研究人員發現機器可以執行類似人類的任務,例如思考。後來,在1960年代,美國國防部資助了人工智慧,並建立了實驗室進行進一步開發。研究人員發現人工智慧在許多領域都有用武之地,例如太空探索和極端環境中的生存。太空探索是對宇宙的研究,宇宙涵蓋了地球以外的整個宇宙空間。太空被歸類為極端環境,因為它的條件與地球不同。要在太空中生存,必須考慮許多因素,並採取預防措施。科學家和研究人員認為,探索太空並了解一切事物的現狀有助於理解宇宙的運作方式,並為潛在的環境危機

通俗來說,機器學習模型是一種數學函數,它能夠將輸入資料映射到預測輸出。更具體地說,機器學習模型是一種透過學習訓練數據,來調整模型參數,以最小化預測輸出與真實標籤之間的誤差的數學函數。在機器學習中存在多種模型,例如邏輯迴歸模型、決策樹模型、支援向量機模型等,每種模型都有其適用的資料類型和問題類型。同時,不同模型之間存在著許多共通性,或者說有一條隱藏的模型演化的路徑。將聯結主義的感知機為例,透過增加感知機的隱藏層數量,我們可以將其轉化為深度神經網路。而對感知機加入核函數的話就可以轉換為SVM。這一

C++中機器學習演算法面臨的常見挑戰包括記憶體管理、多執行緒、效能最佳化和可維護性。解決方案包括使用智慧指標、現代線程庫、SIMD指令和第三方庫,並遵循程式碼風格指南和使用自動化工具。實作案例展示如何利用Eigen函式庫實現線性迴歸演算法,有效地管理記憶體和使用高效能矩陣操作。

機器學習是人工智慧的重要分支,它賦予電腦從數據中學習的能力,並能夠在無需明確編程的情況下改進自身能力。機器學習在各個領域都有廣泛的應用,從影像辨識和自然語言處理到推薦系統和詐欺偵測,它正在改變我們的生活方式。機器學習領域存在著多種不同的方法和理論,其中最具影響力的五種方法被稱為「機器學習五大派」。這五大派分別為符號派、聯結派、進化派、貝葉斯派和類推學派。 1.符號學派符號學(Symbolism),又稱符號主義,強調利用符號進行邏輯推理和表達知識。該學派認為學習是一種逆向演繹的過程,透過現有的

MetaFAIR聯合哈佛優化大規模機器學習時所產生的資料偏差,提供了新的研究架構。據所周知,大語言模型的訓練常常需要數月的時間,使用數百甚至上千個GPU。以LLaMA270B模型為例,其訓練總共需要1,720,320個GPU小時。由於這些工作負載的規模和複雜性,導致訓練大模型存在著獨特的系統性挑戰。最近,許多機構在訓練SOTA生成式AI模型時報告了訓練過程中的不穩定情況,它們通常以損失尖峰的形式出現,例如Google的PaLM模型訓練過程中出現了多達20次的損失尖峰。數值偏差是造成這種訓練不準確性的根因,
