クジラの異常検出タスク3-線形モデル

1はじめに

異なる属性は同じ基本プロセスによって密接に関連した方法で生成されることが多いため、実際のデータセット内の異なる次元のデータは通常高度に相関しています。古典的な統計では、これは回帰モデリングと呼ばれ、パラメーター化された相関分析です。1つのタイプの相関分析は、他の変数を介して個々の属性値を予測しようとし、もう1つのタイプは、いくつかの潜在変数を使用してデータ全体を表します。前者の代表は線形回帰であり、後者の典型的な例は主成分分析です。この記事では、異常検出のためにこれら2つの典型的な線形相関分析方法を使用します。

明確にするために、2つの重要な仮定があります。

仮定1:近似線形相関の仮定。線形相関の仮定は、異常検出に2つのモデルを使用するための重要な理論的基礎です。

仮説2:部分空間仮説。部分空間仮説では、データが低次元の部分空間に埋め込まれていると見なされます。線形法の目的は、異常点(o)が正常点(​​n)と異なるように、適切な低次元部分空間を見つけることです。

これらの2つの仮定に基づいて、異常検出の最初の段階で、特定のモデルが特定のデータセットに適しているかどうかを判断するには、データの探索的および視覚的な分析が非常に重要です。

2.線形回帰

線形回帰では、異なる次元の変数には特定の相関関係があり、相関係数行列によって測定できると想定しています。したがって、特定の観測については、線形方程式でモデル化できます。実際のアプリケーションでは、観測数がデータの次元数よりもはるかに多いことが多く、線形方程式システムは直接解くことのできない過剰決定方程式になります。したがって、モデルの予測値と実際のデータポイントの間の誤差を最小限に抑えるための最適化方法が必要です。

線形回帰は統計における重要なアプリケーションです。この重要なアプリケーションは、多くの場合、一連の独立変数を通じて特定の従属変数の値を予測することを指します。この場合、外れ値は従属変数に対する他の独立変数の影響に基づいて定義され、独立変数間の関係の異常はそれほど重要ではありません。ここでの異常点検出は、主にデータノイズリダクションに使用され、異常点の出現がモデルのパフォーマンスに与える影響を回避するため、ここでの対象点は主に正常値(n)です。

通常、異常検出と呼ばれるものは、変数に特別な扱いをしません。外れ値の定義は、基本的なデータポイントの全体的な分布に基づいています。ここでは、主に外れ値(o)に関心があります。
一般化された回帰モデリングは単なるツールであり、データノイズの低減と異常点の検出に使用できます。

3、主成分分析

前のセクションの最小二乗法は、データとの最適な一致を見つけようとしました(d − 1)(d−1)d 1 次元の超平面。主成分分析法を使用して、この問題の一般化されたバージョンを解決できます。具体的には、任意のk(k <d)k(k <d)を見つけることができます。k k<d 二乗投影誤差を最小化するための超平面の次元の最適な表現。
3.1原理の導出

N個のサンプルを含むd次元データの場合、[式]を使用してi番目の動作を表現します:[式]。これから、[式]の共分散行列を取得できます(標準PCAは相関係数行列を計算する必要があります。つまり、データは平均0と分散1で標準化され、共分散行列は減算するだけで済みます。平均):

高次元のデータセットを含む多くの実際のシナリオでは、特徴値の大部分がゼロに非常に近いことがよくあります。これは、ほとんどのデータが低次元の部分空間に沿って配置されていることを意味します。異常検出の観点からは、これらの投影方向から非常に遠い観測は外れ値であると見なすことができるため、これは非常に便利です。たとえば、特徴値が小さい(分散が小さい)特徴ベクトルjの場合、i番目のレコードの[式]は[式]の他の値からの偏差が大きく、外れ値の動作を示します。これは、jjjが固定され、kが変化する場合、[式]の値はあまり変化しないはずです。したがって、[式]の値は一般的ではありません。

異なる寸法のスケールがまったく異なる場合、PCAを使用しても直感的で効果的な結果が得られないことがあります。たとえば、年齢や給与などの属性を含む人口統計データセットについて考えてみます。給与属性は数万の範囲であり、年齢属性はほとんどの場合100未満です。主成分分析を使用すると、主成分が高分散属性によって制御されます。年齢と給与のみを含む2次元データセットの場合、最大の特徴ベクトルは給与軸にほぼ平行であるため、外れ値検出プロセスの有効性が低下します。したがって、自然な解決策は、平均が0で分散が1のデータを標準化することです。これにより、主成分分析で共分散行列の代わりに相関行列が使用されることになります。もちろん、この問題は線形モデリングに固有のものではありません。ほとんどの異常検出アルゴリズムでは、このような前処理が必要です。

4.回帰分析の制限

外れ値を検出するためのツールとしての回帰分析には、いくつかの制限があります。これらの欠点の中で最も重要なものについては、この章の冒頭で説明し、回帰分析のデータ固有の性質について説明しました。特に、回帰分析手法を効果的にするには、データを高度に相関させ、低次元の部分空間に沿って整列させる必要があります。この方法は、データが関連性がないが特定の領域で高度にクラスター化されている場合は効果的でない場合があります。

もう1つの関連する問題は、データの相関関係が本質的にグローバルではない可能性があることです。最近のいくつかの分析と観察は、部分空間の相関がデータの特定の場所に固有であることを示しています。この場合、主成分分析によって発見されたグローバル部分空間は、異常検出には最適ではありません。したがって、より一般的なローカル部分空間モデルを作成するために、線形モデルを隣接モデルと組み合わせることが役立つ場合があります。

5.まとめ

実際のデータでは、データのさまざまな属性に有意な相関関係があることがよくあります。この場合、線形モデリングは、基礎となるデータから外れ値を削除したり、異常検出を実行したりするための効果的なツールを提供できます。従属変数回帰に基づく他のアプリケーションの場合、線形モデリングはツールであり、そのようなアプリケーションのパフォーマンスを向上させるには、外れ値を削除することが非常に重要です。ほとんどの場合、主成分分析は、外れ値が少ないデータに対してより堅牢であるため、外れ値を削除して異常検出を実行するための最も効果的な方法を提供します。

6コード

导入乳腺癌数据,划分训练集测试集
import pandas as pd
from sklearn.model_selection import train_test_split
Train_data = pd.read_csv('breast-cancer-unsupervised-ad.csv')
Train_data.loc[Train_data['label']=='o','label']=1
Train_data.loc[Train_data['label']=='n','label']=0
Train_data['label'] = Train_data['label'].astype(float)
X_train, X_test, y_train, y_test = train_test_split(Train_data.loc[:, Train_data.columns != 'label'], Train_data['label'], test_size=0.3,stratify=Train_data['label'])

2. 使用主成分分析训练模型,预测结果

from pyod.models.pca import PCA
from pyod.models.hbos import HBOS
from pyod.utils.data import evaluate_print

# 训练PCA模型
clf_name = 'PCA'
clf = PCA()
clf.fit(X_train) # 注意训练模型的时候,不需要输入y参数

# 得到训练标签和训练分数
y_train_pred = clf.labels_   # 0正常,1异常
y_train_scores = clf.decision_scores_  # 数值越大越异常

# 用训练好的模型预测测试数据的标签和分数
y_test_pred = clf.predict(X_test) 
y_test_scores = clf.decision_function(X_test)

# 评估并打印结果
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)

おすすめ

転載: blog.csdn.net/huochuangchuang/article/details/112798254