| Outline |
|---|
|
大數據分析 簡介
|
|
台中市交通大數據
|
|
基本統計
|
|
銀髮族搭乘公車之行為模式
|
|
關聯性 vs 科學證明
|
|
大數據分析的路障及其對策
|
|
結論
|
| 簡介 |
|---|
![]() |
![]() |
|---|---|
![]() |
![]() |
| 簡介 |
|---|
|
台中市政府交通局與亞洲大學資電學院及
中興大學資工系合作設立
「台中市智慧交通大數據研究中心」
運用公車大數據進行分析研究將成果,
作為台中市政府政策規劃參考。
|
|
台中市是全台唯一實施公車全面里程計費縣市,目前已擁有完整2億筆以上公車旅次起迄電子票證刷卡資料,運用公車乘客上下車站位資料建立「電子票證大數據資料庫」,進行公車旅行時間分布分析,改善交通路網。
|
|
亞洲大學資電學院團隊成員
|
| 研究方向 |
|---|
|
交通
|
|
社會
|
| 研究重點 |
|---|
|
現階段研究重點
|
|
注重社會公益面 (Societal Impact)
|
|
e.g. 健康取向的銀髮族搭車行為分析
|
|
注重使用者面向 (User Centric)
|
|
e.g. 增加公車族轉乘方便性
|
|
e.g. 分析各不同的客運公司車速
|
|
e.g. 精準行銷
|
| 大數據分析三大步驟 |
|---|
| 台中市的交通環境 |
|---|
![]() |
|
| 資料 Schema |
|---|

| 資料 RideLog |
|---|
|
公車上下車刷卡資料
|
|
97.6 Million Records
|
|
2015年1月1日~2016年2月29日
|
|
共425天 (工作日285天、放假日140天)
|
|
99.6%乘客用電子票證,僅0.4%乘客用現金
|
|
資料的樣本代表性 很高
|
| 機車eTag |
|---|
|
在數千部機車上裝 eTag
|
|
重要路段裝設 eTag Reader 記錄車流
|
|
可做及時路況監控 及 交通疏導至指標
|
| 研究題目 |
|---|
| 題目 | 簡介
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
|---|
| 基本統計 |
|---|
基本統計 |
|---|
| 票種搭乘比例 |
|---|

| 全票搭乘次數級距統計 |
|---|
|
以公車為主要交通工具者 合計不到1成
|

|
以上統計資料是以卡為基準,並非以人為基準,
|
|
如果考慮到一人多卡的現象,統計資料須修改,但趨勢不變
|
| 霧峰地區公車路線 |
|---|

| 各路線乘客數 |
|---|

|
資料與圖片來源: 為亞洲大學 大數據研究中心研究組組長,經營管理學系助理教授 鄭家年
|
| 載客率 |
|---|

|
資料與圖片來源: 為亞洲大學 大數據研究中心研究組組長,經營管理學系助理教授 鄭家年
|
| 平均載客率 |
|---|

|
資料與圖片來源: 為亞洲大學 大數據研究中心研究組組長,經營管理學系助理教授 鄭家年
|
| 天氣效應 |
|---|

|
天氣效應遠不如學校的行事曆顯著
|
|
絕大多數乘客是學生
|
|
資料與圖片來源: 為亞洲大學 大數據研究中心研究組組長,經營管理學系助理教授 鄭家年
|
| Bus 100 行車時間 |
|---|

|
資料與圖片來源: 為亞洲大學 大數據研究中心研究組組長,經營管理學系助理教授 鄭家年
|
| Bus 100 行車時間 |
|---|

|
資料與圖片來源: 為亞洲大學 大數據研究中心研究組組長,經營管理學系助理教授 鄭家年
|
| Bus 100 乘載律變化 |
|---|

|
資料與圖片來源: 為亞洲大學 大數據研究中心研究組組長,經營管理學系助理教授 鄭家年
|
| Bus 100 乘載律變化 |
|---|

|
資料與圖片來源: 為亞洲大學 大數據研究中心研究組組長,經營管理學系助理教授 鄭家年
|
| 乘客上下車站距分析 |
|---|

|
資料與圖片來源: 為亞洲大學 大數據研究中心研究組組長,經營管理學系助理教授 鄭家年
|
| Bus 53 行車時間 |
|---|

|
資料與圖片來源: 為亞洲大學 大數據研究中心研究組組長,經營管理學系助理教授 鄭家年
|
| Bus 53 行車時間 |
|---|
|
資料與圖片來源: 為亞洲大學 大數據研究中心研究組組長,經營管理學系助理教授 鄭家年
|

