KhamankarOm4/Fake-Account-Detection-in-Social-Media-using-Graph-Analytics
GitHub: KhamankarOm4/Fake-Account-Detection-in-Social-Media-using-Graph-Analytics
一个基于图分析与机器学习的社会媒体虚假账户检测系统,解决从大规模连接中识别异常账号的问题。
Stars: 0 | Forks: 0
# 社交媒体中的虚假账户检测(基于图分析)
一个使用图分析、机器学习和 REST API 检测虚假/机器人社交账户的**生产级**系统。设计支持扩展到 **1M+ 边**。
## 🏗️ 项目结构
```
fake-account-detection/
├── app/
│ ├── main.py # Flask API (8 endpoints)
│ ├── data_loader.py # Chunked, memory-efficient data loader
│ ├── graph_builder.py # NetworkX directed graph + sampling
│ ├── feature_engineering.py # 6 graph features per node
│ ├── detector.py # Rule-based + RandomForest ML detection
│ ├── visualizer.py # PyVis HTML graph visualizer
│ ├── cache.py # TTL in-memory cache
│ └── requirements.txt
├── data/
│ └── twitter_combined.txt # Edge-list dataset (source target)
├── Dockerfile
├── docker-compose.yml
└── README.md
```
## 🚀 快速开始
### 选项 1 — Docker(推荐)
```
# 构建并启动
docker-compose up --build
# API 处于活动状态
curl http://localhost:5000/
```
### 选项 2 — 本地 Python
```
# 1. 创建虚拟环境
python -m venv venv
venv\Scripts\activate # Windows
# source venv/bin/activate # Linux/Mac
# 2. 安装依赖项
pip install -r app/requirements.txt
# 3. 设置数据集路径(编辑或设置环境变量)
set DATASET_PATH=./data/twitter_combined.txt # Windows
# export DATASET_PATH=./data/twitter_combined.txt # Linux/Mac
# 4. 运行 API
cd app
python main.py
```
## 📡 API 端点
| 方法 | 端点 | 描述 |
|------|------|------|
| GET | `/` | 健康检查 + 配置信息 |
| GET | `/stats` | 图统计信息(节点、边、度分布等) |
| GET | `/analyze` | 完整流程:特征提取 + 检测 + 机器学习指标 |
| GET | `/fake-users` | 分页的检测到的虚假账户列表 |
| GET | `/dashboard` | 紧凑的仪表板就绪 JSON 摘要 |
| GET | `/visualize` | 交互式 PyVis HTML 图(虚假=红色,真实=青色) |
| GET | `/cache-info` | 缓存诊断信息 |
| POST | `/cache-clear` | 使缓存失效(强制重新计算) |
### 查询参数
```
GET /analyze?top_n=3000
GET /fake-users?top_n=5000&page=2&page_size=25&sort_by=ml_probability
GET /visualize?max_nodes=200
```
## 🔍 检测方法
### A. 基于规则的方法
标记满足以下**全部**条件的账户:
- `出度 / (入度 + 1) > 10x` —— 关注多但被回关少
- `聚类系数 < 0.05` —— 低社区嵌入性
- `PageRank < 20th percentile` —— 低网络权威性
### B. 机器学习(随机森林)
- 特征:`入度`、`出度`、`度中心性`、`PageRank`、`聚类系数`、`介数中心性`
- 训练:使用基于规则的方法生成的标签作为伪真实标签
- 类别平衡:`class_weight="balanced"` 处理虚假/真实比例偏斜
- 并行化:`n_jobs=-1` 使用所有 CPU 核心
### 评估指标
```
{
"accuracy": 0.9612,
"precision": 0.8940,
"recall": 0.9123,
"f1_score": 0.9031
}
```
## 💡 可解释性(每个账户)
每个检测到的账户都包含一个可读的解释:
```
{
"node": 87654,
"is_fake": 1,
"reason": "This account is flagged because: follows 2341 users but only 3 follow back (ratio 780.3x); very low community clustering (0.0000), suggesting isolated/spammy behavior; low PageRank (0.00000012), indicating low network authority."
}
```
## ⚙️ 环境变量
| 变量 | 默认值 | 描述 |
|------|--------|------|
| `DATASET_PATH` | `/data/twitter_combined.txt` | 边列表文件路径 |
| `DATASET_SEP` | `" "`(空格) | 列分隔符 |
| `MAX_ROWS` | `500000` | 最大加载边数(0 表示全部) |
| `TOP_N` | `5000` | 要分析的顶部节点数 |
| `CHUNKSIZE` | `100000` | Pandas read_csv 分块大小 |
| `PORT` | `5000` | 服务器端口 |
| `FLASK_DEBUG` | `false` | 启用 Flask 调试模式 |
## 🐳 Docker 配置
### 修改资源限制(在 docker-compose.yml 中)
```
deploy:
resources:
limits:
memory: 8G # increase for very large graphs
cpus: "4.0"
```
### 使用不同的数据集
```
volumes:
- /path/to/your/data:/data:ro
environment:
DATASET_PATH: /data/your_dataset.txt
DATASET_SEP: "," # if CSV with comma separator
```
## 📊 示例响应 — /fake-users
```
{
"status": "ok",
"total_fakes": 312,
"page": 1,
"page_size": 50,
"total_pages": 7,
"fake_accounts": [
{
"node": 87654,
"in_degree": 2,
"out_degree": 3841,
"clustering_coeff": 0.0,
"pagerank": 2.3e-7,
"ml_probability": 0.98,
"reason": "This account is flagged because: follows 3841 users but only 2 follow back..."
}
]
}
```
## 📈 性能说明
- **内存**:当 `MAX_ROWS=500000` 时,图结构约占用 250MB RAM,特征部分约 100MB
- **速度**:首次调用 `/analyze` 需 30–120 秒(构建图 + 机器学习)。后续所有调用均从缓存即时返回
- **扩展性**:对于 1M+ 边,增加 `MAX_ROWS` 并使用采样(`graph_builder.py` 中的 `sample_nodes`)
- **缓存 TTL**:默认为 1 小时。执行 POST `/cache-clear` 可重置
## 📦 数据集格式
系统期望一个边列表文件,包含两个以空格分隔的列(无标题行):
```
12 456
12 789
456 999
...
```
兼容 Stanford SNAP 数据集(例如 Twitter、Facebook、Epinions)。
标签:Apex, Docker, Flask, NetworkX, PageRank, REST API, Twitter数据集, 云计算, 假账号检测, 内存缓存, 图中心性, 图计算, 图谱分析, 图采样, 在线检测, 安全防御评估, 度中心性, 异常检测, 批处理, 数据加载, 有向图, 机器学习, 特征工程, 特权检测, 生产级系统, 社交媒体, 社交网络分析, 突变策略, 缓存TTL, 网络图谱, 网络测绘, 规则引擎, 请求拦截, 逆向工具, 配置错误检测, 随机森林