飞道的博客

“梧桐杯”中国移动大数据应用创新大赛 - 智慧金融赛道Baseline

300人阅读  评论(0)

老肥今天和大家分享的是“梧桐杯”中国移动大数据应用创新大赛的智慧金融赛道的Baseline方案(抱歉鸽了很久),线上成绩为0.9438,处于一个相对靠前的排名位置。

赛题介绍

背景

在金融领域,活跃着一批“职业羊毛党”,他们通过套现、套利行为大肆牟利,影响普通用户本应享有的权益。他们制作各种自动、半自动的黑产工具,如自动注册机、刷单自动机、短信代接平台、分身软件、猫池等,并捆绑手机卡、银行卡或通过第三方平台交易完成套现,从而实现“薅羊毛”活动,自身获利的同时对商家、银行、平台、运营商的利益造成损失。如何从普通用户中有效鉴别出羊毛党,从而提前进行防范,在实际商业应用中有着重要的意义。

任务

防羊毛党评分模型旨在从普通用户中区分出羊毛党用户号码,本次挑战赛设置了更具挑战性的任务,相比其他竞赛,本次竞赛所提供的训练字段相对较少,总体为低资源的竞赛任务,具体包含:

初赛——利用用户通信、流量、app使用等行为数据识别真实羊毛党群体,即简单的二分类问题,是羊毛党,或者不是羊毛党。

数据

每一个号码样本包含两个月的数据,由加密过的手机号码和月份共同构成主键。包含两个基础特征以及多个月消费特征、APP访问特征、短信特征。训练数据是一月份以及二月份的特征,测试数据为三月份以及四月份的特征。

评价指标

评价指标为标准的F1 score, 我们可以在这个指标上做很多后处理来提升成绩。

Baseline方案

本方案未做细致特征工程,非常简单的Baseline,将特征分为数值类型的和类别特征。


   
  1. data = pd.read_csv( 'data/data_a.csv')
  2. # 将\N替换为空值
  3. data.replace( '\\N', np.NaN, inplace=True)
  4. # 数值特征
  5. f_features = [ 'gprs_fee''overrun_flux_fee''out_actvcall_dur''actvcall_fee',
  6.         'out_activcall_fee''monfix_fee''gift_acct_amt''call_cnt',
  7.         'up_flux''down_flux''p2psms_up_cnt',
  8.         'p2psms_cmnct_fee''p2psms_pkg_fee']
  9. data[f_features] = data[f_features].astype( 'float')
  10. # 类别特征
  11. cat_cols = [ 'if_family''if_group''sms_inpkg_ind']
  12. data.sort_values( 'month', inplace=True)
  13. data.drop_duplicates( 'phone', inplace=True)
  14. data.reset_index(drop=True, inplace=True)
  15. data[cat_cols] = data[cat_cols].astype( 'category')

并且只选择了一月份的数据来做训练数据,镜像地选用测试集的三月份数据作为测试集数据,使用分层五折进行lgb模型的训练,模型的参数使用祖传参数,评价标准为binary_error生成预测文件。


   
  1. def find_best_t(y_pred, y_true):
  2.     best_score = f1_score(y_true, np.where(y_pred >=  0.510))
  3.     t =  0.5
  4.      for i in tqdm( range( 300700)):
  5.         current_score = f1_score(y_true, np.where(y_pred >= i /  100010))
  6.          if current_score > best_score:
  7.             best_score = current_score
  8.             t = i /  1000
  9.              print(f 'best score: {best_score}, best t: {t}')
  10.      return t
  11. t =  0.5
  12. t = find_best_t(oof_lgb, y)

对于该二分类问题,我们还可以通过调整阈值的后处理方法来提分,选择本地验证集最高f1_score的阈值, 在预测时采用相同的阈值(原来阈值为0.5),大于该阈值取1,小于该阈值则取0。

完整的代码我已上传至后台,回复「梧桐」即可获得。

——END——

扫码二维码

获取更多精彩

老肥码码码


转载:https://blog.csdn.net/lyc44813418/article/details/114362587
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场