|
資料與圖片來源: 為亞洲大學 大數據研究中心研究組組長,經營管理學系助理教授 鄭家年
|
| Bus 53 乘載律變化 |
|---|

|
資料與圖片來源: 為亞洲大學 大數據研究中心研究組組長,經營管理學系助理教授 鄭家年
|
| Bus 53 乘載律變化 |
|---|

|
資料與圖片來源: 為亞洲大學 大數據研究中心研究組組長,經營管理學系助理教授 鄭家年
|
| 乘客上下車站距分析 |
|---|

|
資料與圖片來源: 為亞洲大學 大數據研究中心研究組組長,經營管理學系助理教授 鄭家年
|
| 銀髮族搭乘公車之行為模式 |
|---|
銀髮族搭乘公車之行為模式 |
|---|
| 銀髮族 - 探討的問題 |
|---|
|
銀髮族使用敬老卡之比率
|
|
銀髮族最常搭公車之目的地
|
|
常搭乘公車之銀髮族是否較為健康?
|
|
提高敬老卡之補助額度會增加多少市庫負擔?
|
| 中市敬老卡搭乘次數級距統計 |
|---|

| Top 48 敬老卡熱門下車站 |
|---|
| Count | General | Count | Senior
| 3953509 | 臺中火車站 | 244567 | 臺中火車站
| 2362017 | 臺中科技大學 | 69434 | 干城站
| 1247107 | 中友百貨 | 58920 | 東勢
| 1114733 | 新光遠百 | 55147 | 中友百貨
| 766443 | 僑光科技大學 | 46327 | 臺中科技大學
| 743824 | 秋紅谷 | 44872 | 一心市場
| 626998 | 干城站 | 44515 | 第三市場
| 595454 | 靜宜大學 | 38099 | 榮總東海大學
| 589174 | 一心市場 | 37021 | 豐原
| 580974 | 高鐵臺中站 | 34655 | 高鐵臺中站
| 557072 | 科學博物館 | 34293 | 豐原郵局
| 555686 | 東海別墅 | 33085 | 霧峰
| 529322 | 榮總東海大學 | 32832 | 中國醫藥大學
| 513909 | 福星西安街口 | 32824 | 新光遠百
| 434022 | 臺中一中 | 32344 | 五權學士路口
| 413922 | 五權學士路口 | 29084 | 媽祖廟
| 355201 | 逢甲大學 | 25149 | 大甲火車站
| 350153 | 第三市場 | 23232 | 水湳市場
| 330083 | 中山醫學大學 | 21944 | 沙鹿光田醫院
| 328400 | 臺中高工(高工路) | 21874 | 中興堂
| 321984 | 僑泰中學(高工路) | 20553 | 光復國小(三民路)
| 288658 | 中興堂 | 18933 | 監理站
| 274901 | 澄清醫院 | 18542 | 臺中二中
| 273067 | 市政府 | 17898 | 南平里
| 267273 | 霧峰 | 17133 | 大坑口
| 221121 | 頂何厝 | 16398 | 仁友東站
| 216187 | 仁友東站 | 15291 | 彰化銀行
| 212254 | 第一廣場 | 15151 | 大德國中
| 204922 | 弘光科技大學 | 14800 | 大坑圓環
| 203270 | 中山堂 | 13495 | 秋紅谷
| 202825 | 中港新城 | 12921 | 聯安醫院
| 199765 | 臺中國小 | 12114 | 大雅
| 187625 | 彰化銀行 | 11780 | 谷關
| 184727 | 朝馬(臺灣大道) | 11755 | 潭子火車站
| 177783 | 朝陽科技大學 | 11660 | 臺中公園
| 171889 | 媽祖廟 | 11528 | 第一廣場
| 171787 | 福安 | 11528 | 沙鹿市場
| 169351 | 潭子火車站 | 11451 | 科學博物館
| 168491 | 中國醫藥大學 | 11413 | 大甲
| 162948 | 後火車站 | 11249 | 臺中國小
| 157179 | 坪頂 | 11239 | 清水
| 155929 | 忠明國小 | 11155 | 頂街
| 154090 | 豐原 | 11146 | 中興仁化路口
| 152324 | 玉門路 | 11092 | 第二市第二信
| 150812 | 中興仁化路口 | 10998 | 民權繼光街口
| 140552 | 茄苳腳 | 10581 | 省議會
| 136953 | 東勢 | 10418 | 第二市場
| 136165 | 監理站 | 9399 | 中山堂
| 126632 | 工學一街口 | 9361 | 聖德禪寺
| |
|---|
| 銀髮族下車熱點農曆分佈 干城 |
|---|

| 銀髮族下車熱點農曆分佈 一心市場 |
|---|

