李原吉,李丹,唐淇
(四川大學錦城學院,四川成都,611731)
二手車被認為是汽車完整產業鏈上最薄弱也是最后的一片藍海,伴隨著居民可支配收入的增加與我國汽車保有量的提升,二手車市場的規模也隨之變的龐大。在這股發展的浪潮中,也吸引了許多資本投資入駐二手車行業。但是與之而來的問題就是中國的二手車平臺線上估價過程比較主觀,估價的標準比較模糊,不夠細致和具體,更多的內容缺少一個可以量化的參考標準,不利于消費者的選購與資本的大范圍采購,因此,本文從解決實際問題出發,構建一個基于XGBoost算法的價格預測模型,通過對不同車輛情況屬性的訓練,對其最終成交價格進行預估,以用于解決實際生活中對二手車成交價格量化困難,并且并不公開透明等問題,具有重要的研究意義和實用價值。
依據現有文獻的指導與查閱相關資料,本文得知影響二手車成交價格包括車輛基礎屬性,保值率,與車況條件。在本文的模型特征選取中,選擇了傳統常規的車況條件等特征,添加的其他特征為過戶情況,動力源與座位數量作為特征,用以預測最后價格。
本文通過調查二手車的交易價格與網絡銷售平臺的二手車價格評估,發現現如今二手車價格僅有三項屬性作為評估依據:車型,上牌時間與行駛里程。因此本文發現,國內二手車交易價格缺失一個量化標準,不夠公開透明,可能會對消費者權益產生一定侵害。若能夠通過輸入一定參數來預測車輛價格,建立相關的預測模型,將有利于二手車的交易與保障消費者權益??傊?,該預測模型的建立,是為了解決實際生活中對二手車成交價格量化困難,并且并不公開透明等問題,提供一個參考性,有實際意義的研究思路。
隨著移動互聯網的快速發展,與python爬蟲技術的日益成熟,越來越多的具有實際價值的數據可以通過日常用戶使用互聯網時產生,本文使用的大量數據,是通過網絡爬蟲技術爬取某知名二手車交易網站獲得的車輛數據,并以此為基礎,將車型作為正則化關鍵詞,獲取其他知名二手車網站的數據,最后綜合考量,取平均值得到最終結果。因此該數據具有一定的代表性。例如:現代1.6 CRDI SX小轎車;成交時期:2015;公里數:41000公里;動力類型:汽油;操作類型:手動檔;出售次數:一次;里程數:19.67KMP;排量:1582cc;馬力:126.2bgp;座位數量:5座;成交價格:12.5W。
2.2.1 特征信息的選擇
特征信息的提取的目的是將原始數據中,存在的過于復雜的文字信息,或者文字信息與數字信息同時出現的復雜情況下,解決這些特征過于復雜而導致的無法在建模時有效分類的問題。在研究過程中,本文發現,由于爬蟲程序問題或網站數據缺失等問題與部分數據對售價影響過小,因此我們選擇的特征有:1.型號;2.動力類型;3.操作類型;4.出售次數;5.里程數;6.排量;7.馬力;8.座位數量;9成交價格:12.5W。
2.2.2 缺失值處理
在研究過程中,因為數據標準化大多需要連續型數據,而在我們通過爬蟲獲得的原始數據可能會因為程序缺陷或者數據缺失,而導致我們獲得的汽車數據有一定的缺失值。進行調研后,對于這些缺失值,我們設定,如果缺失數據為型號與成交價格,則廢棄該條數據;如果缺失數據為操作類型,出售次數,座位數量,則使用眾數對該數據進行填充;如果缺失值為馬力,排量,則使用中位數進行填充;剩余缺失部分,統一使用眾數進行填充。經過數據的初步處理,我們獲得了7250輛二手汽車補充缺失值后的交易信息,包括成交價格,車輛屬性等基礎信息的數據集。
2.2.3 數據標準化
日前,主流的標準化方法有三種,分別為直線型方法,折線性方法,曲線型方法。不同的方法對最后的預測結果會產生不同的影響。在本研究中,我們涉及的數據特征,大多為連續型數據,因此我們對這幾個變量使用z-score標準化(zero-meannormalization),,即計算特征矩陣中列的均值及方差,將所得結果帶入式(1)

集成學習模型通過將多個單個弱分類器集成/組合在一起,使它們共同完成分類任務。而集成學習模型,可以擬合多種弱分類器,通過比重調整最終分類結果,使結果更精確。
XGBoost是一個隸屬于集成學習模型的Boosting算法,在分類、回歸和排名等監督學習任務上擁有最高效的性能,該算法已成為機器學習一個首選工具,其原因首當其沖的就是其出色的預測性能,高度優化的多核處理和分布式的機器實現,以及處理稀疏數據的能力。它本質上是一類提升樹模型,集成許多弱分類器,以迭代的方式形成一個強分類器。其中XGBoost的決策樹訓練過程如圖1所示。

