資料科學
Final project!
109502008 章程睿
109302034 黃子鈞
目標 : 找到何種因素會導致車禍,未來可以避免車禍產生!
資料集
我們使用了政府資料開放平台的今年車禍的詳細統計。
分別有兩種資料A1,A2。
A1為車禍中有人死亡。
A2為車禍中無人死亡,或過24hr才有人死亡。
資料集
其中有很多關於車禍的詳細資料。
像是:發生日期時間地點,天候光線名稱,道路類別,型態,事故位置,路面狀況等等。
想法:將我們認為實際會影響車禍的因素提出。
如圖:
想法:將我們取出的資料作前處理。
如圖:
想法:丟入Decision tree 去做決策。
丟入Decision tree 去做分類。
遇到問題 : A1跟A2數量不平衡。
因為A1是車禍中有人死亡的案例。故其的數量會遠小於A2(車禍沒有人死亡)的數量。其比例大致如圖:
A1只有占不到0.1%。
遇到問題 : A1跟A2數量不平衡。
解決方法 : Oversampling!
想說這樣做下去可能會出問題!
機器不管用何種因素下去預測,只要預測A2就會有很高的準確率。
解決方法 : 做Oversampling處理! 去平均我們的資料集。
Oversampling
將樣本數較少的組別之數據隨機選取並進行複製,使得各組之間的數據量可以達到相同,但若將同樣的數據複製多份,可能會導致模型會出現過度擬合(Overfitting)的問題。
作法一: one-hot encoding!
原本想說可以自己手刻feature,但因為我們選了17個features,且其中一個就可能要分成四個,像圖一,故最後分出來會有太多個features,不好判斷。
圖一 : 將時間分為 凌晨,早上,下午,晚上
1個feature經過處理候就變成4個。
作法二 : Target encoding
Target Encoding又稱為mean encoding,我們把同樣類別的資料對應「Target值」全部抓出來,並且將這些Target值的平均當成Encoding的值。因此我們可以在不增加資料集的維度下提取有關目標值的訊息。
結果分析
我們分別有用不同的樣本比例去實作,而結果也跟我們猜想的一樣,當樣本比例差距過大時,accuracy跟precision與recall差距蠻大,當樣本比例接近時之間的差距會逐漸縮小
A1 v.s. A2(10% v.s 90%)
A1 v.s. A2(30% v.s 70%)
A1 v.s. A2(50% v.s 50%)
結果分析
當我們把樹的深度增加時,精確度也確實上升
depth = 15
心得
透過這次project,對整個訓練的過程熟悉很多。
也把上課學習到的理論實作
不論是從拿到資料開始的分析、選擇
到後來的特徵處理,建立模型
都是相當具有挑戰性,需要去尋找合適的方法
不斷嘗試,才能得到理想結果