• 沒有找到結果。

第五章 資料科學平台

5.3 方法介紹

5.3.1 迴歸分析

5.3.1.1 線性迴歸模型

在簡單線性迴歸模型頁面中,我們使用一個簡單的資料集並以表格形式呈現 於頁面右上方(如圖 5.10),並針對此資料集的各個變數繪製出散佈圖(如圖 5.11),

我們將迴歸分析時常使用的變異數分析表格的公式及每個參數的簡要推導以及模 型的結果輸出(如圖 5.12),最後呈現模型診斷圖:殘差分析圖、Normal-QQ 圖、

Scale-Location 圖及 Residuals vs Leverage 圖(如圖 5.12)。

圖5.11 互動式資料集表格

圖5.12 線性迴歸介紹範例(一)

圖5.13 線性迴歸介紹範例(二)

在簡單介紹線性迴歸模型後,我們在下一頁提供使用者使用線性迴歸模型配適使 用者上傳的資料集,在使用者選擇反應變數及解釋變數後,就能得到配適結果的 ANOVA 表格及模型結果診斷圖形(如圖 5.12)。

圖5.14 線性迴歸模型配適結果

ui:

1. verbatimTextOutput("other_val_show_lin") 2. plotOutput("linPlot")

server:

1. observeEvent(input$goButton_lin, {

output$other_val_show_lin<-renderPrint({

input$other_var_select_lin input$ind_var_select_lin f<-upload_data()

form<-sprintf("%s~%s",

input$ind_var_select_lin,paste0(input$other_var_select_lin,collapse="+")) linreg <-lm(as.formula(form),data=f)

print( anova(linreg)) }) })

2. observeEvent(input$goButton_lin , { output$linPlot<- renderPlot({

par(mfrow = c(2, 2), oma = c(0, 0, 2, 0))

plot(fitModellin(),sub.caption="Diagnostic Plots") }) })

表5.6 線性迴歸模型程式碼

5.3.1.2 羅吉斯迴歸模型

迴歸分析方法的第二部分是羅吉斯迴歸模型,也稱為對數機率迴歸模型。羅吉

斯迴歸是一種邏輯模型(Logit 模型,也被翻譯為評估模型、分類評估模型)。它是

離散型方法模型之一,屬於多變量分析的範疇。我們簡要介紹羅吉斯迴歸,並讓使

用者使用上傳的資料配適羅吉斯迴歸模型。 圖 5.14 顯示了配適羅吉斯迴歸模型的

結果,包含變異數分析及殘差。

ui:

1. verbatimTextOutput("other_val_show_log") 2. plotOutput("logPlot")

server:

1. observeEvent(input$goButton_log, { output$other_val_show_log=renderPrint({

input$other_var_select_log input$ind_var_select_log f<-upload_data()

library(caret)

form = sprintf("%s~%s",input$ind_var_select_log, paste0(input$other_var_select_log,collapse="+")) logreg = glm(as.formula(form),family=binomial(),data=f) print( summary(logreg)) }) })

2. observeEvent(input$goButton_log, { output$logPlot<-renderPlot({

par(mfrow = c(2, 2), oma = c(0, 0, 2, 0))

plot(fitModellog(),sub.caption="Diagnostic Plots") }) })

表5.7 羅吉斯迴歸模型程式碼

羅吉斯迴歸模型的反應變數只能使用二分類變數,也就是是否或是有無。在此,

我們還為用戶提供多項羅吉斯迴歸模型以配適他們的模型,使用者可以使用多類

變數來配適他們的模型。圖5.15 顯示使用者配適多項羅吉斯迴歸模型的結果。

圖5.16 多元羅吉斯迴歸模型配適

5.3.1.3 對數線性模型

迴歸分析方法的第二部分是對數線性模型。我們簡要介紹對數線性模型,並讓

使用者使用上傳的資料配適對數線性模型。圖 5.16 顯示了配適對數線性模型及其

結果的視覺化。

圖5.17 對數線性模型及其結果的視覺化

ui:

1. verbatimTextOutput("other_val_show_loglin") 2. plotOutput("loglinPlot")

input$other_var_select_loglin input$ind_var_select_loglin f<-upload_data()

library(caret) form=sprintf("%s~%s",input$ind_var_select_loglin, paste0(input$other_var_select_loglin,collapse="+"))

logreg <-loglm(as.formula(form),data=f) print( summary(logreg)) })

2. output$loglinPlot<-renderPlot({

input$other_var_select_loglin input$ind_var_select_loglin f = upload_data()

form=sprintf("%s~%s",input$ind_var_select_loglin, paste0(input$other_var_select_loglin,collapse="+")) loglinreg <-loglm(as.formula(form),data=f)

mosaicplot(as.formula(form), shade=TRUE,data=f) })

表5.8 對數線性模型程式碼

5.3.2 機器學習方法

在這一部分中,我們將介紹在這個網頁應用程序中使用的幾種機器學習方法,

包括一些樹模型,集合方法等。

5.3.2.1 決策樹

決策樹是一種預測模型,決策樹中每個分叉路徑表示一個可能的結果,每個葉 節點對應於從根節點到葉節點的路徑所表示的對象的值。數據挖掘中的決策樹是 一種常用技術在經過視覺化後有助於使用者了解決策樹配適模型的結果,可用於

分析數據也可用於預測。圖 5.17 顯示裝袋集成學習的介紹,及我們在介面中繪製

決策樹範例。

圖5.18 決策樹介紹頁面

進行完決策樹的基本介紹後,我們在下一部分中提供了使用者幾種使用採用 不同演算法的決策樹,例如:CART(Classification And Decision Tree)、C4.5 樹及 C5.0 樹。將分為三個頁面供使用者進行模型配適及視覺化,圖 5.18 為使用 CART 頁面配適之結果。

圖5.19 CART 樹模型配適結果

ui:

1. verbatimTextOutput("other_val_show_DCTree ") 2. plotOutput("DCTreePlot")

server:

1. observeEvent(input$goButton_DCT, {

output$other_val_show_DCTree<-renderPrint({

input$other_var_select_DCT input$ind_var_select_DCT f =upload_data()

library(rpart)

form=sprintf("%s~%s",input$ind_var_select_DCT, paste0(input$other_var_select_DCT,collapse="+")) DCTree = rpart(as.formula(form),data=f,method="class") print( DCTree) }) })

2. library(rpart.plot)

observeEvent(input$goButton_DCT, { output$DCTreePlot<-renderPlot({

prp(fitDCTree(), faclen=0, fallen.leaves=F, shadow.col="gray", extra=2) }) })

表5.9 CART 樹模型程式碼

5.3.2.2 Random Forest 隨機森林

隨機森林是一種結合隨機節點優化和裝袋集成學習使用 CART 過程構建森林

的方法。因此,在這一部分,我們首先介紹裝袋集成學習,隨後介紹隨機森林及其 優點,最後讓使用者使用上傳的資料配適隨機森林模型。下圖顯示隨機森林的示意 圖及優點,最後則是使用者使用配適隨機森林模型的準確率與誤差曲線。

圖5.20 隨機森林介紹頁面

ui:

1. verbatimTextOutput("other_val_show_RMF") 2. plotOutput("RMFPlot")

server:

1. library(randomForest)

output$other_val_show_RMF<-renderPrint({

input$other_var_select_RMF input$ind_var_select_RMF f<-upload_data()

form = sprintf("%s~%s",input$ind_var_select_RMF, paste0(input$other_var_select_RMF,collapse="+"))

RMF =randomForest(as.formula(form),data=f, ntree=100, nodesize=7,) print(RMF) })

2. output$RMFPlot<-renderPlot({

input$other_var_select_RMF input$ind_var_select_RMF f<-upload_data()

form = sprintf("%s~%s",input$ind_var_select_RMF, paste0(input$other_var_select_RMF,collapse="+"))

RMF <-randomForest(as.formula(form),data=f,ntree=100,nodesize=7) plot(RMF) })

