機器學習項目:建立一個酒店推薦引擎
編譯:yxy
出品:ATYUN訂閱號
所有在線旅行社都在爭先恐後地滿足亞馬遜和網飛(Netflix)設定的AI驅動的個性化標準。此外,在線旅遊已經成為一個競爭激烈的領域,品牌試圖通過推薦,對比,匹配和分享來吸引我們的注意力(和錢包)。
在本文中,我們的目標是為在Expedia上搜索和預定酒店的用戶創建最佳的酒店推薦。我們將此問題建模為多類別的分類問題,並構建SVM和決策樹集成的方法,根據用戶的搜索細節,預測用戶可能預定酒店的簇(cluster)。
數據
數據是匿名的,幾乎所有欄位都是數字格式。數據集可以在Kaggle上找到(鏈接在文末),我們將使用train.csv捕獲用戶行為的日誌,destination.csv包含包含用戶對酒店評論的相關信息。
下面的圖提供了train.csv的概要:
下面的圖提供了destinations.csv的概要:
為了能夠在本地處理,我們隨機抽取樣本為記錄的1%。然後,我們有241,179條記錄。
(241179,24)
EDA
目標是根據用戶搜索中的信息預測用戶將預訂哪個hotel_cluster。共有100個簇。換句話說,我們正在處理100個類的分類問題。
數據非常好地分布在所有100個簇上,並且數據是偏態的。
特徵工程
日期時間,簽入日期和簽出日期列不能直接使用,我們將從中提取年份和月份。首先,我們定義了幾個函數來實現它,我們還定義了一個合併destination.csv的函數。
處理date_time列:
處理srch_ci列:
處理srch_co列:
初步分析
在創建新特徵並刪除無用的特徵之後,我們想知道是否有任何與hotel_cluster相關的內容。這可以讓我們了解是否應該更加關注某些特定的特徵。
沒有列與hotel_cluster線性相關,這意味著對特徵之間的線性關係建模的方法可能不適合該問題。
策略
經過簡單的谷歌搜索,不難發現,對於已知的搜索目的地組合,酒店所在國家,酒店的行情肯定有助於找到酒店簇。我們這樣做:
合併目標表和新創建的聚合數據透視表。
(241179,276)
實現演算法
我們只關注預訂活動。
獲取特徵和標籤。
隨機森林分類器
我們通過k折交叉驗證報告性能度量,而Pipeline可以更輕鬆地組成估計量。
SVM分類器
SVM非常耗時。但是,我們取得的成績更好。
Github:https://github.com/susanli2016/Machine-Learning-with-Python/blob/master/Hotel%20recommendation.ipynb
數據集:https://www.kaggle.com/c/expedia-hotel-recommendations/data


※誰說選擇機器學習演算法沒有套路的?
※最強神器!用Excel實踐機器學習演算法
TAG:機器學習 |