| 銀髮族下車熱點農曆分佈 第三市場 |
|---|

| 銀髮族搭車季節分佈 季節分佈 |
|---|

| 銀髮族搭車頻率與造訪醫院的關聯 |
|---|

| 關聯性 vs 科學證明 |
|---|
|
事件相關性 != 科學證明
|
|
數據分析必須輔以實地驗證 方能獲得真正的結論
|
|
問題:
|
|
所需經費 人力 與 時間 均與探索的問題的價值不成比例
|
|
大數據分析提供一個簡便低成本的驗證方法
|
|
由使用者決定是否接受 數據分析的結果
|
| 高中生上下學搭車行為 |
|---|
|
挑戰
|
|
因為十公里免費政策,學生使用一般卡搭車,而非學生卡,無法直接辨認學生持卡人。
|
|
學生可能持用多張卡片,上下學可能使用不同卡,
|
|
為節省時間,為節省車費而頻繁非必要轉車的機會極少,但仍會因其他因素而使用多張卡片搭乘同一旅程之機會
|
|
上午下午可能使用不同卡片
|
|
上午下車地點 與下午上車地點未必相同
|
|
同一學校的學生的上下車,可能分布在數個不同站牌
|
|
學生上學較為直接,直達目的地,但下學則較為複雜,可能並非直接回家
|
|
如何辨認學生持卡人 ?
|
|
挑選高中站牌,每一個高中站牌,挑選上學時段在該站牌下車超過每年100次的,作為學生樣本。
|
|
統計
|
| 高中生上下學搭車行為 |
|---|
|
上午上學較為直接、以最短時間到達學校, 到校時間較集中
|
|
少部分學生上學搭公車超過60分鐘
|
|
下午下學時較為間接,複雜,可能花較多時間,離校時間較分散
|
|
中途逗留時間較長,可能去補習班,或同學糾團作其他事。
|
|
上下學不一定使用同一張卡
|
| 大數據分析的路障 |
|---|
|
領域知識
|
|
資料缺陷
|
|
運算速度
|
| 資料品質 |
|---|
資料的品質與整備 |
|---|
| 資料的品質與整備 |
|---|
|
大數據研究最大的障礙之一:不易清除原始資料中的瑕疵
|
|
TCST 資料來自於各公車公司提交台中市政府申請補助款的資料
|
|
上下車刷卡時,時有故障及異常刷卡行為
|
|
市政府委外整理資料
|
|
產生異常資料的原因很多,不易追蹤,亦不易更正
|
|
在資料整備階段,沒有現成的工具可以協助
|
| RideLog Field |
|---|
|
#.bp Clean01 Clean 資料整備 資料不全與異常資料
|
| 資料整備-缺少上下車站名 |
|---|
| Month | Total # of Tuples | Missing Off-Bus | Missing On-Bus | Missing On-Off-Bus | |||
|---|---|---|---|---|---|---|---|
| Count | Ratio | Count | Ratio | Count | Ratio | ||
| 1 | 9276813 | 63222 | 0.00681506 | 809 | 8.72067e-05 | 8 | 8.62365e-07 |
| 2 | 6483469 | 54411 | 0.00839227 | 1071 | 0.000165189 | 3 | 4.62715e-07 |
| 3 | 5542962 | 49089 | 0.0088561 | 4159 | 0.000750321 | 41 | 7.39677e-06 |
| 4 | 7725663 | 53986 | 0.00698788 | 1037 | 0.000134228 | 2 | 2.58877e-07 |
| 5 | 9133647 | 61876 | 0.00677451 | 10884 | 0.00119164 | 2226 | 0.000243714 |
| 6 | 3975473 | 60288 | 0.015165 | 5792 | 0.00145693 | 2164 | 0.000544338 |
| 7 | 4370136 | 173054 | 0.0395992 | 10445 | 0.00239009 | 2685 | 0.000614397 |
| 8 | 4133795 | 153679 | 0.0371763 | 4975 | 0.00120349 | 4140 | 0.0010015 |
| 9 | 4517969 | 161586 | 0.0357652 | 8249 | 0.00182582 | 20555 | 0.00454961 |
| 10 | 9004345 | 162494 | 0.0180462 | 8682 | 0.000964201 | 332990 | 0.036981 |
| 11 | 9213997 | 227909 | 0.0247351 | 14751 | 0.00160093 | 364 | 3.95051e-05 |
| 12 | 9442284 | 227804 | 0.0241259 | 11133 | 0.00117906 | 341 | 3.61141e-05 |
| Year | 82820553 | 1449398 | 0.0175005 | 81987 | 0.000989935 | 365519 | 0.00441339 |
| 資料整備-奇怪的資料 |
|---|
|
上下車同一站
|
|
異常車速 (上下車時間間隔太短 甚至是負值, 下車時間早於上車時間)
|
|
深夜班車 (收班後的上下車紀錄)
|
|
不存在的站名 : 彰化銀行第一廣
|
|
上下車站名不在公車路線: 50路公車在大坑口, 臺中精機, 中科大民生校區,貿易三村,澄清醫院等站上下車
|
|
重覆的資料(同一張卡片在同一個時間有相同的上下車站名)
|
| Record No. | Bus | Card No. | Bording Time | Bording Stop | Alight Time | Alight Stop | Date |
|---|---|---|---|---|---|---|---|
| 6129637 | 277 | 628360783 | 389 | 市場前 | 445 | 新民高中 | 1/22 |
| 6251830 | 277 | 628360783 | 389 | 市場前 | 445 | 新民高中 | 1/22 |
| 資料整備-同站不同名 |
|---|
|
同一個招呼站有不同的站名:
|
|
正常 vs 異常
|
| 臺中火車站 | 臺中車站 | 台中火車站 | 2臺中火車站
| 中興大學
| 中興大學(國光路)
| 中興大學(興大路)
| 公益公園(公益路)
| 公益公園(忠明南路)
| 文心森林公園
| 文心森林公園(文心路)
| 水湳市場
| 水湳市場(中清路)
| 東勢
| 東勢B
| 科博館
| 科學博物館
| 科學博物館(臺灣大道)
| 秋紅谷
| 秋紅谷(朝陽橋)
| 高鐵臺中站
| 高鐵臺中站(13月台)
| 清水
| 清水站
| 第二市場
| 第二市場(三民路)
| 第二市場(臺灣大道)
| 第三市場
| 第三市場(臺中家商)
| 逢甲大學
| 逢甲大學(逢甲)
| 逢甲大學(逢甲路)
| 逢甲大學(福星)
| 逢甲大學(福星路)
| 逢甲大學福星路
| 逢甲福星路
| 朝馬
| 朝馬(臺灣大道)
| 新民高中
| 新民高中(三民路)
| 新民高中(崇德路)
| 新光/遠百
| 新光三越
| 新光遠百
| 彰化銀行(自由路)
| 彰化銀行(臺灣大道)
| 臺中榮總
| 臺中榮總(臺灣大道)
| 榮總/東海大學
| 榮總東大學
| 榮總東海大學
| 漢翔公司(星享道)
| 星享道
| 臺中公園
| 臺中公園(三民路)
| 臺中公園(雙十路)
| 臺中科技
| 臺中科技大學
| 國立臺中科技大學
| 台中科技大學
| 臺中高工
| 臺中高工(高工路)
| |
|---|
| 資料整備-同站不同名 |
|---|
|
利用領域知識分辨
|
|
彰化銀行(自由路),彰化銀行(臺灣大道)
|
|
中興大學 (興大路), 中興大學 (國光路)
|
|
用經緯度來辨別
|
|
但 某些站沒有經緯度
|
|
中興大學有三個站名,但只有兩個有經緯度
|
|
中興大學 (興大路) 及 中興大學 (國光路)
|
|
Violation of Referential Integrity !!
|
| 資料整備-同名不同站 |
|---|
|
臺中火車站各招呼站 分布很廣
|

