使用 AdaBoost 提升微博 Spammer 识别模型准确率至 95%

2023-11-03 16:16:03 浏览数 (2)

但是这样识别时候要先抓取微博账号的 profile 页信息、关系网络、微博文本等等信息,至少需花费上百秒,无法做到实时识别。

所有我舍弃了部分抓取耗时的字段,最终精度固定在 90% 上下。

一般来说,提升一个模型的 ACC、ROC、F1,通常具有以下方法

  1. 扩充数据集。
  2. 降维。
  3. 正则化

正则化我在初代模型就已经用上了,最开始模型甚至不收敛,使用正则化收敛后的最终模型精度在 85% 左右。

降维对这个 spammer 模型来说可能只是加快了训练过程,实测精度并没有显著提升。

而扩充数据集是一直在做的工作,目前可能还需要一个量变等到质变的时刻。

对于一个模型能提升精度的方法都做了,所有我只能换另外一个模型方法来提升精度了。

最终选定 AdaBoost,他是三种集成学习 BaggingBoostingStacking 之一的 Boosting 方法下的一种名为 "Adaptive Boosting"方法(自适应增强)的缩写。

Boosting 的核心思想是 三个臭皮匠,赛过诸葛亮。一般来说,找到弱学习算法要相对容易一些,然后通过反复学习得到一系列弱分类器,组合这些弱分类器得到一个强分类器。

AdaBoost 算法的流程不算简单,感兴趣的可以搜索下。

最终我用 AdaBoost,在和上一篇推送一样,只抓取有限不耗时特征的前提下,精度从 90% 左右直接稳定到了 95% ,识别一个给定 uid 的微博账号的 spammer 属性,耗时在 5s 以内。

最后把这个最新模型上线,视作 alpha 版本,上篇推送的模型为一般版本,长期测试 alpha 版本后,最后会覆盖一般版本。

模型网页测试地址为

https://weibo-crawl-visual.buyixiao.xyz/weibo-spammer-evaluator

其中第一个 tab 是一般版本,最后一个 tab 为 alpha 版本。

同时新增了 API 接口调用,接口地址是:

https://api.buyixiao.xyz/weibo/spammer-account-evaluate

使用 Python 调用该接口的 demo 代码如下:

代码语言:javascript复制
test_token = "在此处填入你申请的 token"
def test_spammer_evaluate(user_id):
    resp = requests.get(url=f'https://api.buyixiao.xyz/weibo/spammer-account-evaluate', params={
        'user_id': user_id, # 必选参数,检测的微博账号 id
        'token': test_token, # 必选参数,校验接口
        'alpha': true # 可选参数,是否采用最新的 alpha 内测模型
    })

    print(resp.url)
    print(resp.json())
test_spammer_evaluate(user_id="2557129567")

点击阅读原文直达微博 spammer 识别模型网页~

0 人点赞