【问题标题】:the structure of the input file to ELKI while running LOF运行 LOF 时 ELKI 的输入文件的结构
【发布时间】:2015-07-24 20:58:26
【问题描述】:

我想用 ELKI 的 GUI 运行 LOF 算法,但我不知道它需要什么样的输入文件。我查看了here,当我尝试给它一个输入 csv 文件时,每个实例的属性值以空格分隔(包括类的分类属性,其余属性是数字)。文件与此类似(没有标题):

5   1   1   1   2   1   3   1   1   benign
5   4   4   5   7   10  3   2   1   benign
3   1   1   1   2   2   3   1   1   benign
6   8   8   1   3   4   3   7   1   benign
4   1   1   3   2   1   3   1   1   benign
8   10  10  8   7   10  9   7   1   malignant
1   1   1   1   2   10  3   1   1   benign
2   1   2   1   2   1   3   1   1   benign
2   1   1   1   2   1   1   1   5   benign
4   2   1   1   2   1   2   1   1   benign
1   1   1   1   1   1   3   1   1   benign
2   1   1   1   2   1   2   1   1   benign
5   3   3   3   2   3   4   4   1   malignant

我选择 dbc.in 作为 .csv 文件,dbc.parser 作为 NumberVectorLabelParser,ClassLabelFilter 的索引为 9(因为那是带有类标签的列的索引)和 k = 11

但是,它给了我这个错误:

Task failed
de.lmu.ifi.dbs.elki.utilities.exceptions.AbortException: Cannot initialize class labels: 9
    at de.lmu.ifi.dbs.elki.datasource.filter.typeconversions.ClassLabelFilter.filter(ClassLabelFilter.java:106)
    at de.lmu.ifi.dbs.elki.datasource.AbstractDatabaseConnection.invokeStreamFilters(AbstractDatabaseConnection.java:114)
    at de.lmu.ifi.dbs.elki.datasource.InputStreamDatabaseConnection.loadData(InputStreamDatabaseConnection.java:91)
    at de.lmu.ifi.dbs.elki.database.StaticArrayDatabase.initialize(StaticArrayDatabase.java:119)
    at de.lmu.ifi.dbs.elki.workflow.InputStep.getDatabase(InputStep.java:62)
    at de.lmu.ifi.dbs.elki.KDDTask.run(KDDTask.java:108)
    at de.lmu.ifi.dbs.elki.application.KDDCLIApplication.run(KDDCLIApplication.java:60)
    at [...]
Caused by: java.lang.ArrayIndexOutOfBoundsException: 9
    at de.lmu.ifi.dbs.elki.data.LabelList.get(LabelList.java:109)
    at de.lmu.ifi.dbs.elki.datasource.filter.typeconversions.ClassLabelFilter.filter(ClassLabelFilter.java:102)
    at de.lmu.ifi.dbs.elki.datasource.AbstractDatabaseConnection.invokeStreamFilters(AbstractDatabaseConnection.java:114)
    at de.lmu.ifi.dbs.elki.datasource.InputStreamDatabaseConnection.loadData(InputStreamDatabaseConnection.java:91)
    at de.lmu.ifi.dbs.elki.database.StaticArrayDatabase.initialize(StaticArrayDatabase.java:119)
    at de.lmu.ifi.dbs.elki.workflow.InputStep.getDatabase(InputStep.java:62)
    at de.lmu.ifi.dbs.elki.KDDTask.run(KDDTask.java:108)
    at de.lmu.ifi.dbs.elki.application.KDDCLIApplication.run(KDDCLIApplication.java:60)
    at [...]

如果我不使用 ClassLabel 过滤器,则会出现一个弹出对话框,其中包含以下消息:

SVG Error:

null:-1
The attribute "d" of the element <path> is invalid

谁能帮我运行算法?非常感谢您的帮助,谢谢!

【问题讨论】:

    标签: data-mining outliers elki


    【解决方案1】:

    更新:输入数据中的缺失值破坏了直方图可视化工具。这已得到修复,并将在下一个版本中使用(不过,缺失值将被忽略 - 不会有单独的直方图栏来指示缺失值的数量。欢迎贡献!)

    类标签索引是相对于标签,而不是相对于 CSV 文件:过滤器只看到标签,没有别的。所以你想使用第 0 列作为类标签。

    但您根本不需要使用此过滤器。

    SVG 可视化错误可能是由于 ∞(无穷大,编码为 UTF-8,或者也可能是 NaN)在某处导致的。这可能是由于输入数据中的 NaN 值,或由于数据中的重复

    在这个数据集中,记录有27个副本

    1,1,1,1,2,1,1,1,1
    

    LOF的定义方式,如果你有k个或更多的重复,LOF分数可以变成无穷大。此时,某些可视化模块失败并将某个半径或某个比例设置为无穷大,然后那不再是有效的 SVG(我会为此打开一个 bug 票)!欢迎来到混乱数据的真实世界。 ;-)

    解决方法 1:选择 k = 30 或更大。

    解决方法 2:不要使用可视化,而是将数据写入文件;或仅启用您需要的可视化工具,例如-vis.enable scatter|unproj

    解决方法 3:先删除重复项。

    解决方法 3:删除缺少值的行。

    这些变化都没有使数据集成为异常值检测的好选择,但是:此数据集集群中的“异常值”

    【讨论】:

    • 非常感谢!我认为缺失值是罪魁祸首。我只是通过在列周围取平均值来处理缺失值,因此它不再给出该错误。然而,由于数据集有 34% 以上的恶性类实例记录,它给了我一个错误,即异常值应该更罕见。我已经删除了恶性实例以获得大约 5% 的记录为恶性,但它仍然给我相同的错误消息,你知道异常值应该占总百分比的多少吗?
    • 如果最不频繁的类恰好是 5% 或更高,则会发出警告。通常,我的目标是非常非常最多1%,更好的是0.1%。异常值应该是罕见的。在经典的一维高斯模型中,大多数人会认为 3 sigma 偏差是“异常值”。这对应于大约 0.27% 的异常值(或 370 分之 1,直觉上每年有一个不寻常的)。这就是设计此类方法的场景。这也意味着威斯康星州乳腺癌数据集太小而无法谈论“异常值”。其中应该有大约 2 个异常值。
    • 感谢您的解释!难怪我得到的可视化(虽然不确定它是否相关)没有那么大的意义,因为即使是良性条目也会计算出高 LOF 值。如果存在 2 个异常值,它会找到它吗?我想我应该找一些其他的数据集,你有什么推荐的数据集可以用来演示 LOF 的工作原理吗?
    • 没有有趣的异常检测数据集可以在2中轻松可视化。您可以使用玩具示例来演示算法。乳腺癌数据集是分类数据集;没有像恶性=异常值这样的对应关系。对于检测恶性的任务,使用监督分类技术。
    • 顺便说一句,我已经在 ELKI 可视化中解决了这个问题。它实际上在直方图类中,不能很好地容忍 NaN 或无限值。 SVG 也可能有点脆弱。 :-(
    猜你喜欢
    • 2017-03-29
    • 2015-10-11
    • 2013-02-05
    • 1970-01-01
    • 2015-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多