当前位置: 代码迷 >> 综合 >> datawhale-异常检测打卡之Task 3:线性模型
  详细解决方案

datawhale-异常检测打卡之Task 3:线性模型

热度:75   发布时间:2023-12-18 04:46:02.0

真实数据集中不同维度的数据通常具有高度的相关性,这是因为不同的属性往往是由相同的基础过程以密切相关的方式产生的。在古典统计学中,这被称为回归建模,一种参数化的相关性分析
变量的相关性分析主要分为2类,一类相关性分析试图通过其他变量预测单独的属性值,另一类方法用一些潜在变量来代表整个数据。前者的典型代表是线性回归,后者一个典型的例子是主成分分析

本文将会用这两种典型的线性相关分析方法进行异常检测。

1.线性回归

线性回归是统计学中一个重要的应用,这个重要的应用往往是指通过一系列自变量去预测一个特殊因变量的值。在这种情况下,异常值是根据其他自变量对因变量的影响来定义的,而自变量之间相互关系中的异常则不那么重要。这里的异常点检测主要用于数据降噪,避免异常点的出现对模型性能的影响,因而这里关注的兴趣点主要是正常值。

  • 最小二乘法
  • 梯度下降法

求解线性回归参数时可以应用最小二乘法,当最小二乘法无法使用时,可以通过两种方法进行参数估计,一种先使用主成分分析等方法来预处理数据,消除不同特征之间的相关性,然后再使用最小二乘法。第二种方法是使用梯度下降法。

2.主成分分析

最小二乘法试图找到一个与数据具有最佳匹配(d-1)维超平面。主成分分析方法可用于解决这一问题的广义版本。具体来说,它可以找到任意 k(k-d)维的最优表示超平面,从而使平面投影误差最小化。

所谓主成分分析即由d个特征组合成新的d个正交特征,使得新的特征之间两两正交。

? 如果前 k的特征向量选定之后(根据最大的k个特征值),由这些特征向量定义的 k维超平面是在所有维度为 k的超平面中,所有数据点到它的均方距离尽可能小的平面。
? 如果将数据转换为与正交特征向量对应的轴系,则转换后的数据沿每个特征向量维的方差等于相应的特征值。在这种新表示中,转换后的数据的协方差为0。
? 由于沿特征值小的特征向量的转换数据的方差很低,因此沿这些方向的变换数据与平均值的显着偏差可能表示离群值。

3.小结

真实数据中,数据不同属性之间往往具有显著的相关性。在这种情况下,线性建模可以提供一种有效的工具来从底层数据中移除异常值或者进行异常检测。对于其他基于因变量回归的应用,线性建模是一种工具,去除异常值对于提高此类应用的性能是非常重要的。在大多数情况下,主成分分析提供了去除异常值和进行异常检测最有效的方法,因为它对存在少数异常值的数据更有鲁棒性。

4.练习

使用pyod库生成example并使用该库的pca模块进行检测

1.构造数据,20个特征

from pyod.models.pca import PCA
from pyod.utils.data import generate_data
from pyod.utils.data import evaluate_print
contamination = 0.1  # 异常值比例
n_train = 200  # 训练集数目
n_test = 100  # 测试集树木
X_train, y_train, X_test, y_test = \generate_data(n_train=n_train,n_test=n_test,n_features=20,contamination=contamination,random_state=42)

2.训练 PCA 分类器
取正交的20维度中的前3维度


clf_name = 'PCA'
clf = PCA(n_components=3)
clf.fit(X_train)

3.应用模型

# 应用模型至训练集
y_train_pred = clf.labels_  # binary labels (0: inliers, 1: outliers)
y_train_scores = clf.decision_scores_  # raw outlier scores# 应用模型至测试集
y_test_pred = clf.predict(X_test)  # outlier labels (0 or 1)
y_test_scores = clf.decision_function(X_test)  # outlier scores

4.评估效果

# 评估训练集和测试集上效果
print("\nOn Training Data:")
evaluate_print(clf_name, y_train, y_train_scores)
print("\nOn Test Data:")
evaluate_print(clf_name, y_test, y_test_scores)

在这里插入图片描述

  相关解决方案