圖5.22 單純貝氏分類器頁面

圖5.23 單純貝氏分類器模型配適結果頁面

ui:

verbatimTextOutput("other_val_show_ nbc") server:

input$ind_var_select_nbc f = upload_data()

form <- sprintf("%s~%s",input$ind_var_select_nbc, paste0(input$other_var_select_nbc,collapse="+")) NBclassfier <-naiveBayes(as.formula(form),data=f) print(NBclassfier) })

表5.11 單純貝式分類器模型程式碼

5.3.2.4 Adaboost

Adaboost(Adaptive Boosting,簡稱 Adaboost)是集成學習中的一種方法,是 Yoav Freund 和 Robert Schapire 提出的機器學習方法。Adaboost 的基本概念是將不 同權重分配給多個分類器,並通過加權多數投票對其進行分類,並改善前一步分類 器分類錯誤的樣本的權重。每次訓練新分類器時,它將集中於錯誤分類的訓練樣本。

在這一部分中,我們將讓使用者了解Adaboost 的原理,並使用一個簡單的範例向

用戶展示adaboost 改進每次迭代錯誤的過程。圖 5.23 中間的混淆矩陣表格顯示了 adaboost 中每次迭代改進錯誤的地方。

圖5.24 Adaboost 介紹頁面

在Adaboost 的下一頁中,我們讓使用者使用上傳的資料配適 Adaboost 模型,

他們可以選擇他們想要在模型中進行多少次迭代並繪製了誤差線圖,讓使用者知 道在多少次迭代後誤差將達到最小。

圖5.25 Adaboost 模型配適結果頁面

圖5.26 Adaboost 誤差下降曲線

ui:

1. verbatimTextOutput("other_val_show_ ADA") 2. plotOutput("ADAPlot")

server:

1. library("ada")

output$other_val_show_ADA<-renderPrint({

input$other_var_select_ADA input$ind_var_select_ADA f = upload_data()

form <- sprintf("%s~%s",input$ind_var_select_ADA, paste0(input$other_var_select_ADA,collapse="+"))

print(Adaboost) })

2. output$ADAPlot<-renderPlot({

input$other_var_select_ADA input$ind_var_select_ADA f = upload_data()

form <- sprintf("%s~%s",input$ind_var_select_ADA, paste0(input$other_var_select_ADA,collapse="+"))

Adaboost <-ada(as.formula(form),data=f,loss="exponential", type=c("real"),iter=100)

plot(Adaboost) })

表5.12 Adaboost 模型程式碼

5.3.2.5 支持向量機

支持向量機(簡稱SVM)是機器學習中常見的分類器,由 Vladimir N.Vapnik 和Alexey Ya Chervonenkis 於 1963 年所提出。它是一種通過調整參數來解決優化 問題的分類方法。支持向量機的基本概念是找到一個分隔不同類型數據的超平面,

這個超平面稱為分離超平面。分隔數據的兩個邊界稱為支持超平面,它們之間的距 離稱為邊界。我們將介紹它的原理及提供一個互動式支持向量機的例子,再更改支 持向量機的參數或是對資料進行調整時,可以馬上見到分離超平面的改變。

圖5.27 支持向量機介紹頁面

在讓使用者了解支持向量機之後,我們提供支持向量機和支持向量迴歸模型,

讓使用者使用上傳的資料配適模型。下圖顯示配適支持向量機及配適支持向量迴 歸的結果。

圖5.28 支持向量機模型配適結果頁面

5.29 支持向量迴歸配適結果頁面

ui:

verbatimTextOutput("other_val_show_ svm") server:

output$other_val_show_svm<-renderPrint({

input$other_var_select_svm input$ind_var_select_svm f = upload_data()

form <- sprintf("%s~%s",input$ind_var_select_svm, paste0(input$other_var_select_svm,collapse="+")) svm <-svm(as.formula(form),data=f)

print(svm) })

表5.13 支持向量機模型程式碼

5.3.3 時間序列模型

應用程序的左側選擇arima 模型的參數。我們展示了 arima 模型,ACF 圖和 PACF

