自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

機器學(xué)習(xí)決策樹實戰(zhàn)演練

譯文
人工智能 機器學(xué)習(xí)
現(xiàn)代機器學(xué)習(xí)算法正在改變我們的日常生活,特別是今天想開發(fā)出一些復(fù)雜的機器學(xué)習(xí)算法比以往任何時候都容易得多。本文將以機器學(xué)習(xí)中的決策樹算法及其應(yīng)用作為實戰(zhàn)案例來論證這一觀點。

譯者 | 朱先忠

審校 | 孫淑娟

機器學(xué)習(xí)中的決策樹

現(xiàn)代機器學(xué)習(xí)算法正在改變我們的日常生活。例如,像BERT這樣的大型語言模型正在為谷歌搜索提供支持,GPT-3正在為許多高級語言應(yīng)用程序提供支持。

另一方面,今天構(gòu)建復(fù)雜的機器學(xué)習(xí)算法比以往任何時候都容易得多。然而,無論機器學(xué)習(xí)算法有多么復(fù)雜,都屬于把它們歸納為以下學(xué)習(xí)類別之一:

  • 監(jiān)督學(xué)習(xí)
  • 無監(jiān)督學(xué)習(xí)
  • 半監(jiān)督學(xué)習(xí)
  • 強化學(xué)習(xí)

其實,決策樹算是最古老的有監(jiān)督的機器學(xué)習(xí)算法之一,可以解決廣泛的現(xiàn)實問題。研究表明,決策樹算法的最早發(fā)明可以追溯到1963年。

接下來,讓我們深入研究一下這個算法的細節(jié),看看為什么這類算法今天仍然廣為流行。

什么是決策樹?

決策樹算法是一種流行的有監(jiān)督機器學(xué)習(xí)算法,因為它處理復(fù)雜數(shù)據(jù)集的方法相對簡單得多。決策樹的名字來源于它們與“樹”這種結(jié)構(gòu)的相似性;樹結(jié)構(gòu)包括以節(jié)點和邊緣形式存在的根、枝和葉等幾個組成部分。它們用于決策分析,很像一個基于if-else的決策流程圖,這些決策會產(chǎn)生所需的預(yù)測。決策樹能夠?qū)W習(xí)這些if-else決策規(guī)則,從而拆分數(shù)據(jù)集,最后生成樹狀數(shù)據(jù)模型。

決策樹在分類問題的離散結(jié)果預(yù)測和回歸問題的連續(xù)數(shù)值結(jié)果預(yù)測中得到了應(yīng)用。多年來科學(xué)家們開發(fā)出了許多不同的算法,如CART、C4.5和ensemble算法,如隨機森林和梯度增強樹等。

剖析決策樹的各個組成部分

決策樹算法的目標(biāo)是預(yù)測輸入數(shù)據(jù)集的結(jié)果。樹的數(shù)據(jù)集共劃分為三種形式:屬性、屬性的值和要預(yù)測的種類。與任何監(jiān)督學(xué)習(xí)算法一樣,數(shù)據(jù)集被劃分為訓(xùn)練集和測試集兩種類型。其中,訓(xùn)練集定義了算法學(xué)習(xí)并應(yīng)用于測試集的決策規(guī)則。

在聚集介紹決策樹算法的步驟之前,讓我們先來了解一下決策樹的組成部分:

  • 根節(jié)點:它是決策樹頂部的起始節(jié)點,包含所有屬性值。根節(jié)點根據(jù)算法學(xué)習(xí)到的決策規(guī)則分成決策節(jié)點。
  • 分支:分支是對應(yīng)于屬性值的節(jié)點之間的連接器。在二進制拆分中,分支表示真路徑和假路徑。
  • 決策節(jié)點/內(nèi)部節(jié)點:內(nèi)部節(jié)點是根節(jié)點和葉節(jié)點之間的決策節(jié)點,對應(yīng)于決策規(guī)則及其答案路徑。節(jié)點表示問題,分支顯示基于這些問題的相關(guān)答案的路徑。
  • 葉節(jié)點:葉節(jié)點是表示目標(biāo)預(yù)測的終端節(jié)點。這些節(jié)點不會進一步分裂。

