风控建模

风控建模

inputvector

自定义jquery插件完成用户输入表单控件的输入行为的追踪,形成用户输入向量,将用户输入向量封装成cookie对接给后台用户登录服务

//首先这个输入向量的长度如果不够的话就没有评估的必要直接返回false
var n=historyVector.length
    if(n<2){
      return ("FORM_INPUT",false)
    }
首先计算平均向量
//计算平均向量 得到一个double数组 这个数组的每个元素 都是一个输入的向量加起来除以个数
//比如全部的用户名输入向量加起来除以历史个数 就是用户名的平均向量
    var avgVector=new Array[Double](currentInputVector.length)
    for(i <- 0 until  currentInputVector.length ){
      avgVector(i) = historyVector.map(v=>v(i)).reduce(_+_)/historyVector.length
    }    
 //n个历史向量间 彼此距离
    var distances=new ListBuffer[Double]
    for(i<- historyVector ;j <- historyVector;if(i!=j)){ //任意两个点坐标的距离
       //必须保证 i!=j 计算 i和j的距离
       var total:Double=0
       for( item<- 0 until avgVector.length){
       //Math.pow(x,y)表示x的y次方
         total+=  Math.pow((i(item)-j(item)),2)
       }
      //添加距离 开根号
       distances += Math.sqrt(total)
      //将向量从historyVector中移除
      historyVector -= i
    }
//对distances结果进行排序
    distances=distances.sortBy(distance=>distance)
//计算当前输入向量和平均向量的距离
    var curentDistance:Double=0
    for( item<- 0 until avgVector.length){
      curentDistance+=  Math.pow((avgVector(item)-currentInputVector(item)),2)
    }
    curentDistance=Math.sqrt(curentDistance)
 //获取比对阈值 这里的distance是上面的listbuffer[Double]集合 取其中大约1/3处作为阈值
    var  threshold: Double = distances((n * (n - 1))/6)
//最后一步如果 当前输入向量和平均向量的距离大于阈值 值输出为true 否则为false
return  ("FORM_INPUT",curentDistance>threshold)

词袋模型

//第一步首先要是没有历史密码这一步就不用评估了
 if(historyPasswords.size<1){
      return ("PASSWORD_INPUT",false)
    }
//这一步是建立词袋模型 将历史密码摊平 去重 排序 adcb3212变成 abcd123
val wordBag = historyPasswords.flatMap(password=> password.toCharArray).distinct.toList.sortBy(c=>c)
//这一步就是将abc12变成1110110 将历史的密码都和词袋模型做对比 然后得出的向量组 组成一个listBuffer
 var historyPwddwordVectors=new ListBuffer[Array[Int]]
    for(pwd<-historyPasswords){
      val vector = convertString2Vectors(wordBag,pwd)
      historyPwddwordVectors += vector
    }
//当前输入的密码也转为一个当前向量
val currentVector = convertString2Vectors(wordBag,currentPawssword)
//用当前的向量去和历史向量组成的listBuffer[Array[Int]]一一去做余弦相似度 然后求最大的相似度 
var simlarity:Double=0.0
    for(v <- historyPwddwordVectors){
      var s:Double=calculateSimlarity(currentVector,v)
      println("s:"+s)
      if(s>simlarity){ //获取自大相似度
        simlarity=s
      }
    }
//最后如果这个相似度小于我们定下的阈值0.95就是true 超过了就是false
if(simlarity < 0.95){
      return  ("PASSWORD_INPUT",true)
    }
    return ("PASSWORD_INPUT",false)

余弦相似度
在这里插入图片描述

地理位置风险评估(瞬间位移距离)

后台使用geo-ip转换工具将ip地址转换为经纬度信息,然后在求出在地球上的距离 最后除以俩次登录的时间 求出瞬间位移距离 如果大于高铁时速代表有风险

userAgent

用@RequestHeader这个注解提取User-Agent设备信息通过前期制定的Flume+logback 将用户登录信息存储在分布式日志系统中

def doEvaluate(lastAgent: String, lastAgents: ListBuffer[String]): (String, Boolean) = {
    return ("AGENT_INPUT",lastAgents.indexOf(lastAgent) == -1)
  }

1. 营销获客 2. 贷前风控 2.1 贷前审查 2.2 反欺诈 2.3 风控策略 2.4 风控建模 2.5 数据管理 风控总监训练营 ......................................................................................................792 4 节课玩转信用评分卡模型....................................................................................792 如何搭建虚拟信用卡风控体系 ...............................................................................792 风控大牛手把手教你搭建企业级信用评分模型.....................................................792 2 大维度全面ᨀ升催收效率....................................................................................792 3 堂课,从 0-1 掌握基于数据驱动的风险定价核心...............................................792 如何打造现金贷产品的风控体系?........................................................................792 解密 P2P 网贷备案——专家教你如何正确应对备案..............................................793 区块链的前世今生及其应用 ...................................................................................793 区块链热潮下不可不知的法律风险:法律专家权威解读区块链、代币等案例与法律 分析 .........................................................................................................................793 牌照决定生死,现金贷及 P2P 如何拿牌?............................................................793
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值