日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

『 天池竞赛』O2O优惠券使用预测思路总结

發布時間:2024/4/15 编程问答 55 豆豆
生活随笔 收集整理的這篇文章主要介紹了 『 天池竞赛』O2O优惠券使用预测思路总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

  • 數據與評價方式
  • 解決方案
  • 數據劃分
  • 特征工程
  • 算法及模型融合
    • 模型融合
    • 應用
  • 線下評估
  • 回顧

賽題地址:https://tianchi.shuju.aliyun.com/competition/introduction.htm?spm=5176.100065.200879.2.6r6s4g&raceId=231587

第一賽季數據


目錄


正式開始做是從十月底開始的,我之前參加了新手賽,而這一次正式賽可以說是真正認真做的一次,中間和隊友一起學習了很多,也有小小的收獲,不管這次成績如何,以后還有機會。


數據與評價方式

賽題提供用戶在2016年1月1日至2016年6月30日之間真實線上線下消費行為,預測用戶在2016年7月領取優惠券后15天以內的使用情況。 使用優惠券核銷預測的平均AUC(ROC曲線下面積)作為評價標準。 即對每個優惠券coupon_id單獨計算核銷預測的AUC值,再對所有優惠券的AUC值求平均作為最終的評價標準。


解決方案

提供數據的區間是2016-01-01~2016-06-30,預測七月份用戶領券使用情況,即用或者不用,轉化為二分類問題,然后通過分類算法預測結果。首先就是特征工程,其中涉及對數據集合的劃分,包括提取特征的區間和訓練數據區間。接著就是從特征區間中提取特征,包括用戶特征、商戶特征、優惠券特征、用戶商戶組合特征、用戶優惠券組合特征。后期在測試區間提取了當天的前后7/3/1天的領券信息(這里面后七天的特征其實是不能應用于工業應用的,因為實際預測中你無法知道后7/3/1天的領券信息),提升較大。最后使用GBDT、RandomForest、LR進行基于rank的分類模型融合


數據劃分

最初沒有使用數據劃分,導致特征中產生數據泄露,以至于在訓練數據上效果很好,線下測試也還不錯,在線上表現確差強人意,后來劃分了之后有明顯提升。

集合預測區間特征區間
預測集領券:20160701~20160731領券&消費:20160101~20160630
訓練集領券:20160515~20160615
消費:20160515~20160630
領券:20160101~20160501
消費:20160101~20160515

并沒有劃分多個訓練集,這一點是要改進之處。


特征工程

