資料源:kaggle
的目的是從中提取有價值的資訊,為市場分析、業務決策及預測模型的開發提供支持。該資料集資料如下:
車輛詳細資訊:包括每輛車的具體信息,例如其製造商、型號、裝飾和製造年份。
交易資訊:提供有關銷售交易的見解,包括銷售價格和銷售日期。
市場趨勢:MMR 值提供每輛車市場價值的估計,可以分析市場趨勢和波動。
狀況和里程:包含車輛狀況及其里程表讀數的數據,可以分析這些因素如何影響銷售價格。
其中,價格預測是分析的重要一環,因為準確的價格預測不僅能提升經銷商的市場競爭力,還有助於優化庫存管理、支持買賣決策,並輔助貸款與保險業務的發展。同時,預測價格能揭示市場波動趨勢,幫助行業參與者制定更有效的定價策略,實現營收增長。
1.從kaggle載入資料集
2.缺失值填補
3.建立baseline1
MAS:
MSE 是預測值與實際值之間差值的平方的平均值。其單位與目標變量(sellingprice)的平方單位一致。
MSE數值較大,表明預測值與實際值之間仍有一定的誤差。可能是價格範圍的落差大所造成
MSE 標準差較小表示模型在不同的交叉驗證中誤差分布較穩定
R²:
R² 分數接近 1,總變異中有95%可被自變數解釋,擬合效果良好。
R² 的標準差很小,說明模型在交叉驗證的不同折中的性能非常穩定,表現一致。
1. Year (年份)
分佈情況:年份的中位數在 2010 年左右,且大部分資料集中在 2000 年以後。
異常值:1985-1995 年份附近有一些異常值,可能代表較舊的車輛數據。
2. Condition (條件/狀態)
分佈情況:值介於 0 到 50 之間,分佈比較均勻,中位數約在 30 左右。
異常值:這裡似乎沒有顯著的異常值。
3. Odometer (里程數)
分佈情況:絕大多數數據集中在 0 至約 20 萬公里範圍內,但長鬚線顯示有較大的擴展範圍。
異常值:一些極高的值(超過 40 萬公里)被視為異常值,可能需要進一步檢查是否合理或是否為數據錯誤。
4. MMR (市場價格)
分佈情況:大部分數據集中在 0 至約 25,000 的範圍內,分佈高度偏右。
異常值:有不少數據超過 100,000,甚至接近 175,000,這些可能是高端車輛或不合理的數據。
標準差超過5的佔全部的1453,約為0.26%
我們嘗試將標準差超過5的資料移除,看是否能降低MSE值
可以觀察到1~5之間和10~50之間分別都呈正相關
因此推測1~5的評分可以對應到10~50
所以這裡把1~5分都乘以10,得到以下結果
在這個部分我們將會使用既有的特徵來建立新特徵,讓預測結果更接近實際值
資料集中有生產年份跟銷售日期兩個欄位,從中可以得知車輛出售時的車齡,對於價格來說車齡可能會比上述兩個欄位更具有影響性
車齡(car_age)跟sellingprice的關係圖如下
使用Logistic Regression 模型,特徵選擇'year', 'condition', 'odometer', 'mmr', 'car_age',再次進行交叉驗證以評估準確度,得到結果如下
可以觀察到MSE略為下降,但R²也下降一些,表示先前的資料處理和新特徵的加入對於Logistic Regression來說,提升有限
分別使用RandomForest和xgboost進行訓練,得到的結果如下
可以觀察到兩者的MSE有顯著的提升,擬合也相當良好
Random Forest: 簡單易用,抗過擬合能力強,對異常值不敏感。但由於RF是多棵決策樹組成,每棵樹在訓練過程中是獨立構建的,並且每棵樹都需要消耗記憶體,由於資料量較多,因此會RF較不適合此資料集
XGBoost: 通過梯度提升算法(Gradient Boosting)逐步減少預測誤差,通常比RF更準確,且每次僅存儲當前樹的結果,減少了記憶體的需求。雖然調參較複雜且對極端值較為敏感,但考量到硬體效能,因此選擇XGBoost來進行參數的優化
針對XGBoost進行超參數優化,並且用以下4個指標來評估結果
MSE: 用於測量模型的預測值與真實值之間的偏離程度
RMSE: 為MSE的根號,使它與原始數據的單位一致,更容易解釋
MAE: 用於測量預測值與真實值之間的平均差異
R²: 衡量模型解釋變異的比例
模型的穩定性:
測試集的R²與驗證集非常接近,說明模型在未見過的數據上表現穩定。 測試集和驗證集的
MSE差異很小,顯示模型在不同數據集上的誤差表現一致,表明模型具有良好的泛化能力。
驗證集和測試集的RMSE非常接近,顯示模型在未見數據上的表現穩定
MAE 的值相對 RMSE 更低,表明模型對於大多數數據的預測偏差較小
應用表現:
驗證集和測試集的指標接近,說明模型具備良好的解釋能力
平均誤差(MAE)在1,000 元左右,約佔sellingprice平均值的7.3%,若對於±1,000的偏差可以接受,則此模型已可直接應用