|
根據研究目的來決定是否要區分
|
|
Non Relevant: 研究下車站的目的性
|
|
Relevant: 轉乘協助
|
| 資料的缺陷 |
|---|
|
為了使用10公里免費優惠,導致搭車行為的變化
|
|
下車站牌與真正的目的未必相符:
|
|
例 在醫院站牌下車可能
|
|
需要更精準的歸類乘客行為
|
| 資料的檢核 |
|---|
|
資料量太大,無法利用人力檢核
|
|
需用電腦程式協助檢核
|
|
依靠經驗去探索資料
|
|
聚焦於重要資訊
|
| 加速 |
|---|
如何加速大數據資料的運算? |
|---|
|
不可能將整個資料庫裝進主記憶體
|
|
可以用筆電快速的進行運算嗎?
|
|
簡單的統計運算必須在數分鐘內完成
|
|
例如 2015/01 Top 50 乘客下車站
|
| 加速大數據資料的運算 |
|---|
|
盡可能不要透過 DBMS 來做運算
|
|
資料分析不須要 更新資料,DBMS 的作用只剩下 SQL
|
|
用 SQL 做資料分析有時很不容易,
|
|
例如 每天股票價格與前一天的股價相比
|
|
盡可能將簡單的運算直接用 unix command 或 R/Pyshon 等系統來做
|
|
越低階越好
|
|
避免將不必要的欄位載入資料庫,灌爆主記憶體
|
|
資料減肥
|
| 資料減肥 |
|---|

