文/Jongerden & Fu
買輛新車永遠是令人興奮的事情,尤其當這輛車還是妳的第壹輛車的時候。有研究顯示,年輕人在挑選座駕時會更傾向選擇父母曾擁有的品牌。這種趨勢可能是出於品牌忠誠度,也或許是由於他們在這個品牌身上擁有美好回憶。但是,也可能僅僅是因為他們並不懂得如何在不同品牌之間做選擇,於是只好選擇自己熟悉的品牌。而且,哪怕是那些喜歡嘗鮮,希望選購不同品牌車型的人,也會覺得現有購車網站並沒太大幫助,因為它們往往會讓妳在搜索前就先選定品牌或型號。數據俠Steven Jongerden和Huanghaotian Fu為了彌補這壹空缺,讓人們能在做決定時掌握更多信息,用機器學習和數據分析打造了壹個購車推薦平臺。
爬數據,尋找相關性
為了更好地幫助人們選擇自己的理想座駕,我們需要能夠將個人需求與品牌及型號信息進行匹配的數據。
(圖片說明:項目設計流程)
由於這種數據並不是公開可以獲取的,只能從現有的汽車銷售網站上提取。而這些網站上的數據,也代表著當今市場上正在交易的汽車的信息。我們使用Python的Beautifulsoup對壹個非常流行的汽車網站進行爬取,獲得了12000輛車、覆蓋20種品牌和37個特征維度的數據集。我們之後搭建的推薦系統,推薦的車型也將來自上述範圍。
我們首先用R語言、使用K近鄰算法(K Nearest Neighbor)對缺失數據進行處理和補充。缺失最多的是油耗信息(8.6%缺失)和加速數據(6.9%缺失)。我們基於車價、汽車品牌和汽車類型,使用歐式幾何距離法(Euclidean Distance)以及等於根號n的K值,通過K近鄰算法進行了補充,並最終得到壹個完整的數據集。由於K近鄰算法是無監督機器學習算法,我們沒法量化它的表現和準確度,尤其是在壹個多維的解空間裏(Multidimensional Solution Space)。
(圖片說明:各變量的交叉相關性分析)
初步的數據分析顯示出很有意思的相互關系。比如,車價和引擎型號有很強關聯,高價位的汽車往往有更大的引擎。另外,數據顯示,更貴的車往往更耗油。總的來看,不同維度的變量之間有很強的相關性,這讓我們可以用各種機器學習算法來進行分析。
調試機器學習的算法模型
為了預測那些對潛在購車者來說很重要的特征,同時讓我們的推薦平臺能獨立於外部數據源,我們使用機器學習算法對壹些特定的特征進行了預測。
由於數據是通過特定方式收集(比如,設計相似的汽車會被放置在數據組的同壹個類別下,因為在爬取時它們的數據收集是按照品牌順序進行的),數據集中存在序列相關(Serial Correlation)現象。為了消除序列相關,我們在使用機器學習算法分析數據前,對數據組的次序進行隨機排列。另外,為了驗證效果,我們將數據組按照4比1的比例分成壹個訓練集和壹個測試集。
首先,我們使用與車價高度相關的特征,搭建了壹個多元線性回歸模型。得出的R調整平方值(使用測試集計算得出)為0.899。在對預估模型進行Breusch-Godfrey測試後,觀測到數據集是按照汽車產商和型號排列,檢測到了序列相關性關系。為了解決這個問題,我們使用了開頭提到的方法進行處理。另外,殘差還發現存在異方差性,意味著殘差中,對於不同車價來說,方差並不均等。盡管這不符合Gauss Markov假設中的壹個最優線性無偏估計,但檢查模型的殘差圖(Residual Plot)並未發現異方差性很高的殘差,因此這個模型可以成立。
其次,我們使用了多元線性回歸模型及前向逐步選擇法(Forward Stepwise Selection)。這個算法將每個可能的模型與壹個包含所有特征的模型進行比較,並選出貝葉斯信息量(Bayesian Information Criterion)最低的最佳組合。得出的R調整平方值(使用測試數據集計算得出)為0.914。
為了進壹步提高線性模型的表現,我們使用壹個預先設定的來代表車價,並對這個變量執行Box-Cox變換。Box-Cox變換是壹種常見的數據變換,用於連續的響應變量不滿足正態分布的情況,變換之後,可以壹定程度上減小不可觀測的誤差和預測變量的相關性。經過Box-Cox變換,我們的數據更接近正態分布。這個模型得出的R調整平方值為0.9,與第壹個手動調整的多元線性回歸模型相比,並沒有太多提升。
接下來,我們使用收縮方式,或稱為正則化(Shrinkage/Regularization Method)來提高前面模型得到的數據。傳統的收縮方式(Lasso回歸和嶺回歸)在處理包含與因變量有強相關性的多元變量的數據集時,存在缺陷。假如使用Lasso回歸,大多數系數會被減至0,但其實他們可能對結果有很強的解釋力。而Elastic Net模型可以通過引入壹個額外的超參數來平衡Lasso回歸和嶺回歸,進而克服上面提到的問題。
此外,第二個引入的超參數則用於確定模型的均方差和復雜性之間的平衡。為了確定最佳的超參數,進而將均方差減小到最小,同時保證模型是最簡單的,我使用了10折交叉驗證。得出的R調整平方值為0.9218。
最後,為了進壹步提升預測準確度,我使用了提升樹模型(Gradient Tree Boosting Model)。它由7000個決策樹組成,根據超參數的交叉驗證所得的平均數,決策樹的深度(Interaction Depth)等於4,收縮率(Shrinkage Factor)等於0.1。而它的R調整平方值十分驚艷,為0.9569,也就是說,我們測試的所有模型中,提升樹模型擁有最強的預測能力。
不過即便提升樹模型預測能力最強,人們依然更喜歡簡單的模型。而鑒於簡單的多元線性回歸模型表現良好,簡單的線性回歸模型將會用於我們的推薦平臺。
基於協同過濾的汽車系統
能夠預測汽車價格和其他有趣的特征,可以在推薦汽車時為用戶提供更多的信息。
我們的推薦基於壹個基本假設:擁有相同偏好的用戶做出的打分是相似的。這也意味著,如果壹個人喜歡壹輛特定的汽車的所有特征,那麽他就在整體上喜歡這輛車。
為了找到符合某壹名用戶需求的車,首先需要找到與他擁有同樣需求的其他用戶,並將這些用戶選擇的對應的車型進行合並。在對這名用戶與其他用戶比較時,使用了K近鄰算法,距離由皮爾遜相關系數或余弦相似性來確定。當這些相似用戶被確定,他們對汽車的打分會被整合,並基於此為新用戶做出推薦。這個過程被稱為基於用戶的協同過濾(User Based Collaborative Filtering)。
基於用戶的協同過濾是壹種半監督的機器學習技術,使用訓練數據集的評分矩陣中的特定項來確定測試評分矩陣中的不確定的項。因此,我們可以評斷推薦的準確度。我們使用壹個7個值已確定的10折交叉驗證,通過觀察它的ROC和PR曲線(Precision/Recall Graphs)的平均值來評估推薦的表現情況。
ROC曲線顯示了True Positive (真正,對應y軸)和False Positive (假正,對應x軸)的關系。ROC的結果顯示,多數推薦是正確的,僅有壹小部分的False Positives(也就是假的預測)。ROC曲線向左上角靠近,說明這個模型的預測比較準確。
(圖片說明:ROC曲線)
而PR曲線則顯示了準確率(搜索結果到底有多大幫助)以及召回率(結果有多完整)之間的關系。從圖中可以看出,對於壹小部分推薦,準確度很高;然而,隨著召回率提高,準確率趨向於0。
我們可以得出結論,這個模型在靠近圖形右上角(代表著完美的模型)的時候表現良好。另外,將召回率限制在最多10個推薦的時候,準確率的降低會得到遏制。
(圖片說明:PR曲線)
基於這個模型以及用戶對車的具體需求,我們的推薦平臺給用戶推薦了10個汽車品牌以及相應的型號。
通過將推薦模型和機器學習模型結合,我們搭建了壹個交互界面,當用戶輸入信息,比如他期待的汽車引擎馬力、汽車類型等,系統就可以做出推薦。這些用戶輸入信息可以通過下拉菜單以及勾選等方式手動控制。此外,妳還可以用壹句話描述妳的理想座駕,而推薦模型則會基於此為妳推薦10輛妳可能喜歡的汽車,它們的車價、排氣量、油耗以及圖片等信息也會展示出來,供用戶進行簡單比較。
當用戶勾選“喜歡”,界面會重新將用戶帶到可以進行購買的網頁。另外,用於推薦的信息以及用戶喜歡的車的信息將在app外部存儲。
(圖片說明:推薦系統的可視化界面截圖)
總之,這個推薦應用使用了基於用戶的協同過濾以及回歸技術,以實現準確度地基於壹些特定的汽車特征來為用戶推薦汽車品牌和型號的功能。性能驗證顯示,推薦算法和回歸模型都表現良好,成功組成了壹個可靠的推薦平臺。
註:本文翻譯自《Recommending your car brand》。內容僅為作者觀點,不代表DT財經立場。
題圖視覺中國
關於DTNYCDSA
DTNYCDSA是DT財經與紐約數據科學學院合作專欄。紐約數據科學學院(NYC Data Science Academy)是由壹批活躍在全球的數據科學、大數據專家和SupStat Inc.的成員***同組建的教育集團。
數據俠門派
數據俠Steven Jongerden畢業於代爾夫特理工大學,獲得航空航天工程專業本科學位,政策分析和工程學碩士學位。他現在是荷蘭凱捷管理顧問公司的壹名數據科學咨詢師。Steven在紐約數據科學學院進修,提升了自己機器學習和大數據分析的技能。
數據俠Huanghaotian Fu畢業於紐約大學,擁有數學和經濟學碩士。目前在美國斯蒂文斯理工攻讀金融分析碩士。他於2017年暑期完成紐約數據學院的培訓。
加入數據俠
“數據俠計劃”是由第壹財經旗下DT財經發起的數據社群,包含數據俠專欄、數據俠實驗室系列活動和數據俠聯盟,旨在聚集大數據領域精英,***同挖掘數據價值。了解數據俠計劃詳情請回復“數據俠計劃”,投稿、合作請聯系。