1 賽題描述
在真實的社交網絡中,存在的作弊用戶會影響社交網絡平臺。在真實場景中,會受到多方面的約束,我們僅能獲取到少部分的作弊樣本和一部分正常用戶樣本,現需利用已有的少量帶標籤的樣本,去挖掘大量未知樣本中的剩餘作弊樣本。
給定一段時間內的樣本,其中包含少量作弊樣本,部分正常樣本以及標籤未知的樣本。參賽者應該利用這段時間內已有的數據,提出自己的解決方案,以預測標籤未知的樣本是否爲作弊樣本。
數據處理方法和算法不限,但是參賽者需要綜合考慮算法的效果和複雜度,從而構建合理的解決方案。
2 題目思路
基於給定的少量樣本,一個比較直接的思路是通過樣本之間的關聯性挖掘相關的黑樣本,然後基於挖掘得到的相關黑樣本訓練一個二分類器,從而得到更多的黑樣本。
3 題目數據
數據範圍:
-
T~T+N 時刻內 點贊、關注事件下按比例抽樣數據
特徵類型:
4 數據統計:
- 總賬號數 :4579520
- 帶標籤正常賬號:102630
- 帶標籤作弊賬號數:10667
- 總請求數量:8227327
- 提交評估數據:151117
特徵相關性統計如下:
請求數據中存在的都是類別變量,可以統計類別變量下的轉化率,分析哪些特徵潛在挖掘價值比較大;對於用戶基礎數據可以通過相關性係數直觀上推斷哪些變量比較重要。
對於數值特徵,可以着重統計下用戶粉絲數量與用戶關注數量的差值特徵、用戶發佈作品數量與用戶作品喜歡數量的差值特徵,這些可以逆勢特徵可以側面發映出用戶是否存在真實社交行爲,而不是“白白”的黑產賬號。
5 特徵工程
特徵工程決定了模型最後的效果,特徵工程在做完常規基礎特徵之後,需要根據模型反饋的效果,可以圍繞強特去做進一步的細化特徵,最終我們取得了第五名的成績。下面給出一些代碼參考。我們在方案中主要構建了三個維度的特徵,
用戶畫像特徵:請求表徵、基礎特徵
-
請求數據的統計特徵
## 時間特徵
request_feature['app_channel_nacnt_time_ratio']=request_feature['app_channel_nacnt']/(request_feature['time_gap']+1e-3)
request_feature['device_type_nacnt_ratio']=request_feature['device_type_nacnt']/(request_feature['time_gap']+1e-3)
request_feature['request_app_channel_count_ratio']=request_feature['group_request_user_request_app_channel_count']/(request_feature['time_gap']+1e-3)
request_feature['request_count_time_ratio']=request_feature['request_user_count']/(request_feature['time_gap']+1e-3)
request_feature['request_device_type_count_time_ratio']=request_feature['group_request_user_request_device_type_count']/(request_feature['time_gap']+1e-3)
request_feature['request_ip_nuinque_ratio']=request_feature['group_request_user_request_ip_nunique']/(request_feature['time_gap']+1e-3)
request_feature['request_model_nuinque_ratio']=request_feature['group_request_user_request_model_id_nunique']/(request_feature['time_gap']+1e-3)
request_feature['request_target_nuinque_time_ratio']=request_feature['group_request_user_request_target_nunique']/(request_feature['time_gap']+1e-3)
## 強特 二階unique特徵
base_cols = [
['request_user', 'request_model_id'],
['request_user', 'request_device_type'],
['request_user', 'request_app_channel'],
['request_user', 'request_app_version'],
]
target_col = ['request_model_id', 'request_ip', 'request_target', 'request_device_type', 'request_app_version',
'request_app_channel']
for base_pair in base_cols:
for col in tqdm(target_col):
if col not in base_pair:
request_feature[col] = request_feature[col].fillna('NAN')
request_feature[f'group_{base_pair[0]}_{base_pair[1]}_{col}_unique'] = \
request_feature[base_pair + [col]].groupby(base_pair)[col].transform('nunique')
-
用戶基礎信息的統計特徵
-
目標編碼
用戶關聯特徵:圖嵌入式表示
行爲特徵:時間段內行爲序列表示
模型構建
模型選取:LGB/XGB/CAT
通過在效率較高的LightGBM訓練和迭代不同特徵的模型並測試驗證特徵效果,最後在質量較高的特徵基礎之上,通過交叉驗證的方式訓練三種模型,得到最後三個模型最優結果。
模型融合:相加平均
在比賽過程中,我們針對三種模型嘗試了不同的融合方案,包括投票融合,加權融合,還有stacking,但是融合收益比較小,最後我們選取的融合方式是直接將三種模型預測概率結果融合簡單平均,能夠達到融合收益最大。
特徵重要性分析
6 總結與展望
在比賽過程中,我們嘗試的樹模型可解釋性強且給出衍生特徵構建方向,訓練迭代速度快,另外用戶行爲特徵,時間序列特徵以及用戶畫像特徵比較重要,同時用戶與設備、用戶與網絡之間的網絡特徵有潛在挖掘價值。嘗試不足的地方是沒有有效通過有監督模型預測無標籤數據集,之後進行僞標籤學習,沒有嘗試神經網絡模型或者圖神經網絡的實驗效果