清华博士带你做AI反欺诈预测任务
反欺诈领域一直是银行业研究的重点,在信贷领域中存在信用卡违约和欺诈的风险,通过用户行为数据,分析申请借款用户的信用状况,可以有效判断是否存在逾期,为银行避免额外的损失。
这类业务场景大多数机器学习工程师也会经常遇到,4月7日的《HelloWorld公开课》,清华大学博士,阿里云MVP,陈旸老师用一小时的时间带你做点击反欺诈任务,一不小心还上了排行榜的前三名,赶快搬好小板凳去看看吧。
AI建模流程
在正式开始任务前,先来看下常规的AI建模的步骤都有哪些,常规的AI建模流程分为数据探索、数据预处理、特征工程、模型建立、参数调优、模型融合六大步骤。
这里有几点需要注意,常见的机器学习模型有XGBoost,LightGBM等,一般情况下优先使用LightGBM,因为它更快,对内存的占用更少。在参数选择上,建议前期采用经验参数,因为这些参数都是经过验证的,一般会得到相对比较好的结果。
有了以上的知识,以下面这个案例为背景,我们来分析下信用卡反欺诈任务的业务特点
2013年9月份两天时间内的信用卡交易数据为284807笔交易,492笔欺诈行为数据样本包括了28个特征,以及交易时间Time和交易金额Amount,因为数据隐私,28个特征值是通过PCA变换得到的结果。字段Class代表该笔交易的分类,Class=0为正常(非欺诈),Class=1代表欺诈
现在,我们需要对上面的任务做一个baseline,套用之前讲过的AI建模流程,将整个任务分为以下五个步骤
数据加载
数据探索,查看label情况
数据预处理,切分数据集
模型选择与训练
预测结果,计算混淆矩阵
接下来,我们思考一下,因为样本的分布非常不均衡,是否可以用准确率来评估模型?这显然是不行的,如果模型一笔欺诈交易都没有识别出来,准确率依然很高。所以我们要引入混淆矩阵,不仅要看准确率,还要看召回率和精确度,所以下面我们将通过代码来显示误差矩阵以及绘制召回率曲线。
显示误差矩阵
def plot_confusion_matrix(cm, classes, normalize = False, title = 'Confusion matrix"', cmap = plt.cm.Blues) : plt.figure() plt.imshow(cm, interpolation = 'nearest', cmap = cmap) plt.title(title) plt.colorbar() tick_marks = np.arange(len(classes)) plt.xticks(tick_marks, classes, rotation = 0) plt.yticks(tick_marks, classes) thresh = cm.max() / 2. for i, j in itertools.product(range(cm.shape[0]), range(cm.shape[1])) : plt.text(j, i, cm[i, j], horizontalalignment = 'center', color = 'white' if cm[i, j] > thresh else 'black') plt.tight_layout() plt.ylabel('True label') plt.xlabel('Predicted label') plt.show()
绘制准确率-召回率曲线
# precision-recall curvedef plot_precision_recall(): plt.step(recall, precision, color = 'b', alpha = 0.2, where = 'post') plt.fill_between(recall, precision, step ='post', alpha = 0.2, color = 'b') plt.plot(recall, precision, linewidth=2) plt.xlim([0.0,1]) plt.ylim([0.0,1.05]) plt.xlabel('召回率') plt.ylabel('准确率') plt.title('准确率-召回率 曲线') plt.show();
点击反欺诈预测
有了以上的内容作为铺垫,接下来陈旸老师带着学员们一起做了百度的MarTech Challenge 点击反欺诈预测任务,还是老规矩,我们先来看下业务背景。
广告欺诈是数字营销需要面临的重要挑战之一,点击会欺诈浪费广告主大量金钱,同时对点击数据会产生误导作用。本次比赛提供了50万次点击数据。
比赛文件说明:
train.csv 训练集
test1.csv 测试集(第一阶段)
test2.csv 测试集(第二阶段)
submission.csv 提交数据样例
首先要明确,这是一个典型的分类任务,能采用的机器学习模型有XGBoost, LightGBM等,搞明白这个了,套用前面的经验,我们把这个任务分为数据加载、数据EDA、特征筛选、模型训练及预测四个步骤来做。
通过之前学习的步骤使用LightGBM训练出的结果,我们可以非常轻松的排在排行榜的前面,如果将模型换成XGBoost,甚至可以排在排行榜的前三的位置
当然,我们不能仅仅满足这个结果,针对这个Baseline,还有哪些可以优化的地方么?这里举几个常用的方法,利用osv特征和TimeStamp,提取时间多尺度。使用五折交叉验证,将单个模型的多个版本进行融合,或者在LightGBM中对于类别型的特征的处理等等。
千言万语汇总一句,找到关键特征才是王道,如何更智能的找到关键的特征值?对此内容感兴趣的同学可以点击从0到1搭建反欺诈模型观看公开课回放视频!在公开课上,陈旸老师将带你手敲代码实现文章说的全部功能,如果你对机器学习和反欺诈预测任务感兴趣,这堂公开课你千万不能错过
讲师介绍
陈旸,清华大学计算机博士,九三学社成员,清华企业家协会YoungTEEC成员,阿里云MVP,腾讯云TVP,百度AI比赛教练,CCF数据库专委,企业服务客户包括:腾讯、蚂蚁金服、美的、京东、汽车之家、易车、上汽大众、中国银联、中原银行,平安银行,航天信息等
《Hello ,World公开课》推出的面向广大开发工程师的免费加餐课,集结业内名师大咖,聚焦热门技术和实战解决方案,以专业知识分享交流为桥梁,链接正在创造世界的一群科技主力们,向初心致敬,为技术发烧。无论你是初入职场的应届生,还是准备升职加薪的职场精英,相信这里都有你需要的养料。