zoukankan      html  css  js  c++  java
  • 阅读笔记:Solving the “false positives” problem in fraud prediction

    刚读完一篇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这个项目值得继续研究,对特征生成还是很有借鉴意义的。

  • 相关阅读:
    Http与WWW服务精解
    Http与WWW服务精解
    6-13
    好用的工具说明
    JVM、JRE和JDK三者间的区别和联系
    css进阶之二:flex弹性布局
    MVVM
    如何理解TCP的三次握手协议?
    java里面的设计模式
    linux常用命令
  • 原文地址:https://www.cnblogs.com/xxiaolige/p/9310237.html
Copyright © 2011-2022 走看看