摘要:這次比賽的題目是給定年月份的用戶在不同地點(diǎn)口碑購買記錄,以及年月淘寶上用戶的購物行為數(shù)據(jù),來預(yù)測月這一整月用戶來到一個地點(diǎn)之后會光顧哪些口碑商鋪。
一直想總結(jié)一下這次的比賽,拖啊拖。。。一直等到現(xiàn)在,趁著現(xiàn)在要找實(shí)習(xí),好好總結(jié)一下。
比賽題目比賽的官方網(wǎng)站在這,IJCAI SocInf"16。
這次比賽的題目是給定 2015 年 7 ~ 11 月份的用戶在不同地點(diǎn)口碑購買記錄,以及 2015 年 7 ~ 11 月淘寶上用戶的購物行為數(shù)據(jù),來預(yù)測 12 月這一整月用戶來到一個地點(diǎn)之后會光顧哪些口碑商鋪。這個比賽有一個很有意思的地方,就是它關(guān)注的是一個用戶來到一個他之前沒有去過的新地點(diǎn)之后,他會去哪些店鋪消費(fèi),有一點(diǎn)像推薦系統(tǒng)中經(jīng)典的冷啟動問題。比賽提供的數(shù)據(jù)也有這個特點(diǎn):
在測試集中,只有 10 % 的用戶用之前使用口碑的記錄;
有 5 % 的用戶雖然有之前使用口碑的記錄,但是在測試集中,這些用戶來到了新的地點(diǎn);
所有用戶都有他們淘寶購物的行為數(shù)據(jù)。
如果題目只是這樣的,其實(shí)還不算奇怪,奇怪的是題目的評價標(biāo)準(zhǔn)上加上了 budget 這個神奇的東西,先來看看評價指標(biāo):
$$P = frac{sum_i min(|S_i cap S_i^*, b_i|)}{sum_i| S_i^* |}$$
$$R = frac{sum_i min(|S_i cap S_i^*, b_i|)}{sum_i min(|S_i, b_i|)}$$
$$F_1 = frac{2 ast P ast R}{P + R}$$
最后考核的目標(biāo)是 F1 值。簡單來說一下這個 budget:
我們的目標(biāo)是在用戶來到一個地點(diǎn)之后,給他推薦他可能會去的店鋪。這里,把問題轉(zhuǎn)換一下,我們要給很多店鋪來推薦可能會來這里購物的人。這里推薦的人數(shù)要受到 budget 的限制,即不能超過店鋪的最大承載量以及口碑提供給這家店鋪的優(yōu)惠券的個數(shù)。
先詳細(xì)介紹一下比賽提供的數(shù)據(jù)格式:
Online user behavior before Dec. 2015. (ijcai2016 taobao.csv)
2015 年 7 ~ 11 月淘寶上用戶的購物行為數(shù)據(jù),包括用戶的點(diǎn)擊、購買,購買物品種類等屬性。
Users shopping records at brick-and-mortar stores before Dec. 2015. (ijcai2016 Koubei train.csv)
2015 年 7 ~ 11 月份的用戶在不同地點(diǎn)口碑購買記錄,數(shù)據(jù)格式:(user_id, loc_id, merchant_id, time_stamp)
Merchant information (ijcai2016 merchant info.csv)
不同口碑商鋪的位置分布情況,有的商鋪有連鎖店,數(shù)據(jù)格式:(merchan_id, loc_id1:loc_id2:...)
Prediction result. (ijcai2016 Koubei test.csv)
最后要提交的數(shù)據(jù)格式
user_id, loc_id, merchant_id1:merchant_id2...
對于這個問題,我們的想法是,要充分利用每一個用戶和每一個口碑商鋪的歷史數(shù)據(jù)。更準(zhǔn)確的說,我們要從訓(xùn)練集中提取足夠的可訓(xùn)練的特征,然后利用一些經(jīng)典的模型,比如 Xgboost 來構(gòu)建分類模型。同時最需要注意的是,我們要時刻考慮 budget 的影響。
如何來利用歷史數(shù)據(jù) ?我們分析了題目所給的訓(xùn)練集,然后將數(shù)據(jù)切分為兩部分,第一部分是 2015 年 11 月 23 號之前的數(shù)據(jù),我們把這當(dāng)做本地訓(xùn)練集;另一部分是 2015 年 11 月 23 號之后的數(shù)據(jù),我們把這當(dāng)做本地測試集。通過對這些數(shù)據(jù)的整理和分析,我發(fā)現(xiàn)幾條條重大的規(guī)律:
如果地點(diǎn)確定的話,對于一個用戶,他最有可能去的是他曾經(jīng)光顧過的店。
從口碑店鋪的角度來講,如果這家店鋪曾經(jīng)的銷量很好,那么它也將在未來吸引更多的顧客去消費(fèi)。
從這兩條觀察出來的規(guī)律來看,我們將探索數(shù)據(jù)的方向劃分為兩條道路:一條是從用戶的角度出發(fā);另外則是從口碑商店的角度出發(fā)。
從用戶的歷史信息來看基于我們的觀察,當(dāng)一個人來到一個他之前去過的地點(diǎn),他們更傾向于去之前購物過的商店消費(fèi)。因此,一個在過去的一段時間內(nèi)在一家商鋪的消費(fèi)次數(shù)能夠在很大程度上影響我們的推薦質(zhì)量。頻率越高,越能代表這個人在未來會再次來到這家店消費(fèi)。
我們做了一個統(tǒng)計(jì),如果一個用戶在過去曾經(jīng)關(guān)顧過一家口碑店鋪超過 6 次的話,當(dāng)我們在之后再向這位用戶推薦這家店的話,我們會得到超過 90 % 的準(zhǔn)確率。
不過從另一方面說,每一家口碑店鋪都有 budget 限制,這意味著,如果按照用戶之前光顧過哪家店鋪來推薦的話,肯定會有部分店鋪的 budget 超標(biāo)。
我們在用戶的數(shù)據(jù)中找尋這樣一個鍵值對 (user, location, merchant),通過計(jì)算這樣一個鍵值對出現(xiàn)的頻率,我們可以統(tǒng)計(jì)出 (user, location, merchant, frequency) 的鍵值對,將這個鍵值對按照 frequency 來從高到低排序,然后按照這個順序,從高到低來給 (user, query) 這樣一個查詢來推薦店鋪,直到這家店鋪的 budget 耗盡為止。
經(jīng)過統(tǒng)計(jì)發(fā)現(xiàn),平均每一個用戶在一個地點(diǎn)只會關(guān)顧 1.3 個商家,所以在這里我們限制最大的推薦個數(shù)為 4。
從商家的歷史信息來看經(jīng)過之前的分析,我們發(fā)現(xiàn)不同的店鋪有著不同的“受歡迎度”。舉個例子,“820”這個商家在整個訓(xùn)練集中幾乎出現(xiàn) 1/4。問題是我們怎么定義這個“受歡迎度”呢?
為了解決這個問題,我們首先定義,在不同地點(diǎn)的同一家口碑商鋪是不一樣。因?yàn)樵陬}目給定的數(shù)據(jù)中,存在大量的連鎖商鋪,但是這些連鎖店鋪在不同地點(diǎn)的“受歡迎度”是完全不同的。
接下來我們設(shè)想這樣一種情況,90 % 來到地點(diǎn) A 的人都會去 商鋪 B 消費(fèi),在這種情況下,如果我們給所有的來地點(diǎn) A 的人都推薦 B 商鋪的話,我們就能得到 90 % 的準(zhǔn)確率。所以,在一個地點(diǎn)某家店鋪消費(fèi)的總?cè)藬?shù)占該地點(diǎn)所有人數(shù)的比例,我們稱之為該店鋪的 “受歡迎度” (Popularity)。
因此我們將所有店鋪按照 Popularity 從大到小來進(jìn)行排序,依次推薦來到該地點(diǎn)的所有用戶,直到超過 budget。經(jīng)過一些線下的實(shí)驗(yàn),我們?nèi)∵@個 Popularity 的值的閾值為 0.25。
引入淘寶數(shù)據(jù)來提升推薦質(zhì)量我們之前的推薦完全沒有用到每個人的特征,相當(dāng)于無法做到“千人千面”。于是接下來我們就想辦法,如何利用淘寶的數(shù)據(jù)來提升推薦質(zhì)量。
從直觀上而且,淘寶的數(shù)據(jù)應(yīng)該很有幫助,比如,在淘寶上經(jīng)常瀏覽或者購買電子產(chǎn)品的人往往不太會去關(guān)顧口碑商鋪里面那些賣女式服裝的。受到這個的啟發(fā),我們就建立了一個這樣的表:如果存在這樣一條記錄,一個用戶在淘寶上瀏覽或者購買的商鋪 A;同時也在線下口碑上的商鋪 B 消費(fèi),我們就把 (A, B) 這個關(guān)系鏈表放入表中。基于這樣的表,我們對那些之前沒有口碑消費(fèi)記錄的新用戶,如果他們曾在淘寶上購買或?yàn)g覽了商鋪 A, 那么我們就只給他推薦在關(guān)系鏈表中與 A 相連的口碑商鋪。線上的結(jié)果證明,我們的預(yù)測質(zhì)量提升了。
引入機(jī)器學(xué)習(xí)模型目前為止我們都沒有怎么用機(jī)器學(xué)習(xí)模型,用普通的規(guī)則就可以在天池上面排一個不錯的名次。但是為了取得更好的成績,我們嘗試著去探尋每一個用戶、地點(diǎn)和商鋪的各種各樣可能的特征。下面我將詳細(xì)介紹這些我們的做法。
我們將這個問題看成是一個二分類問題。我們的方法是對每一個店鋪建模,比如說,在數(shù)據(jù)集中,用戶 u 在地點(diǎn) l 的店鋪 m 消費(fèi)了。我們可以產(chǎn)生一個三元組 (u, l, m)。對應(yīng)于這個三元組,我們可以產(chǎn)生一些訓(xùn)練數(shù)據(jù),首先,對于我們而言,正樣本即是那些消費(fèi)過的用戶,即 (u, l, m) 是 True;第二,我們的負(fù)例是那些同樣是這個地點(diǎn)的其他商鋪,比如說 m‘,我們將 (u, l, m") 定義為 False。按照這個方法,我們可以產(chǎn)生供二分類的訓(xùn)練集。根據(jù)這個道理,對于賽題要我們預(yù)測的用戶來到一個地點(diǎn)之后會去哪些店鋪的情況,我們也可以根據(jù)這個三元組,產(chǎn)生一個每一個店鋪的預(yù)測概率。
這么做其實(shí)負(fù)樣本是很多的。。。為了避免正負(fù)樣本不平衡的問題,我們采取采樣的方法去提取負(fù)樣本。
特征工程特征工程對應(yīng)機(jī)器學(xué)習(xí)來說十分重要,俗話說,特征是模型的上限。我們觀察到,有些用戶喜歡關(guān)顧那些他們之前去過的店,有些喜歡光顧該地點(diǎn)上最熱門的店鋪,有些則喜歡去那些剛開張的店鋪。
所以,針對 (u, l, m) 這樣一個三元組,我們試圖找尋關(guān)于他們其中任意一個的特征。
我們找尋的特征如下:
鍵值對 (u, l, m) 出現(xiàn)的次數(shù),即 frequence,用戶關(guān)顧這家店的頻率。
鍵值對 (u, l, m) 是否出現(xiàn)過,True or False。
user_id 的 onehot 編碼。
merchant_id 編碼。
(l, m) 出現(xiàn)次數(shù),即這個地點(diǎn)這個商店的總銷量。
open_interval:店鋪的開業(yè)時間。
用戶 u 在淘寶上購物的次數(shù)
用戶 u 在淘寶上瀏覽的次數(shù)
用戶 u 在淘寶上購買過的商品的種類的 onehot 編碼
用戶 u 在淘寶上購買過的商鋪的 id 的 onehot 編碼
用戶 u 在淘寶上購買的比例 (購買數(shù) / (購買 + 點(diǎn)擊)
用戶 u 在淘寶上購買的次數(shù)
用戶 u 在淘寶上點(diǎn)擊的次數(shù)
通過 SVD 算出來的用戶 u 的潛在矩陣
通過 SVD 算出來的商店 m 的潛在矩陣
模型融合之前的規(guī)則可以得出一個結(jié)果,之后的模型也可以得出一個結(jié)果,在比賽的最后階段,我們對模型進(jìn)行融合,嘗試各種不同的參數(shù),達(dá)到了這個名次。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/44409.html
摘要:內(nèi)容來自,人工智能數(shù)據(jù)科學(xué)比賽整理平臺。本項(xiàng)目由強(qiáng)力支持。天池閱讀更多 內(nèi)容來自 DataSciComp,人工智能/數(shù)據(jù)科學(xué)比賽整理平臺。Github:iphysresearch/DataSciComp 本項(xiàng)目由 ApacheCN 強(qiáng)力支持。 微博 | 知乎 | CSDN | 簡書 | OSChina | 博客園 全球城市計(jì)算AI挑戰(zhàn)賽 3月19日 - 4月11日, 2019 // ...
摘要:內(nèi)容來自,人工智能數(shù)據(jù)科學(xué)比賽整理平臺。消費(fèi)者人群畫像信用智能評分月日月中國移動福建公司提供年月份的樣本數(shù)據(jù)脫敏,包括客戶的各類通信支出欠費(fèi)情況出行情況消費(fèi)場所社交個人興趣等豐富的多維度數(shù)據(jù)。 內(nèi)容來自 DataSciComp,人工智能/數(shù)據(jù)科學(xué)比賽整理平臺。Github:iphysresearch/DataSciComp 本項(xiàng)目由 ApacheCN 強(qiáng)力支持。 微博 | 知乎 | C...
摘要:內(nèi)容來自,人工智能數(shù)據(jù)科學(xué)比賽整理平臺。首個全國范圍大型人工智能領(lǐng)域競賽。競賽項(xiàng)目涵蓋了當(dāng)前人工智能多媒體信息識別領(lǐng)域的主流應(yīng)用方向。這個比賽主要針對圖像分類任務(wù),包括模型攻擊與模型防御。 Special Sponsors showImg(https://segmentfault.com/img/remote/1460000018907426?w=1760&h=200); 內(nèi)容來自 D...
閱讀 3460·2019-08-30 15:55
閱讀 2058·2019-08-30 15:44
閱讀 1464·2019-08-30 12:47
閱讀 751·2019-08-30 11:05
閱讀 1637·2019-08-30 10:54
閱讀 663·2019-08-29 16:07
閱讀 3575·2019-08-29 14:17
閱讀 2234·2019-08-23 18:31