首頁  >  文章  >  科技週邊  >  機器學習決策樹實戰演練

機器學習決策樹實戰演練

WBOY
WBOY轉載
2023-04-11 19:16:011048瀏覽

譯者 | 朱先忠

審校 | 孫淑娟

機器學習中的決策樹

# #現代機器學習演算法正在改變我們的日常生活。例如,像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中文網其他相關文章!

陳述:
本文轉載於:51cto.com。如有侵權,請聯絡admin@php.cn刪除