ThreatDetect は、Streamlit ベースの内部脅威検出プロトタイプで、従業員の活動データを分析し、潜在的にリスクのある行動をフラグ付けします。トレーニング済みの XGBoost 分類器と Isolation Forest 異常検出器を組み合わせて使用し、組織レベルのリスクサマリーと説明可能な従業員レベルのインサイトを生成します。
このアプリは Streamlit を使用してローカルで実行できます。以前、以下の URL でデプロイされたデモが公開されていました。
streamlit_app.py — メインの Streamlit アプリケーションrequirements.txt — Python パッケージの依存関係AI_Model_Code/insider_threat_model.pkl — 保存された推論パイプラインとトレーニング済みモデル成果物AI_Model_Code/insider_threat_clean_dataset.csv — EDA 用にバンドルされたサンプルデータセットAI_Model_Code/cos720_ai_model_FINAL.ipynb — モデル開発ノートブックassets/app_styling.css — Streamlit アプリのカスタム UI スタイルunit testing/ — 特徴量準備と説明ロジックのテストファイルdocs/TECHNICAL_DOCUMENTATION.md — プロジェクトの技術文書streamlitpandasnumpyscikit-learnmatplotlibseabornplotlyxgboostshapすべての依存関係を以下のコマンドでインストールします。
pip install -r requirements.txt
git clone https://github.com/jazbengu/ThreatDetect.git
cd ThreatDetect
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
以下のコマンドでアプリを起動します。
streamlit run streamlit_app.py
その後、ターミナルに表示されるローカル URL(通常は http://localhost:8501)を開きます。
AI_Model_Code/insider_threat_clean_dataset.csv にあるバンドルされたサンプルデータセットを使用します。AI_Model_Code/insider_threat_model.pkl には、シリアル化されたモデルパッケージが含まれており、次のものがあります。
xgb_model: トレーニング済み XGBoost 分類器iso_forest: トレーニング済み Isolation Forest 異常検出器scaler: 数値入力用の StandardScalerlabel_encoders: カテゴリ特徴量用のエンコーダfeature_columns: 順序付き特徴量リストcat_cols, num_cols, bin_cols: 特徴量のグループ化best_threshold: リスク判定に使用される分類しきい値shap_explainer: 説明可能性のための SHAP 説明器モデルファイルは streamlit_app.py によって読み込まれ、入力の前処理、リスク確率の計算、説明の生成に使用されます。
リポジトリには unit testing/ の下にテストが含まれています。
テストスイートを次のコマンドで実行します。
pytest "unit testing/"
このリポジトリは拡張とテストを目的として構成されています。今後の改善点としては、特徴量カバレッジの拡大や、追加の内部脅威データを用いたモデルの再トレーニングが含まれる可能性があります。