Метод поиска самого чистого подмножества данных, т. е. подмножества с наименьшей изменчивостью.

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

Возможны 3 сценария:

  1. Все достоверные данные, где все данные соответствуют одной тенденции с низкой изменчивостью.
  2. Все неверные данные, когда все или большинство данных демонстрируют огромную изменчивость, и весь набор данных должен быть отброшен.
  3. Частично достоверные данные, когда некоторые данные могут быть достоверными, а остальные следует отбросить.

Если чистый процент данных с крайней изменчивостью слишком высок, весь набор должен быть отброшен. Это означает, что в основном есть только этот тип данных, а процент плохих данных варьируется:

0 % плохого = вариант 1
100 % плохой = случай 2

Я ищу только смежные участки с низкой изменчивостью; т.е. мне все равно, есть ли какие-то отдельные точки, которые соответствуют тренду

То, что я ищу, - это умный способ подразделить набор данных и найти указанную тенденцию. По характеру проблемы я не ищу разделы, которые лучше всего соответствуют общей тенденции. Я понимаю, что подраздел с «более чистыми» данными в конечном итоге будет иметь несколько иные свойства линии тренда, чем в целом (который будет содержать выбросы). Это именно то, что я хочу, поскольку эта часть данных лучше всего отражает фактическую тенденцию.

Я свободно говорю на C++, но, поскольку я пытаюсь сделать код открытым и кроссплатформенным, я придерживаюсь стандартов ISO C++. Это подразумевает отсутствие .NET, но если у вас есть пример .NET, я был бы признателен, если бы вы также помогли мне преобразовать его в ISO C++. У меня также есть знания JAVA, немного ассемблера и фортрана.

Сами наборы данных невелики, но их около 150 миллионов, поэтому перебор может быть не лучшим способом.

заранее спасибо


Я понимаю, что оставил некоторые вещи в воздухе, поэтому позвольте мне уточнить:

  • Каждый набор данных может и, вероятно, будет иметь разные тенденции; то есть я не ищу одну и ту же тенденцию во всех наборах данных.
  • Пользователь программы сам определит, насколько близкая посадка ему нужна.
  • Пользователь программы определит, насколько непрерывным должно быть подмножество, прежде чем оно будет рассмотрено для подбора тренда.
  • В случае, если программа будет расширена для обеспечения любого типа подгонки (не просто линейной), пользователь определит, какая модель должна подходить - ЭТО НЕ ПРИОРИТЕТ, и если вышеуказанный запрос будет решен, то я уверен, что это расширение будет быть относительно тривиальным
  • Выбросы возникают в результате характера эксперимента и метода сбора данных, при котором данные из «плохих» участков все равно необходимо собирать, даже если известно, что эти области дают выбросы. Отбрасывание этих выбросов НЕ означает, что данные манипулируются, чтобы соответствовать какой-либо тенденции (отказ от ответственности за статистику, хе-хе).

person 147    schedule 05.04.2009    source источник
comment
Есть ли проблема с простым вычислением линии наилучшего соответствия для всех данных, отбрасыванием выбросов, а затем пересчетом линии для нового подмножества точек?   -  person Noldorin    schedule 05.04.2009
comment
Вы могли бы в основном суммировать этот вопрос менее чем в 5 строк.   -  person shoosh    schedule 05.04.2009


Ответы (2)


Алгоритм RANSAC - это один из подходов к тому, что вы ищете, если я правильно вас понимаю. http://en.wikipedia.org/wiki/RANSAC

person Ray Hidayat    schedule 05.04.2009

Вы можете использовать термин «выброс» в своих поисках. Выброс — это конкретная точка данных, которая представляет собой либо особое условие, не отраженное в плане эксперимента, либо статистическую случайность (точка, полученная из крайних потоков распределения в наборе данных, слишком маленьком, чтобы ожидать, что это тоже произойдет).

Исключение выбросов несет в себе некоторый риск искажения результата вашими ожиданиями.

person dmckee --- ex-moderator kitten    schedule 05.04.2009
comment
Возможно, я не представил это ясно ... Я знаю, что может показаться, что это может привести к предвзятости, но это происходит только в том случае, если я исключаю достоверные точки данных. В моей экспериментальной установке выбросы возникают исключительно из-за плохих клеток (это биологический эксперимент), поэтому мне нужно их устранить. - person 147; 06.04.2009
comment
Я не говорил Не делай этого. Исключение выбросов не обязательно плохо: это общепринятая часть анализа данных. Просто имейте в виду, что это сопряжено с определенным риском. Обычный способ смягчения последствий — это перебор аномалий в поисках неожиданных паттернов... - person dmckee --- ex-moderator kitten; 06.04.2009