主要有五大特征類:用戶特征、商戶特征、優惠券特征、用戶商戶組合特征、用戶優惠券組合特征,賽題包括online和offline的數據,由于里面只有部分用戶重合,商戶優惠券等并未有重合,個人臆測線上應該是淘寶天貓的購買消費數據,有一定關聯,但關系微弱,因此只向其中提取了用戶特征。而offline數據集就提取了所有五個特征類。一下是各部分特征:

  • 用戶特征:u
    • 線下領取優惠券但沒有使用的次數 u1
    • 線下普通消費次數 u2
    • 線下使用優惠券消費的次數 u3
    • 線下平均正常消費間隔 u4
    • 線下平均優惠券消費間隔 u5
    • u3/u1 使用優惠券次數與沒使用優惠券次數比值 u6
    • u3/(u2+u3) 表示用戶使用優惠券消費占比 u7
    • u4/15 代表15除以用戶普通消費間隔,可以看成用戶15天內平均會普通消費幾次,值越小代表用戶在15天內普通消費概率越大 u8
    • u5/15 代表15除以用戶優惠券消費間隔,可以看成用戶15天內平均會普通消費幾次,值越大代表用戶 在15天內普通消費概率越大 u9
    • 領取優惠券到使用優惠券的平均間隔時間 u10
    • u10/15 表示在15天內使用掉優惠券的值大小,值越小越有可能,值為0表示可能性最大 u11
    • 領取優惠券到使用優惠券間隔小于15天的次數 u12
    • u12/u3 表示用戶15天使用掉優惠券的次數除以使用優惠券的次數,表示在15天使用掉優惠券的可能,值越大越好。 u13
    • u12/u1 F014 表示用戶15天使用掉優惠券的次數除以領取優惠券未消費的次數,表示在15天使用掉優惠券的可能,值越大越好。 u14
    • u1+u3 領取優惠券的總次數 u15
    • u12/u15 F016 表示用戶15天使用掉優惠券的次數除以領取優惠券的總次數,表示在15天使用掉優惠券的可能,值越大越好。 u16
    • u1+u2 一共消費多少次 u17
    • 最近一次消費到當前領券的時間間隔 u18
    • 最近一次優惠券消費到當前領券的時間間隔 u19
    • 用戶當天領取的優惠券數目 u20
    • 用戶前第i天領取的優惠券數目 u20si
    • 用戶后第i天領取的優惠券數目 u20ai
    • 用戶前7天領取的優惠券數目 u21
    • 用戶前3天領取的優惠券數目 u22
    • u22/u21 u23
    • u20/u22 u24
    • 用戶后7天領取的優惠券數目 u25
    • 用戶后3天領取的優惠券數目 u26
    • u26/u25 u27
    • u20/u26 u28
    • 用戶訓練、預測時間領取的優惠券數目 u29
    • 用戶當天領取的不同優惠券數目 u30
    • 用戶前第i天領取的不同優惠券數目 u30si
    • 用戶后第i天領取的不同優惠券數目 u30ai
    • 用戶訓練、預測時間領取的不同優惠券數目 u31
    • 按照7/4/2分解訓練、預測時間,提取此段窗口時間的特征
    • 用戶7/4/2天領取的優惠券數目 u32_i
    • 用戶7/4/2天所領取的優惠券優惠率r1/r2/r3/r4排名 u_ri_ranki
    • 用戶7/4/2天所領取的優惠券優惠率r1/r2/r3/r4排名 u_ri_dense _ranki
    • u32_4/u32_7 u33
    • u32_2/u32_4 u34
    • u32_2/u32_7 u35
    • u20/u32_2 u36

    • 線上領取優惠券未使用的次數 action=2 uo1
    • 線上特價消費次數 action=1 and cid=0 and drate="fixed" uo2
    • 線上使用優惠券消費的次數 uo3
    • 線上普通消費次數 action=1 and cid=0 and drate="null" uo4
    • 線上領取優惠券的次數 uo1+uo3 uo5
    • uo3/uo5 線上使用優惠券次數除以線上領取優惠券次數,正比 uo6
    • uo3/uo4 線上使用優惠券次數除以線上普通消費次數,正比 uo7
    • uo2/uo4線上特價消費次數除以線上普通消費次數 uo8

    • 加入訓練預測時間前一個月的窗口特征

    • 線下領取優惠券但沒有使用的次數 uw1
    • 線下普通消費次數 uw2
    • 線下使用優惠券消費的次數 uw3
    • 線下平均正常消費間隔 uw4
    • 線下平均優惠券消費間隔 uw5
    • uw3/uw1 使用優惠券次數與沒使用優惠券次數比值 uw6
    • uw3/(uw2+uw3) 表示用戶使用優惠券消費占比 uw7
    • uw4/15 代表15除以用戶普通消費間隔,可以看成用戶15天內平均會普通消費幾次,值越小代表用戶在15天內普通消費概率越大 uw8
    • uw5/15 代表15除以用戶優惠券消費間隔,可以看成用戶15天內平均會普通消費幾次,值越大代表用戶在15天內普通消費概率越大 uw9
    • 領取優惠券到使用優惠券的平均間隔時間 uw10
    • uw10/15 表示在15天內使用掉優惠券的值大小,值越小越有可能,值為0表示可能性最大 uw11
    • 領取優惠券到使用優惠券間隔小于15天的次數 uw12
    • uw12/uw3 表示用戶15天使用掉優惠券的次數除以使用優惠券的次數,表示在15天使用掉優惠券的可能,值越大越好。 uw13
    • uw12/uw1 F014 表示用戶15天使用掉優惠券的次數除以領取優惠券未消費的次數,表示在15天使用掉優惠券的可能,值越大越好。 uw14
    • uw1+uw3 領取優惠券的總次數 uw15
    • uw12/uw15 F016 表示用戶15天使用掉優惠券的次數除以領取優惠券的總次數,表示在15天使用掉優惠券的可能,值越大越好。 uw16
    • F01+F02 一共消費多少次 uw17


  • 商戶特征:m
    • 商戶一共的消費筆數:m0
    • 商戶優惠券消費筆數:m1
    • 商戶正常的消費筆數:m2
    • 沒有被使用的優惠券: m3
    • 商戶發放優惠券數目:m3+m1 m4
    • 商戶優惠券使用率:m1/m4 m5
    • 商戶在訓練、預測時間發行的優惠券數目 m6
    • 商戶當天發行的優惠券數目 m7
    • 商戶在訓練、預測時間有多少人在此店領券 m8
    • 商戶在當天有多少人在此店領券 m9
    • 按照7/4/2分解訓練、預測時間,提取此段窗口時間的特征
    • 7/4/2天此商店優惠券發放數目 m10_i
    • m9 / m10_7 m11
    • m9 / m10_4 m12
    • m9 / m10_2 m13
    • m10_2 / m10_4 m14

  • 優惠券特征:c
    • 折扣類的優惠券折扣率 r1
    • 滿減類優惠券滿減金額 r2
    • 滿減類優惠券減的金額 r3
    • 滿減類優惠券優惠率 (r2-r3)/r2 r4
    • c1+c2 此優惠券一共發行多少張 c0
    • 此優惠券一共被使用多少張 c1
    • 沒有使用的數目 c2
    • c1/c0 優惠券使用率 c3
    • 優惠力度 c5
    • 優惠力度在當天所領取優惠券里面排名 c5_rank
    • 優惠力度在當天所領取優惠券里面排名 c5_denserank
    • 優惠力度在當天同一店家所領取優惠券里面排名 c5_rankm
    • 優惠力度在當天所領取優惠券里面百分比排名 c5_rankp
    • 優惠力度在當天同一店家所領取優惠券里面百分比排名 c5_rankmp
    • 此優惠券在訓練、預測時間發行了多少張 c6
    • 此優惠券在當天發行了多少張 c7
    • 領券當天周幾 c8
    • 領券當天是否周末 c9 c8,c9去掉效果更好了。。。。
    • 此優惠券在當天被多少人領過 c10
    • 此優惠券在訓練、預測時間被多少個人領過 c11
    • 此優惠券最后一次領券時間到此領券時間的間隔 c12
    • 此優惠券最后一次消費時間到此領券時間的間隔 c13
    • 按照7/4/2分解訓練、預測時間,提取此段窗口時間的特征
    • 7/4/2天此優惠券發放數目 c14_i
    • c10 / c14_7 AS c15
    • c10 / c14_4 AS c16
    • c14_2 / c14_4 AS c17
    • c10 / c14_2 AS

  • 用戶和商戶組合特征:um
    • 用戶在商店總共消費過幾次 um0
    • 用戶在商店使用優惠券幾次 um1
    • 用戶在商店領取優惠券未消費次數 um2
    • 用戶在商店普通消費次數 um3
    • um1/(um1+um2) 用戶在此商戶優惠券使用率 um4
    • um0/(u2+u3) 值大表示用戶比較常去的商戶 um5
    • um1/u3 值大表示用戶比較喜歡在那個商戶使用優惠券 um6
    • 用戶在訓練、預測時間在此商店領取的優惠券數目 um7
    • 用戶當天在此商店領取的優惠券數目 um8
    • 按照7/4/2分解訓練、預測時間,提取此段窗口時間的特征
    • 7/4/2天此用戶在此商店領取的優惠券發放數目 um9_i
    • um8 / um9_7 um10
    • um8 / um9_4 um11
    • um8 / um9_2 um12
    • um9_2 / um9_4 um13

  • 用戶和優惠券組合特征:uc
    • 用戶領取的優惠券數目 uc0
    • 用戶領取未消費的優惠券數目 uc1
    • 用戶消費了此優惠券的數目 uc2
    • uc02/uc0 uc3
    • 用戶在此期間領取了多少張此優惠券 uc4 partiton by uid, cid
    • 用戶在當天領取了多少張此優惠券 uc5
    • 領取優惠券時間-最后一次使用優惠券時間 uc6
    • uc6/ u5 uc7 正比

    • 用戶前第i天領取的此優惠券數目 uc5si
    • 用戶后第i天領取的此優惠券數目 uc5ai
    • 用戶前7天領取的此優惠券數目 uc8
    • 用戶前3天領取的此優惠券數目 uc9
    • uc9/uc8 uc10(若u21為0,則為1)
    • uc4/uc9 uc11
    • 用戶后7天領取的此優惠券數目 uc12
    • 用戶后3天領取的此優惠券數目 uc13
    • uc13/uc12 uc14
    • uc4/uc13 uc15
    • 按照7/4/2分解訓練、預測時間,提取此段窗口時間的特征
    • 7/4/2天此用戶在此商店領取的優惠券發放數目 uc16_i
    • 用戶前后2/4/7領取的優惠券優惠率排名 uc17_i


