刚读完一篇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. r语言 技巧总结

    1.table函数返回众数,再转为dataframe as.data.frame(table(x)) 2.使用which 返回数组下标 which(rs.list=="rs1008507&q ...

  2. LIBSVM使用方法及参数设置 主要参考了一些博客以及自己使用经验。

    主要参考了一些博客以及自己使用经验.收集来觉得比较有用的. LIBSVM 数据格式需要---------------------- 决策属性  条件属性a  条件属性b  ... 2    1:7   ...

  3. 关于Cocos2d-x中定时器的使用总结

    1.定义 定时器在大部分游戏中是不可或缺的,即每隔一段时间,就要执行相应的刷新体函数,以更新游戏的画面.时间.进度.敌人的指令等等. cocos2dx为我们提供了定时器schedule相关的操作.其操 ...

  4. Spring Boot集成Mybatis及通用Mapper

    集成Mybatis可以通过 mybatis-spring-boot-starter 实现. <!-- https://mvnrepository.com/artifact/org.mybatis ...

  5. MongoDB C Driver Building on Windows

    一.编译mongodb c driver: 需要先安装OpenSSL:(参见:http://bbs.aircheng.com/read-2222-1) 步骤:(MongoDB步) 1.下载Active ...

  6. C# 发邮件 服务器响应为: 5.7.0 Must issue a STARTTLS command first

    The SMTP server requires a secure connection or the client was not authenticated. The server respons ...

  7. 在系统中使用read函数读取文件内容

    read函数(读取文件) read函数可以读取文件.读取文件指从某一个已打开地文件中,读取一定数量地字符,然后将这些读取的字符放入某一个预存的缓冲区内,供以后使用. 使用格式如下: number = ...

  8. erlang -- ios apns provider -- erlang 实现

    os apns-apple notification server 与第三方provider的通信原理网上已有很多介绍,这里不再介绍,有想了解的大家可以去IOS官网https://developer. ...

  9. u3d调用c++ dll的DllNotFoundExceion 问题

    原文地址:http://blog.csdn.net/boren31/article/details/8778504 问题年年有,今年特别多. 开发环境: Windows  XP sp3 Visual  ...

  10. spark on yarn(zookeeper 配置)

    http://database.51cto.com/art/201404/435630.htm