圖的摘要,幫助用戶進行模型檢測。下圖顯示了Arima 模型的結果。

圖5.30 ARMA 模型(一)

圖5.31 ARMA 模型(一)

下一部分我們以Garch 模型為例,數據與在 ARMA 模型中使用相同。 我們還 展示了GARCH 模型,ACF 圖的總結,圖 5.29 顯示了 GARCH 模型的結果。

圖5.32 GARCH 模型(一)

圖5.33 GARCH 模型(二)

第六章 畢業生流向調查平台

將畢業三年問卷及畢業五年問卷依照上述方式分類後,可以得到表格如下:

 畢業五年問卷調查:

地區 人數 薪資中位數

北部 294 47500

中部 98 41500

南部 422 44500

表6.1 畢業五年問卷調查各地區人數及薪資中位數

而畢業五年畢業生北部、中部、南部工作興致如下圖所示。

圖6.1 畢業 5 年畢業生北部地區工作型態

圖6.2 畢業 5 年畢業生中部地區工作型態

圖6.3 畢業 5 年畢業生南部地區工作型態

 畢業三年問卷調查:

地區 人數 薪資中位數

北部 181 41500

中部 69 35500

南部 152 38500

表6.2 畢業三年問卷調查各地區人數及薪資中位數

而畢業三年畢業生北部、中部、南部工作興致如下圖所示。

圖6.4 畢業 3 年畢業生北部地區工作型態

圖6.5 畢業 3 年畢業生中部地區工作型態

圖6.6 畢業 3 年畢業生南部地區工作型態

最後,我們比較各地區薪資中位數之差異,使用無母數分析中的雙樣本中位數

差異檢定,分別對畢業三年級畢業五年各地區作檢定,得到結果如表6.3,畢業五

年之畢業生在北部工作的薪資中位數顯著的比中部及南部的畢業生高,南部工作

的畢業生薪資中位數顯著的比中部的畢業生高;畢業三年之畢業生在北部工作的

圖6.7 畢業 5 年畢業生五大學院薪資盒鬚圖 畢業三年:

系所 人數 薪資中位數

人文院 51 32500

法院 83 41500

管院 116 38500

理院 77 38500

工院 92 44500

表6.6 畢業三年問卷調查各學院人數及薪資中位數

圖6.8 畢業 3 年畢業生五大學院薪資盒鬚圖

最後,我們比較畢業五年及畢業三年各學院薪資中位數之差異,使用無母數分

析中的雙樣本中位數差異檢定,分別對各學院作檢定,得到結果如下表,由表6.7

可得知,畢業五年工學院及理學院畢業生的薪資中位數兩者無顯著性差異但顯著 的比其他三個學院之畢業生高,法學院畢業生的薪資中位數顯著的比其人文學院 之畢業生高;畢業三年工學院畢業生的薪資中位數顯著的比其他四所學院畢業生 高,而人文學院畢業生薪資中位數顯著的比其他四所學院低,法學院、管理學及院 學院薪資無顯著差異。

畢業五年檢定結果:

人文院 法院 管院 理院 工院

人文院 0.015 0.300 4.396e-05 1.824e-05

法院 0.129 0.01519 0.02

管院 0.0003513 0.0002

理院 0.6263

工院

畢業三年檢定結果:

對上表資料形式我們透過階層式分群法(Hierarchical Clustering)將資料進行分 類,階層式分群法為一種非監督式學習的分群方法,透過計算資料間的距離對資料 進行分群,而我們的資料皆為類別行變數,因此使用「漢明距離」作為計算距離的

方法。漢明距離是計算兩個等長字串之間對應位置的不同字元的個數,常用於計算 類 別 行 變 數 的 距 離 。 例 如 上 述 資 料 第 一 筆 為 「 00000010000 」、 第 二 筆 為

「00100000000」,第三個字元與第七個字元不同,故此二字串漢明距離為2。

「00100000000」,第三個字元與第七個字元不同,故此二字串漢明距離為2。

相關文件