Translated ['src/AI/AI-Unsupervised-Learning-algorithms.md'] to ja

This commit is contained in:
Translator 2025-06-07 23:58:57 +00:00
parent 4d363c2589
commit c8f2d9482e

View File

@ -2,23 +2,21 @@
{{#include ../banners/hacktricks-training.md}}
## 教師なし学習
教師なし学習は、ラベル付きの応答なしでデータに基づいてモデルを訓練する機械学習の一種です。目的は、データ内のパターン、構造、または関係を見つけることです。ラベル付きの例から学習する教師あり学習とは異なり、教師なし学習アルゴリズムはラベルのないデータで動作します。
教師なし学習は、クラスタリング、次元削減、異常検出などのタスクにしばしば使用されます。データ内の隠れたパターンを発見したり、類似のアイテムをグループ化したり、データの本質的な特徴を保持しながらその複雑さを減少させるのに役立ちます。
### K-Meansクラスタリング
K-Meansは、各点を最も近いクラスタ平均に割り当てることによってデータをK個のクラスタに分割する重心ベースのクラスタリングアルゴリズムです。アルゴリズムは次のように機能します
1. **初期化**: K個の初期クラスタ中心重心を選択します。通常はランダムに、またはk-means++のようなよりスマートな方法で行います。
2. **割り当て**: 各データポイントを距離メトリック(例:ユークリッド距離)に基づいて最も近い重心に割り当てます。
3. **更新**: 各クラスタに割り当てられたすべてのデータポイントの平均を取ること重心を再計算します。
2. **割り当て**: 距離メトリック(例:ユークリッド距離)に基づいて、各データポイントを最も近い重心に割り当てます。
3. **更新**: 各クラスタに割り当てられたすべてのデータポイントの平均を取ることによって重心を再計算します。
4. **繰り返し**: クラスタの割り当てが安定するまで重心が大きく移動しなくなるまでステップ2〜3を繰り返します。
> [!TIP]
> *サイバーセキュリティにおけるユースケース:* K-Meansは、ネットワークイベントをクラスタリングすることによって侵入検知に使用されます。えば、研究者はKDD Cup 99侵入データセットにK-Meansを適用し、正常なトラフィックと攻撃クラスタに効果的に分割されることを発見しました。実際には、セキュリティアナリストはログエントリやユーザー行動データをクラスタリングして、類似の活動のグループを見つけることがあります。適切に形成されたクラスタに属さないポイントは、異常を示す可能性があります新しいマルウェアの亜種が独自の小さなクラスタを形成する。K-Meansは、動プロファイルや特徴ベクトルに基づいてバイナリをグループ化することによってマルウェアファミリーの分類にも役立ちます。
> *サイバーセキュリティにおけるユースケース:* K-Meansは、ネットワークイベントをクラスタリングすることによって侵入検知に使用されます。たとえば、研究者はKDD Cup 99侵入データセットにK-Meansを適用し、正常なトラフィックと攻撃クラスタに効果的に分割されることを発見しました。実際には、セキュリティアナリストはログエントリやユーザー行動データをクラスタリングして、類似の活動のグループを見つけることがあります。適切に形成されたクラスタに属さないポイントは、異常を示す可能性があります新しいマルウェアの亜種が独自の小さなクラスタを形成する。K-Meansは、バイナリを行動プロファイルや特徴ベクトルに基づいてグループ化することによってマルウェアファミリーの分類にも役立ちます。
#### Kの選択
クラスタの数Kは、アルゴリズムを実行する前に定義する必要があるハイパーパラメータです。エルボー法やシルエットスコアのような手法は、クラスタリングのパフォーマンスを評価することによってKの適切な値を決定するのに役立ちます
@ -71,20 +69,20 @@ print(f" Cluster {idx}: {center}")
凝集型クラスタリングは、クラスター間の距離の定義と、どのクラスターをマージするかを決定するためのリンク基準を必要とします。一般的なリンク方法には、単一リンク2つのクラスター間の最も近いポイントの距離、完全リンク最も遠いポイントの距離、平均リンクなどがあり、距離メトリックはしばしばユークリッド距離です。リンクの選択は生成されるクラスターの形状に影響を与えます。クラスターの数Kを事前に指定する必要はなく、選択したレベルで樹形図を「カット」して、希望する数のクラスターを得ることができます。
階層的クラスタリングは、異なる粒度レベルでクラスター間の関係を示す樹形図を生成します。樹形図は、特定の数のクラスターを得るために希望するレベルでカットすることができます。
階層的クラスタリングは、異なる粒度レベルでクラスター間の関係を示す樹形図を生成します。樹形図は、特定の数のクラスターを得るために希望するレベルでカットできます。
> [!TIP]
> *サイバーセキュリティにおけるユースケース:* 階層的クラスタリングは、イベントやエンティティをツリーに整理して関係を特定することができます。たとえば、マルウェア分析では、凝集型クラスタリングがサンプルを行動の類似性によってグループ化し、マルウェアファミリーとバリアントの階層を明らかにすることができます。ネットワークセキュリティでは、IPトラフィックフローをクラスタリングし、樹形図を使用してトラフィックのサブグループプロトコル別、次に行動別を確認することができます。Kを事前に選択する必要がないため、攻撃カテゴリの数が不明な新しいデータを探索する際に便利です。
#### 仮定と制限
階層的クラスタリングは特定のクラスター形状を仮定せず、ネストされたクラスターをキャプチャできます。これは、グループ間の分類法や関係を発見するのに役立ちます(例:マルウェアをファミリーサブグループでグループ化)。これは決定論的であり(ランダム初期化の問題はありません)、主要な利点は樹形図であり、すべてのスケールでデータのクラスタリング構造に関する洞察を提供します。セキュリティアナリストは、意味のあるクラスターを特定するための適切なカットオフを決定できます。しかし、計算コストが高く(通常は$O(n^2)$時間またはそれ以上のナイーブな実装)、非常に大きなデータセットには実行可能ではありません。また、これは貪欲な手法であり、一度マージまたは分割が行われると元に戻すことができず、早期に間違いが発生した場合に最適でないクラスターが生じる可能性があります。外れ値も一部のリンク戦略に影響を与える可能性があります(単一リンクは、外れ値を介してクラスターがリンクする「チェイニング」効果を引き起こす可能性があります)。
階層的クラスタリングは特定のクラスター形状を仮定せず、ネストされたクラスターをキャプチャできます。これは、グループ間の分類法や関係を発見するのに役立ちます(例:マルウェアをファミリーサブグループでグループ化)。これは決定論的であり(ランダム初期化の問題はありません)、主要な利点は樹形図であり、すべてのスケールでデータのクラスタリング構造に関する洞察を提供します。セキュリティアナリストは、意味のあるクラスターを特定するための適切なカットオフを決定できます。しかし、計算コストが高く(通常は$O(n^2)$時間またはそれ以上のナイーブな実装)、非常に大きなデータセットには実行可能ではありません。また、これは貪欲な手法であり、一度マージまたは分割が行われると元に戻すことができず、早期に間違いが発生した場合に最適でないクラスターが生じる可能性があります。外れ値も一部のリンク戦略に影響を与える可能性があります(単一リンクは、外れ値を介してクラスターがリンクする「チェイニング」効果を引き起こす可能性があります)。
<details>
<summary>例 -- イベントの凝集型クラスタリング
</summary>
K-Meansの例からの合成データ3つの通常のクラスター + 1つの攻撃クラスターを再利用し、凝集型クラスタリングを適用します。次に、樹形図とクラスターラベルを取得する方法を示します。
K-Meansの例からの合成データ3つの正常なクラスター + 1つの攻撃クラスターを再利用し、凝集型クラスタリングを適用します。次に、樹形図とクラスターラベルを取得する方法を示します。
```python
from sklearn.cluster import AgglomerativeClustering
from scipy.cluster.hierarchy import linkage, dendrogram
@ -106,7 +104,7 @@ print(f"Cluster sizes for 3 clusters: {np.bincount(clusters_3)}")
### DBSCAN (ノイズを伴うアプリケーションの密度ベースの空間クラスタリング)
DBSCANは、密度に基づくクラスタリングアルゴリズムで、密集しているポイントをグループ化し、低密度領域のポイントを外れ値としてマークします。これは、異なる密度と非球形の形状を持つデータセットに特に有用です。
DBSCANは、密度に基づくクラスタリングアルゴリズムで、密に集まったポイントをグループ化し、低密度領域のポイントを外れ値としてマークします。これは、異なる密度と非球形の形状を持つデータセットに特に有用です。
DBSCANは、2つのパラメータを定義することによって機能します
- **Epsilon (ε)**: 同じクラスタの一部と見なされる2つのポイント間の最大距離。
@ -120,13 +118,13 @@ DBSCANは、コアポイント、ボーダーポイント、イズポイン
クラスタリングは、未訪問のコアポイントを選択し、それを新しいクラスタとしてマークし、そこから密度到達可能なすべてのポイントコアポイントとその隣接ポイントなどを再帰的に追加することによって進行します。ボーダーポイントは近くのコアのクラスタに追加されます。すべての到達可能なポイントを拡張した後、DBSCANは別の未訪問のコアに移動して新しいクラスタを開始します。どのコアにも到達できなかったポイントはイズとしてラベル付けされます。
> [!TIP]
> *サイバーセキュリティにおけるユースケース:* DBSCANはネットワークトラフィックの異常検出に役立ちます。たとえば、通常のユーザー活動は特徴空間において1つ以上の密なクラスタを形成するかもしれませんが、新しい攻撃行動は散発的なポイントとして現れ、DBSCANはそれをイズ外れ値としてラベル付けします。これは、ポートスキャンやサービス拒否トラフィックをポイントのまばらな領域として検出できるネットワークフローレコードのクラスタリングに使用されてきました。別のアプリケーションはマルウェアのバリアントをグループ化することです:ほとんどのサンプルがファミリーごとにクラスタリングされる一方で、いくつかはどこにも適合しない場合、それらはゼロデイマルウェアである可能性があります。ノイズをフラグ付けする能力により、セキュリティチームはこれらの外れ値の調査に集中できます。
> *サイバーセキュリティにおけるユースケース:* DBSCANはネットワークトラフィックの異常検出に役立ちます。たとえば、通常のユーザー活動は特徴空間において1つ以上の密なクラスタを形成するかもしれませんが、新しい攻撃行動は散発的なポイントとして現れ、DBSCANはそれをイズ外れ値としてラベル付けします。これは、ポートスキャンやサービス拒否トラフィックをポイントのまばらな領域として検出できるネットワークフローレコードのクラスタリングに使用されてきました。別の応用はマルウェアのバリアントをグループ化することです:ほとんどのサンプルがファミリーごとにクラスタリングされる一方で、いくつかはどこにも適合しない場合、それらはゼロデイマルウェアである可能性があります。ノイズをフラグ付けする能力により、セキュリティチームはこれらの外れ値の調査に集中できます。
#### 仮定と制限
**仮定と強み:** DBSCANは球状のクラスタを仮定しません 任意の形状のクラスタ連鎖状または隣接するクラスタさえもを見つけることができます。データの密度に基づいてクラスタの数を自動的に決定し、外れ値をイズとして効果的に識別できます。これにより、不規則な形状とイズを持つ実世界のデータに対して強力です。外れ値に対して頑健ですK-Meansとは異なり、K-Meansはそれらをクラスタに強制します)。クラスタがほぼ均一な密度を持つ場合にうまく機能します。
**仮定と強み:** DBSCANは球状のクラスタを仮定しません 任意の形状のクラスタ連鎖状または隣接するクラスタさえもを見つけることができます。データの密度に基づいてクラスタの数を自動的に決定し、外れ値をイズとして効果的に識別できます。これにより、不規則な形状とイズを持つ実世界のデータに対して強力です。外れ値に対して頑健ですK-Meansとは異なり、外れ値をクラスタに強制的に入れません)。クラスタがほぼ均一な密度を持つ場合にうまく機能します。
**制限:** DBSCANのパフォーマンスは、適切なεとMinPtsの値を選択することに依存します。密度が異なるデータに対しては苦労するかもしれません 単一のεでは、密なクラスタとまばらなクラスタの両方を収容できません。εが小さすぎると、ほとんどのポイントがイズとしてラベル付けされます大きすぎると、クラスタが不正にマージされる可能性があります。また、DBSCANは非常に大きなデータセットでは非効率的になる可能性があります単純には$O(n^2)$ですが、空間インデックスが役立つことがあります。高次元の特徴空間では、「ε内の距離」の概念があまり意味を持たなくなることがあります次元の呪い、そのためDBSCANは慎重なパラメータ調整が必要になるか、直感的なクラスタを見つけられないことがあります。それにもかかわらず、HDBSCANのような拡張は、いくつかの問題密度の変など)に対処します。
**制限:** DBSCANのパフォーマンスは、適切なεとMinPtsの値を選択することに依存します。密度が異なるデータに対しては苦労するかもしれません 単一のεでは、密なクラスタとまばらなクラスタの両方を収容できません。εが小さすぎると、ほとんどのポイントがイズとしてラベル付けされます大きすぎると、クラスタが不正にマージされる可能性があります。また、DBSCANは非常に大きなデータセットでは非効率的になる可能性があります単純には$O(n^2)$ですが、空間インデックスが役立つことがあります。高次元の特徴空間では、「ε内の距離」の概念があまり意味を持たなくなることがあります次元の呪い、そのためDBSCANは慎重なパラメータ調整が必要になるか、直感的なクラスタを見つけられないことがあります。それにもかかわらず、HDBSCANのような拡張は、いくつかの問題密度の変など)に対処します。
<details>
<summary>例 -- ノイズを伴うクラスタリング
@ -152,7 +150,7 @@ num_noise = np.sum(labels == -1)
print(f"DBSCAN found {num_clusters} clusters and {num_noise} noise points")
print("Cluster labels for first 10 points:", labels[:10])
```
このスニペットでは、データスケールに合わせて `eps``min_samples` を調整しました特徴単位で15.0、クラスタを形成するために5ポイントが必要。DBSCANは2つのクラスタ通常のトラフィッククラスタを見つけ、5つの注入された外れ値をイズとしてフラグ付けする必要があります。これを確認するために、クラスタ数とイズポイントの数を出力します。実際の設定では、εを反復処理k距離グラフヒューリスティックを使用してεを選択、MinPts一般的にはデータの次元数+1に設定される調整して安定したクラスタリング結果を見つけることがあります。ノイズを明示的にラベル付けする能力は、さらなる分析のために潜在的な攻撃データを分離するのに役立ちます。
このスニペットでは、データスケールに合わせて `eps``min_samples` を調整しました特徴単位で15.0、クラスタを形成するために5ポイントが必要。DBSCANは2つのクラスタ通常のトラフィッククラスタを見つけ、5つの注入された外れ値をイズとしてフラグ付けする必要があります。これを確認するために、クラスタ数とイズポイントの数を出力します。実際の設定では、εを反復処理εを選択するためにk距離グラフヒューリスティックを使用、MinPts一般的にはデータの次元数+1に設定される使用して安定したクラスタリング結果を見つけることがあります。ノイズを明示的にラベル付けする能力は、さらなる分析のために潜在的な攻撃データを分離するのに役立ちます。
</details>
@ -174,16 +172,16 @@ PCAは、データの視覚化、イズ削減、他の機械学習アルゴ
固有値は、対応する固有ベクトルによって捉えられる分散の量を示すスカラーです。固有ベクトルは、データが最も変動する特徴空間の方向を表します。
Aが正方行列で、vがゼロでないベクトルであるとします `A * v = λ * v`
Aが正方行列で、vがゼロでないベクトルであると仮定します: `A * v = λ * v`
ここで:
- Aは [ [1, 2], [2, 1]] のような正方行列(例:共分散行列)
- vは固有ベクトル[1, 1]
すると、 `A * v = [ [1, 2], [2, 1]] * [1, 1] = [3, 3]` となり、これは固有値λが固有ベクトルvで掛けられたものになり、固有値λ = 3となります。
すると、 `A * v = [ [1, 2], [2, 1]] * [1, 1] = [3, 3]` となり、これは固有値λが固有ベクトルvで掛けられたもので、固有値λ = 3になります。
#### PCAにおける固有値と固有ベクトル
これを例で説明しましょう。100x100ピクセルの顔のグレースケール画像がたくさんあるデータセットがあるとします。各ピクセルは特徴と見なすことができるため、画像ごとに10,000の特徴または画像ごとの10,000成分のベクトルがあります。このデータセットの次元をPCAを使用して削減したい場合、次の手順に従います
これを例で説明しましょう。100x100ピクセルの顔のグレースケール画像がたくさんあるデータセットがあると仮定します。各ピクセルは特徴と見なすことができるため、画像ごとに10,000の特徴または画像ごとの10,000成分のベクトルがあります。このデータセットの次元をPCAを使用して削減したい場合、次の手順に従います
1. **標準化**:データセットから各特徴(ピクセル)の平均を引いてデータを中心にします。
2. **共分散行列**:標準化されたデータの共分散行列を計算し、特徴(ピクセル)がどのように一緒に変動するかを捉えます。
@ -196,17 +194,17 @@ Aが正方行列で、vがゼロでないベクトルであるとします `A
4. **主成分の選択**固有値を降順に並べ、最大の固有値に対応する上位K個の固有ベクトルを選択します。これらの固有ベクトルは、データの最大分散の方向を表します。
> [!TIP]
> *サイバーセキュリティにおけるユースケース:* PCAの一般的な使用法は、異常検出のための特徴削減です。例えば、40以上のネットワークメトリックNSL-KDDの特徴などを持つ侵入検知システムは、PCAを使用して数個の成分に削減し、視覚化やクラスタリングアルゴリズムへの入力のためにデータを要約できます。アナリストは、最初の2つの主成分の空間でネットワークトラフィックをプロットして、攻撃が通常のトラフィックから分離されるかどうかを確認することがあります。PCAは、冗長な特徴相関がある場合の送信バイトと受信バイトなどを排除するのにも役立ち、検出アルゴリズムをより堅牢で迅速にします。
> *サイバーセキュリティにおけるユースケース:* セキュリティにおけるPCAの一般的な使用法は、異常検出のための特徴削減です。例えば、40以上のネットワークメトリックNSL-KDDの特徴などを持つ侵入検知システムは、PCAを使用して数個の成分に削減し、視覚化のためにデータを要約したり、クラスタリングアルゴリズムに供給したりできます。アナリストは、最初の2つの主成分の空間でネットワークトラフィックをプロットして、攻撃が通常のトラフィックから分離されるかどうかを確認することがあります。PCAは、冗長な特徴相関がある場合の送信バイトと受信バイトなどを排除するのにも役立ち、検出アルゴリズムをより堅牢で迅速にします。
#### 仮定と制限
PCAは、**分散の主軸が意味のあるものである**と仮定します。これは線形手法であるため、データの線形相関を捉えます。PCAの利点には、イズ削減小さな分散の成分はしばしばイズに対応するや特徴の非相関化が含まれます。中程度の高次元に対して計算効率が良く、他のアルゴリズムの前処理ステップとしてしばしば有用です次元の呪いを軽減するため。1つの制限は、PCAが線形関係に制限されていることです複雑な非線形構造を捉えることはできませんオートエンコーダやt-SNEができるかもしれません。また、PCAの成分は元の特徴の観点から解釈が難しい場合があります元の特徴の組み合わせです。サイバーセキュリティでは、注意が必要です低分散の特徴にわずかな変化を引き起こす攻撃は、上位のPCに現れないかもしれませんPCAは分散を優先するため、「興味深さ」を必ずしも優先するわけではありません)。
PCAは、**分散の主軸が意味のあるものであると仮定します** これは線形手法であるため、データの線形相関を捉えます。これは教師なしであり、特徴の共分散のみを使用します。PCAの利点には、イズ削減小さな分散の成分はしばしばイズに対応するや特徴の非相関化が含まれます。中程度の高次元に対して計算効率が良く、他のアルゴリズムの前処理ステップとしてしばしば有用です次元の呪いを軽減するため。1つの制限は、PCAが線形関係に制限されていることです 複雑な非線形構造を捉えることはできませんオートエンコーダやt-SNEができるかもしれません。また、PCAの成分は元の特徴の観点から解釈が難しい場合がありますそれらは元の特徴の組み合わせです)。サイバーセキュリティでは、注意が必要です:低分散の特徴に微妙な変化を引き起こす攻撃は、上位のPCに現れないかもしれませんPCAは分散を優先するため、「興味深さ」を必ずしも優先ません)。
<details>
<summary>例 -- ネットワークデータの次元削減
</summary>
ネットワーク接続ログに複数の特徴(例:期間、バイト、カウントがあるとします。相関のある特徴を持つ合成の4次元データセットを生成し、PCAを使用して視覚化やさらなる分析のために2次元に削減します。
ネットワーク接続ログに複数の特徴(例:持続時間、バイト、カウントがあると仮定します。相関のある4次元の合成データセットを生成し、PCAを使用して視覚化やさらなる分析のために2次元に削減します。
```python
from sklearn.decomposition import PCA
@ -238,7 +236,7 @@ GMMのフィッティングは通常、期待値最大化EMアルゴリズ
- **初期化**平均、共分散、および混合係数の初期推定値から始めるまたはK-Meansの結果を出発点として使用する
- **Eステップ期待値**:現在のパラメータに基づいて、各ポイントに対する各クラスタの責任を計算します:本質的には`r_nk = P(z_k | x_n)`、ここでz_kはポイントx_nのクラスタメンバーシップを示す潜在変数です。これはベイズの定理を使用して行われ、現在のパラメータに基づいて各ポイントが各クラスタに属する後方確率を計算します。責任は次のように計算されます
- **Eステップ期待値**:現在のパラメータに基づいて、各ポイントに対する各クラスタの責任を計算します:本質的には`r_nk = P(z_k | x_n)`であり、ここでz_kはポイントx_nのクラスタメンバーシップを示す潜在変数です。これはベイズの定理を使用して行われ、現在のパラメータに基づいて各ポイントが各クラスタに属する後方確率を計算します。責任は次のように計算されます
```math
r_{nk} = \frac{\pi_k \mathcal{N}(x_n | \mu_k, \Sigma_k)}{\sum_{j=1}^{K} \pi_j \mathcal{N}(x_n | \mu_j, \Sigma_j)}
```
@ -251,18 +249,18 @@ r_{nk} = \frac{\pi_k \mathcal{N}(x_n | \mu_k, \Sigma_k)}{\sum_{j=1}^{K} \pi_j \m
- 各共分散Σ_kをクラスタkに割り当てられたポイントの重み付き共分散として更新します。
- 混合係数π_kをクラスタkの平均責任として更新します。
- **EおよびMステップを繰り返す**:収束するまで(パラメータが安定するか、尤度の改善が閾値を下回るまで)。
- **EおよびMステップを収束するまで繰り返す**(パラメータが安定するか、尤度の改善が閾値を下回るまで)。
結果は、全体のデータ分布を集的にモデル化するガウス分布のセットです。フィッティングされたGMMを使用して、各ポイントを最も高い確率のガウスに割り当てることでクラスタリングするか、不確実性のために確率を保持することができます。また、新しいポイントの尤度を評価して、モデルに適合するかどうかを確認することもできます異常検出に役立ちます
結果は、全体のデータ分布を集的にモデル化するガウス分布のセットです。フィッティングされたGMMを使用して、各ポイントを最も高い確率のガウスに割り当てることでクラスタリングするか、不確実性のために確率を保持することができます。また、新しいポイントの尤度を評価して、モデルに適合するかどうかを確認することもできます異常検出に役立ちます
> [!TIP]
> *サイバーセキュリティにおけるユースケース:* GMMは、正常データの分布をモデル化することによって異常検出に使用できます学習した混合の下で非常に低い確率のポイントは異常としてフラグ付けされます。たとえば、正当なネットワークトラフィックの特徴に基づいてGMMをトレーニングすることができます。学習したクラスタに似ていない攻撃接続は低い尤度を持つでしょう。GMMは、クラスタが異なる形状を持つ可能性がある活動をクラスタリングするためにも使用されます。たとえば、行動プロファイルによってユーザーをグループ化する場合、各プロファイルの特徴はガウス的である可能性がありますが、それぞれ独自の分散構造を持っています。別のシナリオとして、フィッシング検出では、正当なメールの特徴が1つのガウスクラスタを形成し、既知のフィッシングが別のクラスタを形成し、新しいフィッシングキャンペーンが既存の混合に対して別のガウスまたは低い尤度のポイントとして現れる可能性があります。
> *サイバーセキュリティにおけるユースケース:* GMMは、正常データの分布をモデル化することによって異常検出に使用できます学習した混合の下で非常に低い確率のポイントは異常としてフラグ付けされます。たとえば、正当なネットワークトラフィックの特徴に基づいてGMMをトレーニングすることができます。学習したクラスタに似ていない攻撃接続は低い尤度を持つでしょう。GMMは、クラスタが異なる形状を持つ可能性がある活動をクラスタリングするためにも使用されます。たとえば、行動プロファイルによってユーザーをグループ化する場合、各プロファイルの特徴はガウス的である可能性がありますが、それぞれ独自の分散構造を持っています。別のシナリオフィッシング検出では、正当なメールの特徴が1つのガウスクラスタを形成し、既知のフィッシングが別のものを形成し、新しいフィッシングキャンペーンは既存の混合に対して別のガウスまたは低い尤度のポイントとして現れる可能性があります。
#### 仮定と制限
GMMは、共分散を取り入れたK-Meansの一般化であり、クラスタは楕円体球状だけでなくになることができます。共分散が完全であれば、異なるサイズと形状のクラスタを処理します。クラスタ境界があいまいな場合、ソフトクラスタリングは利点です。たとえば、サイバーセキュリティでは、イベントが複数の攻撃タイプの特性を持つ可能性があります。GMMは確率でその不確実性を反映できます。GMMはまた、データの確率密度推定を提供し、外れ値すべての混合成分の下で低い尤度を持つポイントを検出するのに役立ちます。
欠点として、GMMは成分の数Kを指定する必要がありますただし、BIC/AICのような基準を使用して選択できます。EMは時々収束が遅いか、局所最適に収束することがあるため、初期化が重要ですEMを複数回実行することがよくあります。データが実際にガウスの混合に従わない場合、モデルは適合が悪い可能性があります。また、1つのガウスが外れ値をカバーするために縮小するリスクもありますただし、正則化や最小共分散境界を使用することで軽減できます
欠点として、GMMは成分の数Kを指定する必要がありますただし、BIC/AICのような基準を使用して選択できます。EMは時々収束が遅いか、局所最適に収束することがあるため、初期化が重要です通常、EMを複数回実行します。データが実際にガウスの混合に従わない場合、モデルは適合が悪い可能性があります。また、1つのガウスが外れ値をカバーするために縮小するリスクもありますただし、正則化や最小共分散境界を使用することで軽減できます
<details>
<summary>例 -- ソフトクラスタリングと異常スコア
@ -285,7 +283,7 @@ log_likelihood = gmm.score_samples(sample_attack)
print("Cluster membership probabilities for sample attack:", probs)
print("Log-likelihood of sample attack under GMM:", log_likelihood)
```
このコードでは、正常なトラフィックに対して3つのガウス分布を持つGMMをトレーニングします正当なトラフィックの3つのプロファイルを知っていると仮定します。印刷された平均と共分散はこれらのクラスタを説明します例えば、1つの平均は[50,500]の周辺で、1つのクラスタの中心に対応するかもしれません。次に、疑わしい接続[duration=200, bytes=800]をテストします。predict_probaは、このポイントが3つのクラスタのそれぞれに属する確率を示します [200,800]が正常なクラスタから遠く離れているため、これらの確率は非常に低いか、非常に偏っていると予想されます。全体のscore_samples対数尤度が印刷されます非常に低い値は、そのポイントがモデルにうまく適合していないことを示し、異常としてフラグを立てます。実際には、対数尤度または最大確率にしきい値を設定して、ポイントが悪意のあるものと見なされるには十分にありそうもないかどうかを判断できます。したがって、GMMは異常検出を行うための原則的な方法を提供し、不確実性を認識するソフトクラスタも生成します。
このコードでは、正常なトラフィックに対して3つのガウス分布を持つGMMをトレーニングします正当なトラフィックの3つのプロファイルを知っていると仮定します。印刷された平均と共分散はこれらのクラスタを説明します例えば、1つの平均は[50,500]の周辺で、1つのクラスタの中心に対応するかもしれません。次に、疑わしい接続[duration=200, bytes=800]をテストします。predict_probaは、このポイントが3つのクラスタのそれぞれに属する確率を示します [200,800]が正常なクラスタから遠く離れているため、これらの確率は非常に低いか、非常に偏っていると予想されます。全体のscore_samples対数尤度が印刷されます非常に低い値は、そのポイントがモデルにうまく適合していないことを示し、異常としてフラグを立てます。実際には、対数尤度または最大確率にしきい値を設定して、ポイントが悪意のあるものと見なされるには十分にありそうもないかどうかを判断できます。したがって、GMMは異常検出を行うための原則的な方法を提供し、不確実性を認るソフトクラスタも生成します。
### Isolation Forest
@ -296,9 +294,9 @@ print("Log-likelihood of sample attack under GMM:", log_likelihood)
> [!TIP]
> *サイバーセキュリティにおけるユースケース:* Isolation Forestは、侵入検知や詐欺検知に成功裏に使用されています。例えば、主に正常な動作を含むネットワークトラフィックログでIsolation Forestをトレーニングしますフォレストは、奇妙なトラフィック聞いたことのないポートを使用するIPや異常なパケットサイズパターンなどに対して短いパスを生成し、検査のためにフラグを立てます。ラベル付きの攻撃を必要としないため、未知の攻撃タイプを検出するのに適しています。また、ユーザーログインデータに展開してアカウント乗っ取りを検出することもできます異常なログイン時間や場所が迅速に孤立します。あるユースケースでは、Isolation Forestがシステムメトリクスを監視し、メトリクスの組み合わせCPU、ネットワーク、ファイル変更が歴史的パターンと非常に異なる場合短い孤立パスにアラートを生成することで、企業を保護するかもしれません。
#### 仮定と制限
#### Assumptions and Limitations
**利点**: Isolation Forestは分布の仮定を必要とせず、孤立を直接ターゲットにします。高次元データや大規模データセットに対して効率的ですフォレストを構築するための線形複雑度$O(n\log n)$)ので、各木は特徴のサブセットと分割のみでポイントを孤立させます。数値特徴をうまく処理する傾向があり、$O(n^2)$の可能性がある距離ベースの方法よりも速くなることがあります。また、自動的に異常スコアを提供するため、アラートのしきい値を設定することができます(または期待される異常割合に基づいてカットオフを自動的に決定するために汚染パラメータを使用できます)。
**利点**: Isolation Forestは分布の仮定を必要とせず、孤立を直接ターゲットにします。高次元データや大規模データセットに対して効率的ですフォレストを構築するための線形複雑度$O(n\log n)$)ので、各木は特徴のサブセットと分割のみでポイントを孤立させます。数値特徴をうまく処理、$O(n^2)$の可能性がある距離ベースの方法よりも速くなることがあります。また、自動的に異常スコアを提供するため、アラートのしきい値を設定することができます(または期待される異常割合に基づいてカットオフを自動的に決定するために汚染パラメータを使用できます)。
**制限**: ランダムな性質のため、結果は実行間でわずかに異なる場合があります(ただし、十分な数の木があればこれは小さいです)。データに多くの無関係な特徴がある場合や、異常がどの特徴でも強く区別されない場合、孤立が効果的でない可能性があります(ランダムな分割が偶然に正常なポイントを孤立させる可能性があります ただし、多くの木を平均化することでこれを軽減します。また、Isolation Forestは一般的に異常が少数派であると仮定しますこれは通常、サイバーセキュリティのシナリオでは真実です
@ -306,7 +304,7 @@ print("Log-likelihood of sample attack under GMM:", log_likelihood)
<summary>例 -- ネットワークログにおける外れ値の検出
</summary>
以前のテストデータセット正常なポイントといくつかの攻撃ポイントを含むを使用し、Isolation Forestを実行して攻撃を分離できるかどうかを確認します。デモンストレーションのために、データの約15が異常であると予想ると仮定します。
以前のテストデータセット正常なポイントといくつかの攻撃ポイントを含むを使用し、Isolation Forestを実行して攻撃を分離できるかどうかを確認します。デモンストレーションのために、データの約15が異常であると予想していると仮定します。
```python
from sklearn.ensemble import IsolationForest
@ -324,7 +322,7 @@ print("Example anomaly scores (lower means more anomalous):", anomaly_scores[:5]
```
このコードでは、`IsolationForest`を100本の木でインスタンス化し、`contamination=0.15`を設定しますこれは約15%の異常を期待することを意味します; モデルはスコアの閾値を設定し、約15%のポイントがフラグ付けされるようにします)。`X_test_if`にフィットさせます。これは、正常なポイントと攻撃ポイントの混合を含んでいます(注意: 通常はトレーニングデータにフィットさせ、新しいデータに対して予測を行いますが、ここでは結果を直接観察するために同じセットにフィットさせて予測します)。
出力は最初の20ポイントの予測ラベルを示しています-1は異常を示します。また、検出された異常の合計数といくつかの例の異常スコアを印刷します。120ポイントのうち約18ポイントが-1とラベル付けされることを期待します汚染が15%だったため)。もし私たちの20の攻撃サンプルが本当に最も外れたものであれば、そのほとんどはこれらの-1予測に現れるはずです。異常スコアIsolation Forestの決定関数は、正常なポイントでは高く、異常では低くより負の値なります 分離を確認するためにいくつかの値を印刷します。実際には、スコアでデータをソートしてトップの外れ値を確認し、調査することが考えられます。したがって、Isolation Forestは、大規模なラベルのないセキュリティデータを効率的にふるい分け、人間の分析やさらなる自動的な精査のために最も不規則なインスタンスを選び出す方法を提供します。
出力は最初の20ポイントの予測ラベルを示しています-1は異常を示します。また、検出された異常の合計数といくつかの異常スコアの例を印刷します。120ポイントのうち約18ポイントが-1とラベル付けされることを期待します汚染が15%だったため。私たちの20の攻撃サンプルが本当に最も外れたものであれば、そのほとんどはこれらの-1予測に現れるはずです。異常スコアIsolation Forestの決定関数は、正常なポイントでは高く、異常では低くより負の値なります 分離を確認するためにいくつかの値を印刷します。実際には、データをスコアでソートしてトップの外れ値を確認し、調査することができます。したがって、Isolation Forestは、大規模なラベルのないセキュリティデータを効率的にふるい分け、人間の分析やさらなる自動的な精査のために最も不規則なインスタンスを選び出す方法を提供します。
### t-SNE (t-分布確率的近傍埋め込み)
@ -336,7 +334,7 @@ print("Example anomaly scores (lower means more anomalous):", anomaly_scores[:5]
2. **低次元例えば2D空間でのペアワイズ親和性の計算:** 最初に、ポイントは2Dにランダムに配置されます。t-SNEはこのマップの距離に対して類似の確率を定義しますより遠くのポイントに自由を与えるために、ガウスよりも重い尾を持つスチューデントt分布カーネルを使用します
3. **勾配降下法:** t-SNEは次に、2Dのポイントを反復的に移動させ、高次元の親和性分布と低次元のそれとの間のクルバックライブラーKLダイバージェンスを最小化します。これにより、2Dの配置が高次元の構造をできるだけ反映するようになります 元の空間で近かったポイントは互いに引き寄せ合い、遠くにあるものは反発し、バランスが見つかるまで続きます。
その結果、データのクラスターが明らかになる視覚的に意味のある散布図が得られます。
その結果、データのクラスターが明らかになる視覚的に意味のある散布図が得られます。
> [!TIP]
> *サイバーセキュリティにおけるユースケース:* t-SNEはしばしば**人間の分析のために高次元のセキュリティデータを視覚化する**ために使用されます。例えば、セキュリティオペレーションセンターでは、アナリストがポート番号、頻度、バイト数などの数十の特徴を持つイベントデータセットを取り、t-SNEを使用して2Dプロットを生成することができます。このプロットでは、攻撃が独自のクラスターを形成したり、正常なデータから分離されたりすることがあり、識別が容易になります。マルウェアファミリーのグルーピングや、異なる攻撃タイプが明確にクラスター化されるネットワーク侵入データに適用され、さらなる調査を導くことができます。基本的に、t-SNEはサイバーデータの構造を視覚化する方法を提供します。
@ -345,13 +343,13 @@ print("Example anomaly scores (lower means more anomalous):", anomaly_scores[:5]
t-SNEはパターンの視覚的発見に優れています。クラスター、サブクラスター、他の線形手法PCAなどでは見えない外れ値を明らかにすることができます。マルウェアの行動プロファイルやネットワークトラフィックパターンなどの複雑なデータを視覚化するためにサイバーセキュリティ研究で使用されています。局所的な構造を保持するため、自然なグルーピングを示すのに適しています。
しかし、t-SNEは計算負荷が重く約$O(n^2)$)、非常に大きなデータセットではサンプリングが必要になる場合があります。また、出力に影響を与えるハイパーパラメータ(パープレキシティ、学習率、反復回数)があります 例えば、異なるパープレキシティ値は異なるスケールでクラスターを明らかにするかもしれません。t-SNEプロットは時折誤解されることがあります マップ内の距離はグローバルに直接的な意味を持たず(局所的な近に焦点を当てており、時にはクラスターが人工的に分離されて見えることがあります。また、t-SNEは主に視覚化のためのものであり、新しいデータポイントを再計算なしに投影するための簡単な方法を提供せず、予測モデリングの前処理として使用することは意図されていませんUMAPはこれらの問題のいくつかをより速い速度で解決する代替手段です
しかし、t-SNEは計算負荷が重く約$O(n^2)$)、非常に大きなデータセットではサンプリングが必要になる場合があります。また、出力に影響を与えるハイパーパラメータ(パープレキシティ、学習率、反復回数)があります 例えば、異なるパープレキシティ値は異なるスケールでクラスターを明らかにするかもしれません。t-SNEプロットは時折誤解されることがあります マップ内の距離はグローバルに直接的な意味を持たず(局所的な近に焦点を当てており、時にはクラスターが人工的に分離されて見えることがあります。また、t-SNEは主に視覚化のためのものであり、新しいデータポイントを再計算なしに投影するための簡単な方法を提供せず、予測モデリングの前処理として使用することは意図されていませんUMAPはこれらの問題のいくつかをより速い速度で解決する代替手段です
<details>
<summary>例 -- ネットワーク接続の視覚化
</summary>
t-SNEを使用してマルチフィーチャーデータセットを2Dに削減します。例として、以前の4Dデータ正常なトラフィックの3つの自然なクラスターがあったを取り、いくつかの異常ポイントを追加します。その後、t-SNEを実行し、概念的に結果を視覚化します。
t-SNEを使用してマルチフィーチャーデータセットを2Dに削減します。例として、以前の4Dデータ正常なトラフィックの3つの自然なクラスターがあったものを取り、いくつかの異常ポイントを追加します。その後、t-SNEを実行し、概念的に結果を視覚化します。
```python
# 1 ─────────────────────────────────────────────────────────────────────
# Create synthetic 4-D dataset
@ -434,7 +432,7 @@ plt.legend()
plt.tight_layout()
plt.show()
```
ここでは、以前の4Dーマルデータセットと少数の極端な外れ値を組み合わせました外れ値は1つの特徴「duration」が非常に高く設定されており、奇妙なパターンをシミュレートしています。通常のパープレキシティ30でt-SNEを実行します。出力データdata_2dの形状は(1505, 2)です。このテキストでは実際にプロットはしませんが、もし行った場合、3つのーマルクラスタに対応する3つの密集したクラスタと、5つの外れ値がそれらのクラスタから遠く離れた孤立した点として現れることが予想されます。インタラクティブなワークフローでは、ポイントをラベルーマルまたはどのクラスタ、対異常で色分けしてこの構造を確認できます。ラベルがなくても、アナリストは2Dプロット上の空白のスペースに座っている5つのポイントに気づき、それらをフラグ付けするかもしれません。これは、t-SNEがサイバーセキュリティデータにおける視覚的異常検出とクラスタ検査の強力な支援となり、上記の自動化アルゴリズムを補完する方法を示しています。
ここでは、以前の4Dーマルデータセットと少数の極端な外れ値を組み合わせました外れ値は1つの特徴「duration」が非常に高く設定されており、奇妙なパターンをシミュレートしています。通常のパープレキシティ30でt-SNEを実行します。出力data_2dの形状は(1505, 2)です。このテキストでは実際にプロットはしませんが、もし行った場合、3つのーマルクラスタに対応する3つの密集したクラスタと、5つの外れ値がそれらのクラスタから遠く離れた孤立した点として現れることが予想されます。インタラクティブなワークフローでは、ポイントをラベル(ノーマルまたはどのクラスタ、対異常で色分けしてこの構造を確認できます。ラベルがなくても、アナリストは2Dプロット上の空白のスペースに座っている5つのポイントに気づき、フラグを立てるかもしれません。これは、t-SNEがサイバーセキュリティデータにおける視覚的異常検出とクラスター検査に強力な支援を提供し、上記の自動化アルゴリズムを補完する方法を示しています。
</details>