用于定义 NORMAL 用户行为的 ML 算法

数据挖掘 深度学习 聚类 无监督学习 监督学习
2022-02-15 03:27:07

我正在尝试创建一个可以捕捉用户通常行为的模型:即,为用户分析创建一个模型。

我确实有 200 万行数据表明用户的正常行为,并且想要定义一个可以检测到用户正常行为的任何变化的模型。

我正在考虑使用经过正常行为训练的一类 svm / 隔离森林。我想知道这是否是一个好的方向。

或者我应该冒险进入深度学习或基于无监督聚类的模型,并收集用户异常行为的数据,以可能使用监督模型。

3个回答

我认为这主要取决于收集异常行为数据的难度/昂贵/耗时。它还取决于您是否希望这种异常行为属于一个(或固定数量的)类,或者它可以是任何偏离正常的东西。

如果您有能力收集标记数据并期望异常行为仅限于固定数量的类别,那么监督方法很可能会给您带来更好的结果。

相反,如果上述任何假设都不成立,那么我认为半监督方法(如您所说,One Class SVM 或类似技术)在我看来是一个不错的方法

一类分类特别是 OC-SVM。

或者您可以简单地分析到最近样本的距离。

我的答案当然是,先尝试最简单的方法,然后继续。机器学习不是繁重的工作,而是对工具的智能使用。

算法的选择主要取决于您的数据和您期望的异常类型。您是否有具有季节性影响和趋势的时间序列数据,也许 twitter 异常检测包将是一个好的开始。

例如。如果您的 CPU 很热,您会期望它以高负载运行。如果负载低,则可能是异常情况或负载过高。因此,您的问题之一是,您能否仅通过查看一个样本来发现异常或识别正常行为?

因此,“无免费午餐”定理再次适用。

话虽如此,SVM 和隔离森林是一个好的开始。即使您有时间序列问题,也想跟踪短期依赖关系。只需将“旧”行包含到您当前的集合中:链接

您甚至可以尝试更简单的方法,例如值的高斯分布、计算每个排列的概率(如果您的特征足够小)或构建马尔可夫模型。

结果不满意?深入研究,也许 Auto Encoder 可以解决问题,也许是 LSTM,也许是两者的结合。

我最近使用的无监督和半监督 ML 算法的简短摘要,按复杂度(种类)排序:

  • 中值绝对偏差(Twitters 异常检测库)
  • 局部外来因素
  • 隔离森林
  • 椭圆信封
  • 自回归综合移动平均线
  • 自动编码器
  • 时间序列不和谐
  • 用于预测的 LSTM
  • 复制器神经网络
  • 贝叶斯网络

当然有监督的方法,但我不熟悉这些。