全文連結:http://tecdat.cn/?p=28519
作者:Yiyi Hu
最近我們被客戶要求撰寫關於共享單車的研究報告,包括一些圖形和統計輸出。
近年來,共享經濟成為社會服務業內的一股重要力量。作為共享經濟的一個代表性行業,共享單車快速發展,成為繼地鐵、公交之後的第三大公共出行方式
但與此同時,它也面臨著市場需求不平衡、車輛亂停亂放、車輛檢修調度等問題。本項目則著眼於如何不影響市民出行效率的同時,對共享單車進行合理的批量維修工作的問題,利用CART決策樹、隨機森林以及Xgboost算法對共享單車借用數量進行等級分類,試圖通過模型探究其影響因素並分析在何種條件下對共享單車進行批量維修為最優方案。
解決方案
任務/目標
通過機器學習分類模型探究共享單車借用數量的影響因素,並分析在何種條件下對共享單車進行批量維修為最優方案。
數據源準備
該數據集有三個數據來源,分別為交通局,天氣數據,以及法定假期。
解決方案
任務/目標
通過機器學習分類模型探究共享單車借用數量的影響因素,並分析在何種條件下對共享單車進行批量維修為最優方案。
數據預處理及可視化
(一)時間:首先從「timestamp」列中提取了「month」和「hour」兩列,試圖分別從整體、季度、月份、小時四個方面,對共享單車借用總數進行箱圖分析。
(二)天氣:觀察數據特徵發現,其中「weather_code」列各類別分別為:1 =晴朗;大致清晰,但有一些值與霧霾/霧/霧斑/霧附近;2 =散雲/一些雲;3 =碎雲/雲層疏鬆;4 =多雲;7 =雨/小雨陣雨/小雨;10 =雨與雷暴;26 =降雪;94 =凍霧。因此,本文對「weather_code」進行重新定義,將 1,2,3,4 類天氣現象定義為宜騎車天氣;7,10,26,94 類天氣現象定義為不宜騎車天氣。
點擊標題查閱往期內容
單車上的城市:共享單車數據洞察
左右滑動查看更多
01
02
03
04
(三)共享單車借用數量:「節假日」與「雙休日」中共享單車使用數量的分布較為相似,高峰期均在午後。對比發現,「工作日」中單車使用數量的高峰期在 7 點至 9 點,16 點到 19 點這兩個時間段呈現為兩個明顯的波峰,這兩個時間段往往是上班下班時間,人流量比較大,因而數據的呈現比較符合實際的規律。因此,絕對將「is_holiday」列與「is_weekend」列聯合進行分組,合併為「is_non_workday」,分為工作組與非工作日組。
(四)溫度:圖 5-4 為各變量之間的相關係數矩陣,發現溫度「t1」列與體感溫度「t2」列之間存在較高的相關性,且天氣溫度數據更加客觀,因此選擇僅保留「t1」列。各個變量之間的均呈現中弱相關性。此外,各變量與因變量「count_log」列均存在一定的相關性,但相關強度不一。
(五)經觀察「count_log」箱圖發現,該數據仍存在著少量異常值。因此,為了提高結果的準確性,選擇刪去 16 個過低的數值,剩餘 17398 組數據。
在進行預處理後,本文已經對共享單車中的變量進行了篩選與調整,保留了 hour,t1,is_non_workday,weather_code,wind_speed,hum,season 等 7 個特徵變量。在正 式建立模型之前,對於因變量「count_log」進行等頻分箱,將其分成了五類,命名為 category。當保證類別平衡,即每類數據的樣本量接近,算法會有更好的效果。對於溫度、濕度等連續性變量,為使得最後結果的準確性,並未對其進行分箱。
接下來,本文對所有的特徵變量進行了歸一化處理,為了歸納統一樣本的統計分布性, 本文選取 75%的數據劃分為訓練集,25%的數據作為測試集。
建模
CART決策樹:
CART 算法易於理解和實現,人們在通過解釋後都有能力去理解決策樹所表達的意義。並且能夠同時處理分類型與數值型屬性且對缺失值不敏感。
隨機森林:
使用隨機森林模型在進行分類時,需要現在經過訓練的決策樹中輸入測試樣本,這棵決策樹的分類便可以由各葉子節點的輸出結果而確定;再根據所有決策樹的分類結果,從而求得隨機森林對測試樣本的最終評價結果。
使用自助法隨機地抽樣得到決策樹的輸入樣本和選取最佳的分割標準在決策樹的節點上隨機地選取特徵進行分割是隨機森林的兩大優點,正是這些優勢使得隨機森林具備了良好的容忍噪聲的能力,且使得決策樹之間的相關性有所降低。隨機森林中的決策樹還具備了任意生長但不被修剪的特點,因此這些決策樹的偏差較低,有利於提高評價的準確度。
Xgboost:
Xgboost 作為一種新型的集成學習方法,優點頗多。首先,他在代價函數裡加入了正則化項,用於控制模型的複雜度,有效防止了過擬合。其次,Xgboost 支持並行處理,眾所周知,決策樹的學習最耗時的一個步驟是對特徵的值進行排序,Xgboost 在訓練之前預先對數據進行了排序,然後保存為 block 結構,後面的疊代中重複使用這個結構,大大減小了計算量。再次,Xgboost 算法靈活性高,它支持用戶自定義目標函數和評估函數,只要保證目標函數二階可導即可,並且對於特徵值有缺失的樣本,可以自動學習出它的分裂方向。最後,Xgboost 先從頂到底建立所有可以建立的子樹,再從底到頂反向進行剪枝,這樣不容易陷入局部最優解。
本文分別利用 CART 決策樹、隨機森林以及 Xgboost 算法對共享單車借用數量進行等級分類,並對三個方法進行精度測試,發現通過 Xgboost 算法分類效果最好,經過調參後,訓練集模型精確度高達 0.92,測試集精確度為 0.83。分析分類結果以及各因素的重要性發現,時間、風速、濕度、溫度四個因素對共享單車使用量存在較高的影響,因此維修部門可以選在凌晨階段,或者風速較大、溫度過低或過高的時期對共享單車進行合理的批量維修,避開市民用車高峰,保證市民出行效率以及用車安全。
關於作者
在此對Yiyi Hu對本文所作的貢獻表示誠摯感謝,她專長時間序列預測、回歸分析、多元統計、數據清洗、處理及可視化、基礎機器學習模型以及集成模型。
點擊文末 「閱讀原文」
獲取全文數據資料。
本文選自《共享單車需求量用CART決策樹、隨機森林以及XGBOOST算法登記分類及影響因素分析》。
點擊標題查閱往期內容
數據分享|PYTHON用決策樹分類預測糖尿病和可視化實例
樣條曲線、決策樹、Adaboost、梯度提升(GBM)算法進行回歸、分類和動態可視化
SAS分類決策樹預測貸款申請評分剪枝和結果可視化
分類回歸決策樹交互式修剪和更美觀地可視化分析細胞圖像分割數據集
PYTHON用戶流失數據挖掘:建立邏輯回歸、XGBOOST、隨機森林、決策樹、支持向量機、樸素貝葉斯和KMEANS聚類用戶畫像
PYTHON集成機器學習:用ADABOOST、決策樹、邏輯回歸集成模型分類和回歸和網格搜索超參數優化
Python對商店數據進行lstm和xgboost銷售量時間序列建模預測分析
PYTHON集成機器學習:用ADABOOST、決策樹、邏輯回歸集成模型分類和回歸和網格搜索超參數優化
R語言集成模型:提升樹boosting、隨機森林、約束最小二乘法加權平均模型融合分析時間序列數據
Python對商店數據進行lstm和xgboost銷售量時間序列建模預測分析
R語言用主成分PCA、 邏輯回歸、決策樹、隨機森林分析心臟病數據並高維可視化
R語言基於樹的方法:決策樹,隨機森林,Bagging,增強樹
R語言用邏輯回歸、決策樹和隨機森林對信貸數據集進行分類預測
spss modeler用決策樹神經網絡預測ST的股票
R語言中使用線性模型、回歸決策樹自動組合特徵因子水平
R語言中自編基尼係數的CART回歸決策樹的實現
R語言用rle,svm和rpart決策樹進行時間序列預測
python在Scikit-learn中用決策樹和隨機森林預測NBA獲勝者
python中使用scikit-learn和pandas決策樹進行iris鳶尾花數據分類建模和交叉驗證
R語言里的非線性模型:多項式回歸、局部樣條、平滑樣條、 廣義相加模型GAM分析
R語言用標準最小二乘OLS,廣義相加模型GAM ,樣條函數進行邏輯回歸LOGISTIC分類
R語言ISLR工資數據進行多項式回歸和樣條回歸分析
R語言中的多項式回歸、局部回歸、核平滑和平滑樣條回歸模型
R語言用泊松Poisson回歸、GAM樣條曲線模型預測騎自行車者的數量
R語言分位數回歸、GAM樣條曲線、指數平滑和SARIMA對電力負荷時間序列預測R語言樣條曲線、決策樹、Adaboost、梯度提升(GBM)算法進行回歸、分類和動態可視化
如何用R語言在機器學習中建立集成模型?
R語言ARMA-EGARCH模型、集成預測算法對SPX實際波動率進行預測在python 深度學習Keras中計算神經網絡集成模型R語言ARIMA集成模型預測時間序列分析R語言基於Bagging分類的邏輯回歸(Logistic Regression)、決策樹、森林分析心臟病患者
R語言基於樹的方法:決策樹,隨機森林,Bagging,增強樹
R語言基於Bootstrap的線性回歸預測置信區間估計方法
R語言使用bootstrap和增量法計算廣義線性模型(GLM)預測置信區間
R語言樣條曲線、決策樹、Adaboost、梯度提升(GBM)算法進行回歸、分類和動態可視化
Python對商店數據進行lstm和xgboost銷售量時間序列建模預測分析
R語言隨機森林RandomForest、邏輯回歸Logisitc預測心臟病數據和可視化分析
R語言用主成分PCA、 邏輯回歸、決策樹、隨機森林分析心臟病數據並高維可視化
Matlab建立SVM,KNN和樸素貝葉斯模型分類繪製ROC曲線
matlab使用分位數隨機森林(QRF)回歸樹檢測異常值