圖1 XGBoost的決策樹訓練過程
該算法的核心思想是在一棵樹上不斷的添加樹與進行特征分裂來使這棵樹生長。每個樹被添加上去,就對應著該模型在學習一個新函數,從而用以擬合上一次預測的殘差。當我們完成N棵樹的訓練后,對于我們要預測的值,其本質就是每棵樹對應分數乘以對應對應比重之和,這就是其樣本的預測值。對于目標函數,我們應當使用二階泰勒展開式來優化,目標函數如式(2)所示。

將清理后的數據導入我們編輯好的XGBoost模塊,將編譯后的數據導入模型進行初步分析,然后進行建模。但是建模后,精度需要我們進行自行的調整,因為它往往無法一次得到我們想要的預測結果,因此要對模型的超參進行微調,以求得到較為準確的結果。XGBoost模型中的超參數主要包括學習率、最大深度、子模型的數量、Gamma值等。在網格中搜索,比較各參數變化后模型的平均方差,選擇最佳參數。平均方差越小,參數越佳。在本文模型中,學習率learning_rate調整為0.01,樹的深度 max_depth調整為5,決策樹剪枝力度調整為0.5,樣本采樣率調整為0.9,最小葉子權重min_child_weight 調整為 1,其余參數都設置為默認參數。
首先,我們將我們提取到的7250個數據作為研究對象,依據該數據二手車型,車輛屬性與二手車成交價等基礎信息,利用隨機函數,將該堆數據隨機按照7:3的比例劃分為訓練集與實驗集,用以預測最終的二手車交易價格,通過計算模型的預測準確率來驗證模型的精度。GBoost有多個參數,由于部分模型參數對結果影響較大,在優化改進模型時要對參數進行優化,結合網格搜索法對模型參數進行尋優 。其次使用平均絕對誤差MAE反應出預測值的誤差,來展示模型精度,最后使用其他模型對其相同數據進行訓練,與XGBoost模型的訓練結果比較,得出結果。
在預測前,將7250項交易進行拆分訓練與測試,計算模型的平均絕對誤差(MAE)與預測準確率(Accuracy)。為了進一步驗證模型的性能,將測試集分組進行測試,不斷調整模型參數,圖2為平均絕對誤差的表現。

圖2 平均絕對誤差
其中,因為數據量原因,僅僅展示了測試集233-332行的數據平均絕對誤差的表現,因為MAE能反映預測值誤差,MAE的值越小,則模型預測精度越高。其中紅色部分為為進行數據清洗前的MAE值,藍色部分為清洗后的MAE值。由圖可得,經過數據清洗后的預測值與實際值的擬合程度更高,預測準確率更精確,平均精度提高了20%左右。進一步表明數據清洗在XGBoost模型中的重要性。
緊接著,我們使用相同的訓練集訓練不同算法,再使用同一組測試集測試,來表現XGBoost模型的優越性。本文的對比算法使用了ID3與C4.5,三種算法的對比圖如圖3所示。

圖3 ID3與C4.5與XGBoost算法準確率比較
其中紅色部分為XGBoost算法預測準確率,綠色部分為C4.5算法,藍色部分為ID3算法,三種算法均使用測試集23-522行的數據,由圖可知,XGBoost模型有良好的預測能力,且證明了相較于ID3模型和C4.5模型,XGBoost模型具有更高的精確性和更好的穩定性。
本文通過理論與對實驗結果進行分析,對模型進行了總結認為其優點如下:(1)易與弱分類器級聯(2)可以將不同的分類算法當做弱分類器(3)精度較高,實用性強。缺點是(1)弱分類器的權重與數目不易設定(2)數據不平衡會導致分類準確率下降(3)訓練非常耗時。本文認為,在集成學習算法使用多數投票法時,對多個弱學習器為樣本的實驗時,一般將數量最多的作為最終分類。但是如果多個類別獲得高票,則分類器會隨機選擇一個最高票作為最終分類,而這樣可能會引起學習誤差變大,使模型預測失真,因此本文認為可以優化弱學習器的連接方式,首先使用弱學習器預測一次數據,得到我們XGBoost模型的強學習器的輸入數據,最后得到最終結果,可以有效提高模型精度與準確率。
為了解決實際生活中對二手車成交價格量化困難,并且并不公開透明等問題。本文借助XGBoost算法,建議了一個二手車成交價格預測模型,通過輸入各項汽車相關參數來預測最終的成交價格,再與常見算法比較,得出該模型準確率與精度尚優,并提出改進方案,可為消費者與企業購買二手車時提供一定的數據與理論支持具有重要的研究意義和實用價值。