布丁布丁吃布丁
http://blog.pulipuli.info/
2017/9/25
用Weka實作
多變項時間序列預測
AI能夠告訴你未來?
2http://findicons.com/icon/128571/iphone_calendar
東方哈佛大學圖書館
歡迎來到
3https://romansiii.deviantart.com/art/Gendo-Ikari-343139846
東方哈佛大學圖書館
館長
館長,關於8月的人力規劃...
4
圖書館使用量 (入館人次)
Data-Driven Decision Making
資料驅動決策
人力配置
5
時間序列資料
入館人次歷史統計記錄
七月 八月
6
你需要
時間序列預測技術
館長
1. 淺談時間序列分析
2. 環境配置
3-1. 預測8月入館人數
3-2. 預測8月入館人數:如何改善預測方法?
4-1. 預測9月入館人數
4-2. 預測9月入館人數:加入疊加變項
5. 結語與未來發展方向
7
大綱
8
淺談時間序列分析
Part 1.
9
你修過時間序列分析嗎?
10
...這些都不講
11
時間序列資料範例 (1/2)
時間 (自變項) ⇨ (依變項) 入館人次
日期
入
館
人
次
自變項
依變項
12
時間序列資料範例 (2/2)
時間 (自變項) ⇨ (依變項) 入館人次
date
日期
target
入館人次
2017-07-01 497
2017-07-03 1839
2017-07-04 1543
2017-07-05 1801
2017-07-06 1485
2017-07-07 811
自變項 依變項
?
7/4
13
從「過去的資料」預測未來
日期 入館人次 預測7/4 預測7/5 預測7/6 預測7/7
2017-07-01 497 497
2017-07-03 1839 1839 1839
2017-07-04 1543 ? 1543 1543
2017-07-05 1801 ? 1801 1801
2017-07-06 1485 ? 1485
2017-07-07 811 ?
落後資料2筆 (Lag-2)
1839
7/3
497
7/1
Lag-2 Lag-1
&
Step-1
14
Moving average (MA)
移動平均法
1168
7/4
1839
7/3
497
7/1
Lag-2 Lag-1
+
預測值
Step-1
)
2
1543
7/4
觀測值
Observed
(
375
residual
殘差
預測不準的程度:
15
資料探勘的觀點
資料準備
自變項 依變項
Lag-2
昨天
Lag-1
今天
Step-1
明天
? 497 497
497 1839 1543
1839 1543 1801
1543 1801 1485
1801 1485 811
1485 811 578
811 578 1400
date
日期
target
入館人次
2017-07-01 497
2017-07-03 1839
2017-07-04 1543
2017-07-05 1801
2017-07-06 1485
2017-07-07 811
2017-07-08 578
2017-07-10 1400
轉換
輸入資料要怎麼組合,
才會得到最符合真實值的輸出資料呢?
要怎樣才能讓殘差最少呢?
16
資料探勘的觀點
要怎麼預測?
?
7/4
1839
7/3
497
7/1
Lag-2 Lag-1
&
Step-1
?
殘差
Residua
l
輸入資料 輸出資料 目標
17
資料探勘的觀點
預測演算法
Linear Regression
線性迴歸 Lag1
a x + b x =Lag2 Step-1
SMOreg
支持向量機迴歸
核技法
數字a跟b是什麼?
MultilayerPerceptron
類神經網路預測
輸入 輸出
18
Dynamic Prediction
動態預測
日期 入館人次
預測
8/1
預測
8/2
預測
8/3
預測
8/4
2017-07-28 604 604
2017-07-29 374 374 374
2017-08-01 ? 922 922 922
2017-08-02 ? 1388 1388 1388
2017-08-03 ? 837 837
2017-08-04 ? 397
有觀察資料
未知資料 Step-1
Step-2
Step-3
Step-4
Step-1 Step-2 Step-3 Step-4
用預測值
作為觀察值
19
輸入資料...
只有滯後時間嗎?
20
時間序列的特徵
periodicity
週期性
trend
趨勢性
lag
滯後性
最大滯後長度:2
21
lag
滯後性
最大滯後長度:4
Step-1Lag-1Lag-2 &
Step-1Lag-1Lag-2 &Lag-3 &Lag-4 &
22
trend
趨勢性 (1/2)
趨勢線
23
trend
趨勢性 (2/2)
date
日期
1949-01-01
以來的天數
target
入館人次
2017-07-01 25018 497
2017-07-03 25020 1839
2017-07-04 25021 1543
2017-07-05 25022 1801
2017-07-06 25023 1485
轉換 預測
24
periodicity
週期性 (1/3)
25
periodicity
週期性 (2/3)
date
日期
DayOfWeek
星期
DayOfMonth
日
NumDaysInMonth
該月的天數
Weekend
是否為週末
Month
月份
Quarter
季
26
periodicity
週期性 (3/3):以星期為例
date
日期
DayOfWeek
星期
target
入館人次
2017-07-01 6 497
2017-07-03 1 1839
2017-07-04 2 1543
... ... ..
2017-07-07 5 811
2017-07-08 6 578
2017-07-10 1 1400
2017-07-11 2 1231
轉換 預測
27
資料探勘的觀點
時間序列資料過濾器
date
日期 Lag-2 Lag-1
1949-01-01
以來的天數
DayOfWeek
星期
DayOfMonth
日
target
入館人次
2017-07-01 ? ? 25018 6 1 497
2017-07-03 ? 497 25020 1 3 1839
2017-07-04 497 1839 25021 2 4 1543
2017-07-05 1839 1543 25022 3 5 1801
2017-07-06 1543 1801 25023 4 6 1485
lag
滯後性
trend
趨勢性
periodicity
週期性
28
等等!
這日期有問題!
29
Skip list
略過資料 (1/2)
閉館日期
2017-07-02
2017-07-09
2017-07-16
2017-07-23
2017-07-30
30
Skip list
略過資料 (2/2)
date
日期
skip
略過資料
target
入館人次
2017-07-01 false 497
2017-07-02 true ?
2017-07-03 false 1839
2017-07-04 false 1543
2017-07-05 false 1801
以布林值表示
31
資料探勘的觀點
輸入資料格式
已知的資料
date
日期
skip
略過資料
target
入館人次
2017-07-01 false 497
2017-07-02 true ?
2017-07-03 false 1543
2017-07-04 false 1543
2017-07-05 false 1801
2017-07-06 false 1485
... ... ...
未知的資料
date
日期
skip
略過資料
target
入館人次
2017-08-01 false ?
2017-08-02 false ?
2017-08-03 false ?
2017-08-04 false ?
2017-08-05 false ?
2017-08-06 true ?
... ... ...
32
環境配置
Part 2.
33
理論很會講...
重點是要怎麼做?
34
SAS SPSS+時間序列分析套件
傳統的時間序列預測工具
+ 時間套件
●專為學習資料探勘所開發的Java軟體
○用於研究、教學、應用
●包含完整的資料探勘處理流程
○含括資料前處理工具、機器學習演算法、
評估方法、資訊視覺化繪圖
●兼具圖形化的使用者介面與指令列應用工具
●易於比較不同機器學習演算法
○模組化:易於擴充機器演算法
35
Weka
36
跨平臺的Weka
Windows MacOS Linux
1.開啟Weka套件管理器
2.安裝時間序列預測套件
37
安裝時間序列預測套件
1. 開啟Weka套件管理器
Tool ⇨ Package manager
38
2. 安裝時間序列預測套件
timeseriesForecasting
39
2
3
timeseriesForecasting
40
時間序列預測
操作流程
Step by
Step
1. 準備CSV試算表資料
2. 試算表轉換ARFF
3. 使用Weka預測
4. 預測結果分析
5. 修正預測方法
41
準備CSV試算表資料
Google試算表
六月
八月
七月
42
Google試算表下載CSV
1
2
3
43
試算表轉換ARFF
44
準備好了嗎?
輸入資料 試算表轉換ARFF Weka
CSV
45
預測8月入館人數
輸入資料:6月到7月
預測目標:8月
Part 3-1.
六月 八月七月~
46
預測8月入館人數
操作步驟大綱
1.準備CSV試算表資料
2.試算表轉換ARFF
3.使用Weka
a.開啟Explorer
b.開啟訓練集資料
4.時間序列預測設定
a.基本設定
b.進階設定
5.預測結果分析
47
1. 準備CSV試算表資料
6月到7月→
預測8月入館人數
48
2. 試算表轉換ARFF (1/2)
1
2. 訓練集資料
49
2. 試算表轉換ARFF (2/2)
4. 略過資料
!
3. 向前預測步數
50
3. 使用Weka (1/2)
開啟Explorer
51
3. 使用Weka (2/2)
開啟訓練集資料
1
3
4
2. 訓練集資料
52
4. Forecast時間序列預測設定 (1/3)
53
4. Forecast時間序列預測設定 (2/3)
Basic configuration 基本設定
1
2. 向前
預測步數
4. 略過資料
3. 時間週期
5. 評估結果
54
4. Forecast時間序列預測設定 (3/3)
Advanced configuration 進階設定
1
2. 繪製預測
的建模過程
55
5. 預測結果分析 (1/6)
執行預測
1
2. 預測結果
56
5. 預測結果分析 (2/6)
預測結果
*表示預測值
57
5. 預測結果分析 (3/6)
模型解讀
●1167.0954
DayOfWeek=tue
星期二的時候,
入館人數大增
●整體而言,該模型受
到週期性「星期」的
影響比較大
58
5. 預測結果分析 (4/6)
評估預測殘差 MAE
平均絕對誤差:393.56
每次預測都可能會錯誤393.56人次
●i:第幾次預測
●N:預測次數總數
●Predictedi:第i次預測值
●Actuali:第i次實際觀測值
59
Mean absolute error (MAE)
平均絕對誤差
用於分析已知的觀測值
60
5. 預測結果分析 (5/6)
建模過程
這圖形好奇怪?
61
5. 預測結果分析 (6/6)
預測未來
預測值
62
預測值也誤差太多了吧!
預測值
63
預測8月入館人數:如何改善預測?
輸入資料:6月到7月
預測目標:8月
Part 3-2.
六月 八月七月~
64
時間序列預測
操作流程
Step by
Step
1. 準備CSV試算表資料
2. 試算表轉換ARFF
3. 使用Weka預測
4. 預測結果分析
5. 修正預測方法
65
如何改善預測方法?
1. 更換預測演算法
2. 增加更多觀察值
3. 增加疊加變項
66
更換預測演算法 (1/2)
預設的預測演算法是
線性迴歸 (LinearRegression)
1
2
3
67
更換預測演算法 (2/2)
支持向量機迴歸
類神經網路
線性迴歸
入館人數是負數?
68
使用類神經網路預測演算法
預測結果分析
MAE: 149.6549
好像比較合理了!
69
使用支持向量機迴歸預測演算法
預測結果分析
MAE: 376.7001
!
70
線性迴歸
MAE: 393.56
支持向量機迴歸
MAE: 376.7001
類神經網路預測
MAE: 149.5649
71
我知道要怎麼
安排人力了!
72http://tbparchitecture.com/gallery-portfolio/higher-education/librarylrc/sjcc-library/
讀者滿意度:
八月
73
Part 4-1.
預測9月入館人數
輸入資料:6月到8月
預測目標:9月
六月 九月八月~
74
東方哈佛大學圖書館
超越西方哈佛的
75
東方哈佛大學圖書館
館長
再用時間序列預測
規劃九月人力!
76
6月到8月→
預測9月入館人數
支持向量機迴歸
MAE: 285.0462
!
77http://tbparchitecture.com/gallery-portfolio/higher-education/librarylrc/sjcc-library/
讀者滿意度:
九月
78
如何改善預測方法?
1. 更換預測演算法
2. 增加更多觀察值
3. 增加疊加變項
79
1月到8月→
預測9月入館人數
支持向量機迴歸
MAE: 360.2757
!!!
80
如何改善預測方法?
1. 更換預測演算法
2. 增加更多觀察值
3. 增加疊加變項
81
疊加變項
可能影響入館人數的其他原因?
??
82http://www.sundaykiss.com/%E8%82%B2%E5%85%92/%E5%85%B6%E5%AF%A6%E9%96%8B%E5%AD%B8%E5%8F%88%E6%9C%89%E5%92%A9%E5%A5%BD%E6%80%95%E5%96%8E%EF%BC%813%E6%8B%9B%E8%
A7%A3%E6%B1%BA%E5%AD%A9%E5%AD%90%E9%96%8B%E5%AD%B8%E7%84%A6%E6%85%AE%E5%95%8F%E9%A1%8C/
83
加入疊加變項後
輸入資料
date
日期
skip
略過資料
in_semester
是否開學
target
入館人次
2017-01-11 false true 3627
2017-01-12 true true 3372
2017-01-13 false false 1271
2017-01-14 false false 891
2017-01-15 false false ?
2017-01-16 false false 1767
... ... ...
1月到8月→
預測9月入館人數
overlay data
疊加變項
84
預測9月入館人數:加入疊加變項
輸入資料:1月到8月
預測目標:9月
Part 4-2.
一月 九月八月~
85
預測9月入館人數:加入疊加變項
操作步驟大綱
1.準備CSV試算表資料
⬅ 加入疊加變項
2.試算表轉換ARFF
⬅ 下載疊加變項
3.使用Weka
a.開啟Explorer
b.開啟訓練集資料
4.時間序列預測設定
a.基本設定
b.進階設定 ⬅ 載入疊加變項
5.預測結果分析
86
1. 準備CSV試算表資料
1月到8月→
預測9月入館人數
2. 試算表轉換ARFF
87
下載疊加變項
88
3. 使用Weka
1.開啟Explorer
2.開啟訓練集資料
4. Forecast時間序列預測設定 (1/2)
1.Basic configuration
基本設定
a.向前預測步數
b.時間週期
c.略過資料
d.評估結果
2.Advanced configuration
進階設定
a.Output: 繪製預測的建
模過程
89
4. Forecast時間序列預測設定 (2/2)
載入疊加變項
90
1
2 3. 打勾
Customize
4. 載入
疊加變項
疊加變項? 週期變項?
91
週期變項
(作為疊加變項使用)
● 可用於預測未來
● 僅能使用類別變項
疊加變項
● 不能用於預測未來的
未知資料
● 僅能使用連續變項
92
5. 預測結果分析 (1/2)
三種預測演算法比較
線性迴歸
MAE: 314.1785
支持向量機迴歸
MAE: 265.1325
類神經網路預測
MAE: 78.0279
93
5. 預測結果分析 (2/2)
比較有無使用疊加變項
線性迴歸
使用疊加變項
MAE: 314.1785
線性迴歸
不使用疊加變項
MAE: 387.5254
94
5. 預測結果分析 (3/3)
模型解讀
1455.082 *
c_in_semester=TRUE
95
館長
東方哈佛終於超越西方哈佛!
96
結語與未來發展方向
Part 5.
97
輸入資料格式
date
日期
skip
略過資料
in_semester
是否開學
target
入館人次
2017-01-11 false true 3627
2017-01-12 true true 3372
2017-01-13 false false 1271
2017-01-14 false false 891
2017-01-15 false false ?
... ... ... ...
overlay data
疊加變項
observed
觀測值
skip data
略過資料
date
日期
98
操作步驟大綱 (1/3)
1.準備CSV試算表資料
a.date 日期
b.skip 略過資料
c.overlay 疊加變項
d.target 觀察值
2.試算表轉換ARFF
a.上傳輸入資料
b.下載訓練集資料
c.複製向前預測步數
d.下載略過資料
e.下載疊加資料
3.使用Weka
a.開啟Explorer
b.開啟訓練集資料
99
操作步驟大綱 (2/3)
4.時間序列預測設定 Forecast
a.基本設定 Basic conf
i. 向前預測步數
ii.時間週期
iii.略過資料
iv.評估結果
b.進階設定 Advanced conf
i. Base learner: 選擇預測
演算法 (線性迴歸、類神經網
路、支持向量機迴歸)
ii.Periodic attributes: 載
入疊加變項
iii.Output: 繪製預測的建
模過程
100
操作步驟大綱 (3/3)
5.預測結果分析
a.執行預測
b.預測結果
c.模型解讀
d.評估預測殘差MAE
e.建模過程
f. 預測未來
圖表另存新檔
101
改善預測方法
1. 更換預測演算法
2. 增加更多觀察值
3. 增加疊加變項
改善前
改善後
時間序列預測
還能用在其他地方嗎?
102
?
103
預測人數
預測需要服務的人數 預測卡位預約人數
http://tbparchitecture.com/gallery-portfolio/higher-education/librarylrc/sjcc-library/
104
預測學習成效 (1/2)
105
預測學習成效 (2/2)
好的老師帶你上天堂,不好的老師帶你住套房
106
預測經濟漲跌趨勢?
時間序列資料怎麼來?
107
時間序列預測聽起來很簡單?
http://findicons.com/icon/28729/line_chart
CSV
!
108
研究方法:資料蒐集
日誌分析法
●記錄檔
●資料庫
●物聯網
●主要史料
●次要史料
歷史研究法 觀測研究法
●行為編碼
強調預測未來的準確程度 找出造成影響的變項
109
Time Series Forecast
預測:時間序列預測
Time Series Analysis
解釋:時間序列分析
研究方法:分析目的
高點?
低點?
疊加變項:有
疊加變項:無
110https://www.forbes.com/sites/danielnewman/2017/01/31/realizing-the-potential-of-big-data-and-analytics/
時間序列預測只是輔助你決策
制訂有效的決策,還是要靠自己
王者歸來:
WEKA機器學習與大數據聖經
111
Weka操作細節
延伸閱讀
大家一起來預測吧!
使用Weka指令列實作預測功能
Weka自動化指令列預測
布丁布丁吃什麼?
http://blog.pulipuli.info/

用Weka多變項時間序列預測 (20170925) blog

Editor's Notes

  • #2 https://docs.google.com/document/d/13AdbE4dpzCHMA4KsMk3bkCpvTKGe4EdEpeh9-BVr5L4/edit#
  • #4 東方哈佛 館長,要多少人好呢?
  • #5 館長:要用資料來判斷 (資料驅動 讓東方哈佛超越西方哈佛
  • #7 讓東方哈佛超越西方哈佛! 館長:可以做到嗎?
  • #16 https://docs.google.com/spreadsheets/d/1VAsIe3LxKRj9M7LZtCkE1v9AyCSvbnYEAgliBkKcrhQ/edit?usp=drive_web
  • #18 測試測試測試
  • #19 要解釋到step的概念
  • #28 加上滯後性 加上趨勢性 加上週期性
  • #29 等等,這資料有問題
  • #30 Skip list 七月的折線圖 有幾天是閉館的日子 用紅底標示出來吧 週末不計算
  • #32 日期 Skip Class 沒有問號的部分 i6-7o8
  • #34 館長 我文組的,數學不太好
  • #36 Weka的簡介
  • #41 將資料準備成csv格式 將Csv轉換成Arff與其他資料 開啟Weka載入資料 設定時間序列預測 開始預測 解釋結果
  • #43 http://blog.pulipuli.info/2016/09/google-google-drive-file-download-link.html#google_drive_download_link_20160926_anchor
  • #44 截圖
  • #45 Weka Csv 網頁轉換
  • #49 截圖
  • #50 截圖 轉換成arff,steps跟skiplist
  • #65 將資料準備成csv格式 將Csv轉換成Arff與其他資料 開啟Weka載入資料 設定時間序列預測 開始預測 解釋結果
  • #67 從線性迴歸 改成類神經
  • #68 從線性迴歸 改成類神經
  • #69 要有預測圖 誤差值
  • #70 要有預測圖 誤差值
  • #71 看起來最準的那個,用黃色框線標亮
  • #72 館長 我文組的,數學不太好
  • #74 輸入資料:6
  • #76 東方哈佛 館長,要多少人好呢?
  • #77 輸入資料: 6-8 預測資料: 9 預測演算法: 要把圖畫出來
  • #80 輸入資料: 6-8 預測資料: 9 預測演算法: 要把圖畫出來
  • #94 有無使用peridic預測結果比較