Форум врачей-аспирантов

Здравствуйте, гость ( Вход | Регистрация )

2 страниц V   1 2 >  
Добавить ответ в эту темуОткрыть тему
> Как грамотно поделить выборку на несколько сегментов перед предсказанием?, Деление выборки по неизвестным критериям
smeilz
сообщение 7.07.2020 - 16:18
Сообщение #1





Группа: Пользователи
Сообщений: 7
Регистрация: 2.07.2020
Пользователь №: 39533



Добрый день.
Есть очень большая выборка для бинарной классификации. Нужно предсказать 2 класса(0/1)
Есть огромная куча предикторов(независимых переменных), все они категориальные, и известно, что выборка содержит в себе несколько сегментов, в которых поведение предсказываемых классов будет существенно отличаться. Количество сегментов неизвестно.
Как грамотно найти эти сегменты и поделить выборку для дальнейшего предсказания?

Сообщение отредактировал smeilz - 7.07.2020 - 16:19
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
 
ogurtsov
сообщение 7.07.2020 - 20:07
Сообщение #2





Группа: Пользователи
Сообщений: 127
Регистрация: 15.12.2015
Пользователь №: 27760



Кластеризацию нужно сделать, а уж какую - тут много вариантов.
Метки кластеров затем использовать как фичу.

Сообщение отредактировал ogurtsov - 7.07.2020 - 20:07


Signature
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
 
passant
сообщение 8.07.2020 - 11:30
Сообщение #3





Группа: Пользователи
Сообщений: 231
Регистрация: 27.04.2016
Пользователь №: 28223



Уважаемый smeilz.

Что-то вы начинаете "путаться в показаниях". На другом форуме вы пишете:
Есть датасет с одним бинарным признаком(зависимой переменной) 0 или 1. Распределение 57/43
На этом:
Есть очень большая выборка для бинарной классификации. Нужно предсказать 2 класса(0/1)
Это как бы две совершенно разные задачи. В одном случае - обучение с учителем (т.е. датасет с признаком) , в другом - обучение без учителя (признака изначально нет).

Кроме того, вы так и не пояснили, что означает
поведение предсказываемых классов будет существенно отличаться.
как вы себе представляете "поведение класса"? В чем оно у час выражается?
Что такое "сегмент" и чем он в вашем представлении отличается от "класса". Подчеркну - "предсказываемых классов" ??

Что означает
Как грамотно найти эти сегменты и поделить выборку для дальнейшего предсказания?
Если вы разбиваете выборку на то-ли сегменты, то-ли классы, то что вы собираетесь предсказывать дальше?

Про кластеризацию, и ее возможное использование как предварительный этап классификации вам сказали что тут, что там. Но ясности как не было, так и нет.
И я еще раз повторю:
Поставьте четко задачу, а то создается все более уверенное впечатление, что вы вообще не очень понимаете, а что в итоге вам надо?

Сообщение отредактировал passant - 8.07.2020 - 11:32
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
 
100$
сообщение 8.07.2020 - 18:42
Сообщение #4





Группа: Пользователи
Сообщений: 902
Регистрация: 23.08.2010
Пользователь №: 22694



А мне очень интересно, как скоро в этой теме появится один из бесчисленных клонов лёвы_биостата и пробухтит нам чё-нить ужасно познавательное по поводу логистической регрессии и "многомерных методов продуктивного анализа"?
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
 
ogurtsov
сообщение 8.07.2020 - 19:05
Сообщение #5





Группа: Пользователи
Сообщений: 127
Регистрация: 15.12.2015
Пользователь №: 27760



Цитата(100$ @ 8.07.2020 - 18:42) *
А мне очень интересно, как скоро в этой теме появится один из бесчисленных клонов лёвы_биостата и пробухтит нам чё-нить ужасно познавательное по поводу логистической регрессии и "многомерных методов продуктивного анализа"?

hi.gif Не буди лихо (с) hi.gif


Signature
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
 
100$
сообщение 8.07.2020 - 19:41
Сообщение #6





