【问题标题】:Learning a union of intervals学习区间的并集
【发布时间】:2015-07-21 08:52:24
【问题描述】:

假设我有N 一维点xi 和它们的标签yi = 1/0。我想学习一组k 间隔,这样当标签 1 被赋予这些间隔中的所有点时,误差就会最小化。即,如果数据集是:

1: 0
2: 0
3: 1
4: 1
5: 0
6: 1
7: 1
8: 1
9: 0
10: 0
11: 0

使用k=1,则最佳间隔为[3, 8]。随着k 的增加,它会变得更加复杂。

在 scikit-learn 中是否有一些通用算法可以做到这一点,或者对决策树算法进行一些修改?只是直接向上的决策树算法不起作用,因为您无法控制k,只能控制深度,并且创建分支的顺序可能导致次优的最终间隔集。如果需要,scikit-learn 中没有的东西可能也可以。

【问题讨论】:

    标签: python machine-learning scikit-learn decision-tree


    【解决方案1】:

    我相信您可以将其重新表述为整数规划问题。

    让:

    x_ij = 1 if interval i's left endpoint is at j
           0 otherwise
    

    和:

    y_ij = 1 if interval i's right endpoint is at j
           0 otherwise
    

    最后:

    a_k = Total # of 1's in the interval [0, k]
    b_k = Total # of 0's in the interval [0, k]
    

    那么下面就相当于你的问题了:

    maximize sum_ijk (   a_j * y_ij - a_k - x_ik     # Ones inside 
                       - b_j * y_ij - b_k - x_ik     # Zeros inside
                       + b_j * x_ij - b_k - y_(i-1)k # Zeros outside
                       - a_j * x_ij - a_k - y_(i-1)k # Ones outside
             )
    with respect to the constraints
        sum_j x_ij = 1 for each i
        sum_j y_ij = 1 for each i
        0 <= x_ij <= 1 for each i, j
        0 <= y_ij <= 1 for each i, j
        sum_j * y_ij - j * x_ij > 0 for each i
        sum_j * x_(i+1)j - j * y_ij > 0 for each i
    

    由于每个x_ijy_ij 都是整数,这是一个整数规划问题。解除这个约束,你就会遇到一个线性规划问题,尽管这种情况下的结果很难解释。

    为:

    maximize sum_ijk ( a_j * y_ij - a_k - x_ik )
    

    i 的总和是所有区间。每个术语 a_j * y_ij 仅针对 j 的一个值(该区间的右端点)为“on”。与a_j * x_ij 相同。那么差值就是一些a_k - a_r,也就是区间中1的总数。同样,其他三个术语计算正确和错误分类的出现次数。

    对于约束:

    sum_j x_ij = 1 for each i
    sum_j y_ij = 1 for each i
    

    说区间必须各有一个左端点和一个右端点,并且

    sum j * y_ij - j * x_ij > 0 for each i
    sum j * x_(i+1)j - j * y_ij > 0 for each i
    

    表示左端点必须在右端点的左边,i+1st区间的右端点必须在ith区间的右端点的左边。

    【讨论】:

    • 嗯...嗯,我喜欢这个想法,但它是线性规划,目标函数需要代表错误分类错误,而不是正确分类的 1 的总数。否则,您可以只对每个间隔说 [-infinity, infinity] 以每次都获得所有 1,对吗?
    • 啊!做晚饭的时候就想到了!您可以轻松地将其更改为内部的数量 + 外部的零数量 - 内部零的数量 - 外部的数量,这与错误分类率成正比。
    • 我试图修正目标函数的陈述以反映这一点。
    猜你喜欢
    • 1970-01-01
    • 2017-08-11
    • 2022-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-05
    • 2014-03-23
    • 2010-11-05
    相关资源
    最近更新 更多