我有一个数据集观察和分类变量(名义),每个变量有几个不同的可能值。
最终,我正在寻找一种发现异常的方法,即识别相对于我目前看到的数据而言值组合似乎不正确的行。
到目前为止,我正在考虑构建一个模型来预测每一列的值,然后构建一些度量来评估实际行与预测行的差异。
我将不胜感激任何帮助!
我有一个数据集观察和分类变量(名义),每个变量有几个不同的可能值。
最终,我正在寻找一种发现异常的方法,即识别相对于我目前看到的数据而言值组合似乎不正确的行。
到目前为止,我正在考虑构建一个模型来预测每一列的值,然后构建一些度量来评估实际行与预测行的差异。
我将不胜感激任何帮助!
首先,您提到您有分类数据。我看不出如何定义相似性,以便您还可以定义预测值与基本事实(错误)之间的距离。只有当数据是ordinal时,您才能这样做。
如果您只想在正常点和异常点之间进行分类(二进制分类),而不关心异常类型本身的进一步分类,最常见的算法之一是一类支持向量机(OC-SVM)。
异常在本质上是不可预测的,有时难以复制和记录。因此,通常缺乏异常数据,监督学习方法会受到影响,因为如果你牺牲一些“宝贵的”异常点来训练算法,你就不能用它们来测试它。
OC-SVM 的主要优点是它是半监督学习,这意味着您只使用正常数据对其进行训练,然后它可以检测在测试期间偏离训练行为的样本并将其分类为异常。因此,您“保存”了所有罕见的异常点以用于测试目的!
看看这个简短的Python 示例,它有你需要的一切:)