用于异常检测的自动特征选择

机器算法验证 特征选择 异常值
2022-03-30 04:22:39

为异常检测自动选择特征的最佳方法是什么?

我通常将异常检测视为由人类专家选择特征的算法:重要的是输出范围(如“异常输入 - 异常输出”),因此即使有许多特征,您也可以通过组合得出一个更小的子集特点。

但是,假设在一般情况下,特征列表可能很大,那么有时自动学习可能更可取。据我所知,有一些尝试:

  • “用于异常检测的自动特征选择”pdf)概括了支持向量数据描述
  • “A Fast Host-Based Intrusion Detection System Using Rough Set Theory”(没有可用的 pdf 文件?)我猜它使用了 Rough Set Theory
  • 使用统计方法的“恶意网络流量异常检测的学习规则”pdf视频)

所以现在我想知道是否有人能说出来——假设异常检测和一个非常大的(数百个?)功能集:

  1. 那些庞大的功能集是否有意义?我们不应该将功能集减少到几十个,仅此而已?
  2. 如果巨大的特征集确实有意义,那么上述哪种方法会给出更好的预测,为什么?有什么没有列出的更好吗?
  3. 与通过聚类/排名/等进行降维或特征构建相比,它们为什么要给出更好的结果?
1个回答

一种实用的方法(至少在监督学习的情况下)是包含所有可能相关的特征,并使用具有正则化(L1 和/或 L2)的(广义)线性模型(逻辑回归、线性 svm 等)。有一些开源工具(例如 Vowpal Wabbit)可以为这些类型的模型处理数万亿个示例/特征组合,因此可扩展性不是问题(此外,始终可以使用子采样)。正则化有助于处理特征选择。