4、评分算法与计算:规则引擎评分、机器学习评分、评分归一化与阈值设定
好,咱们进入第四章。前面几章我们把信任评分的概念、数据来源和特征工程聊完了。现在到了最核心的部分——分数到底怎么算出来的。
说实话,我在刚做安全评分系统那会儿,也以为找个算法跑一下就行。结果发现,评分算法远不止“选个模型”那么简单。你得考虑业务场景、数据质量、计算效率,还得想清楚——这个分数出来之后,怎么用?
这一章,我带你过一遍实际项目中常用的几种评分方式。规则引擎、机器学习模型,还有归一化和阈值设定。嗯,都是硬骨头,但啃下来之后,你对信任评分的理解会上一个台阶。
4.1 规则引擎评分:简单、可解释、立竿见影
先聊规则引擎。说白了,就是人工定义一套打分规则。比如:
- 如果用户登录IP属于高危地区,扣20分
- 如果设备指纹与历史记录一致,加10分
- 如果操作时间在凌晨3点到5点,扣15分
规则引擎的好处是透明。业务方问起来,你能直接告诉他:“因为IP在境外,所以扣了分。” 不需要解释什么特征权重、激活函数。
我在一个金融风控项目里,初期就是靠规则引擎撑起来的。数据量不够,机器学习模型跑不动,但业务又急着上线。我们就拉了风控专家和业务骨干,一起列了30多条规则。上线第一周,拦截率就达到了预期目标的80%。
规则引擎的典型结构
一个规则通常包含三个部分:条件、权重、动作。我习惯用下面这种结构来组织:
规则ID: R001
条件: 登录IP国家 ∈ [“RU”, “KP”, “IR”]
权重: -20
动作: 扣分 + 触发二次验证
规则ID: R002
条件: 设备指纹匹配度 > 0.9
权重: +15
动作: 加分 + 跳过验证
实际计算时,把所有匹配规则的分数累加起来,就是规则引擎的原始评分。
4.2 机器学习评分:逻辑回归与决策树
当数据量上来之后,纯规则就不够用了。你会发现有些风险模式,人根本总结不出来。这时候就该机器学习上场了。
我重点讲两个模型:逻辑回归和决策树。它们不是最炫的,但在信任评分领域,绝对是最实用的。
4.2.1 逻辑回归:简单、快速、概率输出
逻辑回归虽然名字里有“回归”,但干的是分类的活。它输出的是一个0到1之间的概率值,正好可以映射成信任评分。
它的数学形式长这样:
P(y=1) = 1 / (1 + e-(w0 + w1x1 + w2x2 + ... + wnxn))
每个特征xi都有一个权重wi。权重越大,说明这个特征对评分的影响越大。我在做设备指纹评分时,发现“浏览器语言”这个特征的权重特别高——因为很多攻击脚本默认是英文环境,而正常用户大多是本地语言。
4.2.2 决策树:可解释性强、能处理非线性关系
决策树就不一样了。它通过一系列“是/否”问题,把数据一层层分下去。每个叶子节点对应一个评分。
举个例子:
根节点: 设备是否可信?
├── 是: 用户行为是否异常?
│ ├── 是: 评分 40
│ └── 否: 评分 85
└── 否: 登录地点是否匹配?
├── 是: 评分 60
└── 否: 评分 20
决策树的优势在于直观。你可以直接把树画出来,给业务方看:“你看,走到这个分支,分数就是40。” 我曾经在一个反欺诈项目里,用决策树替换了原来的规则引擎,准确率提升了12%,而且业务方一看就懂,完全没有抵触情绪。
4.3 评分归一化:让分数站在同一起跑线
不管是规则引擎还是机器学习模型,输出的原始分数往往不在一个量级上。比如规则引擎输出的是-100到+100,逻辑回归输出的是0到1,决策树输出的是0到100。直接拿来用,会出问题。
归一化,就是把不同来源的分数映射到同一个标准区间。我常用的方法有两种:
| 方法 | 公式 | 适用场景 |
|---|---|---|
| Min-Max归一化 | Scorenorm = (Score - Min) / (Max - Min) × 100 | 分数范围已知,且分布均匀 |
| Z-Score归一化 | Scorenorm = (Score - Mean) / Std × 10 + 50 | 分数分布近似正态,有异常值 |
我个人更倾向于Z-Score归一化。为什么?因为Min-Max对异常值太敏感了。有一次,一个用户的评分因为数据错误变成了-999,结果Min-Max把所有正常用户的分数都压到了0附近。用Z-Score就不会有这个问题,异常值会被自动拉回。
4.4 阈值设定:分数有了,怎么用?
评分算出来了,归一化也做了。然后呢?你得设定阈值,决定哪些分数是“可信”,哪些是“可疑”,哪些是“危险”。
阈值设定不是拍脑袋。我见过太多项目,直接拍一个“60分及格”,结果要么误杀太多,要么漏放太多。正确做法是:基于业务数据,做阈值调优。
阈值调优的步骤
- 收集历史数据:至少要有1万条以上带标签的数据(正常/异常)。
- 计算不同阈值下的指标:比如阈值设为50分时,精确率、召回率、F1值分别是多少。
- 画ROC曲线或PR曲线:找到最优的平衡点。
- 结合业务成本做决策:如果误杀一个用户的成本是100元,漏放一个攻击的成本是10000元,那阈值就应该偏向高召回。
4.5 整体评分流程框架
说了这么多,我把整个评分流程画成一张图,方便你理解。
你看,整个流程其实不复杂。关键是要根据数据量和业务阶段,灵活选择评分方式。冷启动用规则,数据多了上模型,最后统一归一化,设定阈值,输出决策。
好了,这一章的内容就到这里。评分算法这块,我建议你动手跑一遍。拿一份公开的欺诈检测数据集,先用规则引擎写一套规则,再用逻辑回归和决策树分别建模,对比一下效果。相信我,亲手做过一遍,比看十遍文章都管用。