刚读完一篇paper《Solving the “false positives” problem in fraud prediction》,趁热打铁,做个笔记。

文章下载链接:https://arxiv.org/pdf/1710.07709.pdf

概述

这篇文章是对 bank transaction fraud prediction 场景下的机器学习算法做了优化,优化方法是,使用 Deep Feature Synthesis 自动生成大量的特征,优化后 False Positive Rate可以大大降低。

文章的核心在 Deep Feature Systhesis (DFS) 这种特征生成方法。

笔记

1、在欺诈检测这个场景中,TPR和FPR都很关键,TPR是坏人的查全率,即抓到了多少坏人,FPR可以理解为好人的查全率,即抓到了多少好人。TPR越高越好,可是TPR越高,FPR也会越高,这里存在一个经济成本的tradeoff,多抓一个坏人,银行会节省一笔money,多抓一个好人,银行会损失一笔money,也就是说,抓坏人的代价是牵连了一部分好人。而且在实际应用场景中,customer retention(客户维系)十分关键,银行宁愿忍受欺诈带来的损失,也不愿意流失一个优质客户。这是做 fraud prediction的一大挑战。

2、DFS是一种特征生成方法,可以针对多个关系型数据表自动生成统计特征。

简述一下DFS。它是一种特征生成方法,可以结构化的生成特征,但是目前只能针对多个关系型数据表生成统计特征,其他高级特征,比如 频域变换、小波变换或者图特征、时序特征还有待补充和加强。

DFS有几个关键概念:

一是relationship,表示数据表之间的关系,目前只支持一种关系——parent and child,翻译过来就是“一对多”,比如 user表和transaction表,一个user有多个transaction,所以user和transaction就是parent-child关系;

二是primitives,表示特征算子,具体分为两类,一类叫 Transform Primitives,另一类叫 Aggregation Primitives,Transform是对数据表的单个列做变换运算,比如把timestamp列的year,month,day,hour单独提取出来,Aggregation是对一列中的多行数据做聚合运算,比如 sum, std, mean, max, min, skew,DFS就是结合多张表的relation,反复运用Trans和Aggre两类运算,计算出许多组合特征,比如 SUM(sessions.STD(transactions.amount)), MEAN(sessions.COUNT(transactions))。

DFS对应的github项目:github-featureTools

DFS论文:http://www.jmaxkanter.com/static/papers/DSAA_DSM_2015.pdf

3、transaction相关的数据有两类,一类是transaction发生时伴随的属性,比如 timestamp, userid, cash, 另一类是与transaction相关的历史数据,比如 user过去的交易行为,只用第一类数据,能得到93个feature,两类数据放在一起,使用DFS,能得到267个feature,在模型不变的情况下,后者的TPR和FPR比前者也高了不少,说明多出来的feature是十分有效的。

4、文中提到了一种寻找最优门限的方法。RandomForest用于分类问题时,最终输出的是每个测试样本的得分(score),可以理解为样本是坏人的概率,我们需要确定一个threshold,把高于threshold的人视为模型抓到的坏人。

文中给出了训练和测试流程,其中包括确定threshold的方法。首先把数据集划分为三组,比例大约是55%、7%和38%,第一部分是训练数据,用于训练模型,第二部分做验证,用来确定门限threshold,确定的方法是最大化 Precision*u(TPR-0.89),0.89是人为指定的TPR参考值,也就是说,TPR=0.89就足够高,在TPR>=0.89时,需要提高Precision,第三部分数据用于测试模型效果。

[注:u(x)是一个unit step函数,当x>=0时,u(x)=1,otherwise, u(x)=0]

p.s.  featureTools这个项目值得继续研究,对特征生成还是很有借鉴意义的。

