我有一套用于机器学习的加权功能。我想减少功能集,只需使用非常大或非常小的重量。
因此,下面给出了排序权重的图像,我只想使用权重高于或低于黄色下线的特征。
我正在寻找的是某种斜率变化检测,因此我可以丢弃所有特征,直到第一个/最后一个斜率系数增加/减少。
虽然我(我想)知道如何自己编码(使用第一和第二个数值导数),但我对任何已建立的方法感兴趣。也许有一些统计或索引可以计算出类似的东西,或者我可以从SciPy中使用的任何东西?
修改
目前,我使用1.8*positive.std()
作为正面,1.8*negative.std()
作为负阈值(快速和简单),但我不是数学家足以确定这是多么强大。不过,我认为不是这样。 ⍨
答案 0 :(得分:0)
如果数据是(近似)高斯分布的,那么只需使用倍数 标准偏差是明智的。
如果您担心较重的尾巴,那么您可能希望根据订单进行分析 统计。
然后0.5(x [int(0.8413 * N)] - x [int(0.1587 * N)])是标准差的估计值 这对异常值更强。 std的这个估计可以用作你 如上所述。 (上面的幻数是数据的一小部分 分别小于[mean + 1sigma]和[mean-1sigma]。
还有一些条件,即保持最高10%和最低10% 也是明智的;如果您有已排序的数据,则可以轻松计算这些截止值 在手边。
这些是基于您的问题内容的一些临时方法。 你正在尝试做的一般意义是(一种形式的)异常检测, 如果你在定义/估算时要小心,你可以做得更好 分布的形状是什么,靠近中间,这样你就可以知道什么时候 功能变得异常。