如何找到"最佳"截止点(阈值)

时间:2012-06-07 17:38:04

标签: scipy threshold

我有一套用于机器学习的加权功能。我想减少功能集,只需使用非常大或非常小的重量。

因此,下面给出了排序权重的图像,我只想使用权重高于或低于黄色下线的特征。

Sorted features; yellow lines are the desired cut-off points (thresholds)

我正在寻找的是某种斜率变化检测,因此我可以丢弃所有特征,直到第一个/最后一个斜率系数增加/减少。

虽然我(我想)知道如何自己编码(使用第一和第二个数值导数),但我对任何已建立的方法感兴趣。也许有一些统计或索引可以计算出类似的东西,或者我可以从SciPy中使用的任何东西?

修改 目前,我使用1.8*positive.std()作为正面,1.8*negative.std()作为负阈值(快速和简单),但我不是数学家足以确定这是多么强大。不过,我认为不是这样。 ⍨

enter image description here

1 个答案:

答案 0 :(得分:0)

如果数据是(近似)高斯分布的,那么只需使用倍数 标准偏差是明智的。

如果您担心较重的尾巴,那么您可能希望根据订单进行分析 统计。

  • 既然你已经绘制了它,我会假设你愿意对它进行排序 数据。
  • 设N为样本中的数据点数。
  • 令x [i]为排序值列表中的第i个值。
  • 然后0.5(x [int(0.8413 * N)] - x [int(0.1587 * N)])是标准差的估计值 这对异常值更强。 std的这个估计可以用作你 如上所述。 (上面的幻数是数据的一小部分 分别小于[mean + 1sigma]和[mean-1sigma]。

  • 还有一些条件,即保持最高10%和最低10% 也是明智的;如果您有已排序的数据,则可以轻松计算这些截止值 在手边。

这些是基于您的问题内容的一些临时方法。 你正在尝试做的一般意义是(一种形式的)异常检测, 如果你在定义/估算时要小心,你可以做得更好 分布的形状是什么,靠近中间,这样你就可以知道什么时候 功能变得异常。