以下是決策樹及其上述組件的可視化表示,決策樹算法經(jīng)過以下步驟以達到所需的預(yù)測:

  • 算法從具有所有屬性值的根節(jié)點開始。
  • 根節(jié)點根據(jù)算法從訓(xùn)練集中學(xué)習(xí)到的決策規(guī)則分成決策節(jié)點。
  • 基于問題及其答案路徑,通過分支/邊緣傳遞內(nèi)部決策節(jié)點。
  • 繼續(xù)前面的步驟,直到到達葉節(jié)點或使用了所有屬性。

為了在每個節(jié)點上選擇最佳屬性,將根據(jù)以下兩個屬性選擇度量之一進行拆分:

  • ??基尼系數(shù)??Gini index測量基尼不純度(Gini Impurity),以指示算法對隨機類別標(biāo)簽進行錯誤分類的可能性。
  • ??信息增益??測量分割后熵的改善,以避免預(yù)測類的50/50分割。熵是給定數(shù)據(jù)樣本中不純度的數(shù)學(xué)度量。決策樹中的混沌狀態(tài)接近50/50的劃分表示。

使用決策樹算法的花卉分類案例

在了解了上述基礎(chǔ)知識后,接下來讓我們著手實現(xiàn)一個應(yīng)用案例。在本文中,我們將使用Scikit學(xué)習(xí)庫在Python中實現(xiàn)決策樹分類模型。

關(guān)于數(shù)據(jù)集的簡單說明

本教程的數(shù)據(jù)集是一個鳶尾花數(shù)據(jù)集。Scikit開源庫中已經(jīng)內(nèi)置了這個數(shù)據(jù)集,所以不需要開發(fā)人員再從外部加載它。該數(shù)據(jù)集共包括四個鳶尾屬性及相應(yīng)的屬性值,這些屬性將被輸入到模型中,以便預(yù)測三種類型的鳶尾花之一。

  • 數(shù)據(jù)集中的屬性/特征:萼片長度、萼片寬度、花瓣長度、花瓣寬度。
  • 數(shù)據(jù)集中的預(yù)測標(biāo)簽/花卉類型:Setosis、Versicolor、Virginica。

接下來,將給出決策樹分類器基于python語言實現(xiàn)的分步代碼說明。

導(dǎo)入庫

首先,通過下面的一段代碼導(dǎo)入執(zhí)行決策樹實現(xiàn)所需的庫。

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)數(shù)據(jù)集

以下代碼展示了使用load_iris函數(shù)加載存儲到data_set變量中的sklearn.dataset庫中的鳶尾花數(shù)據(jù)集。接下來的兩行代碼將實現(xiàn)打印鳶尾花類型和特征信息。

data_set = load_iris()
print('Iris plant classes to predict: ', data_set.target_names)
print('Four features of iris plant: ', data_set.feature_names)

分離屬性和標(biāo)簽

下面的代碼行實現(xiàn)了將花的特性和類型信息分離開來,并將它們存儲在相應(yīng)的變量中。其中,shape[0]函數(shù)負責(zé)確定存儲在X_att變量中的屬性數(shù);數(shù)據(jù)集中的屬性值總數(shù)為150。

#提取花的特性和類型信息
X_att = data_set.data
y_label = data_set.target
print('數(shù)據(jù)集中總的樣本數(shù):', X_att.shape[0])

其實,我們還可以創(chuàng)建一個可視化表格來展示數(shù)據(jù)集中的一部分屬性值,方法是將X_att變量中的值添加到panda庫中的DataFrame函數(shù)中即可。

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()

拆分數(shù)據(jù)集

以下代碼展示了使用train_test_split函數(shù)將數(shù)據(jù)集拆分為訓(xùn)練集和測試集兩部分。其中,此函數(shù)中的random_state參數(shù)用于為函數(shù)提供隨機種子,以便在每次執(zhí)行時為給定數(shù)據(jù)集提供相同的結(jié)果;test_size表示測試集的大??;0.25表示拆分后測試數(shù)據(jù)占25%而訓(xùn)練數(shù)據(jù)占75%。

#數(shù)據(jù)集拆分為訓(xùn)練集和測試集兩部分
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)

應(yīng)用決策樹分類函數(shù)

