数据挖掘(异常检测)——相似度

DataWhale 组队学习 2021.05 组队学习系列笔记四

异常检测(相似度)

LOF 方法是一种典型的基于密度的高精度离群点检测方法。
在 LOF 方法中,通过给每个数据点都分配一个依赖于邻域密度的离群因子 LOF,进而判断该数据点是否为离群点。若 LOF >> 1, 则该数据点为离群点;若 LOF 接近于 1,则该数据点为正常数据点。

实现(sklearn):

sklearn.neighbors.LocalOutlierFactor(n_neighbors=20, ***, algorithm='auto', leaf_size=30, metric='minkowski', p=2, metric_params=None, contamination='auto', novelty=False, n_jobs=None)[source]¶

  • n_neighbors = 20:即k,检测的邻域点个数超过样本数则使用所有的样本进行检测
  • algorithm = 'auto':使用的求解算法,使用默认值即可
  • contamination = 0.1:范围为 (0, 0.5),表示样本中的异常点比例,默认为 0.1
  • n_jobs = -1:并行任务数,设置为-1表示使用所有CPU进行工作
  • p = 2:距离度量函数,默认使用欧式距离。(其他距离模型使用较少,这里不作介绍。具体参考官方文档)
    from sklearn.neighbors import LocalOutlierFactor
    clf = LocalOutlierFactor(n_neighbors=k + 1, algorithm='auto', contamination=0.1, n_jobs=-1)
    clf.fit(data)
    # 记录 k 邻域距离
    predict['k distances'] = clf.kneighbors(predict)[0].max(axis=1)
    # 记录 LOF 离群因子,做相反数处理
    predict['local outlier factor'] = -clf._decision_function(predict.iloc[:, :-1])

你可能感兴趣的:(数据挖掘(异常检测)——相似度)