【问题标题】:discretization in wekaweka中的离散化
【发布时间】:2013-02-12 23:03:29
【问题描述】:

我需要知道何时是在 weka 中进行离散化的合适时间。我有数据集,我需要从该数据中创建训练和测试数据样本。我应该在采样前还是采样后对数值属性进行离散化?

【问题讨论】:

    标签: data-mining weka


    【解决方案1】:

    这应该是显而易见的。

    只要您获得与执行的拆分无关的相同结果,之后您就可以做到。但是这样做的好处是什么?那就先做预处理吧。

    如果您通过四舍五入进行离散化 - 例如浮动到整数 - 那么你应该没问题(这不受拆分的影响)。但是如果你离散化例如通过分位数,很明显你可能会搞砸,因为你会以不同的方式离散不同的部分

    假设您将数据离散化为两个不同的值:

    Input data    Type     Output value
    0.9           good     1.05
    1.0           good     1.05
    1.1           good     1.05
    1.2           good     1.05
    ---
    2.1           good     2.20
    2.3           good     2.20
    2.2           good     2.20
    ---  SPLIT HERE ---
    1.1           bad      1.20
    1.2           bad      1.20
    1.3           bad      1.20
    ---
    1.9           bad      2.00
    2.0           bad      2.00
    2.1           bad      2.00
    

    请参阅,“好”和“坏”都通过使用每个值集群的平均值离散化为两个离散值。但由于“好”和“坏”的平均值不同,结果属性清楚地揭示了真正的成员资格。检测“坏”的任务变得更加容易。

    永远不要进行单独的预处理。

    【讨论】:

    • 好吧,让我弄清楚我面临的问题,我有两个类的值(好,坏)的数据集。我试图获得不平衡的类值。因此我将数据集分成两组(一组包括好实例和一组坏实例)。当我之前进行离散化并合并两组时,结果是令人满意的,但如果我之后再做,那就不是那么好。你能帮我解释一下吗?提前谢谢你
    • 什么是“好”结果?你在做什么离散化?这是否允许过度拟合/偏差?如果你离散化使得偶数 = 好,奇数 = 坏,分类器可以学习你的离散化方法。因此,我强烈建议不要对拆分数据进行任何类型的预处理。
    • 似乎我没有把问题说得很清楚,我没有为分类任务准备这个数据集,但我正在为异常值检测任务做准备。我正在开发一种检测异常值的方法,因此我应该有不平衡的数据集,所以我将能够检测到多元异常值(即我想检测具有良好标签的实例为好,并将坏实例检测为坏),这样我将获得令人满意的结果。该方法没有处理数值,因此我需要将它们离散化为标称值。我希望这能解释为什么我必须拆分数据。
    • 是的,所以你有两个类:异常值和非异常值。同样的问题。如果单独离散化,问题可能会变得微不足道,因为它足以检测对象离散化的方式。异常值检测可能会更糟。只需先进行预处理,然后再拆分。
    • 我只是想确定一下上面的例子。对于输入数据,你为什么要对值进行聚类并找到平均值?在我看来有些不对劲,因为我认为第 2 轮的值应该放在一起,并且第 1 轮的值应该是一样的,你怎么看?
    猜你喜欢
    • 2014-12-06
    • 2015-10-25
    • 2017-03-18
    • 2015-02-09
    • 2019-03-20
    • 1970-01-01
    • 2020-08-20
    • 1970-01-01
    相关资源
    最近更新 更多