2012-06-07 49 views
2

我有一套用於機器學習的加權特徵。我想減少功能設置,只使用那些體積非常大或非常小的設備。如何找到「最佳」截止點(閾值)

因此,如下給出的排序權重圖像,我只想使用權重高於或低於黃色下限的特徵。

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

我正在尋找的是某種斜率變化檢測的,所以我可以放棄所有的功能,直到第一個/最後斜率係數增大/減小。

雖然我(想我)知道如何自己編碼(使用第一和第二數值導數),但我對任何已建立的方法感興趣。也許有一些統計或索引計算類似的東西,或者我可以從SciPy中使用的任何東西?

編輯: 目前,我使用1.8*positive.std()爲正,1.8*negative.std()爲負閾值(快速和簡單),但我不是數學家足夠,以確定如何健壯,這是。不過,我認爲這不是。 ⍨

enter image description here

回答

0

如果數據(大約)的高斯分佈,那麼只使用標準偏差的倍數 是明智的。

如果您擔心較重的尾巴,那麼您可能需要根據訂單 的統計信息作爲分析依據。

  • 既然你已經繪就,我會假設你願意排序的所有 數據。
  • 設N爲樣本中的數據點數。
  • 設x [i]爲排序值列表中的第i個值。
  • 然後0.5(x [int(0.8413 * N)] - x [int(0.1587 * N)]是標準偏差 的估計值,它對異常值更加穩健。 std的這個估計值可以用作上面指出的 。 (上面的幻數是分別小於[平均值+ 1sigma]和[mean-1sigma]的數據分數)。

  • 也有條件,只保持最高的10%和最低的10%將是 明智的;如果您手邊有排序的數據 ,則可輕鬆計算這些截止值。

這些都是基於您的問題內容的一些特設方法。 你試圖做的一般意義是(一種形式)異常檢測,如果你仔細定義/估計 分佈的形狀是什麼附近的話,你可能會做得更好。中間,以便您可以知道何時 功能異常。