Группа: Пользователи
Сообщений: 902
Регистрация: 23.08.2010
Пользователь №: 22694





Цитата
Кроме того, вы так и не пояснили, что означает
поведение предсказываемых классов будет существенно отличаться.
как вы себе представляете "поведение класса"? В чем оно у час выражается?


Вестимо, обострение классовой борьбы...
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
 
passant
сообщение 8.07.2020 - 21:31
Сообщение #7





Группа: Пользователи
Сообщений: 231
Регистрация: 27.04.2016
Пользователь №: 28223



Нет, коллеги. В данном случае - вы ошибаетесь. Это действительно вопрос, который сначала фигурировал на другом форуме и судя до форме его представления и ответах на вопросы -ТС действительно интересуется вопросом, просто еще не столь глубоко в теме, что-бы его корректно задать (ну что поделать, результаты активного маркетинга различных ускоренных курсов и прочего "с нуля до профи за 7 дней"). Но на мой взгляд помочь ТС, дать ему различные вИдения, в конце концов "наставить его на путь истинный" области МL - я считаю, это где-то наш долг. Поэтому и отвечаю по четвертому кругу. Я свое мнение ему уже высказал. Если будет ваша добрая воля и желание ТС - будет даже интересно узнать и ваше мнение на предмет.
А вот что-до " как скоро в этой теме появится один из бесчисленных клонов.... " я ожидал этого "явления" в соседней теме про анализ СOVID-19. Но, видать спугнули :-)

Сообщение отредактировал passant - 8.07.2020 - 21:38
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
 
100$
сообщение 9.07.2020 - 00:17
Сообщение #8





Группа: Пользователи
Сообщений: 902
Регистрация: 23.08.2010
Пользователь №: 22694



passant,

поскольку Андрей (Огурцов) ничего ошибочного, вроде бы, не сказал, фразу

Цитата
В данном случае - вы ошибаетесь


принимаю исключительно на свой счет и настоящим сообщаю, что я рад буду ошибиться.

А словоблудливую ботяру из предыдущей ветки
Цитата
А вот что-до " как скоро в этой теме появится один из бесчисленных клонов.... " я ожидал этого "явления" в соседней теме про анализ СOVID-19. Но, видать спугнули :-)


я же и спугнул. Жаль модераторы потерли... Такой коммент был...

А вот по поводу ваших несбывшихся ожиданий имею-таки сказать следующее: в соседней теме про СOVID-19 - там, похоже, вся тема создана таким "явлением".

А вы, ребята, судя по всему, тест Тьюринга не проходите: не можете отличить имитацию от нормального "белкового" юзера. И ваша профессиональная разговорчивость взяла-таки верх: начали вежливо да тактично лекцыи читать этому клону.

А надо бы по принципу "Еще я всякую х...ню на Вы не называл"(с). Не подумайте, что сквернословлю. Из анекдота, знаете ли, слова выкинуть еще труднее, чем из песни.

В этой связи у меня вопрос: форум - фсё?

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

Сообщение отредактировал 100$ - 9.07.2020 - 00:33
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
 
passant
сообщение 9.07.2020 - 10:55
Сообщение #9





Группа: Пользователи
Сообщений: 231
Регистрация: 27.04.2016
Пользователь №: 28223



Цитата(100$ @ 9.07.2020 - 00:17) *
я же и спугнул. Жаль модераторы потерли...

Жаль, пропустил.

Цитата(100$ @ 9.07.2020 - 00:17) *
А вот по поводу ваших несбывшихся ожиданий имею-таки сказать следующее: в соседней теме про СOVID-19 - там, похоже, вся тема создана таким "явлением".

У меня тоже сложилось такое же впечатление. Но
Цитата(100$ @ 9.07.2020 - 00:17) *
начали вежливо да тактично лекцыи читать этому клону.

в надежде на "а вдруг все таки нет". Ошибся, признаю.


Цитата(100$ @ 9.07.2020 - 00:17) *
В этой связи у меня вопрос: форум - фсё?

