實戰(zhàn)淘寶穿衣搭配

1. 說明

?《淘寶穿衣搭配》比賽是2015年的一個天池算法比賽,現(xiàn)已開放為新人賽,仍可下載數(shù)據(jù),上傳結果及計算排名。具體地址是: https://tianchi.aliyun.com/getStart/information.htm?spm=5176.100067.5678.2.78904065HrZLpP&raceId=231575
?這是一個集圖片、文字、數(shù)據(jù)挖掘于一體的比賽,可下載的數(shù)據(jù)是千萬級的,在網上也可以找到冠軍及一些選手的解題思路。新人可用來練手,通過評分定位自己的實力,也能從前人的思路中受到啟發(fā)。

2. 具體問題

?競賽數(shù)據(jù)包含三部分,分別是:商品基本信息數(shù)據(jù)(分類、文本、圖像);用戶歷史行為數(shù)據(jù)(用戶、商品、購買時間);和專家提供的搭配套餐數(shù)據(jù)(商品組合)。任務是預測給定商品最佳搭配的前200個商品。 具體計分公式是:

其中n表示答案集合中商品的數(shù)量,p(k)表示在k截斷之前的預測準確率,當?shù)趉個商品在答案集合中Δ(k)為1,否則為0。從中可見:在答案中越靠前的商品權重越大。
?購物表數(shù)據(jù)共1361萬條,用戶110萬個,50萬種商品,不重復關鍵字8萬多個,280種分類。

3. 問題分析

?測試集中的數(shù)據(jù)均未出現(xiàn)在專家推薦表中,無法直接使用專家推薦。測試集中出現(xiàn)的商品大約有一半即沒被購買過,也沒被推薦過,要想對預測它的搭配,就需要找到與之類似的商品。因此本題可分解成兩部分:求某商品的最佳搭配,求某商品的近似商品。
?求最佳搭配,可在專家推薦表中獲取商品所在組中的其它商品,用戶購買記錄可將用戶在某一時段購買的商品認為是可配搭商品,并從中減掉不可搭配的品種。不可搭配的品種由專家推薦表算出,280個類別可以有約280x280種組合,而專家給出的可組合類別只有不到1000種。
?求近似商品,可通過商品信息中商品的分類,關鍵字,圖片計算,主要使用在同類中找關鍵字TF/IDF加權后最近似的商品。

4. 無監(jiān)督學習和半監(jiān)督學習

?此題代表了一類典型的問題:從以往的用戶行為中尋找規(guī)律,以便輔助和引導用戶之后的行為,像視頻,新聞,購物推薦都屬于此類問題,俗稱啤酒尿布問題(在超市購物時買尿布的往往也買啤酒)。
?此題應該算是一個無監(jiān)督或半監(jiān)督學習問題。盡管用公式給出了計分標準,但開發(fā)者仍不知道預測搭配的5000x200項中,具體哪些正確的,哪些是錯誤的。線上每天只有兩次評分機會,根據(jù)其反饋只能在粗略的方向上調整。
?因為是無監(jiān)督學習,各個特征影響的大小,很多都是靠人和經驗和猜,然后花大量的時間在線上驗證自己的猜測,監(jiān)督學習算法,迭代改進算法都無法使用。于是在第二賽段,有些選手將其改造成半監(jiān)督學習:通過專家推薦生成正例,通過隨機抽取生成反例,這樣就可以代入算法了。 常用于處理無監(jiān)督學習的方法有聚類,關聯(lián)規(guī)則,規(guī)則等等。

5. 規(guī)則算法

?有人把此題解法戲稱為“規(guī)則吊打”,就是說它非??简炓?guī)則。再看看自己的解法,以及別人分享出的算法,前期幾乎都是“人”總結出來的規(guī)則,比如:同一個人在同一季節(jié)購買的更可能是搭配,對同時購買次數(shù)進行排序,有些類別不適合搭配等等。如果不知道數(shù)據(jù)的具體意義,這些規(guī)則都無法獲得。當然,這也是特征工程的一部分。
?常見的與規(guī)則相關的算法有從決策樹中抽取規(guī)則,它是一個監(jiān)督學習;還有關聯(lián)規(guī)則,比如Apriori算法或Fp-Growth算法,基本都屬于統(tǒng)計類算法,該類算法也適用于本文中的問題。

6. 文本分析

?題目給出的數(shù)據(jù)中包括商品的描述,給出的不是具體的文字,而是其關鍵字轉換成的ID號,就是說一個商品的描述信息由多個 ID號組成。如果兩件商品都包括很多同樣的關鍵字,則說明它們可能是近似商品。這只是一個粗略的比較,可能與一件相品關鍵字個數(shù)相同的幾百件商品,所以還要考慮每個關鍵字的重要程度。幾乎所有人都使用了TF/IDF算法,使用中也有一些技巧,比如在什么范圍內取IDF?是在同一類中取,還是在所有商品中取。

7. 圖像處理

?除了數(shù)據(jù)表,此題還提供了好幾G的圖片,也是用來計算商品的相似度和搭配度的,由于圖片太多,處理時間太長,并且需要大量存儲空間,所以很多人都忽略了該特征。也有人處理了其中的一部分,比如只在找不到搭配信息,沒有購買記錄,又找不到關鍵字類似的商品時,才分析其圖片信息。求取圖片特征的方法可以用SIFT(有相應的python庫),即尺度不變特征變換。

8. 一些小技巧

(1) 大數(shù)據(jù)問題

?此題應該算是數(shù)據(jù)量較大的問題,一次處理上千萬條數(shù)據(jù),內存不夠會讓程序運行起來非常慢,又只能使用一個cpu,因此在前期處理時,可切成了幾個小數(shù)據(jù)集,用多線程分別計算后再合并。

(2) 按時間分組

?除了統(tǒng)計每個用戶購買的所有商品以外,還需要考慮季節(jié),比如冬天的不能和夏天的搭配,可使用判斷前后一個月內購買,以及將時間分為春夏秋冬等方法。

(3) 簡化成模型

?題目給的信息量很大,而我們關注的只是測試集中的5000個商品,以及與它近似的商品,因此,在前期可以先不考慮簡化成模型,因為簡化都或多或少會造成數(shù)據(jù)損失。

(4) 上傳結果評分

?如果同時改進了幾個問題,那最好分開評測,因為同時提交,會分不清哪些是加分項,哪些是減分項。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容