本章学习内容主要包括以下两个方面:
- 线性回归
- 主成分分析
不同的属性往往是由相同的基础过程以密切相关的方式产生的。
几个重要概念:
- 回归建模 ----参数化的相关性分析。
- 线性回归 ----通过其他变量预测单独的属性值。
- 主成分分析 ----用一些潜在变量来代表整个数据。
两个重要假设:
假设一:近似线性相关假设。线性相关假设是使用两种模型进行异常检测的重要理论基础。
假设二:子空间假设。子空间假设认为数据是镶嵌在低维子空间中的,线性方法的目的是找到合适的低维子空间使得异常点(o)在其中区别于正常点(n)。
线性回归
常用办法有以下几种:
- 基于自变量与因变量的线性回归
- 最小二乘法
- 梯度下降法
- 基于异常检测的线性回归
主成分分析
设有m条n维数据,PCA的一般步骤如下。
- 将原始数据按列组成n行m列矩阵X;
- 计算矩阵X中每个特征属性(n维)的平均向量M(平均值);
- 将X的每一行(代表一个属性字段)进行零均值化,即减去M;
- 按照公式求出协方差矩阵;
- 求出协方差矩阵的特征值及对应的特征向量;
- 将特征向量按对应特征值从大到小按行排列成矩阵,取前k(k<n)行组成基向量P;
- 通过Y=PX计算降维到k维后的样本特征。
实验部分
PCA模型实验
1.导包
from pyod.models.pca import PCA
from pyod.utils.data import generate_data
from pyod.utils.data import evaluate_print
from pyod.utils.example import visualize
2.使用生成样本数据pyod.utils.data.generate_data():
contamination = 0.1 # percentage of outliers
n_train = 200 # number of training points
n_test = 100 # number of testing points
X_train, y_train, X_test, y_test = generate_data(
n_train=n_train, n_test=n_test, contamination=contamination)
3.初始化pyod.models.PCA.PCA检测器,拟合模型,然后进行预测
# train PCA detector
clf_name = 'PCA'
clf = PCA() # n_components默认为全部
clf.fit(X_train)
输出结果
PCA(contamination=0.1, copy=True, iterated_power='auto', n_components=None,
n_selected_components=None, random_state=None, standardization=True,
svd_solver='auto', tol=0.0, weighted=True, whiten=False)
- 使用训练集训练PCA
# get the prediction labels and outlier scores of the training data
y_train_pred = clf.labels_ # binary labels (0: inliers, 1: outliers)
y_train_scores = clf.decision_scores_ # raw outlier scores
5.在训练集上进行测试
# get the prediction on the test data
y_test_pred = clf.predict(X_test) # outlier labels (0 or 1)
y_test_scores = clf.decision_function(X_test) # outlier scores
- 使用ROC和Precision @ Rank n评估预测pyod.utils.data.evaluate_print()。
from pyod.utils.data import evaluate_print
# 评估并打印结果
print("\nPCA On Training Data:")
evaluate_print(clf_name, y_train, y_train_scores)
print("\nPCA On Test Data:")
evaluate_print(clf_name, y_test, y_test_scores)
输出PCA在训练集和测试集上的结果
PCA On Training Data:
PCA ROC:1.0, precision @ rank n:1.0
PCA On Test Data:
PCA ROC:0.91, precision @ rank n:0.9
7.在培训和测试数据上查看示例输出。 通过可视化所有示例中包含的功能来生成可视化