Очень надеюсь, что нет. В "той" теме искренне описал свое отношение к этому форуму. И будет очень-очень жаль, если "фсё".

Кстати, с появлением короновируса на других форумах, особенно английских, наблюдался взрывной интерес к статметодам обработки информации касаемой этой проблемы. Ожидал, что и тут появится что-то интересное. Но нет. Это что - показатель состояния современного состояния мед. статистики на постсоветском пространстве?

Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
 
nokh
сообщение 9.07.2020 - 21:11
Сообщение #10





Группа: Пользователи
Сообщений: 1202
Регистрация: 13.01.2008
Из: Челябинск
Пользователь №: 4704



Цитата(smeilz @ 7.07.2020 - 18:18) *
Добрый день.
Есть очень большая выборка для бинарной классификации. Нужно предсказать 2 класса(0/1)
Есть огромная куча предикторов(независимых переменных), все они категориальные, и известно, что выборка содержит в себе несколько сегментов, в которых поведение предсказываемых классов будет существенно отличаться. Количество сегментов неизвестно.
Как грамотно найти эти сегменты и поделить выборку для дальнейшего предсказания?

Ваша задача из разряда таких, которые требуют творческого подхода, т.е. одной технологии нет. Я согласен с ogurtsov, что раз внутри выборки есть какие-то сегменты, то логично начать с их поиска, т.е. кластеризации. Поскольку на выделение кластеров влияет набор показателей, то лучше сначала сократить пространство переменных, предварительно исключив метку класса (0/1) и искать кластеры уже в нём. Для качественных признаков наиболее распространённый способ редукции данных с обобщением - анализ соответствий (Correspondence Analysis), хотя мне он не особо нравится: даёт для некоторых показателей и объектов сильные выбросы или типа того, когда на ординационной диаграмме пара-тройка показателей по краям, а все остальные кучей в центре; причём те, что по краям часто показатели с небольшой долей редких категорий. Больше нравятся результаты оптимального шкалирования - нелинейного анализа главных компонент, обрабатывающих одновременно количественные, порядковые и номинальные признаки. Результаты интерпретируются аналогично PCA; можно посмотреть что за компоненты выделяются, постараться интерпретировать их, а уже в пространстве этих компонент можно поискать кластеры. Нет никакой гарантии, что эти кластеры и обусловливают различный характер поведения главного признака, но это тем не менее будут некие естественные группировки, что уже хорошо: с них можно начать.
Далее нужно отмоделировать классы в каждом кластере. Раз предикторов много, то лучше использовать Случайный лес деревьев классификации (Random forest). Далее сопоставить оптимальные наборы предикторов в кластерах, возможно какие-то кластеры окажутся в этом отношении сходными - их объединять и осмысливать, опираясь на предыдущий этап.

В принципе деревья классификации можно попробовать и к исходному набору предикторов и классов: вдруг оно окажется хорошо структурированным с небольшим количеством ветвлений, тогда задача будет решена вообще сразу. Я бы действовал примерно так, хотя по ходу возможны варианты.

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

Сообщение отредактировал nokh - 9.07.2020 - 21:14
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
 
100$
сообщение 9.07.2020 - 21:50
Сообщение #11





Группа: Пользователи
Сообщений: 902
Регистрация: 23.08.2010
Пользователь №: 22694



Цитата(nokh @ 9.07.2020 - 21:11) *
Больше нравятся результаты оптимального шкалирования - нелинейного анализа главных компонент, обрабатывающих одновременно количественные, порядковые и номинальные признаки. Результаты интерпретируются аналогично PCA


Nokh, а это пакет {homals}, да? А то я уже что-то забывать стал...
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
 
nokh
сообщение 10.07.2020 - 08:10
Сообщение #12





Группа: Пользователи
Сообщений: 1202
Регистрация: 13.01.2008
Из: Челябинск
Пользователь №: 4704



Цитата(100$ @ 9.07.2020 - 23:50) *
Nokh, а это пакет {homals}, да? А то я уже что-то забывать стал...

