DataWhale 组队学习 2021.05 组队学习系列笔记二
先上整体大纲
HBOS流程:
- 为每个数据维度做出数据直方图。对分类数据统计每个值的频数并计算相对频率。
- 对每个维度都计算一个独立直方图,其中每个箱子的高度表示密度的估计。然后对直方图进行归一化处理,使得每个箱子的最大高度为1,确保每个特征的异常值得分的权重相等。
基本假设是数据集的各维度相互独立,对每个维度进行区间划分,计算区间密度,密度越高,评分越低。
常用两种作图方式:1.固定的柱宽度。2.柱个数大致相同,但导致不同的柱宽度。 当有大量离群值的时候,第二种方法更强固。
代码示例:
from pyod.models import hbos
from pyod.utils.example import visualize
clf = hbos.HBOS() # 初始化HBOS模型,生成一个HBOS检测器
clf.fit(X_train) # 用fit()方法拟合数据
y_train_pred = clf.labels_ # 针对训练样本预测其异常情况
y_train_socres = clf.decision_scores_ # 异常分数
y_test_pred = clf.predict(X_test) # 返回未知数据上的分类标签 (0: 正常值, 1: 异常值)
y_test_scores = clf.decision_function(X_test) # 返回未知数据上的异常值 (分值越大越异常)