“梧桐杯”中國移動大數(shù)據(jù)應用創(chuàng)新大賽 - 智慧金融賽道Baseline
老肥今天和大家分享的是“梧桐杯”中國移動大數(shù)據(jù)應用創(chuàng)新大賽的智慧金融賽道的Baseline方案(抱歉鴿了很久),線上成績?yōu)?/span>0.9438,處于一個相對靠前的排名位置。
賽題介紹
背景
在金融領域,活躍著一批“職業(yè)羊毛黨”,他們通過套現(xiàn)、套利行為大肆牟利,影響普通用戶本應享有的權(quán)益。他們制作各種自動、半自動的黑產(chǎn)工具,如自動注冊機、刷單自動機、短信代接平臺、分身軟件、貓池等,并捆綁手機卡、銀行卡或通過第三方平臺交易完成套現(xiàn),從而實現(xiàn)“薅羊毛”活動,自身獲利的同時對商家、銀行、平臺、運營商的利益造成損失。如何從普通用戶中有效鑒別出羊毛黨,從而提前進行防范,在實際商業(yè)應用中有著重要的意義。
任務
防羊毛黨評分模型旨在從普通用戶中區(qū)分出羊毛黨用戶號碼,本次挑戰(zhàn)賽設置了更具挑戰(zhàn)性的任務,相比其他競賽,本次競賽所提供的訓練字段相對較少,總體為低資源的競賽任務,具體包含:
初賽——利用用戶通信、流量、app使用等行為數(shù)據(jù)識別真實羊毛黨群體,即簡單的二分類問題,是羊毛黨,或者不是羊毛黨。
數(shù)據(jù)
每一個號碼樣本包含兩個月的數(shù)據(jù),由加密過的手機號碼和月份共同構(gòu)成主鍵。包含兩個基礎特征以及多個月消費特征、APP訪問特征、短信特征。訓練數(shù)據(jù)是一月份以及二月份的特征,測試數(shù)據(jù)為三月份以及四月份的特征。
評價指標
評價指標為標準的F1 score, 我們可以在這個指標上做很多后處理來提升成績。
Baseline方案
本方案未做細致特征工程,非常簡單的Baseline,將特征分為數(shù)值類型的和類別特征。
data = pd.read_csv('data/data_a.csv')
# 將\N替換為空值
data.replace('\\N', np.NaN, inplace=True)
# 數(shù)值特征
f_features = ['gprs_fee', 'overrun_flux_fee', 'out_actvcall_dur', 'actvcall_fee',
'out_activcall_fee', 'monfix_fee', 'gift_acct_amt', 'call_cnt',
'up_flux', 'down_flux', 'p2psms_up_cnt',
'p2psms_cmnct_fee', 'p2psms_pkg_fee']
data[f_features] = data[f_features].astype('float')
# 類別特征
cat_cols = ['if_family', 'if_group', 'sms_inpkg_ind']
data.sort_values('month', inplace=True)
data.drop_duplicates('phone', inplace=True)
data.reset_index(drop=True, inplace=True)
data[cat_cols] = data[cat_cols].astype('category')
并且只選擇了一月份的數(shù)據(jù)來做訓練數(shù)據(jù),鏡像地選用測試集的三月份數(shù)據(jù)作為測試集數(shù)據(jù),使用分層五折進行l(wèi)gb模型的訓練,模型的參數(shù)使用祖?zhèn)鲄?shù),評價標準為binary_error生成預測文件。
def find_best_t(y_pred, y_true):
best_score = f1_score(y_true, np.where(y_pred >= 0.5, 1, 0))
t = 0.5
for i in tqdm(range(300, 700)):
current_score = f1_score(y_true, np.where(y_pred >= i / 1000, 1, 0))
if current_score > best_score:
best_score = current_score
t = i / 1000
print(f'best score: {best_score}, best t: {t}')
return t
t = 0.5
t = find_best_t(oof_lgb, y)
對于該二分類問題,我們還可以通過調(diào)整閾值的后處理方法來提分,選擇本地驗證集最高f1_score的閾值, 在預測時采用相同的閾值(原來閾值為0.5),大于該閾值取1,小于該閾值則取0。
完整的代碼我已上傳至后臺,回復「梧桐」即可獲得。
——END——
掃碼二維碼
獲取更多精彩
老肥碼碼碼