Да, это {homals} и пришедший ему на смену {Gifi}. Оба проигрывают по удобству гибких настроек методу CATPCA из пакета SPSS. Я уже забыл что у меня не срасталось в пакетах для R, но раздражение помню)) Меня метод в SPSS вообще отлично устраивает, но только пакет коммерческий.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
 
100$
сообщение 10.07.2020 - 10:48
Сообщение #13





Группа: Пользователи
Сообщений: 902
Регистрация: 23.08.2010
Пользователь №: 22694



Цитата(nokh @ 10.07.2020 - 08:10) *
Да, это {homals} и пришедший ему на смену {Gifi}. Оба проигрывают по удобству гибких настроек методу CATPCA из пакета SPSS. Я уже забыл что у меня не срасталось в пакетах для R, но раздражение помню)) Меня метод в SPSS вообще отлично устраивает, но только пакет коммерческий.


Мерси.
Досадно только, что я уже много лет никак не могу въехать в теорию этого Gifi-transformation, чтобы сделать его для себя самому...
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
 
smeilz
сообщение 10.07.2020 - 15:09
Сообщение #14





Группа: Пользователи
Сообщений: 7
Регистрация: 2.07.2020
Пользователь №: 39533



Цитата(passant @ 8.07.2020 - 11:30) *
Уважаемый smeilz.

Что-то вы начинаете "путаться в показаниях". На другом форуме вы пишете:
Есть датасет с одним бинарным признаком(зависимой переменной) 0 или 1. Распределение 57/43
На этом:
Есть очень большая выборка для бинарной классификации. Нужно предсказать 2 класса(0/1)
Это как бы две совершенно разные задачи. В одном случае - обучение с учителем (т.е. датасет с признаком) , в другом - обучение без учителя (признака изначально нет).

Кроме того, вы так и не пояснили, что означает
поведение предсказываемых классов будет существенно отличаться.
как вы себе представляете "поведение класса"? В чем оно у час выражается?
Что такое "сегмент" и чем он в вашем представлении отличается от "класса". Подчеркну - "предсказываемых классов" ??

Что означает
Как грамотно найти эти сегменты и поделить выборку для дальнейшего предсказания?
Если вы разбиваете выборку на то-ли сегменты, то-ли классы, то что вы собираетесь предсказывать дальше?

Про кластеризацию, и ее возможное использование как предварительный этап классификации вам сказали что тут, что там. Но ясности как не было, так и нет.
И я еще раз повторю:
Поставьте четко задачу, а то создается все более уверенное впечатление, что вы вообще не очень понимаете, а что в итоге вам надо?


Спасибо за вопросы и ответы.
Хорошо.
Есть датасет.
В нем примерно 70-80 категориальных признаков(независимых переменных или предикторов) и 1 категориальная(зависимая), которую я и буду предсказывать.
Распределение этой переменной 43%/57%. Вот 2 класса, которые уже присутствуют, соответственно я их и предсказываю.
Получается у нас датасет с признаком и обучение с учителем.

Про поведение я пожалуй не совсем корректно выразился.
Я имел ввиду, что по каким-то кускам нашей выборки прогноз будет не очень точным. Например 55% вероятность, что это класс 1 и 45% вероятность, что класс 0, их большинство.
Такие прогнозы мне не очень нужны, так как я буду часто ошибаться. Моя задача предполагает возможность отбросить куски данных и не давать по ним прогноза, если он не очень точный.
А есть куски, где прогнозы будут 65/35 или даже 70/30, они более точные, и я бы хотел брать те сегменты, где вероятность принадлежности к классу1 или классу0 больше определенного порога.
Соответственно у меня уже есть 3 сегмента.
1) Там, где прогноз класса0>65%
2) Там, где прогноз класса1> 65%
3) Остальные
Корректно ли так делать?
Если нет, то как грамотно?