阅读笔记:Solving the “false positives” problem in fraud prediction的更多相关文章

  1. [阅读笔记]Software optimization resources

    http://www.agner.org/optimize/#manuals 阅读笔记Optimizing software in C++   7. The efficiency of differe ...

  2. CI框架源码阅读笔记4 引导文件CodeIgniter.php

    到了这里,终于进入CI框架的核心了.既然是“引导”文件,那么就是对用户的请求.参数等做相应的导向,让用户请求和数据流按照正确的线路各就各位.例如,用户的请求url: http://you.host.c ...

  3. CI框架源码阅读笔记3 全局函数Common.php

    从本篇开始,将深入CI框架的内部,一步步去探索这个框架的实现.结构和设计. Common.php文件定义了一系列的全局函数(一般来说,全局函数具有最高的加载优先权,因此大多数的框架中BootStrap ...

  4. CI框架源码阅读笔记2 一切的入口 index.php

    上一节(CI框架源码阅读笔记1 - 环境准备.基本术语和框架流程)中,我们提到了CI框架的基本流程,这里再次贴出流程图,以备参考: 作为CI框架的入口文件,源码阅读,自然由此开始.在源码阅读的过程中, ...

  5. Mongodb Manual阅读笔记:CH9 Sharding

    9.分片(Sharding) Mongodb Manual阅读笔记:CH2 Mongodb CRUD 操作Mongodb Manual阅读笔记:CH3 数据模型(Data Models)Mongodb ...

  6. Mongodb Manual阅读笔记:CH8 复制集

    8 复制 Mongodb Manual阅读笔记:CH2 Mongodb CRUD 操作Mongodb Manual阅读笔记:CH3 数据模型(Data Models)Mongodb Manual阅读笔 ...

  7. Mongodb Manual阅读笔记:CH7 索引

    7索引 Mongodb Manual阅读笔记:CH2 Mongodb CRUD 操作Mongodb Manual阅读笔记:CH3 数据模型(Data Models)Mongodb Manual阅读笔记 ...

  8. Mongodb源代码阅读笔记:Journal机制

    Mongodb源代码阅读笔记:Journal机制 Mongodb源代码阅读笔记:Journal机制 涉及的文件 一些说明 PREPLOGBUFFER WRITETOJOURNAL WRITETODAT ...

  9. Mongodb Manual阅读笔记:CH4 管理

    4 管理 Mongodb Manual阅读笔记:CH2 Mongodb CRUD 操作Mongodb Manual阅读笔记:CH3 数据模型(Data Models)Mongodb Manual阅读笔 ...

随机推荐

  1. CSS 块级元素、内联元素概念

    p.h1.或div等元素常常称为块级元素,这些元素显示为一块内容:Strong.span等元素称为行内元素,它们的内容显示在行中,即“行内框”.(可以使用display=block将行内元素转换成块元 ...

  2. Linux之zip压缩

    1.压缩 对于test目录,使用 zip -rq test.zip test r表示递归压缩,q表示不显示过程 2.解压缩 unzip -q test.zip

  3. Java 经典问题

    九种基本类型及封装类 基本类型 boolean byte char short int long double void 二进制位数 1 8(一字节) 16(2字节) 16(2字节) 32(4字节) ...

  4. e662. 取的图像的色彩模型

    // This method returns the color model of an image public static ColorModel getColorModel(Image imag ...

  5. (转)YUV420存储格式

    YUV格式有两大类:planar和packed.对于planar的YUV格式,先连续存储所有像素点的Y,紧接着存储所有像素点的U,随后是所有像素点的V.对于packed的YUV格式,每个像素点的Y,U ...

  6. (转)学习linux的几本书

    成为一名精通 Linux 程序设计的高级程序员一直是不少朋友孜孜以求的目标.根据中华英才网统计数据,北京地区 Linux 程序员月薪平均为 Windows 程序员的 1.8 倍.Java 程序员的 2 ...

  7. bootstrap -- css -- 按钮

    本文中提到的按钮样式,适用于:<a>, <button>, 或 <input> 元素上 但最好在 <button> 元素上使用按钮 class,避免跨浏 ...

  8. 【AngularJS】AngularJS整合Springmvc、Mybatis环境搭建

    近期想学习AngularJS的使用,网上搜了一圈后,折腾了半天解决bug后,成功使用AngularJS整合Springmvc.Spring.Mybatis搭建了一个开发环境.(这里Spring使用的版 ...

  9. 为什么要整合apache 和tomcat?

    1. Apache是web服务器,Tomcat是应用(java)服务器,它只是一个servlet容器,是Apache的扩展. 2. Apache和Tomcat都可以做为独立的web服务器来运行,但是A ...

  10. SQL-字符串连接聚合函数

    原文:http://blog.csdn.net/java85140031/article/details/6820699 问题: userId  role_name         role_id 1 ...