重构误差是标准的,不需要太多设计,通常是
∥∥X一世-X'一世∥∥2它测量输入向量之间的差异X一世 及其重建 X'一世. 此外,“不了解结构”过于宽泛。如果您不知道数据的信息单元,则无法继续。
首先,您需要了解所有特征及其类型,并决定如何用数字表示它们。例如,结构x = (年龄∈ [ 0 , 100 ]岁,身高∈ [ 0 , 3 ]米,教育∈ { l e v el1,左_ _ _l2,左_ _ _l3} )必须是先验的。然后,X可以通过将值归一化为接近 1 的无单位量,并用 one-hot 向量替换分类数据,以数值方式将其表示为向量。例如,将 age = 25 替换为 25/100 = 0.25,height = 1.8 替换为 1.8/3= 0.6,education =左_ _ _l2与 (0, 1, 0)。这样,最终的向量将是x = ( 0.25 , 0.6 , 0 , 1 , 0 ) 。
让我们假设任务是无监督的,这意味着数据点没有用“异常”和“正常”标签标记。要发现异常,系统必须知道数据的分布以定量评估X用“我以前见过很多相似的东西”或“我以前从未见过这样的东西”。一种直接的方法是将“高斯混合物”(MG)拟合到数据中。假设集群的数量是 k=3(k 可以估计,以多种方式强制)。你喂X 训练有素的 MG 并返回 磷( x ) =∑c ∈ { 1 , 2 , 3 }磷( x | c ) P(三), 你现在可以使用 磷( × ) 作为一个程度 X是异常。阈值绝对取决于域,在某些域中,异常发生的概率为 1%,而在其他域中,异常发生的概率为 0.0001%。所以,一个决定可能是:如果磷( x ) < 0.001, X 可能是异常情况,必须进行调查。
然而,随着数据的维数从几十维增加到几百上千,这些方法开始遭受“维数诅咒”,这代表了由于数据的高维而导致的许多性能问题。这就是自动编码器等方法可以提供帮助的地方。您嵌入了 100 维数据X进入2-10维空间;使用自动编码器的瓶颈层作为新的表示X. 然后,可以像以前一样使用 MG。有一个问题需要考虑,因为自动编码器试图压缩数据,它们可能会丢弃一些有用的信息作为噪声,这些信息是异常数据的真实特征。这个问题需要通过领域驱动分析进一步调整;比如增加bottleneck层的宽度等。