算法及模型融合

最初使用RF、GBDT兩種模型,GBDT效果優于RF,后期使用了多個GBDT和XGBoost,分別使用不同的參數、不同的正負樣本比例以rank的方式進行多模型的融合,效果有微小提升,但是由于計算量的限制沒有進一步展開。

模型融合

由于評估指標是計算每個coupon_id核銷預測的AUC值,然后所有優惠券的AUC值平均作為最終的評估指標,而rank融合方式對AUC之類的評估指標特別有效,所以采用此方法,公式為:

$\sum\limits_{i=1}^{n}\frac{Weight_i}{Rank_i} $

其中$n$表示模型的個數, $Weight_i$表示該模型權重,所有權重相同表示平均融合。$Rank_i$表示樣本在第i個模型中的升序排名。它可以較快的利用排名融合多個模型之間的差異,而不需要加權融合概率。

應用

基于參數,樣本(采樣率),特征獲得多個模型,得到每個模型的概率值輸出,然后以coupon_id分組,把概率轉換為降序排名,這樣就獲得了每個模型的$Rank_i$,然后這里我們使用的是平均融合,$Weight_i=1/n$,這樣就獲得了最終的一個值作為輸出。


線下評估

雖然這次比賽每天有四次評測機會,但是構建線下評估在早期成績比較差的時候用處很大,早期添加特征之后線下評估基本和線上的趨勢保持一致(例如在添加了Label區間的領券特征之后,線下提升十多個百分點,線上也是一致),對于新特征衡量還是有參照性的。后期差距在0.1%級別的時候,就沒有參照性了。

