Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Алгоритмы поиска закономерностей
Форум врачей-аспирантов > Разделы форума > Медицинская статистика
nokh
Подскажите, пожалуйста, есть ли какие-то алгоритмы для поиска закономерностей в данных типа:
а) Если А>2, то B<0,7
б) Если (A+B)<3,4, то (С+В)>4,6
1) Думаю, можно сначала найти корреляции, а затем попытаться найти такую точку дихотомизации одной переменной, чтобы достигалась максимальная чувствительность и специфичность по второй, в идеале 100%. Но ведь не вручную пороги перебирать. Может есть какие-то пакеты с такой функцией. Это бы подошло для а), но б) - слишком сложно.
2) Может есть готовые алгоритмы, действующие перебором c какой-нибудь с оптимизацией - типа Apriori.
3) Может ещё что-то?
ogurtsov
Не совсем понятно, как собрать в кучу ассоциативные правила (а это именно они по постановке задачи, т.е. тот самый алгоритм Apriori тут весьма уместен) с дихотомизацией и максимальной чувствительностью и специфичностью. В чем цель, чего нужно добиться?
nokh
Цитата(ogurtsov @ 16.03.2016 - 23:20) *
Не совсем понятно, как собрать в кучу ассоциативные правила (а это именно они по постановке задачи, т.е. тот самый алгоритм Apriori тут весьма уместен) с дихотомизацией и максимальной чувствительностью и специфичностью. В чем цель, чего нужно добиться?

Apriori находит правила совстречаемости типа "Если A, то В", но не типа "Если А>2, то B<0,7". Цель - выработка нескольких безошибочных правил для автоматического обнаружения выбросов (ошибки аналитиков и ошибки набора данных) в большом наборе данных.
ogurtsov
Цитата(nokh @ 16.03.2016 - 21:43) *
Apriori находит правила совстречаемости типа "Если A, то В", но не типа "Если А>2, то B<0,7". Цель - выработка нескольких безошибочных правил для автоматического обнаружения выбросов (ошибки аналитиков и ошибки набора данных) в большом наборе данных.

Предикаты типа А>2 или B<0,7 можно же заменить:
А>2 --> C
B<0,7 --> D
И дальше получим то же самое "Если C, то D". И задача сводится к выбору этих самых предикатов. Правильно я понимаю? Но тогда перебором решать придется, наверное.

Что касается безошибочного обнаружения выбросов, то этом утопия (начиная с условности самого понятия "выброс").
p2004r
Цитата(nokh @ 16.03.2016 - 20:24) *
Подскажите, пожалуйста, есть ли какие-то алгоритмы для поиска закономерностей в данных типа:
а) Если А>2, то B<0,7
б) Если (A+B)<3,4, то (С+В)>4,6
1) Думаю, можно сначала найти корреляции, а затем попытаться найти такую точку дихотомизации одной переменной, чтобы достигалась максимальная чувствительность и специфичность по второй, в идеале 100%. Но ведь не вручную пороги перебирать. Может есть какие-то пакеты с такой функцией. Это бы подошло для а), но б) - слишком сложно.
2) Может есть готовые алгоритмы, действующие перебором c какой-нибудь с оптимизацией - типа Apriori.
3) Может ещё что-то?


Это похоже на https://cran.r-project.org/web/packages/ext...es/extRemes.pdf
nokh
Цитата(ogurtsov @ 17.03.2016 - 00:01) *
Предикаты типа А>2 или B<0,7 можно же заменить:
А>2 --> C
B<0,7 --> D
И дальше получим то же самое "Если C, то D". И задача сводится к выбору этих самых предикатов. Правильно я понимаю? Но тогда перебором решать придется, наверное.

Что касается безошибочного обнаружения выбросов, то этом утопия (начиная с условности самого понятия "выброс").


Для трёх признаков и 100 человек можно и перебором сделать, хотя муторно это. Но даже для 15 признаков и 1000 человек это уже практически невозможно, нужны какие-то готовые алгоритмы Data mining, ну или самому подобное программировать... А насчёт выбросов и правил - не согласен: прибор может пробу не до конца втянуть из-за какой-нибудь непонятно откуда взявшейся соринки. В результате у всей выборки будет, скажем, в пределах 10-15, а у одного - 5. Или рост будет 17 см (вместо 174) или рН 676 (вместо 6,76) - эти элементы принадлежат другой генеральной совокупности - "ошибочно набранных показателей", чем не выбросы? Безошибочное правило: при 25 оС рН < или = 14.
***
Цитата(p2004r @ 17.03.2016 - 00:32) *