a3adde36-1a35-484e-b582-6048e4ed4783
| 21a4622e-9d4d-4bc3-a3e9-8f0ead345df8
| b656eb43-55cd-4879-a3b8-6a4befa41f43
| 52cbbb2f-e83d-409d-a568-7471da1e358f
| 575c0e37-b269-48c4-9099-7db1683678ad
| cbe78114-8d09-43f9-8240-c45236c2c045
| 587087dc-112a-48bd-b69f-81d38eb56c87
| 6583685c-c8a4-4b42-be28-22bb05213ab0
| |
|---|
| 加速大數據資料的運算 - 我們的經驗 |
|---|
|
原則
|
|
1. 將 ridelog 做 vertical partition 將每一個欄位切成一個檔案
|
|
2. 針對有需要的欄位合併檔案
|
|
3. 資料減肥
|
|
4. 使用 SSD 加速資料讀取速度
|
|
5. 使用 Native Shell Script
|
|
試驗
|
|
將資料裝到一部 高階 SSD筆電
|
|
在 UWIN 虛擬 Unix 下 試 "下車站" 這個欄位
|
sort file | uniq -c | sort -rt |
|---|
|
Data size: 9270492 筆
|
|
只花了不到 一分鐘 就完成
|
| Code |
|---|
#=================================
# Monthly Riding Record By Card ID
#=================================
for i in 01 02 03 04 05 06 07 08 09 10 11 12
do
paste -d',' ../DATA/$i-8.csv ../DATA/$i-9.csv > tmp$$.o
sed '/代幣/d' tmp$$.o > $i.csv
done
#================================================================
# Accumulate Yearly and Split Card ID and By Leading Hex number
#================================================================
for i in 0 1 2 4 5 6 7 8 9 A B C D E F
do
for j in 01 02 03 04 05 06 07 08 09 10 11 12
do
grep "^$i" $j.csv
done > G$i
done
#==================================
# Count Riding Frequency by Card ID
#==================================
for i in 0 1 2 3 4 5 6 7 8 9 A B C D E F
do
sort G$i | uniq -c | sort -rn > cardcount-$i.csv
done
#========================================
# split cardcount by riding count
#========================================
#=============Single Digit===============
for c in 1 2 3 4 5 6 7 8 9
do
for i in 0 1 2 3 4 5 6 7 8 9 A B C D E F
do
grep "^$c," cardcount-$i.csv
done > splitcardcount-$c.csv
done
#=============Double Digit===============
for c1 in 1 2 3 4 5 6 7 8 9
do
for c2 in 0 1 2 3 4 5 6 7 8 9
do
for i in 0 1 2 3 4 5 6 7 8 9 A B C D E F
do
grep "^$c1$c2," cardcount-$i.csv
done > splitcardcount-$c1$c2.csv
done
done
#=============Triple Digit===============
for i in 0 1 2 3 4 5 6 7 8 9 A B C D E F
do
grep "^[1-9][0-9][0-9]," cardcount-$i.csv
done > splitcardcount-999.csv
#=============1000 time and above ===============
for i in 0 1 2 3 4 5 6 7 8 9 A B C D E F
do
grep "^[1-9][0-9][0-9][0-9]," cardcount-$i.csv
done > splitcardcount-9999.csv
#============= Top Riders ===============
sort -nr *9999.csv | head -20 > TopRider.csv
|
|---|
| Top Riders |
|---|
|
|
| DBMS Vs. Native Environment |
|---|
| DBMS | Native Environment
| 服務對象
| Multiple Users
| Single User
| 介面需求
| 彈性 (SQL)
| 簡單,特定問題
| Overhead
| 高
| 低
| 優化責任
| 系統
| 使用者
| 適用情境
| 個別資料的更新 | 不須掃描整個資料的查詢 不須更新 | 需掃描整個資料庫的查詢 |
|---|
| 結論 |
|---|
|
常用敬老卡的銀髮族最常搭車到傳統市場及商場或商業區
|
|
銀髮族的搭車頻率 與 造訪醫院的頻率高度負相關
|
|
從交通行為中發掘社會應用具有重大社會意義
|
|
解讀資料必須具備真正的領域知識
|
|
必須注意資料的缺陷 避免陷阱
|
|
資料的品質通常很糟,需要整備,否則 GIGO
|
|
需要快速簡便的程式設計能力以支援資料探索的需求
|
|
善用工具
|