# 在线游戏中的半监督异常交易群体检测

## 课题背景

交易是游戏世界中普遍存在的行为，大量玩家之间的交易行为能够形成一个客观存在的图网络结构，即交易网络。目前，游戏工作室通过大量游戏账号在游戏中转移、出售游戏资产来谋取巨额利益，因此异常交易检测是游戏中一个非常重要的反外挂手段。

游戏中的异常交易通常为有组织、有规模的群体行为，因此简单地通过节点分类来检测单个玩家的异常交易应用价值不大。在实际业务中，我们更希望能够进行群体检测，找出具有一定规模的异常交易疑似群体，如图1所示。此外，真实数据环境中的异常交易标记成本且严重依赖专家经验，因此只能够提供有限的已知群体的标记，对于潜在的未知群体，我们无法确认其是否是正样本或者是负样本。

综上，基于半监督的异常交易群体检测是一个实际可行的解决方案，具有较高的研究和应用价值。

![图1：在线游戏中的半监督异常交易群体检测](https://noterminus.gitee.io/image_bed/images/subgraph_detection.png)

## 问题定义

给定一个具有较大规模的交易网络和部分已知异常交易群体标记，输出交易网络G中疑似的异常交易群体集合。

## 问题挑战

相比于一般的有监督图节点分类问题，该问题的挑战为：

* 希望能够进行群体检测，找出具有一定规模的异常交易疑似群体
* 给定的标记数据中，只包含部分已知的群体标记，对于未知群体而言，无法确认其是正样本还是负样本

## 评价指标

可以参考常用的分类任务指标进行评估：

* AUC
* F1-score
* 精确率：precision
* 召回率：recall

## 数据集描述

数据集包含交易网络数据，具体描述如下所示：

* 交易网络数据

| 字段            | 类型     | 描述                                          |
| ------------- | ------ | ------------------------------------------- |
| ts            | bigint | 时间戳                                         |
| type          | bigint | 交易类型，例如摆摊交易、当面交易等                           |
| role\_id\_src | string | 玩家ID（发起方）                                   |
| role\_id\_dst | string | 玩家ID（接受方）                                   |
| item\_src     | string | 交易商品（发起方），格式：\[(商品1, 数量1), (商品2, 数量2), ...] |
| item\_dst     | string | 交易商品（接受方），格式：\[(商品1, 数量1), (商品2, 数量2), ...] |
| amt\_src      | bigint | 交易金额（发起方）                                   |
| amt\_dst      | bigint | 交易金额（接受方）                                   |

## 联系我们

有任何问题，请联系 <zhaoshiwei@corp.netease.com>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://fuxi-up-research.gitbook.io/open-project/research_topics/semi_supervised_trade_subgraph_detection.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
