具有虚拟特征(和其他离散/分类特征)的异常检测

机器算法验证 机器学习 分类数据 异常值 离散数据 异常检测
2022-02-16 13:07:20

tl;博士

  • discrete在执行异常检测时,推荐的数据处理方法是什么?
  • categorical在执行异常检测时,推荐的数据处理方法是什么?
  • 这个答案建议使用离散数据来过滤结果。
  • 也许用观察概率替换类别值?

介绍

这是我第一次在这里发帖,所以,如果有什么在技术上看起来不正确,无论是在格式上,还是在使用正确的定义上,我很想知道应该改用什么。

向前。

我最近参加了 Andrew Ng的机器学习课程

对于异常检测,我们被教导要确定数据集中给定特征/变量的正态/高斯分布参数是什么,然后确定一组选定的训练示例/观察值的概率特定的高斯分布,然后取特征概率的乘积。xi

方法

选择特征/变量: xi

{x1,x2,,xi}

为每个特征拟合高斯参数:

μj=1mi=1mxj(i)
σ2=1mi=1m(xj(i)μj)2

对于每个训练示例,计算: x

p(x)=j=1n p(xj;μj,σj2)

然后我们标记为异常(),给定: y=1

y={1p(x)<ϵ0p(x)ϵ

这为我们提供了确定示例是否需要进一步检查的方法。

我的问题

这对于连续变量/特征似乎很好,但没有解决离散数据。

虚拟变量怎么样,例如性别标志特征,可能被称为[IsMale]为了考虑一个虚拟特征,我们会使用二项分布来计算吗?0,1p(x)

诸如汽车颜色之类的分类数据呢?虽然我们可以将颜色映射到数值,例如,但这种分类特征的分布可能接近于均匀(即同样可能是任何颜色),并且更进一步,任何发生的数值映射(即的值为等)不是有序的,尝试将任何非正态频率分布转换为正态分布的颜色是否有意义(它不是有序的甚至重要吗? ?)? 例如,对我来说,进行转换是没有意义的,因为数据既不是连续的也不是有序的。所以也许最好找到一个离散分布red1,blue2red1log()适合该功能,而不是“折磨”数据以适合高斯?

问题:(更新:2015-11-24)

  • 二元变量是否可以用二项式概率分布建模并成为计算中的另一个因素?p(x)
  • 分类变量是否应该用离散概率分布而不是高斯分布建模,并成为计算中的另一个因素?p(x)
  • 是否有另一种方法完全考虑到我在这里要进一步研究/了解的问题?
  • discrete在执行异常检测时,推荐的数据处理方法是什么?
  • categorical在执行异常检测时,推荐的数据处理方法是什么?

编辑:2017-05-03

  • 这个答案建议使用离散数据来过滤结果。
  • 也许用观察概率替换类别值?
2个回答

一般来说,对于离散*和分类特征,这种方法并不是特别适合异常值分析。由于没有与分类预测变量相关的幅度,我们正在使用:

  • 在全球数据中观察到的类别的频率
  • 在数据的子空间中观察到的类别的频率

请注意,这些品质都不能像您的高斯方法所要求的那样单独分析。相反,我们需要一种将分类特征上下文化并考虑数据相关性的方法。

以下是基于Aggarwal的异常值分析的分类和混合属性数据的一些技术:

  • 如果您可以定义一个相似函数,该函数在所有观测值(无论数据类型如何)上构建一个半正定矩阵,请计算相似矩阵,找到其对角化,并使用非零特征向量计算特征嵌入对于中的每一行(观察) ,计算其与质心的距离;这是您的异常值,您可以使用单变量方法来确定异常值。SS=Qkλk2QkTQkE=QkλkE
  • 如果您有纯分类特征,请将混合模型拟合到原始分类数据。异常点的生成概率最低。
  • 对分类预测变量使用one-hot 编码,对具有非明显连续映射的序变量使用 可选的潜在变量分析**
    • 标准化非 one-hot 特征(one-hot 特征已经隐式标准化)并执行Principal Component Analysis使用顶级主成分(或特征向量由特征值加权的软 PCA 方法)执行降维并运行典型的连续异常值分析方法(例如混合模型或高斯方法)
    • 执行基于角度的分析。对于每个观察,计算所有点对之间的余弦相似度。这些相似性中方差最小的观测值(称为“基于角度的异常值因子”)很可能是异常值。可能需要对 ABOF 的经验分布进行最终分析,以确定异常情况。
    • 如果您标记了异常值:将预测模型拟合到工程数据(逻辑回归、SVM 等)。

*离散特征可能在您的高斯方法中近似处理。在正确的条件下,一个特征可以很好地近似为正态分布(例如,npq > 3 的二项式随机变量)。如果不是,则将它们作为上述序数处理。

**这类似于您“用观察的百分比替换类别值”的想法

Andrew Ng 类数学处理“离散”数据就像处理“非离散”数据一样。我们所要做的就是根据经验估计正态分布参数,对于离散数据,它可以完美地完成。

如果你仔细想想,机器学习总是处理离散数据:数据点的数量不是无限的,计算机处理的位数也不是无限的。

如果离散数据点可以相互比较,那么机器学习方法在处理长度时没有根本区别:1.15 英尺 1.34 英尺 3.4 英尺

或树上有多少树枝:1 2 3 5

您可以对浮点数或整数进行求和和平均。

现在,到分类数据。无法比较分类数据点(汽车、摩托车和船)。我们如何处理这个?

类别的数量必须至少为两个才能有意义,否则恒定特征的意义何在?如果有 2 个类别,我们可以将类别特征表示为二元特征 {0, 1}。0 和 1 可用于数学运算,见上文。

如果类别数 (K) 为 [3.. inf],我们将单个特征映射到 K 个二进制互斥特征。例如,“摩托车”类别变成了二元特征的组合 { IsCar: 0, IsMotorcycle: 1, IsBoat: 0},Boat point 变成了 { IsCar: 0, IsMotorcycle: 0, IsBoat: 1} 等等。

我们可以从这些新特征中估计经验分布参数。我们只会有更多的维度,仅此而已。