数据科学:评分方法

Data Science: Scoring methodology

我正在寻找任何方法来根据某些事件为个人分配风险评分。我正在寻找具有指数分配的 0-100 比例。例如,一天一个事件的分数可能上升到 25,2 个事件可能上升到 50-60,一天 3-4 个事件的分数将是 100。

我尝试 Google 它,但由于我不知道正确的术语,所以我开始随机话题。 :(

这种评分系统有数学术语吗?您可能知道哪些最常用的方法?

P.S.: Expert/experience 非常感谢数据科学家的建议 ;)

我先写一些条件:

  1. 0 个事件触发 0 分。
  2. 非边缘事件计数观察值是得分 - 100 阈值所在的位置。
  3. 阈值后的任何分数均为 100。

如果是这样,这里有一个(非常)简化的例子:

阶段数据:

userid <- c("a1","a2","a3","a4","a11","a12","a13","a14","u2","wtf42","ub40","foo","bar","baz","blue","bop","bob","boop","beep","mee","r")
events <- c(0,0,0,0,0,0,0,0,0,0,0,0,1,2,3,2,3,6,122,13,1)
df1 <- data.frame(userid,events)

可选:将事件规范化为 (1,2)。

这可能对对数性质有帮助。 (否则,假设函数 score=events^exp,如本例所示,1 个事件将始终产生 1 的分数)这将允许您控制灵敏度,但必须正确完成,因为我们正在处理指数和对数。我没有在示例中使用规范化:

normevents <- (events-mean(events))/((max(events)-min(events))*2)+1.5

设置最高分数的分位数阈值:

MaxScoreThreshold <- 0.25

获取事件分布的非边缘五分位数:

qts <- quantile(events[events>min(events) & events<max(events)], c(seq(from=0, to=100,by=5)/100))

使用设置的阈值找到得分为 100 的事件数量。

MaxScoreEvents <- quantile(qts,MaxScoreThreshold)

求指数函数的指数

鉴于:

  1. 分数 = 事件 ^ 指数
  2. events 是一个自然数 - 整数 >0:我们通过 省略边缘)
  3. 指数 > 1

指数计算:

exponent <- log(100)/log(MaxScoreEvents)

生成分数:

df1$Score <- apply(as.matrix(events^exponent),1,FUN = function(x) {
  if (x > 100) {
    result <- 100
  }
  else if (x < 0) {
    result <- 0
  }
  else {
    result <- x
  }
  return(ceiling(result))
})

df1

结果数据帧:

   userid events Score
1      a1      0     0
2      a2      0     0
3      a3      0     0
4      a4      0     0
5     a11      0     0
6     a12      0     0
7     a13      0     0
8     a14      0     0
9      u2      0     0
10  wtf42      0     0
11   ub40      0     0
12    foo      0     0
13    bar      1     1
14    baz      2   100
15   blue      3   100
16    bop      2   100
17    bob      3   100
18   boop      6   100
19   beep    122   100
20    mee     13   100
21      r      1     1

在假设您的数据更大且事件类别更多的情况下,分数不会那么快地达到 100,它也是阈值的函数。

在这种情况下,我会更多地依赖数据来定义参数、阈值。

如果你有关于用户真正做了什么的先验数据,无论你的分数是多少,你都可以进行监督学习,例如,在比例超过 50% 的地方设置阈值@。或者,如果事件与“成功”概率的关系图看起来像正态分布的累积概率函数,我会在达到 45 度的任何地方设置阈值 @(第一次)。

如果您有先验数据,您也可以使用逻辑回归,但不要使用 Logit 函数获取回归输出,而是使用数字作为分数。您可以将其归一化到 0-100 之间。

写数据科学问题并不总是那么容易。我对你要找的东西做了很多假设,希望这是大方向。