2012-06-07 3 views
2

У меня есть набор взвешенных функций для машинного обучения. Я хотел бы уменьшить набор функций и просто использовать те, у которых очень большой или очень маленький вес.Как найти «оптимальную» точку отсечки (порог)

Итак, приведенный ниже образ отсортированных весов, я хотел бы использовать только те функции, которые имеют вес над верхней или нижней нижней желтой линией.

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

Что я ищу это своего рода обнаружения изменения наклона, так что я могу сбросить все функции, вплоть до первого/последнего коэффициента наклона увеличения/уменьшения.

Хотя я (думаю, я) знаю, как это сделать сам (с помощью первых и вторых числовых производных), меня интересуют любые установленные методы. Возможно, есть какая-то статистика или индекс, который вычисляет что-то подобное или что-нибудь, что я могу использовать у SciPy?

Edit: На данный момент я использую 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] и [средняя-1sigma] соответственно).

  • Есть также условия, при которых только самые высокие 10% и самые низкие 10% будут также разумными; и эти отсечки легко вычисляются, если у вас есть отсортированные данные .

Это несколько специальных подходов, основанных на содержании вашего вопроса. Общий смысл того, что вы пытаетесь сделать, это (форма) обнаружения аномалии, , и вы, вероятно, сможете лучше справиться с этим, если вы будете осторожны в определении/оценке того, что форма распределения близка в середине, так что вы можете сказать, когда функции становятся аномальными.