擔任研究助理的工作當中,接觸與使用過Tableau以及PolyAnalyst,儘管這些商業套裝軟體不需要使用者有編程的經驗,但是若沒有資料分析的知識與經驗,一般人依舊無法單純透過玩玩看、按按看的方法來了解這些軟體的操作方式與運作精隨,此外這些軟體通常價格不斐,不是一般家庭可以負擔的,因此適用性與普及性還不夠好,所以還是建議使用Python按部就班來學習資料分析較恰當。
儘管商業套裝軟體有上述的缺點,但是以資料分析流程的整體性來說,我們能夠透過軟體中視覺化的流程圖,以及可任意調整的資料探索方式,來做更完善的分析,這方面是使用Python自己來編寫程式無法做到的,因此多數的商業套裝軟體皆支援程式語言操作的方式,來讓自己的軟體更有彈性操作空間。
本書使用的是擁有免費開放原始碼版本的RapidMiner,沒有限制使用日期,唯有在資料量大、特殊分析需求等情形時,才需要付費升級軟體的功能,這方面對於學習者而言是一大福音,但是學習RapidMiner與學習其它商業套裝軟體相同,軟體中許多的工具與參數設定,仍需要花費大量時間查閱說明文件與實際試驗,以及需要補足資料分析相關知識才比較容易上手。
第一章:先搞懂資料領域熱門關鍵字
資料分析(Data Analytics)
l 資料分析運用四大階段-
價值低、難度低、傳統商業智慧à價值高、難度高、人工智慧:
描述型分析-發生了什麼à
診斷型分析-為什麼發生à
預測型分析-未來會不會發生à
指示型分析-如何讓它發生
價值低、難度低、傳統商業智慧à價值高、難度高、人工智慧:
描述型分析-發生了什麼à
診斷型分析-為什麼發生à
預測型分析-未來會不會發生à
指示型分析-如何讓它發生
資料科學(Data Science)
l 三個大項目:
電腦科學(Computer Science)、統計(Statistics)、領域知識(Domain Expertise)
電腦科學(Computer Science)、統計(Statistics)、領域知識(Domain Expertise)
第二章:資料分析五大流程<<概念解說>>
資料分析雙鑽石模型
l 問題發掘à問題研究(發散)、目標定義(收斂)à資料蒐集與前處理à資料探索與視覺化(發散)、資料建模(收斂)à結果評估
問題研究與目標定義
l 定義問題的方式:
一、透過現有的資料為發想,思考可以運用的方向。
二、針對想要解決的困難,再接著尋找資料。
一、透過現有的資料為發想,思考可以運用的方向。
二、針對想要解決的困難,再接著尋找資料。
l 兩種不同的定義目標:
商業目標(Business Goal)、資料分析目標(Analytics Goal)
商業目標(Business Goal)、資料分析目標(Analytics Goal)
資料蒐集與前處理
l 蒐集資料一般常見的做法:
一、自己撰寫爬蟲程式爬取資料。
二、從政府公開資料、資料科學網站或競賽平台獲取。
一、自己撰寫爬蟲程式爬取資料。
二、從政府公開資料、資料科學網站或競賽平台獲取。
l 前處理內容:
遺失值處理、異常值處理、資料表合併拆解、資料轉換
遺失值處理、異常值處理、資料表合併拆解、資料轉換
資料探索與視覺化
l 視覺化呈現的類別:
比較(Compare)-長條圖、折線圖等
分佈(Distribution)-線圖、直方圖、散點圖等
組成(Composition)-圓餅圖、面積圖等
關係(Relationship)-散點圖、泡泡圖等
比較(Compare)-長條圖、折線圖等
分佈(Distribution)-線圖、直方圖、散點圖等
組成(Composition)-圓餅圖、面積圖等
關係(Relationship)-散點圖、泡泡圖等
資料建模
l 模型的種類:
監督式學習(Supervised Learning)-迴歸模型(Regression)、分類模型(Classification)
非監督式學習(Unsupervised Learning)-分群(Clustering)、異點偵測(Anomaly Detection)
監督式學習(Supervised Learning)-迴歸模型(Regression)、分類模型(Classification)
非監督式學習(Unsupervised Learning)-分群(Clustering)、異點偵測(Anomaly Detection)
結果評估
l 非均衡資料:
火災、信用卡違約、信用卡盜刷等特殊情形在絕大多數時間都不會發生,導致我們擁有的資料源幾乎沒有發生這些狀況的資料。
火災、信用卡違約、信用卡盜刷等特殊情形在絕大多數時間都不會發生,導致我們擁有的資料源幾乎沒有發生這些狀況的資料。
l 準確度悖論:
在預測非均衡資料時,利用準確度來當作衡量依據就會存在準確度悖論。
在預測非均衡資料時,利用準確度來當作衡量依據就會存在準確度悖論。
第三章:資料分析五大流程<<實戰提示>>
定義資料分析目標參考資源
到哪蒐集資料
資料探索與視覺化
l 探索型視覺化:
研究資料的特性,以正確地呈現資料完整樣貌為目標。
研究資料的特性,以正確地呈現資料完整樣貌為目標。
l 敘事型視覺化:
強調用圖表表達想要說的故事,以讓閱聽者印象深刻為目標。
強調用圖表表達想要說的故事,以讓閱聽者印象深刻為目標。
第四章:不會寫程式也可以玩Data! RapidMiner簡介與安裝
使用RapidMiner
l 新增空白流程專案:
StartàBlank
StartàBlank
RapidMiner介面說明
l ViewàShow Panel:
A. 功能列-執行流程、停止流程、設計流程、查看結果
B. Repository-用來儲存檔案的地方
C. Operators-資料分析流程中會使用到的各種工具
D. Process-放置、相連各種小工具的地方
inp接點-輸入資料
res接點-輸出資料
E. Parameters-工具需要使用者設定一些參數
F. Help-呈現該工具的詳細說明
A. 功能列-執行流程、停止流程、設計流程、查看結果
B. Repository-用來儲存檔案的地方
C. Operators-資料分析流程中會使用到的各種工具
D. Process-放置、相連各種小工具的地方
inp接點-輸入資料
res接點-輸出資料
E. Parameters-工具需要使用者設定一些參數
F. Help-呈現該工具的詳細說明
第五章:分類問題 - 誰是有潛力的NBA新秀
問題研究、目標定義、資料蒐集
l 依照資料調整此案例的問題:
如何判斷新秀球員是否能在NBA籃球殿堂奮鬥3個賽季以上à
如何判斷新秀球員是否能在NBA籃球殿堂奮鬥5個賽季以上
如何判斷新秀球員是否能在NBA籃球殿堂奮鬥3個賽季以上à
如何判斷新秀球員是否能在NBA籃球殿堂奮鬥5個賽季以上
l 依照資料調整此案例的資料分析目標:
以近4到10年間的選秀球員資料,預測球員能不能在NBA奮鬥3年以上à
透過球員在菜鳥球季的數據表現,來預測球員能不能在NBA奮鬥5年以上
以近4到10年間的選秀球員資料,預測球員能不能在NBA奮鬥3年以上à
透過球員在菜鳥球季的數據表現,來預測球員能不能在NBA奮鬥5年以上
l 依照資料調整此案例的商業目標:
提供有效的選秀指標,讓球隊老闆以較低的成本逐漸打造一支頂尖球隊à
掌握新秀球員的發展性,創造有效的球員交易案
提供有效的選秀指標,讓球隊老闆以較低的成本逐漸打造一支頂尖球隊à
掌握新秀球員的發展性,創造有效的球員交易案
資料前處理、資料探索與視覺化
l 新增空白流程專案:
StartàBlank
StartàBlank
l 新增Repository:
Create repositoryàNew local repositoryà設定名稱PredictNBARookieàCreate subfolderà設定名稱DataàCreate subfolderà設定名稱Process
Create repositoryàNew local repositoryà設定名稱PredictNBARookieàCreate subfolderà設定名稱DataàCreate subfolderà設定名稱Process
l 匯入資料:
Import DataàMy Computerà選擇nba_logreg.csvà設定資料格式,此案例在TARGET_5Yrs點選Change Type改為binominalà儲存在PredictNBARookie\Data
Import DataàMy Computerà選擇nba_logreg.csvà設定資料格式,此案例在TARGET_5Yrs點選Change Type改為binominalà儲存在PredictNBARookie\Data
l 探索資料:
ResultsàStatisticsà此案例在Missing發現遺失值àDataà在Filter點選missing_attributesà推論並佐證3P%(三分球命中率)有遺失值的原因為「沒有嘗試三分球出手」
ResultsàStatisticsà此案例在Missing發現遺失值àDataà在Filter點選missing_attributesà推論並佐證3P%(三分球命中率)有遺失值的原因為「沒有嘗試三分球出手」
l Step 1. 將資料放到Process區塊:
DesignàOperators\RetrieveàParameters\repository entry選擇檔案(à可以先連接工具、執行Process,儲存在PredictNBARookie\Process)
DesignàOperators\RetrieveàParameters\repository entry選擇檔案(à可以先連接工具、執行Process,儲存在PredictNBARookie\Process)
l Step 2. 處理遺失值:
Operators\Replace Missing ValuesàParameters\attribute filter type選擇single,attribute選擇3P%,default選擇zero
Operators\Replace Missing ValuesàParameters\attribute filter type選擇single,attribute選擇3P%,default選擇zero
資料建模-監督式學習-分類模型
l Step 3. 以Name以外的19個變數預測TARGET_5Yrs:
Operators\Select AttributesàParameters\attribute filter type選擇subset,attributes按下Select Attributes選擇Name以外的20個變數
Operators\Select AttributesàParameters\attribute filter type選擇subset,attributes按下Select Attributes選擇Name以外的20個變數
l Step 4. 設定TARGET_5Yrs為目標變數:
Operators\Set RoleàParameters\attribute name選擇TARGET_5Yrs,target role選擇label
Operators\Set RoleàParameters\attribute name選擇TARGET_5Yrs,target role選擇label
l Step 5. 複製接點給接下來的兩個分類模型使用:
Operators\Multiply
Operators\Multiply
l Step 6. 切割為訓練資料與測試資料:
Operators\Split DataàParameters\partitions按下Edit Enumeration再按下Add Entry兩次設定切割比例為0.6與0.4(這個順序是par接點的順序)(à此案例勾選Show advanced parameters,use local random seed隨機種子設定為2000)
Operators\Split DataàParameters\partitions按下Edit Enumeration再按下Add Entry兩次設定切割比例為0.6與0.4(這個順序是par接點的順序)(à此案例勾選Show advanced parameters,use local random seed隨機種子設定為2000)
l Step 7. 建立決策樹模型:
Operators\Decision Tree
Operators\Decision Tree
l Step 8. 套用決策樹模型:
Operators\Apply Model(mod接點與模型相接,unl接點與測試資料相接)
Operators\Apply Model(mod接點與模型相接,unl接點與測試資料相接)
l Step 9. 決策樹模型評斷:
Operators\Performanceà通常會希望看到三樣產出:
一、模型的評斷指標-將Performance右側per接點連到Process的res接點。
二、預測值和真實值的測試集-將Performance右側exa接點連到Process的res接點。
三、建立的模型-將Apply Model右側mod接點連到Process的res接點。
Operators\Performanceà通常會希望看到三樣產出:
一、模型的評斷指標-將Performance右側per接點連到Process的res接點。
二、預測值和真實值的測試集-將Performance右側exa接點連到Process的res接點。
三、建立的模型-將Apply Model右側mod接點連到Process的res接點。
l Step 10. 接續Step 5,從Step 6準備建立邏輯迴歸模型:
Operators\MultiplyàOperators\Split DataàOperators\Logistic RegressionàOperators\Apply ModelàOperators\Performance
Operators\MultiplyàOperators\Split DataàOperators\Logistic RegressionàOperators\Apply ModelàOperators\Performance
l 流程圖:
結果評估
l 解讀決策樹模型:
透過一連串樹狀分岔的架構,產生最有效分辨球員是否可以在場上征戰超過五個賽季的規則。
透過一連串樹狀分岔的架構,產生最有效分辨球員是否可以在場上征戰超過五個賽季的規則。
l 解讀邏輯迴歸模型:
將模型以一道方程式來呈現。
將模型以一道方程式來呈現。
l 混淆矩陣(Confusion Matrix)的三種常見面向來探討模型的分類預測能力:
一、整體預測正確率(Accuracy):
Accuracy=(true 0.0, pred 0.0)+(true 1.0, pred 1.0)/全部資料
二、被預測出的資料中有多少是正確的-精確率(Precision):
Precision(0.0)=(true 0.0, pred 0.0)/(true 0.0, pred 0.0)+(true 1.0, pred 0.0)
三、實際資料中有多少筆被正確預測出來-召回率(Recall):
Recall(1.0)=(true 1.0, pred 1.0)/(true 1.0, pred 1.0)+(true 1.0, pred 0.0)
一、整體預測正確率(Accuracy):
Accuracy=(true 0.0, pred 0.0)+(true 1.0, pred 1.0)/全部資料
二、被預測出的資料中有多少是正確的-精確率(Precision):
Precision(0.0)=(true 0.0, pred 0.0)/(true 0.0, pred 0.0)+(true 1.0, pred 0.0)
三、實際資料中有多少筆被正確預測出來-召回率(Recall):
Recall(1.0)=(true 1.0, pred 1.0)/(true 1.0, pred 1.0)+(true 1.0, pred 0.0)
案例總結
l 技術面:
我們不一定只能選擇一個模型,可以整體學習(Ensemble Learning)。
我們不一定只能選擇一個模型,可以整體學習(Ensemble Learning)。
l 應用面:
千萬不能一股腦地陷入尋找最佳模型的世界中,真正好的模型要能兼顧應用面。
千萬不能一股腦地陷入尋找最佳模型的世界中,真正好的模型要能兼顧應用面。
第六章:迴歸問題 - 如何買到最合理價格的中古車?
問題研究、目標定義、資料蒐集
l 依照資料調整此案例的問題:
非專業的汽車買家如何得知中古車的合理售價à
非專業的汽車買家如何得知Toyota Corolla中古車的合理售價
非專業的汽車買家如何得知中古車的合理售價à
非專業的汽車買家如何得知Toyota Corolla中古車的合理售價
l 依照資料調整此案例的資料分析目標:
找出影響售價最重要的一個指標,並且預測中古車的合理價格à
找出影響售價最重要的一個指標,並且預測Toyota Corolla中古車的合理價格
找出影響售價最重要的一個指標,並且預測中古車的合理價格à
找出影響售價最重要的一個指標,並且預測Toyota Corolla中古車的合理價格
l 依照資料調整此案例的商業目標:
教導非專業的汽車買家購買須知,打造資訊更透明的交易市場à
教導非專業的Toyota Corolla汽車買家購買須知,打造資訊更透明的交易市場
教導非專業的汽車買家購買須知,打造資訊更透明的交易市場à
教導非專業的Toyota Corolla汽車買家購買須知,打造資訊更透明的交易市場
資料前處理、資料探索與視覺化
l 新增空白流程專案:
StartàBlank
StartàBlank
l 新增Repository:
Create repositoryàNew local repositoryà設定名稱PredictToyotaCorollaàCreate subfolderà設定名稱DataàCreate subfolderà設定名稱Process
Create repositoryàNew local repositoryà設定名稱PredictToyotaCorollaàCreate subfolderà設定名稱DataàCreate subfolderà設定名稱Process
l 匯入資料:
Import DataàMy Computerà選擇ToyotaCorolla.csvà設定資料格式,此案例在MetColor與Automatic點選Change Type改為binominal,在Doors點選Change Type改為polynominal,在Price點選Change Role改為label(前一章是使用Operators\Set Role)à儲存在PredictToyotaCorolla\Data
Import DataàMy Computerà選擇ToyotaCorolla.csvà設定資料格式,此案例在MetColor與Automatic點選Change Type改為binominal,在Doors點選Change Type改為polynominal,在Price點選Change Role改為label(前一章是使用Operators\Set Role)à儲存在PredictToyotaCorolla\Data
l 探索資料:
ResultsàStatisticsà此案例在Missing沒有發現遺失值à此案例在Age欄位發現平均車齡偏高àVisualizationsà在Plot type點選Scatter,在X-Axis column點選Age,在Value column點選Price,發現3個售價偏高的資料點àDataà發現這3台車的車齡都是4年
ResultsàStatisticsà此案例在Missing沒有發現遺失值à此案例在Age欄位發現平均車齡偏高àVisualizationsà在Plot type點選Scatter,在X-Axis column點選Age,在Value column點選Price,發現3個售價偏高的資料點àDataà發現這3台車的車齡都是4年
l 探索資料-探討車齡:
DesignàPredictToyotaCorolla\Data\ToyotaCorolla.csv(前一章是使用Operators\Retrieve)(à可以先連接工具、執行Process,儲存在PredictToyotaCorolla\Process)àOperators\Filter ExamplesàParameters\filters按下Add Filters...再設定為Age<=4
DesignàPredictToyotaCorolla\Data\ToyotaCorolla.csv(前一章是使用Operators\Retrieve)(à可以先連接工具、執行Process,儲存在PredictToyotaCorolla\Process)àOperators\Filter ExamplesàParameters\filters按下Add Filters...再設定為Age<=4
l 探索資料-探討里程數、燃料種類、馬力:
ResultsàVisualizationsà在Plot type點選Scatter,在X-Axis column點選Age,在Value column點選Price,在Color點選KM、FuelType、HP檢視à發現這3台售價偏高的車都是柴油車,此外此資料集沒有發現遺失值,也沒有發現無法解釋的異常值
ResultsàVisualizationsà在Plot type點選Scatter,在X-Axis column點選Age,在Value column點選Price,在Color點選KM、FuelType、HP檢視à發現這3台售價偏高的車都是柴油車,此外此資料集沒有發現遺失值,也沒有發現無法解釋的異常值
資料建模-監督式學習-迴歸模型
l Step 1. 將資料放到Process區塊,以全部9個變數預測Price(匯入時已經設定,不需再使用Operators\Set Role):
DesignàOperators\RetrieveàParameters\repository entry選擇檔案(à可以先連接工具、執行Process,儲存在PredictToyotaCorolla\Process)
DesignàOperators\RetrieveàParameters\repository entry選擇檔案(à可以先連接工具、執行Process,儲存在PredictToyotaCorolla\Process)
l Step 2. 複製接點給接下來的兩個迴歸模型使用:
Operators\Multiply
Operators\Multiply
l Step 3. 因線性迴歸模型只能接收數值變數,必須將FuelType與Doors這2個類別變數轉成虛擬變數(虛擬變數(Dummy Variable):當某一個變數含有n個類別要表示時,只需使用n-1個變數即可表達,並以0和1表示。):
Operators\Nominal to NumericalàParameters\attribute filter type選擇subset,attributes按下Select Attributes選擇FuelType與Doors共2個變數,coding type選擇dummy coding
Operators\Nominal to NumericalàParameters\attribute filter type選擇subset,attributes按下Select Attributes選擇FuelType與Doors共2個變數,coding type選擇dummy coding
l Step 4. 因線性迴歸模型只能接收數值變數,必須將MetColor與Automatic這2個二元變數(二元變數也等同於是類別型變數)轉成虛擬變數:
Operators\Nominal to NumericalàParameters\attribute filter type選擇subset,attributes按下Select Attributes選擇MetColor與Automatic共2個變數,coding type選擇dummy coding
Operators\Nominal to NumericalàParameters\attribute filter type選擇subset,attributes按下Select Attributes選擇MetColor與Automatic共2個變數,coding type選擇dummy coding
l Step 5. 捨去不需要的虛擬變數:
Operators\Select AttributesàParameters\attribute filter type選擇subset,attributes按下Select Attributes選擇MetColor = 0、Automatic = 0、FuelType任意擇一虛擬變數、Doors任意擇一虛擬變數以外的所有變數
Operators\Select AttributesàParameters\attribute filter type選擇subset,attributes按下Select Attributes選擇MetColor = 0、Automatic = 0、FuelType任意擇一虛擬變數、Doors任意擇一虛擬變數以外的所有變數
l Step 6. 切割為訓練資料與測試資料:
Operators\Split DataàParameters\partitions按下Edit Enumeration再按下Add Entry兩次設定切割比例為0.6與0.4(這個順序是par接點的順序)(à此案例勾選Show advanced parameters,use local random seed隨機種子設定為1500)
Operators\Split DataàParameters\partitions按下Edit Enumeration再按下Add Entry兩次設定切割比例為0.6與0.4(這個順序是par接點的順序)(à此案例勾選Show advanced parameters,use local random seed隨機種子設定為1500)
l Step 7. 建立線性迴歸模型:
Operators\Linear Regression
Operators\Linear Regression
l Step 8. 套用線性迴歸模型:
Operators\Apply Model(mod接點與模型相接,unl接點與測試資料相接)
Operators\Apply Model(mod接點與模型相接,unl接點與測試資料相接)
l Step 9. 線性迴歸模型評斷:
Operators\Performanceà通常會希望看到三樣產出:
一、模型的評斷指標-將Performance右側per接點連到Process的res接點。
二、預測值和真實值的測試集-將Performance右側exa接點連到Process的res接點。
三、建立的模型-將Apply Model右側mod接點連到Process的res接點。
Operators\Performanceà通常會希望看到三樣產出:
一、模型的評斷指標-將Performance右側per接點連到Process的res接點。
二、預測值和真實值的測試集-將Performance右側exa接點連到Process的res接點。
三、建立的模型-將Apply Model右側mod接點連到Process的res接點。
l Step 10. 接續Step 2,從Step 6準備建立決策樹模型:
Operators\MultiplyàOperators\Split DataàOperators\Decision TreeàParameters\criterion選擇least_square(能夠直接使用類別型的輸入變數),maximal depth設定為5(避免over fitting)àOperators\Apply ModelàOperators\Performance
Operators\MultiplyàOperators\Split DataàOperators\Decision TreeàParameters\criterion選擇least_square(能夠直接使用類別型的輸入變數),maximal depth設定為5(避免over fitting)àOperators\Apply ModelàOperators\Performance
l 流程圖:
結果評估
l 解讀線性迴歸模型:
一、探索性的問題-關注模型對於解釋資料的配適度(Goodness of Fit)。
二、預測性的問題-關注模型對於新資料的預測能力,此案例屬於這類。
一、探索性的問題-關注模型對於解釋資料的配適度(Goodness of Fit)。
二、預測性的問題-關注模型對於新資料的預測能力,此案例屬於這類。
l 解讀決策樹模型:
會讓區分能力越好的決策節點出現在樹的越上方,此案例車齡(Age)是影響Toyota二手車價(Price)的關鍵指標。
會讓區分能力越好的決策節點出現在樹的越上方,此案例車齡(Age)是影響Toyota二手車價(Price)的關鍵指標。
l 比較模型預測能力的方式一-從模型高估或低估來判斷:
此案例,高估很容易就會讓買家多花一些冤枉錢,因此低估的模型會比較優秀,將透過直方圖的方式呈現預測誤差(預測誤差=實際值-預測值)。
此案例,高估很容易就會讓買家多花一些冤枉錢,因此低估的模型會比較優秀,將透過直方圖的方式呈現預測誤差(預測誤差=實際值-預測值)。
l 比較模型預測能力的方式一-在RapidMiner上實際操作:
接續Step 9. Operators\PerformanceàOperators\Generate AttributesàParameters\function descriptions按下Edit List (0)...,attribute name設定為PredictionError,function expressions設定為Price-[preduction(Price)]à執行àResultsàVisualizationsàPlot type點選Histogram,Value columns點選PredictionError
接續Step 9. Operators\PerformanceàOperators\Generate AttributesàParameters\function descriptions按下Edit List (0)...,attribute name設定為PredictionError,function expressions設定為Price-[preduction(Price)]à執行àResultsàVisualizationsàPlot type點選Histogram,Value columns點選PredictionError
l 比較模型預測能力的方式二-模型準確度的衡量值:
一、MSE(Mean Squared Error)-平方的平均誤差
二、RMSE(Root Mean Squared Error)-平方的平均誤差開根號,還原成原本數值單位的平均誤差
三、MAE(Mean Absolute Error)-取絕對值的平均誤差
四、Average Error-平均誤差
一、MSE(Mean Squared Error)-平方的平均誤差
二、RMSE(Root Mean Squared Error)-平方的平均誤差開根號,還原成原本數值單位的平均誤差
三、MAE(Mean Absolute Error)-取絕對值的平均誤差
四、Average Error-平均誤差
l 比較模型預測能力的方式二-在RapidMiner上實際操作:
一、將Step 9中舊的Performance工具改為Performance (Regression)工具àParameters\選擇root mean squared error(RMSE),選擇absolute error(MAE),選擇squared error(MSE)
二、Average Error可以透過ResultsàStatistics頁面直接取得預測誤差的平均值。
一、將Step 9中舊的Performance工具改為Performance (Regression)工具àParameters\選擇root mean squared error(RMSE),選擇absolute error(MAE),選擇squared error(MSE)
二、Average Error可以透過ResultsàStatistics頁面直接取得預測誤差的平均值。
l 衡量值的解說:
當Average Error呈現正值,表示模型產生出較多的正誤差,也就是所謂模型低估的現象。
當Average Error呈現正值,表示模型產生出較多的正誤差,也就是所謂模型低估的現象。
l 流程圖:
第七章:群集分析 - 如何找出擁有相似喜好的客群?
問題研究、目標定義、資料蒐集
l 此案例的資料Wholesale_customers_data.csv:
http://archive.ics.uci.edu/ml/machine-learning-databases/00292/
http://archive.ics.uci.edu/ml/machine-learning-databases/00292/
l 此案例的問題:
希望參考線下實體通路的銷售資料,成立一個線上的購物網站,如何得知消費者的喜好,提供更優質的服務。
希望參考線下實體通路的銷售資料,成立一個線上的購物網站,如何得知消費者的喜好,提供更優質的服務。
l 此案例的資料分析目標:
採用「比較群集內誤差」的方式找出轉折點(Elbow Method),決定最佳的分群數量。
採用「比較群集內誤差」的方式找出轉折點(Elbow Method),決定最佳的分群數量。
l 此案例的商業目標:
由於團隊資源有限,分群數量不能超過5群,針對不同群集提供客製化服務。
由於團隊資源有限,分群數量不能超過5群,針對不同群集提供客製化服務。
資料前處理、資料探索與視覺化
l 新增空白流程專案:
StartàBlank
StartàBlank
l 新增Repository:
Create repositoryàNew local repositoryà設定名稱CustomerClusteringàCreate subfolderà設定名稱DataàCreate subfolderà設定名稱Process
Create repositoryàNew local repositoryà設定名稱CustomerClusteringàCreate subfolderà設定名稱DataàCreate subfolderà設定名稱Process
l 匯入資料:
Import DataàMy Computerà選擇Wholesale_customers_data.csvà設定資料格式,此案例在Channel與Region點選Change Type改為ploynominalà儲存在CustomerClustering\Data
Import DataàMy Computerà選擇Wholesale_customers_data.csvà設定資料格式,此案例在Channel與Region點選Change Type改為ploynominalà儲存在CustomerClustering\Data
l 探索資料:
ResultsàStatisticsà此案例在Missing沒有發現遺失值à推論此案例不適合使用Channel與Region欄位àVisualizationsà在Plot type點選Scatter,嘗試多種變數的組合
ResultsàStatisticsà此案例在Missing沒有發現遺失值à推論此案例不適合使用Channel與Region欄位àVisualizationsà在Plot type點選Scatter,嘗試多種變數的組合
資料建模-非監督式學習-k-Means分群模型
l Step 1. 將資料放到Process區塊:
DesignàCustomerClustering\Data\Wholesale_customers_data.csv(à可以先連接工具、執行Process,儲存在PredictToyotaCorolla\Process)
DesignàCustomerClustering\Data\Wholesale_customers_data.csv(à可以先連接工具、執行Process,儲存在PredictToyotaCorolla\Process)
l Step 2. 選擇Channel與Region以外的6個變數:
Operators\Select AttributesàParameters\attribute filter type選擇subset,attributes按下Select Attributes選擇Channel與Region以外的6個變數
Operators\Select AttributesàParameters\attribute filter type選擇subset,attributes按下Select Attributes選擇Channel與Region以外的6個變數
l Step 3. 複製接點給接下來的Elbow Method與k-Means分群模型使用:
Operators\Multiply
Operators\Multiply
l Step 4. 使用迴圈建立Elbow Method以決定分群數量:
Operators\Loop Parametersà按滑鼠左鍵兩下進入子流程設計畫面
Operators\Loop Parametersà按滑鼠左鍵兩下進入子流程設計畫面
l Step 5. 建立k-Means分群模型:
Operators\k-Meansà與子流程inp接點相接
Operators\k-Meansà與子流程inp接點相接
l Step 6. k-Means分群模型評斷:
Operators\Cluster Distance Performance(exa接點與k-Means Clustering右下方的clu接點相接,clu接點與k-Means Clustering右上方的clu接點相接)à與子流程out接點相接
Operators\Cluster Distance Performance(exa接點與k-Means Clustering右下方的clu接點相接,clu接點與k-Means Clustering右上方的clu接點相接)à與子流程out接點相接
l Step 7. 記錄子流程執行過程產生的數值:
Operators\Log(放在子流程中,不需要和其它工具連接)àParameters\log按下Edit List (0)...,column name設定為k,value設定為Clustering\parameter\k,按下Add Entry,column name設定為D,value設定為Performance\value\avg_within_distance
Operators\Log(放在子流程中,不需要和其它工具連接)àParameters\log按下Edit List (0)...,column name設定為k,value設定為Clustering\parameter\k,按下Add Entry,column name設定為D,value設定為Performance\value\avg_within_distance
l Step 8. 設定迴圈執行次數:
返回Processà選取Operators\Loop ParametersàParameters\error handling選擇fail on error,按下Edit Parameter Settings...,再按下Operators\Clustering (k-Means)選擇k,接著此案例需在Value List逐一設定2至12共11個數值à將Loop Parameters右側out接點連到Process的res接點
返回Processà選取Operators\Loop ParametersàParameters\error handling選擇fail on error,按下Edit Parameter Settings...,再按下Operators\Clustering (k-Means)選擇k,接著此案例需在Value List逐一設定2至12共11個數值à將Loop Parameters右側out接點連到Process的res接點
l Step 9. Elbow Method繪圖以決定分群數量:
執行àResultsàSimple ChartsàChart style點選Scatter Multiple,x-Axis點選k,y-Axis點選Dà推論此案例選擇5或6個分群是可以接受的分群數量
執行àResultsàSimple ChartsàChart style點選Scatter Multiple,x-Axis點選k,y-Axis點選Dà推論此案例選擇5或6個分群是可以接受的分群數量
l Step 10. 接續Step 3,準備建立5與6個分群的k-Means分群模型:
Operators\MultiplyàOperators\k-MeansàParameters\k分別設定為5與6à將2個模型右側的2個clu接點共4個連到Process的res接點
Operators\MultiplyàOperators\k-MeansàParameters\k分別設定為5與6à將2個模型右側的2個clu接點共4個連到Process的res接點
l 流程圖:
結果評估
l 解讀k-Means分群模型:
一、認識子群集的資料分佈,觀察占比大小:
Resultsà模型àDescription與Graph
二、以中心點做為子群的代表:
Resultsà模型àCentroid Table與Plot(平行座標圖Parallel Coordinate Plot)
三、查看子群中各筆資料,執行更進階的研究:
Resultsà模型àFolder View,或是直接看ExampleSet
一、認識子群集的資料分佈,觀察占比大小:
Resultsà模型àDescription與Graph
二、以中心點做為子群的代表:
Resultsà模型àCentroid Table與Plot(平行座標圖Parallel Coordinate Plot)
三、查看子群中各筆資料,執行更進階的研究:
Resultsà模型àFolder View,或是直接看ExampleSet
第八章:時間序列分析 - 預測未來一年每月出生率
問題研究、目標定義、資料蒐集
l 在分析時間序列(Time Series)的過程中,會試著將時間序列拆解成四種不同的元素:
一、趨勢(Trend)-長時間的資料走勢。
二、循環(Cycle)-循環通常是大於一年的長時間循環變動。
三、季節性(Seasonality)-短時間的規律變動。
四、不規則變異(Irregular Variation)-或稱隨機變異(Random Variation),不尋常的狀況造成時間序列產生不可預知的改變。
一、趨勢(Trend)-長時間的資料走勢。
二、循環(Cycle)-循環通常是大於一年的長時間循環變動。
三、季節性(Seasonality)-短時間的規律變動。
四、不規則變異(Irregular Variation)-或稱隨機變異(Random Variation),不尋常的狀況造成時間序列產生不可預知的改變。
l 移動視窗法(Moving Windows):
一、Window Size表示移動視窗法的視窗大小,也就是訓練模型時資料的長度。
二、Step Size代表下一次訓練時要移動的距離。
三、Horizon Size代表預測值的長度。
一、Window Size表示移動視窗法的視窗大小,也就是訓練模型時資料的長度。
二、Step Size代表下一次訓練時要移動的距離。
三、Horizon Size代表預測值的長度。
l 此案例的資料fertility.csv:
內政部統計查詢網(http://statis.moi.gov.tw/micst/stmain.jsp?sys=100)à出生à全選97年至107年的月統計項,以台北市為分析標的à下載Excel並另存命名為fertility.csv
本章實際操作的csv檔:http://www.flag.com.tw/DL.asp?F9364
內政部統計查詢網(http://statis.moi.gov.tw/micst/stmain.jsp?sys=100)à出生à全選97年至107年的月統計項,以台北市為分析標的à下載Excel並另存命名為fertility.csv
本章實際操作的csv檔:http://www.flag.com.tw/DL.asp?F9364
l 此案例的問題:
得知國家整體的未來生育率狀況。
得知國家整體的未來生育率狀況。
l 此案例的資料分析目標:
以97年到107年十年間的歷史生育率為訓練資料,透過時間序列分析的模型-ARIMA(差分整合移動平均自回歸模型),預測未來一年每個月的生育率。
以97年到107年十年間的歷史生育率為訓練資料,透過時間序列分析的模型-ARIMA(差分整合移動平均自回歸模型),預測未來一年每個月的生育率。
l 此案例的商業目標:
嬰幼兒用品的業者預測未來一年每個月的生育率以因應市場的變化。
嬰幼兒用品的業者預測未來一年每個月的生育率以因應市場的變化。
資料前處理、資料探索與視覺化
l 新增空白流程專案:
StartàBlank
StartàBlank
l 新增Repository:
Create repositoryàNew local repositoryà設定名稱FertilityPatePredictionàCreate subfolderà設定名稱DataàCreate subfolderà設定名稱Process
Create repositoryàNew local repositoryà設定名稱FertilityPatePredictionàCreate subfolderà設定名稱DataàCreate subfolderà設定名稱Process
l 匯入資料:
Import DataàMy Computerà選擇fertility.csvà設定資料格式,此案例在Time點選Change Type改為date,Date format設定為yyyy/MMà儲存在FertilityPatePrediction\Data
Import DataàMy Computerà選擇fertility.csvà設定資料格式,此案例在Time點選Change Type改為date,Date format設定為yyyy/MMà儲存在FertilityPatePrediction\Data
l 探索資料:
ResultsàStatisticsà此案例在Missing沒有發現遺失值àVisualizationsà在Plot type點選Line,嘗試多種變數的組合
ResultsàStatisticsà此案例在Missing沒有發現遺失值àVisualizationsà在Plot type點選Line,嘗試多種變數的組合
資料建模-時間序列模型
l Step 1. 將資料放到Process區塊:
DesignàOperators\RetrieveàParameters\repository entry選擇檔案(à可以先連接工具、執行Process,儲存在FertilityPatePrediction\Process)
DesignàOperators\RetrieveàParameters\repository entry選擇檔案(à可以先連接工具、執行Process,儲存在FertilityPatePrediction\Process)
l Step 2. 切割為訓練資料與測試資料:
Operator\Forecast ValidationàParameters\time series attribute選擇Birth_rate,勾選has indices,indices attribute選擇Timeà按滑鼠左鍵兩下進入細部設定畫面
Operator\Forecast ValidationàParameters\time series attribute選擇Birth_rate,勾選has indices,indices attribute選擇Timeà按滑鼠左鍵兩下進入細部設定畫面
l Step 3. 建立時間序列ARIMA模型(Training):
Operators\ARIMA(exa接點與Training的tra接點相接,for接點與Training的mod接點相接)àParameters\time series attribute選擇Birth_rate,勾選has indices,indices attribute選擇Time,p、d、q分別設定為2、0、1,勾選estimate constant,main criterion選擇aic
Operators\ARIMA(exa接點與Training的tra接點相接,for接點與Training的mod接點相接)àParameters\time series attribute選擇Birth_rate,勾選has indices,indices attribute選擇Time,p、d、q分別設定為2、0、1,勾選estimate constant,main criterion選擇aic
l Step 4. 建立時間序列ARIMA模型(Testing):
Operators\Performance (Regression)(lab接點與Testing的tes接點相接,per接點與Testing的per接點相接,exa接點與Testing的tes接點相接)
Operators\Performance (Regression)(lab接點與Testing的tes接點相接,per接點與Testing的per接點相接,exa接點與Testing的tes接點相接)
l Step 5. 時間序列ARIMA模型評斷:
返回ProcessàOperators\Apply Forecast(for接點與Forecast Validation的mod接點相接,exa接點與Process的res接點相接)àParameters\forecast horizon設定為12(預測未來12個月的意思)à選取Operators\Forecast Validation(tes接點與Process的res接點相接,per接點與Process的res接點相接)
返回ProcessàOperators\Apply Forecast(for接點與Forecast Validation的mod接點相接,exa接點與Process的res接點相接)àParameters\forecast horizon設定為12(預測未來12個月的意思)à選取Operators\Forecast Validation(tes接點與Process的res接點相接,per接點與Process的res接點相接)
l 流程圖:
模型說明與評估
l 自回歸模型(AR):
用時間序列本身的歷史值來對自己進行預測,p=1代表一期的落後項(Lag-1),產生1個X做變數來預測Y。
用時間序列本身的歷史值來對自己進行預測,p=1代表一期的落後項(Lag-1),產生1個X做變數來預測Y。
表一、p=2的自回歸
Time
|
Y
|
X_1
|
X_2
|
1月
|
0.6
|
\
|
\
|
2月
|
0.9
|
0.6
|
\
|
3月
|
0.8
|
0.9
|
0.6
|
4月
|
0.5
|
0.8
|
0.9
|
l 差分(I):
一個平穩的時間序列的統計特性不會隨著時間變化,透過差分這樣的線性組合方式可以使非平穩的時間序列趨於平穩,d=1代表一階差分。
一個平穩的時間序列的統計特性不會隨著時間變化,透過差分這樣的線性組合方式可以使非平穩的時間序列趨於平穩,d=1代表一階差分。
表二、p=2的自回歸做一階差分
Time
|
Y
|
X_1
|
X_2
|
1月
|
0.6
|
\
|
\
|
2月
|
0.9-0.6=0.3
|
0.6
|
\
|
3月
|
0.8-0.9=-0.1
|
0.9-0.6=0.3
|
0.6
|
4月
|
0.5-0.8=-0.3
|
0.8-0.9=-0.1
|
0.9-0.6=0.3
|
l 移動平均模型(MA):
透過過去q個時期的隨機干擾或是預測誤差並給予不同權重來解釋,稱為MA(q)模型。
透過過去q個時期的隨機干擾或是預測誤差並給予不同權重來解釋,稱為MA(q)模型。
l 勾選estimate constant:
設定是否要在ARIMA模型中加入一個截距項(常數項)。
設定是否要在ARIMA模型中加入一個截距項(常數項)。
l main criterion選擇aic:
包含AIC、BIC、AICC等的資訊評選準則,而這些準則的值通常越小越好,尋找可以最好地解釋數據但包含最少參數的模型。
包含AIC、BIC、AICC等的資訊評選準則,而這些準則的值通常越小越好,尋找可以最好地解釋數據但包含最少參數的模型。
l 評估模型預測能力:
ResultsàExampleSet(Forecast Validation)àVisualizationsà在Plot type點選Line,Value columns選擇Birth_rate與forecast of Birth_rate
ResultsàExampleSet(Forecast Validation)àVisualizationsà在Plot type點選Line,Value columns選擇Birth_rate與forecast of Birth_rate
l 預測未來12個月的生育率:
ResultsàExampleSet(Apply Forecast)àVisualizationsà在Plot type點選Line,Value columns選擇Birth_rate and forecast與forecast of Birth_rate
ResultsàExampleSet(Apply Forecast)àVisualizationsà在Plot type點選Line,Value columns選擇Birth_rate and forecast與forecast of Birth_rate
第九章:結語-不是資料專家也該有的大數據思維
數據的思維方式
l 大數據思維:
是懂得從自己的專業領域中建立「以數據為導向」的思考模式,試著用數據找尋機會,最終了解數據要如何產生價值。
是懂得從自己的專業領域中建立「以數據為導向」的思考模式,試著用數據找尋機會,最終了解數據要如何產生價值。
l 資料分析的質化與量化:
質化分析能幫助我們有系統性的探索、歸納和洞察數據,而一個數據分析的過程也確實需要發揮兩者的綜效。
質化分析能幫助我們有系統性的探索、歸納和洞察數據,而一個數據分析的過程也確實需要發揮兩者的綜效。
l 用數據說故事:
數據是表達事情真相的媒介,讓我們跳脫經驗法則的迷失,透過數據忠實呈現發生的現象。
數據是表達事情真相的媒介,讓我們跳脫經驗法則的迷失,透過數據忠實呈現發生的現象。
l 建立屬於你的大數據思維:
能不能在各自熟悉的崗位上養成屬於自己的數據思維,其實需要的還是不斷練習。
能不能在各自熟悉的崗位上養成屬於自己的數據思維,其實需要的還是不斷練習。
寫得很清楚很實用!!
回覆刪除謝謝!從傳統的ETL工具整合到機器學習,使用圖形介面來管理這一系列的流程,是許多商業軟體共同的做法,也是一種趨勢,做為寫程式之外更方便的選擇。
刪除