局部异常因子新颖性检测2024年8月28日 | 阅读 7 分钟 新颖性检测是识别数据集中先前未识别的统计数据点的过程,这些数据点与“日常”信息因素不同。除了欺诈、错误和异常值检测之外,许多包都使用了它。
新颖性检测与异常值检测?新颖性检测和异常值识别是不同的概念,但它们密切相关。识别数据集中与其余数据元素显著不同的信息点的过程称为异常值识别。这些事实部分通常被称为异常值。新颖性检测是识别数据集中与“普通”事实点不同且以前从未观察到的统计点的过程。换句话说,范围来自模型先前观察的事实因素被检测为新颖性检测的一部分。 在识别数据集中与大多数统计数据点不同的记录因素时,与识别异常值和新颖性一样,应用相同的任务。新颖性检测和异常值检测的目标都是识别数据集中与大多数事实点不同的事实变量。然而,异常值识别专门用于识别数据集中与模型已可见的“日常”事实点不同的统计点,而新颖性检测似乎是针对以前从未见过的数据集中的“日常”信息因素的事实因素。 局部异常点因子和可达性距离?使用一种称为局部异常点因子 (LOF) 的方法,可以找到数据集中稀有的事实因素。它通过计算每个信息点周围的局部因子密度,并将它们与周围各种事实因素的点密度进行比较来实现这一点。 LOF 算法首先找到数据点的 k 个最近邻(其中 k 是用户指定的数字),然后计算数据点的可达性距离。然后确定数据点与每个 k 个最近邻之间的距离。然后使用这 k 个距离中的最大值来确定数据点的可达性距离。 数据点的局部可达密度是通过总距离确定的。这可以使用可达性距离来完成。数据点的局部可达密度衡量其周围点的局部密度。 给定信息点的异常值分量最终通过将该记录因素的局部可达密度除以其 k 个最近邻的平均附近可达密度来确定。高的异常值分量表明数据点是常规(非异常值)信息点的可能性要大得多,而低的异常值因子表明信息点是异常值的可能性要大得多。 分步实施sklearn 中的 LocalOutlierFactor 类位于 sci-kit-learn 中。可以使用邻居模块应用局部异常点因子 (LOF) 方法进行新颖性发现。LOF 算法通过每个样本在数据集中的局部密度来确定。这种基于密度的异常值检测技术可以找到比其邻居密度明显更高的样本。这些样本被视为新颖或异常值。 例如 一旦模式适合统计数据,您就可以使用 LocalOutlierFactor 估计器获得数据集中每个模式的异常值分数。在运行范围从 -1 到 -无穷大的异常值分数系统中,较低的数字表示较高的异常值分数。 此代码将打印数据集中每个样本的异常值分数。然后可以使用这些分数来识别看起来新颖或异常的样本。 您还可以为 LocalOutlierFactor 估计器设置超参数,包括 n_neighbors 参数,它指定用于密度估计的朋友数量,以及 infection 参数,它控制异常值识别技术。 例如 使用的 n_neighbors 和 infection 值用于生成 LocalOutlierFactor 估计器,该估计器非常适合统计数据。异常值分数是根据每个样本的局部密度计算的,范围从 -1 到 -无穷大,值越低表示异常值分数越高。 输出 [-1.29336673 -0.98663101 -1.01328312 -0.98843551 -1.0340768 -1.00630881 -0.99046301 -1.01851411 -1.00941979 -1.02585983 -0.99454281 -1.03826622 -1.00920089 -1.08435498 -0.98485871 -0.99414 -1.02193122 -1.13255894 -0.98870854 -1.08340603 -1.03462261 -0.99815638 -1.06346218 -1.05982866 -1.15648965 -0.97513857 -0.99884846 -1.01392852 -1.00915394 -1.02404234 -1.02786408 -0.99580036 -1.03977835 -1.0856313 -1.0369034 -1.01757096 -0.98141263 -0.9666988 -0.99826695 -0.98593089 -1.02410345 -1.03045039 -1.01843609 -1.00225046 -0.99271876 -1.04562085 -1.04143942 -1.06242416 -1.24595953 -1.21899134 -1.06365838 -0.99014377 -1.00305435 -0.9863289 -0.96339396 -0.99409326 -1.0110496 -0.99468687 -0.99819612 -1.02407759 -1.05802008 -1.26005187 -1.00061505 -0.96921694 -0.97023558 -1.05295619 -1.01049517 -1.02283846 -0.985272 -0.99179016 -1.00560031 -1.0708834 -1.05491243 -1.00190921 -1.13925738 -1.04666919 -1.00216646 -0.99883435 -1.0091551 -0.98864925 -1.03776316 -1.12661428 -1.05180372 -1.20713398 -1.02207957 -1.00696503 -0.98899481 -1.04758736 -0.98664004 -0.97553829 -0.98835569 -1.19497038 -0.99148634 -1.00208273 -1.01195274 -1.06184659 -1.05820208 -0.99283114 -1.11214065 -0.97880798] 导入数据集所需的模块和函数已从 scikit-learn 中导入。使用 load_breast_cancer 函数加载乳腺癌数据集;使用 StandardScaler 转换器对统计数据进行归一化;并使用 LocalOutlierFactor 美感扩展了异常值检测和新颖性检测模型。 此行加载乳腺癌数据集并将其存储在变量 X 和 Y 中。要独立返回数据和目标值,return_X_y 参数设置为 True。 数据归一化在这些两行中创建 StandardScaler 转换器来标准化数据。标准化统计数据是缩放数据以具有零均值和单位方差的过程。这通常在应用机器学习技术之前作为预处理步骤完成,因为它有助于稳定特征的变化并提高模型的性能。 默认情况下,n_neighbors=20 且 novelty=False,此行创建一个 LocalOutlierFactor 模型,该模型将用于异常值发现而不是新颖性检测。 此行通过将 LocalOutlierFactor 模型拟合到标准化数据来估计每个数据点的异常值分数。fit_predict 方法返回一个异常值分数数组,其中 1 表示内点,-1 表示异常值。 通过选择异常值分数等于 -1 的索引并打印异常数据点的索引和分数,这些行识别异常数据点。使用 n_neighbors=20 且 novelty=True,此行创建一个新的 LocalOutlierFactor 模型,该模型将用于新颖性检测而不是异常值检测。 结论总之,局部异常点因子 (LOF) 方法被证明对于检测新颖性非常有用,特别是在数据显示可变局部密度的情况下。为了使其能够抵抗可能不遵循全局密度模式的异常值,它会评估每个数据点相对于其邻居的局部密度。 通过比较数据点的局部密度与其邻居的局部密度,LOF 计算数据点的局部密度偏差并检测异常值。引入所需的库,例如 scikit-learn。 在使用 LOF 模型时使用正确的参数(例如 contamination 和 n_neighbors)。通过比较投影标签来确定异常值。根据数据的特征,修改 LOF 模型参数,例如 contamination 和 n_neighbors。细化对于达到峰值效率至关重要。评估 LOF 检测独特实例的能力以及所选参数是否在灵敏度和特异性之间提供良好的折衷至关重要。请记住,LOF 期望内点的密度高于异常值。 使用 LOF 进行新颖性识别通常是一个迭代过程。根据数据集的具体情况,您可能需要预处理数据,尝试其他参数值,或者考虑不同的算法。如果使用得当,LOF 可以成为一种强大的工具,用于在质量保证、欺诈检测和网络安全等各种应用中定位不寻常或独特的事件。然而,必须根据给定数据集的特定需求和细微差别来调整策略。 下一主题新颖性检测 |
我们请求您订阅我们的新闻通讯以获取最新更新。