Ох уж эти стандартные описания R-пакетов, нихрена понять невозможно:) Нужно было ввести правило, чтобы не менее 1 стр занимало описание того, для чего этот пакет нужен. Насколько понял с наскока - может частично и подойдёт, хотя сами вероятности экстремумов не особо нужны, нужны правила.
***
Я вот тут картинку прикрепил того, что пока надумал. Если удастся найти корреляцию между А и В (значимость, линейность и прочее - за кадром, важен принцип), то она позволит сформулировать следующие правила:
Если A>LA, то B>LB
Невозможны (точнее маловероятны): A<Amin, A>Amax, B<Bmin и B>Bmax.
Но это грубые правила, ведь в принципе можно для данного А вычислить доверительный интервал для B - получится уже не правило, а функция какая-то. Также это правило для В по А, а для А по В границы и функция уже изменятся. И как быть в многомерном случае, если добавятся вмешивающиеся факторы типа возраста, пола, какого-то заболевания и т.п.? Расслаивать выборку и смотреть попарно вручную - утомительно. Поэтому ищу ещё идеи и алгоритмы.
***
PS Что-то этот год у меня начался с каких-то экзотических задач, благодарю всех участников за помощь.
p2004r
Цитата(nokh @ 17.03.2016 - 09:39) *
Для трёх признаков и 100 человек можно и перебором сделать, хотя муторно это. Но даже для 15 признаков и 1000 человек это уже практически невозможно, нужны какие-то готовые алгоритмы Data mining, ну или самому подобное программировать... А насчёт выбросов и правил - не согласен: прибор может пробу не до конца втянуть из-за какой-нибудь непонятно откуда взявшейся соринки. В результате у всей выборки будет, скажем, в пределах 10-15, а у одного - 5. Или рост будет 17 см (вместо 174) или рН 676 (вместо 6,76) - эти элементы принадлежат другой генеральной совокупности - "ошибочно набранных показателей", чем не выбросы? Безошибочное правило: при 25 оС рН < или = 14.
***

Ох уж эти стандартные описания R-пакетов, нихрена понять невозможно:) Нужно было ввести правило, чтобы не менее 1 стр занимало описание того, для чего этот пакет нужен. Насколько понял с наскока - может частично и подойдёт, хотя сами вероятности экстремумов не особо нужны, нужны правила.
***
Я вот тут картинку прикрепил того, что пока надумал. Если удастся найти корреляцию между А и В (значимость, линейность и прочее - за кадром, важен принцип), то она позволит сформулировать следующие правила:
Если A>LA, то B>LB
Невозможны (точнее маловероятны): A<Amin, A>Amax, B<Bmin и B>Bmax.
Но это грубые правила, ведь в принципе можно для данного А вычислить доверительный интервал для B - получится уже не правило, а функция какая-то. Также это правило для В по А, а для А по В границы и функция уже изменятся. И как быть в многомерном случае, если добавятся вмешивающиеся факторы типа возраста, пола, какого-то заболевания и т.п.? Расслаивать выборку и смотреть попарно вручную - утомительно. Поэтому ищу ещё идеи и алгоритмы.
***
PS Что-то этот год у меня начался с каких-то экзотических задач, благодарю всех участников за помощь.



По моему это выглядит на коррелограмме как "пустой угол" в распределении.

Код
> A<- runif(1000)
> B<- runif(1000)
> indA <- A > 0.7
> indB <- B < 0.3
> plot(A[!(indA&indB)], B[!(indA&indB)])


Наличие связи между переменными это будет отягощать редкостью таких экстремальных сочетаний самих по себе.

Пусть некая процедура генерирует выборки A,B с теми же статхарактеристиками и размером. На рассчитанную таким образом плотность распределения надо поделить экспериментальное (взвесить точки, приведя к унифомному распределению) и потом искать "пустые" углы, найденный "угол" бутстрепом проверять на случайность?
nokh
Цитата(p2004r @ 19.03.2016 - 23:52) *
По моему это выглядит на коррелограмме как "пустой угол" в распределении.

Код
> A<- runif(1000)
> B<- runif(1000)
> indA <- A > 0.7
> indB <- B < 0.3
> plot(A[!(indA&indB)], B[!(indA&indB)])


Наличие связи между переменными это будет отягощать редкостью таких экстремальных сочетаний самих по себе.

Пусть некая процедура генерирует выборки A,B с теми же статхарактеристиками и размером. На рассчитанную таким образом плотность распределения надо поделить экспериментальное (взвесить точки, приведя к унифомному распределению) и потом искать "пустые" углы, найденный "угол" бутстрепом проверять на случайность?

Благодарю за помощь! По поводу проверки угла на случайность - сомневаюсь в целесообразности. Но ваша модель наглядно показала слабость моего "правила". Особенно если учесть, что углов не 1, а 4, ну или 3 - если минимальные значения прижимаются в одном углу к 0. Получается, что для обнаружения выбросов и подозрительных наблюдений большую пользу чем корреляция даст простое вычерчивание коридоров "минимум - максимум". В двумерном случае они сразу отсекут и углы и поля ниже/выше максимума, т.е. оставят прямоугольник возможных значений в центре. А если есть корреляция, то правило можно немного уточнить, прочертив в прямоугольнике дополнительный коридор возможных значений: например, как ДИ к RMA-регрессии (для линейной связи) или какому-нибудь сплайну. Возможно для обозначенной задачи нужен не непонятный филигранный Data mining, а именно такая жёсткая нарезка пространства на зоны возможного/маловероятного/невозможного/...
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2025 IPS, Inc.