最近在學習天池比賽:商場中精確定位用戶所在店鋪,該比賽作爲新手剛開始我想到了多分類,經過學習一些人的想法後得知該問題轉化爲二分類去做會減少計算量同時準確度也會提升,在學習過程中接觸到了「候選集」、「覆蓋率」兩個概念,經過查詢很多資料找到相關解釋,寫在下面供以後查閱。
從領域歸屬劃分來看:電商推薦,廣告點擊率預估,銷量預估,貸款違約判定,癌症檢測等
從任務目標劃分來看:迴歸,分類,排序,推薦等
從數據載體劃分來看:互聯網日誌,表單數據,文本,語音,圖像等
從特徵形式劃分來看:原始數據,明文特徵,脫敏特徵等
針對該比賽先了解一下其中的數據情況:
缺失值填充
特徵變換
LR,SVM,DNN等對特徵的分佈和尺度是比較敏感的,歸一化有助於模型收斂;
基於樹的模型,具有伸縮不變性,不需要做特徵變換;
ID類特徵的處理
Averaging, Voting, Stacking , Blending
本賽題目標爲在商場內精確的定位用戶當前所在商鋪。在真實生活中,當用戶在商場環境中打開手機的時候,存在定位信號不準、環境信息不全、店鋪信息缺失、不同店鋪空間距離太近等等挑戰,因此如何精確的判斷用戶所在商鋪是一個難題。
本次大賽我們將提供在2017年8月份大概100家商場(複賽爲2017年7-8月大概500家商場)的詳細數據,包括用戶定位行爲和商場內店鋪等數據(已脫敏),參賽隊伍需要對其進行數據挖掘和必要的機器學習訓練。另外,我們會提供2017年9月份的商場內用戶數據來做評測,檢測您的算法是否能準確的識別出當時用戶所在的店鋪。
任務描述
參賽者需要對我們提供的2017年8月份(複賽爲2017年7-8月)數據進行店鋪、用戶、WIFI等各個維度進行數據挖掘和特徵創建,並自行創建訓練數據中的負樣本,進行合適的機器學習訓練。在我們提供2017年9月份的數據中,根據當時用戶所處的位置和WIFI等環境信息,通過您的算法或模型準確的判斷出他當前所在的店鋪。
本賽題提供兩種數據
1、商場內店鋪的信息數據,這個對訓練和評測都是統一的。
2、真實用戶在這些商場內的一段時間的到店交易數據,訓練和評測將採用不同的時間段。
注意:爲了保護用戶和商家的隱私,所有數據均作匿名處理,同時做了必要的有偏採樣、過濾等脫敏措施。某些數據的某些字段可能爲NULL,請自行處理。
本賽題採用準確率進行評價。詳細評分算法如下:
預測正確:您給出的shop_id和標準答案的shop_id相等。
準確率 = 預測正確樣本總數/總樣本數
注意:如果某些row_id樣本您沒有給出結果,那麼也會被當成錯誤識別。
首先通過這個問題映射出二分類問題中候選集和覆蓋率的概念。
常規問題的解決思路是:
對於常規問題來說採用上述步驟進行即可,但是還有一個其中一個步驟可以穿插到其中即候選集的構建。
即在數據分析和特徵工程之間加入候選集的構建。
在這個比賽當中可以採用多分類的做法以及二分類的做法。
多分類的方法:
候選集:所在mall的所有的商店
覆蓋率:100%
正負樣本比:1:所在mall中的所有商店-1
二分類的方法:
候選集:通過簡單的規則來構造候選樣本來形成候選集
規則如下:
覆蓋率:99.1%(正樣本未出現在訓練集中的樣本在測試集中剔除)
正負樣本比:1:負樣本隨機抽樣之後所產生的候選集
通過不同規則產生的候選集需要進行候選集融合,因爲訓練的時候要保證每個樣本的候選集的數量相同
候選集的融合和過濾保證候選集的數量一致
在多分類中候選集的數量爲整個mall當中的所有商店
在二分類中候選集的數量爲通過規則生成的少量商店
二分類中:相對於直接使用全量的商場店鋪做候選,用簡單規則構造的候選集樣本可以在不降低模型預測精度的情況下,大大降低模型訓練的複雜度
在構造候選集的過程當中,應當控制正負樣本比,把正負樣本比控制在合適的位置,必然,正負樣本比越小,模型的覆蓋率越高,但是當正負樣本太大的時候,會導致模型的複雜度和模型訓練時間大大增加,得不償失。
候選集:通過數據處理之後,通過特定的規則從訓練集當中篩選出來的少量的可以最大化體現數據特徵的樣本點
覆蓋率:在驗證集上面,正樣本可以在候選集中命中的概率。(亦可以是在整個訓練集中)
構建完候選集之後,之後模型訓練以及預測都是基於候選集來完成的
所以,覆蓋率可以大致表明該模型的上限
所以構造候選集的過程也是至關重要的一個步
下面給出針對該比賽比較好的方案:
數據大致就是上圖中所述的那樣
在數據當中,存在如下的數據缺陷:
數據分析模塊:
分析數據的分佈(圖)佔坑,各種數據的分析
數據劃分的過程通過前面的講解,我們可以判斷該類問題爲時間序列推斷相關的問題,我們應該採用滑窗法進行劃分。
不一定要以線上測試集的窗口爲準,因爲特徵提取的時間跨度越小越好
因爲,窗口越大, 在當前窗口中的後續部分的預測可能遺漏了很多關鍵信息
(上述劃分當以天爲劃分的時候效果最佳但是太過於複雜和耗時)
上述劃分在訓練線上訓練集的時候將時間窗口進行疊加,也就是第二條線,這樣可能會有小幅度的提升。
在進行比賽之前可以先不考慮模型的問題,可以先考慮通過構造簡單的規則來處理這個數據,
這些規則的構建也可以爲後續的特徵工程做一些準備的工作。
規則可以包括如下:
通過上面的規則可以大致過濾出來一些店鋪,上述的規則同時也可以用來構造候選集
構造完成規則之後,需要考慮使用什麼樣紙的模型
對於這個問題來說,這個問題肯定是一個分類的問題
那麼是採用二分類還是採用多分類
就這個問題而言,二分類和多分類都是可以的
多分類的問題就是對兩個以上類別的標籤的數據進行分類,對於所有的店鋪有一個概率預測值
二分類的問題就是對兩個類別的標籤的數據進行分類,通過預測結果判定該店鋪到底是不是預測結果
多分類的問題當前交易訂單中的商店就是該筆訂單的label信息,如果將所有的數據一起進行訓練的話, label的種類非常的多,十分的難以進行訓練,因爲數據交易信息當中給出了商場的信息,我們可以通過分mall的方式進行訓練,這樣的話,就可以降低訓練難度。
在多分類的問題當中,訓練集的劃分就需要按照分mall來進行,每個mall單獨構造訓練集的方式,候選的話就是該店鋪所在mall的所有商店,之後再構建特徵工程,進行預測
採用多分類的方式的話,覆蓋率線下的話,可以達到100%,
但是存在相應的缺點的問題就是:
優點就是樣本的召回率特別的高,與二分類有一定的互補性。(可以將多分類的預測結果top10作爲二分類的候選集)
候選集的構建的方式:
一般的思路是先用規則構造候選,然後在候選集中利用模型輸出概率值。這樣需要同時兼顧候選集合的
覆蓋率
和預測模型的同時,爲了避免訓練集數據量過大,可以在訓練集中進行樣本抽樣。具體方法是,保留全部正樣本,負樣本中隨機抽取一定比例加入訓練集。實際測試,抽樣對於模型的精度影響不大。
準確率
,實現上較爲複雜。直接選取目標mall中所有的shop作爲候選,大大降低了模型的複雜程度。
通過上述候選集的構建可以達到現下覆蓋率99.1%(但是這個覆蓋率是有一定的水分的,我們將測試集中的正樣本如果沒有出現在訓練集當中的話,將其進行剔除)
採用二分類的優點,相對於直接用全量的商場店鋪進行候選,用簡單的規則構造出來的候選集樣本可以在不降低模型預測精度的情況下,大大的降低模型訓練的負擔
採用二分類的理由:
採用二分類的理由:
二分類方案,即針對測試集中的每一條記錄,構造候選shop集合,用模型輸出每個候選的概率值,然後選取概率值最大的作爲該條記錄的預測shop。訓練集和測試集的構造方法圖示如下:
訓練:
測試:
標記特徵
null
"總量-比例"特徵
對於特徵3、4,每條記錄中的10個wifi由強到弱排列,可生成10個特徵。
差值特徵
三個wifi強度差值特徵,按照信號強度由強到弱排列,可生成10個特徵。
距離特徵
離散化是將強度值取整(就是將後續的個位數部分去除,因爲可能在同一個方面的不同位置強度值也是不同的,但是是表示的同一個店鋪,應該表示的是同一個店鋪纔對)
數據挖掘比賽當中,如果想要取得較好的名詞,特徵基本上一定要在百位級別才比較好
你不可能單純的爲了測試這個特徵有沒有用,而且測試一遍數據集,顯然如果對於大數據集是不可行的,必然採用其他的比較簡單的方式進行判斷。
"總量-比例"特徵
對於特徵3、4,每條記錄中的10個wifi由強到弱排列,可生成10個特徵。
差值特徵
三個wifi強度差值特徵,按照信號強度由強到弱排列,可生成10個特徵。
距離特徵
離散化是將強度值取整(就是將後續的個位數部分去除,因爲可能在同一個方面的不同位置強度值也是不同的,但是是表示的同一個店鋪,應該表示的是同一個店鋪纔對)
數據挖掘比賽當中,如果想要取得較好的名詞,特徵基本上一定要在百位級別才比較好
你不可能單純的爲了測試這個特徵有沒有用,而且測試一遍數據集,顯然如果對於大數據集是不可行的,必然採用其他的比較簡單的方式進行判斷。
可以通過畫圖分析的方式對該數據進行分析判斷,如果該數據在時間序列上或者在空間上有着明顯的區分度的話,或者這個特徵對於結果的影響是呈現特定分佈的時候,可以考慮進行該特徵的提取。
該特徵需要在不同的取值下對結果有一定的影響,要有一定的區分度。
對於這個比賽來說,這種低維稠密的特徵,直接上XGBOOST就可以了。
比較常用的是averaging,這個就是加權平均
還有就是voting,這個就是投票
"總量-比例"特徵