教材
• R 語言資料分析:從機器學習、資料探勘、文 字探勘到巨量資料分析 [第二版] • 作者:李仁鐘、李秋緣 • 出版社:博碩文化股份有限公司 • 書號:MP31714 • 出版日期:2017 年 6 月 2 日 • 範例檔案下載本章內容
• 決策樹 • 支持向量機器 • 人工神經網路(略) • 組合方法 – 隨機森林 – 推進法(略)決策樹簡介 (1)
• 機器學習的分類方法中,決策樹是一種具代表 性的方法,具有不錯的預測正確率 (Predict Accuracy) 與解釋能力 (Interpretability)。 • 決策樹結構: – 根節點 (Root Node) – 子節點 (Child Node)– 葉節點 (Leaf Node) 或稱為類別 (Class)
• 從過去資料產生決策樹的機器學習技術叫做決
策樹學習(或訓練),或簡稱為決策樹。
– 某分類中的每一筆資料都歸類於同一類別。 – 該分類資料已無法找到新屬性進行節點分割。
決策樹簡介 (2)
• 利用決策樹進行預測(或測試)時,從樹根開 始,根據各分割選擇屬性值,移到另一子節點, 遞迴方式繼續往其子節點進行,直至到達葉節 點,則此葉節點為預測的類別。 根節點 子節點 子節點 子節點 子節點 子節點 子節點 子節點 類別一 類別二 類別一 類別一 類別二決策樹簡介 (3)
• 決策樹過度學習 (Over-fitting) 問題:樹狀結構 太過於複雜。 – 解決方式:適當的修剪 (Pruning) 1. 事前修剪 (Pre-Pruning):統計方法評估 2. 事後修剪 (Post-Pruning) • 目前常用的決策樹演算法包括– 分類與回歸樹 CART (Classification And Regression Tree)
– ID3 (Iterative Dichotomiser 3) 疊代二元樹 – C5.0
決策樹範例 (1)
• 來源:維基百科 • 老王是一家著名高爾夫俱樂部的經理。但是他 被雇員數量問題搞得心情十分不好。 – 某些天好像所有人都來玩高爾夫,以至於所 有員工都忙的團團轉還是應付不過來。 – 而有些天不知道什麼原因卻一個人也不來, 俱樂部為雇員數量浪費了不少資金。 • 小王的目的想透過下星期天氣預報,預測什麼 時候人們會打高爾夫,以適時調整雇員數量。 因此首先他必須了解人們決定是否打球的原因。決策樹範例 (2)
• 我們得到以下記錄:
– 天氣狀況有晴,雲和雨;氣溫用華氏溫度; 相對濕度用百分比;有無風;顧客是不是在 這些日子光顧俱樂部。
決策樹範例 (3)
決策樹範例 (4)
• 結論: 1. 如果天氣是多雲,人們總是選擇玩高爾夫, 而只有少數很著迷的甚至在雨天也會玩。 2. 把晴天組的分為兩部分,我們發現顧客不 喜歡濕度高於 70% 的天氣。最終我們還發 現,如果雨天還有風,就不會有人打了。 • 解決方案 1. 老王在晴天,潮濕的天氣或者颳風的雨天 解僱了大部分員工,因為這種天氣不會有 人打高爾夫。 2. 其他的天氣會有很多人打高爾夫,因此可 以雇用一些臨時員工來工作。範例 6-1 (6-1.R)
• 使用 rpart 套件的 rpart( ) 函數對鳶尾花 (Iris) 資 料進行分類。 • 鳶尾花資料: – 資料的筆數為 150 筆,共有五個欄位: 1. 花萼長度 (Sepal.Length) 2. 花萼寬度 (Sepal.Width) 3. 花瓣長度 (Petal.Length) 4. 花瓣寬度 (Petal.Width) 5. 品種 (Species):可分為 Setosa、Virginica 和 Versicolor 三個品種。
範例 6-2 (6-2.R)
• 設定適當 rpart.control( ) 函數的引數,改善決 策樹分類結果。
• 例如:
範例 6-3 (6-3.R)
• C5.0 採用事後修剪法,在修剪階段利用設定修 剪 (Pruning) 的信賴水準 (Confidence Level, CF) 做為基準,計算該子節點以及下一節點統計上 預期錯誤率與案例數之信賴水準,當目前子節 點錯誤率小於下一個子節點時,統計顯示該節 點繼續分割下去也不會有更好的結果,便將其 修剪。
範例 6-4 (6-4.R)
• 設定 C5.0Control( ) 函數的 sample 引數,表示 訓練資料筆數。 • 在 iris_treeModel$output 結果中找尋錯誤率 x = str_locate_all(iris_treeModel$output,"%") y = substr(iris_treeModel$output, x[[1]][4]-4, x[[1]][4]-1) test.error = as.numeric(y) • stringr 套件 – str_locate_all( ) – substr( )支持向量機器
• 支持向量機 (Support Vector Machine, SVM) 是 一種監督式學習的方法,可廣泛地應用於統計 分類以及迴歸分析。 • SVM 屬於一般化線性分類器。 • SVM 的學習架構是以小樣本的訓練資料學習 來得到最佳的學習與歸納能力。 • 分類示意圖
範例 6-5 (6-5.R)
• 使用 e1071 套件與 iris 資料集。 • e1071 套件提供 tune.svm( ) 函數搜尋最佳的 cost(C) 及 gamma(γ) 值。 • 核心函數 radial basis 函數定義為 ) | | ( 2)
,
(
u
v
e
u vk
=
−γ −組合方法
• Nilsson 在 1965 年提出由多位專家組合而成, 按一些特定方式,例如投票法、權重法,整合 各專家之意見進行決策。 • 其得到的結果會比單一專家的效果更好。 • 常見的組合方法包含掛袋法 (Bagging) 及推進 法 (Boosting)。掛袋法/裝袋法
• 假設一個數據集 L,通過 Boostrap(自助抽樣) 有放回 (With Replacement) 的抽樣 n 次,那麼 產生了 n 個樣本數據集,記為 n 個 train 集。 1. 將這 n 個 train 集進行訓練,因此產生了 n 個基分類器,也可以說是 n 個決策樹。 2. 利用這 n 個基分類器對測試集進行預測, 因此會得到 n 個結果。 3. 採取多數投票 (majority vote),將 n 個預測 的結果出現頻率最高的基分類器作為總體 預測。 資料來源:https://blog.csdn.net/qq_36213518/article/details/54861930隨機森林 (1)
• 隨機森林 (Random Forest) 是對掛袋法的一種改 進。 • 隨機森林在建立樹的時候,與掛袋法不同: – 掛袋法建樹時將所有預測變量都考慮進去。 – 隨機森林則是考慮每一個分裂點時,重新從 所有的預測變量 p 中隨機選取 m 個預測變 量,通常 m ≈ 𝑃𝑃。 • 當隨機森林中的 m = p 時,隨機森林和掛袋法 是一樣的。 資料來源:https://blog.csdn.net/qq_36213518/article/details/54861930隨機森林 (2)
• 隨機森林結合多個決策樹的預測結果,使用投 票法並依多數決來決定分類結果。 • 範例 6-7 (6-7.R) – install.packages("randomForest") – trainData <− iris[ind==1, ]• Subset a Data Frame in R – example[x, y]
• example is the data frame we want to subset, ‘x’ consists of the rows we want returned, and ‘y’ consists of the columns we want returned.