venkat15vk/ato-nlp-features

GitHub: venkat15vk/ato-nlp-features

基于AWS公开登录数据集,研究并复现按账号TF-IDF特征工程在账号盗用检测任务中的效果,证明其在历史数据充足的账号上显著优于传统计数特征基线。

Stars: 0 | Forks: 0

# 用于账号盗用检测的按账号 NLP 特征 本仓库包含了针对公共 AWS Fraud Detector 示例数据集进行账号盗用 (ATO) 检测时,关于按账号 TF-IDF 特征工程研究的可复现代码。 **论文:** [arXiv 预印本 — 提交后添加链接] ## 主要结果 基于 529 个专家标注的登录事件(在 10 万名用户的 73.5 万个总事件语料库中,包含 161 个已确认的账号盗用事件)进行的五次按时间顺序的划分: | 方法 | AUC-PR | AUC-ROC | |---|---|---| | RF [按账号 + 全局 TF-IDF] | **0.838 ± 0.020** | **0.763 ± 0.039** | | RF [按账号 TF-IDF] | 0.820 ± 0.034 | 0.690 ± 0.023 | | 全局 TF-IDF(原始,无监督) | 0.817 ± 0.016 | 0.749 ± 0.027 | | RF [全局 TF-IDF] | 0.744 ± 0.061 | 0.631 ± 0.055 | | 基于计数特征的 Logistic regression | 0.715 ± 0.084 | 0.611 ± 0.049 | | 仅基于计数特征的 RF | 0.648 ± 0.057 | 0.510 ± 0.011 | | 基于计数特征的 Isolation Forest | 0.597 ± 0.039 | 0.363 ± 0.082 | 按账号 TF-IDF 特征的 AUC-PR 比最强的计数特征基线高出 +0.17(5/5 次划分,配对 t 检验 p = 0.0002)。 这种提升在用户间表现出**异质性**:对于历史事件 ≤ 3 次的冷启动用户,按账号建模的表现不如全局建模;但随着历史深度的增加,按账号建模会占据主导地位(参见论文中的图 1)。 ## 仓库结构 ``` . ├── src/ │ ├── tfidf.py — PerAccountTFIDF and GlobalTFIDF │ ├── run_ato.py — End-to-end ATO experiment (main entry point) │ ├── run_experiments.py — Generic harness (RBA-schema datasets) │ ├── run_openssh.py — Adapter for the loghub OpenSSH dataset │ ├── parse_openssh.py — Log parser for the OpenSSH dataset │ └── tokenize_event.py — Tokenizer for RBA-schema events ├── results/ │ ├── ato.csv — Main results: AWS ATO dataset, 5 splits │ ├── hybrid.csv — Cohort-aware policy ablation │ ├── openssh.csv — Secondary check: OpenSSH (2K sample) │ └── openssh_multisplit.csv — OpenSSH, multi-split ├── make_figure.py — Generates Fig. 1 (volume-stratified bars) ├── requirements.txt └── README.md ``` ## 复现主要结果 ``` # 安装依赖 python3 -m pip install -r requirements.txt # 下载数据集(压缩后 51 MB,解压后 152 MB) mkdir -p data curl -L -o data/ato.zip \ https://raw.githubusercontent.com/aws-samples/aws-fraud-detector-samples/master/data/ato_data_800K_full.csv.zip unzip data/ato.zip -d data/ # 运行实验(在笔记本电脑上约 30 秒) python3 src/run_ato.py \ --data data/ato_data_800K_full.csv \ --out results/ato.csv # (可选)重新生成 Fig. 1 python3 make_figure.py ``` 输出结果应与本仓库中的 `results/ato.csv` 一致(允许存在数值噪声)。 ## 方法(简述) 对于每个登录事件,从其结构化字段(IP 段、user-agent 组件、设备指纹、一天中的时间段、凭证结果)中构建一个文本 token 包。对于具有足够历史记录的每个用户账号,根据该用户之前的事件计算 TF-IDF 分数(“按账号”)。同时,针对整个语料库单独计算一个 TF-IDF 分数(“全局”)。将这些分数与七个基于计数的按用户特征(事件数、不同 IP 数、不同 user-agent 数等)拼接起来,并训练一个随机森林分类器。 完整的方法描述、数学公式和消融实验请参见论文。 ## 数据集 本工作使用了 AWS Fraud Detector Account Takeover Insights 示例数据集,该数据集公开托管在 `aws-samples/aws-fraud-detector-samples`。包含了 2022 年大约三个月内、涉及 100,000 个不同用户账号的 735,683 个登录事件,其中包含 529 个专家标注的正/负样本(161 个已确认的账号盗用,368 个合法行为)。许可证:根据源代码仓库规定,采用 Apache 2.0 / MIT-0。 ## 引用 ``` @misc{gopalakrishnan2026ato, author = {Gopalakrishnan, Venkatakrishnan}, title = {Per-Account NLP Features for Account-Takeover Detection: A Reproducible Study on Real-World Login Data}, year = {2026}, howpublished = {arXiv preprint [arXiv ID to be added after submission]} } ``` ## 许可证 代码:MIT(请参阅 LICENSE) 本工作中使用的数据集按 aws-samples/aws-fraud-detector-samples 仓库的条款分发;有关数据集的使用权,请参阅该项目。 ## 联系方式 欢迎提交 Issues 和 pull requests。
标签:Apex, NLP特征工程, TF-IDF, 异常检测, 机器学习, 网络安全, 账户接管检测, 身份认证安全, 逆向工具, 隐私保护