В данный момент, я сделал так.
1) Взял пакет Catboost на python
2) Исключил оттуда признак, который мы предсказываем
3) Получил модель accuracy=63.5%
4) Провел на валидационной выборке, получил accuracy=62.5%
5) По тому, что качество модели упало незначительно, исключил Overfitting
6) Опытным путем нашел ту границу выбора класса0 и класса1, при которой процент ошибочных прогнозов не более 65%
(там можно автоматически задавать процент ошибки FPR и FNR, то я предпочел разобраться вручную)
В итоге что я хочу:
1)Более осознанно подходить к выбору признаков, например изучить их визуально при помощи визуализации на R. Возможно они дадут дополнительную информацию и буду точно понимать с каким признаками я имею дело. Меня ранее учили, что нельзя выбрасывать данные, даже если на первый взгляд кажется, что их влияние на целевую переменную очень маленькое, и даже если признаки скоррелированы.
2)Работать с данными не по принципу чёрного ящика, а лучше понимать, что я делаю, так как задача для меня интересная и хотелось бы повысить свой уровень понимания процесса
3)Понять какие ошибки я допустил в процессе и узнать, нужно ли балансировать данные, чтобы предсказываемые классы были в соотношении 50 на 50.

Сообщение отредактировал smeilz - 10.07.2020 - 15:20
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
 
smeilz
сообщение 10.07.2020 - 15:13
Сообщение #15





Группа: Пользователи
Сообщений: 7
Регистрация: 2.07.2020
Пользователь №: 39533



Цитата(nokh @ 9.07.2020 - 21:11) *
Ваша задача из разряда таких, которые требуют творческого подхода, т.е. одной технологии нет. Я согласен с ogurtsov, что раз внутри выборки есть какие-то сегменты, то логично начать с их поиска, т.е. кластеризации. Поскольку на выделение кластеров влияет набор показателей, то лучше сначала сократить пространство переменных, предварительно исключив метку класса (0/1) и искать кластеры уже в нём. Для качественных признаков наиболее распространённый способ редукции данных с обобщением - анализ соответствий (Correspondence Analysis), хотя мне он не особо нравится: даёт для некоторых показателей и объектов сильные выбросы или типа того, когда на ординационной диаграмме пара-тройка показателей по краям, а все остальные кучей в центре; причём те, что по краям часто показатели с небольшой долей редких категорий. Больше нравятся результаты оптимального шкалирования - нелинейного анализа главных компонент, обрабатывающих одновременно количественные, порядковые и номинальные признаки. Результаты интерпретируются аналогично PCA; можно посмотреть что за компоненты выделяются, постараться интерпретировать их, а уже в пространстве этих компонент можно поискать кластеры. Нет никакой гарантии, что эти кластеры и обусловливают различный характер поведения главного признака, но это тем не менее будут некие естественные группировки, что уже хорошо: с них можно начать.
Далее нужно отмоделировать классы в каждом кластере. Раз предикторов много, то лучше использовать Случайный лес деревьев классификации (Random forest). Далее сопоставить оптимальные наборы предикторов в кластерах, возможно какие-то кластеры окажутся в этом отношении сходными - их объединять и осмысливать, опираясь на предыдущий этап.

В принципе деревья классификации можно попробовать и к исходному набору предикторов и классов: вдруг оно окажется хорошо структурированным с небольшим количеством ветвлений, тогда задача будет решена вообще сразу. Я бы действовал примерно так, хотя по ходу возможны варианты.

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

Благодарю за подробный ответ.
Для начала хочу уточнить, а есть ли анализ соответствий (Correspondence Analysis) в каком-нибудь пакете на R, пожалуй я с него бы и начал.
Опыта в построении нейронных сетей не имею, так что пока это отложу.
Скорее стоит задача при помощи интересной мне задачи, освоить универсальный подход к задачам машинного обучения.
Как я понял умение правильно смотреть данные тоже признак профессионала.
В предыдущем посте я описал своими словами то, что я сделал, так как я думаю, что код выкладывать тут пока не требуется.

Сообщение отредактировал smeilz - 10.07.2020 - 15:16
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
 

2 страниц V   1 2 >
Добавить ответ в эту темуОткрыть тему