下面的代碼通過使用DecisionTreeClassifier函數(shù)創(chuàng)建一個??分類模型??來實現(xiàn)棵決策樹,分類標(biāo)準(zhǔn)設(shè)置為“entropy”方式。該標(biāo)準(zhǔn)能夠將屬性選擇度量設(shè)置為信息增益Information gain)。然后,代碼將模型與我們的屬性和標(biāo)簽訓(xùn)練集相匹配。

#應(yīng)用決策樹分類器
clf_dt = DecisionTreeClassifier(criterion = 'entropy')
clf_dt.fit(X_att_train, y_label_train)

計算模型精度

下面的代碼負責(zé)計算并打印決策樹分類模型在訓(xùn)練集和測試集上的準(zhǔn)確性。為了計算準(zhǔn)確度分數(shù),我們使用了predict函數(shù)。測試結(jié)果是:訓(xùn)練集和測試集的準(zhǔn)確率分別為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)))

真實世界中的決策樹應(yīng)用程序

當(dāng)今社會,機器學(xué)習(xí)決策樹在許多行業(yè)的決策過程中都得到廣泛應(yīng)用。其中,決策樹的最常見應(yīng)用首先是在金融和營銷部門,例如可用于如下一些子領(lǐng)域:

  • 貸款批準(zhǔn)
  • 支出管理
  • 客戶流失預(yù)測
  • 新產(chǎn)品的可行性分析,等等。

如何改進決策樹?

作為本文決策樹主題討論的總結(jié),我們有充分的理由安全地假設(shè):決策樹的可解釋性仍然很受歡迎。決策樹之所以容易理解,是因為它們可以被人類以可視化方式展現(xiàn)并便于解釋。因此,它們是解決機器學(xué)習(xí)問題的直觀方法,同時也能夠確保結(jié)果是可解釋的。機器學(xué)習(xí)中的可解釋性是我們過去討論過的一個小話題,它也與即將到來的人工智能倫理主題存在密切聯(lián)系。

與任何其他機器學(xué)習(xí)算法一樣,決策樹自然也可以加以改進,以避免過度擬合和出現(xiàn)過于偏向于優(yōu)勢預(yù)測類別。剪枝和ensembling技術(shù)是克服決策樹算法缺點方案最常采用的方法。決策樹盡管存在這些缺點,但仍然是決策分析算法的基礎(chǔ),并將在機器學(xué)習(xí)領(lǐng)域始終保持重要位置。

譯者介紹

朱先忠,51CTO社區(qū)編輯,51CTO專家博客、講師,濰坊一所高校計算機教師,自由編程界老兵一枚。

原文標(biāo)題:??An Introduction to Decision Trees for Machine Learning??,作者:Stylianos Kampakis

責(zé)任編輯:華軒 來源: 51CTO
相關(guān)推薦

2017-11-21 13:00:20

機器學(xué)習(xí)決策樹可視化

2017-05-10 15:41:29

機器學(xué)習(xí)算法數(shù)據(jù)

2017-07-18 16:25:31

機器學(xué)習(xí)算法決策樹

2012-08-06 09:04:01

決策樹建模

2017-10-18 14:11:20

機器學(xué)習(xí)決策樹隨機森林

2024-09-11 08:34:28

2014-07-07 10:05:57

機械學(xué)習(xí)

2022-11-11 08:00:00

決策樹機器學(xué)習(xí)監(jiān)督學(xué)習(xí)

2016-09-30 16:12:47

GBDT算法決策樹

2018-02-02 17:08:48

機器學(xué)習(xí)算法決策樹

2020-12-22 19:37:04

決策樹機器學(xué)習(xí)人工智能

2018-02-02 15:50:07

決策樹Apache Spar數(shù)據(jù)

2019-05-15 09:00:00

決策樹機器學(xué)習(xí)人工智能

2017-09-11 13:33:44

大數(shù)據(jù)數(shù)據(jù)可視化決策樹

2017-12-12 12:24:39

Python決策樹

2021-11-08 07:11:49

決策樹數(shù)據(jù)分類器

2020-11-02 13:54:41

Python可視化決策樹

2017-02-23 08:45:36

Python決策樹數(shù)據(jù)集

2022-01-24 09:00:00

機器學(xué)習(xí)決策樹算法

2023-08-11 17:30:54

決策樹機器學(xué)習(xí)算法
點贊
收藏

51CTO技術(shù)棧公眾號