線下評估在訓練集中采樣1/3 or 1/4 or 1/5做線下評估集合,剩下的做為訓練集訓練模型,并將評估集合中全0或者全1的優惠券ID去掉,然后使用訓練的模型對評估集合預測,將預測結果和實際標簽作異或取反(相同為1,不同為0),然后算出每個優惠券ID的AUC,最后將每個ID的優惠券AUC取均值就得到最終的AUC。


回顧

這一次比賽學習了很多,包括分布式平臺ODPS和機器學習平臺實現數據清洗,特征提取,特征選擇,分類建模、調參及模型融合等,學習摸索了一套方法,使自己建立了信心,明白還有很多需要學習的地方,之前一直對于算法都是當做一個黑匣子,只會熟悉輸入輸出直接調用,要深入了解算法,才能突破目前的瓶頸有所提高。
同時我覺得大家一起探討交流也很重要,一個人做著做著就容易走偏,純屬個人看法。

CSDN博客鏈接:http://blog.csdn.net/shine19930820/article/details/53995369

授人以魚不如授人以漁:
參考 第一名隊伍:【詩人都藏在水底】:GitHub地址

python sklearn數據預處理:http://blog.csdn.net/shine19930820/article/details/50915361
廣義線性模型--Generalized Linear Models:http://blog.csdn.net/shine19930820/article/details/50997645
交叉驗證的Java weka實現,并保存和重載模型:http://blog.csdn.net/shine19930820/article/details/50921109
機器學習知識圖譜:http://lib.csdn.net/base/machinelearning/structure

轉載于:https://www.cnblogs.com/aaronchou820/p/6707200.html

總結

以上是生活随笔為你收集整理的『 天池竞赛』O2O优惠券使用预测思路总结的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。