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

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

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





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



Всем добрый день.

Самая первая/последняя книга по данной тематике, которую читал - Mair P. Modern Psychometrics with R (Use R!). 2018, https://doi.org/10.1007/978-3-319-93177-7 . В книге есть картинка (в приложении), примеры получения результатов PCA при помощи Gifi на интервальных данных. Объяснение математики там коротенькое:

"First of all, Gifi models involve dimension reduction, just as principal component analysis (PCA) and correspondence analysis (CA). Let p be the number of dimensions which needs to be fixed a priori. Let H be an n × m data matrix. Correspondingly, hj represents the column vector for variable j with kj as the number of categories. For each variable we define an indicator matrix Gj of dimension n×kj, consisting of 0s and 1s in the case of categorical data. These indicator matrices can be then collected in an indicator supermatrix G = (G1| . . . |Gm). Each variable is associated with a matrix Yj of dimension kj × p containing the category quantifications. The final component we need is the matrix X. It contains the so-called object scores and is of dimension n × p. At the end of the day, each person gets a score in the p-dimensional space, and each category of variable j gets an optimally scaled category quantification in p dimensions. Since we scale both the objects and the variables, these methods are sometimes referred to as dual scaling methods. Putting all these ingredients together, Gifi establishes the following loss function:

σ(X, Y1, . . . , Ym) = m ЗНАК СУММЫ j=1 tr(X − Gj Yj )(X − Gj Yj )

The right-hand side of the equation represents a sum-of-squares (SS) expression that needs to be minimized. This can be achieved by an alternating least squares (ALS) algorithm. This loss formulation is very general, and, depending on the particular Gifi model we fit, it simplifies correspondingly, or, for some versions, it can even get more complicated (see De Leeuw and Mair, 2009a)."

По моему опыту использования движок в пакете Gifi делает оптимальное шкалирование лучше функции lineals пакета {aspect}. Настроек там много, лучший вариант трансформации приходится искать перебором. К сожалению в пакете нет отдельной возможности получить просто трансформацию данных без последующего выполнения PCA. В этой связи приходится трансформированные данные извлекать из большого контейнера с данными. Есть ещё пакеты {optiscale}, {bestNormalize} и {smacof}, которые могут быть полезны при решении вопроса трансформации данных.

Ссылки из книги:
De Leeuw, J. (1988). Multivariate analysis with linearizable regressions. Psychometrika, 53, 437?454.
De Leeuw, J., & Mair, P. (2009a). Gifi methods for optimal scaling in R: The package homals. Journal of Statistical Software, 31(1), 1?21. https://www.jstatsoft.org/index.php/jss/article/view/v031i04
De Leeuw, J., & Mair, P. (2009b). Simple and canonical correspondence analysis using the R package anacor. Journal of Statistical Software, 31(5), 1?18. http://www.jstatsoft.org/v31/i05/
De Leeuw, J., Mair, P., & Groenen, P. J. F. (2017). Multivariate analysis with optimal scaling. http://gifi.stat.ucla.edu/gifi/_book/
Gifi, A. (1990). Nonlinear multivariate analysis. Chichester: Wiley.
Haegeli, P., Gunn, M., & Haider, W. (2012). Identifying a high-risk cohort in a complex and dynamic risk environment: Out-of-bounds skiing?An example from avalanche safety. Prevention Science, 13, 562?573.
Hoyle, R. H., Stephenson, M. T., Palmgreen, P., Pugzles Lorch, E., & Donohew, R. L. (2002). Reliability and validity of a brief measure of sensation seeking. Personality and Individual Differences, 32, 401?414.
Jacoby, W. G. (1991). Data theory and dimensional analysis. Thousand Oaks: Sage.
Jacoby, W. G. (1999). Levels of measurement and political research: An optimistic view. American Journal of Political Science, 43, 271?301.
Koller, I., Levenson, M. R., & Glück, J. (2017). What do you think you are measuring? A mixedmethods procedure for assessing the content validity of test items and theory-based scaling. Frontiers in Psychology, 8(126), 1?20.
Linting, M., Meulman, J. J., Groenen, P. J. F., & van der Kooij, A. J. (2007). Nonlinear principal components analysis: Introduction and application. Psychological Methods, 12, 336?358.

Профили авторов пакета {Gifi} с их публикациями:
https://www.researchgate.net/profile/Jan_De_Leeuw
https://www.researchgate.net/profile/Patrick_Mair

Может кому-то пригодится.

Эскизы прикрепленных изображений
Прикрепленное изображение
 
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
 
ogurtsov
сообщение 10.07.2020 - 18:23
Сообщение #17





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



Цитата(smeilz @ 10.07.2020 - 15:09) *
Спасибо за вопросы и ответы.
Хорошо.
Есть датасет.
В нем примерно 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.

Вроде прояснилось.
Все деления по точности предиктов на трейне или даже на валидации бесполезны: для новых наблюдений все равно неизвестно, ошибается ли модель.
Вам нужна калибровка вероятности, которую дает классификатор - см., например, https://dyakonov.org/2020/03/27/%d0%bf%d1%8...81%d1%82%d0%b8/ Суть в том, что даже если классификатор выдает число в диапазоне от 0 до 1 (как логрег или более сложная нейросетка с сигмоидой на выходе), то это число лишь похоже на вероятность принадлежности к классу, но на самом деле вероятностью не является.
При помощи калибровки можно приблизить выхлоп модели к истинной оценке уверенности в предсказании, т.е. после калибровки в среднем из 100 предиктов со значением 0.6 в 60% случаев будет верно предсказан целевой класс.

Если копнуть еще глубже, то можно заняться интерпретацией модели с целью понять, почему она дает тот или иной ответ. Подходов много, но для выявления "проблемных" наблюдений можно прикрутить что-то типа https://pbiecek.github.io/ema/localDiagnostics.html

Сообщение отредактировал ogurtsov - 10.07.2020 - 18:26


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





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



Ну вот, господа кластеризаторы и примкнувшие к ним нейросетевики )

А ларчик-то просто открывался: исследователь понимает, что на некоторых тестовых выборках прогноз будет неудовлетворительным. Отсюда все разговоры про заранее неизвестное число кластеров-сегментов в выборке, на которых "поведение классов будет..."В общем, что-то будет. В этой связи он желает выбросить все те наблюдения, которые искажают его картину мира. Сместив тем самым выборку и осознанно повысив переобученность модели. При этом напрочь забымши о том, что кросс-валидация модели основана на повторных выборках (выборках с возвращением).

Действительно, а что еще делать, если ЭВМ показывает не то, что нужно?
Главное в этой истории - потом гордо написать в резюме "работаю и на Питоне и на R".

Smeilz, надеюсь вам понятно, что все, что вы делаете, - из серии "как не надо заниматься статистикой"?

Только, чур, без обид.

Сообщение отредактировал 100$ - 10.07.2020 - 18:47
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
 
ogurtsov
сообщение 10.07.2020 - 19:14
Сообщение #19





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



Цитата(100$ @ 10.07.2020 - 18:32) *
Ну вот, господа кластеризаторы и примкнувшие к ним нейросетевики )

А ларчик-то просто открывался: исследователь понимает, что на некоторых тестовых выборках прогноз будет неудовлетворительным. Отсюда все разговоры про заранее неизвестное число кластеров-сегментов в выборке, на которых "поведение классов будет..."В общем, что-то будет. В этой связи он желает выбросить все те наблюдения, которые искажают его картину мира. Сместив тем самым выборку и осознанно повысив переобученность модели. При этом напрочь забымши о том, что кросс-валидация модели основана на повторных выборках (выборках с возвращением).

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


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





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



Цитата(ogurtsov @ 10.07.2020 - 19:14) *
Я все же надеюсь, что целью было понять границы применимости модели и просто не использовать ее "в проде" (в какой-то системе поддержки принятия решений?) там, где нормальное качество получить не получается.
Ну и accuracy 62% при том, что константное предсказание преобладающего класса дает 57% - это обычно очень плохо, в том числе с точки зрения калибровки и интерпретации предсказаний модели.


"Ах, обмануть меня не трудно -
Я сам обманываться рад" ©
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
 
smeilz
сообщение 10.07.2020 - 21:53
Сообщение #21





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



Цитата(100$ @ 10.07.2020 - 18:32) *
Ну вот, господа кластеризаторы и примкнувшие к ним нейросетевики )

А ларчик-то просто открывался: исследователь понимает, что на некоторых тестовых выборках прогноз будет неудовлетворительным. Отсюда все разговоры про заранее неизвестное число кластеров-сегментов в выборке, на которых "поведение классов будет..."В общем, что-то будет. В этой связи он желает выбросить все те наблюдения, которые искажают его картину мира. Сместив тем самым выборку и осознанно повысив переобученность модели. При этом напрочь забымши о том, что кросс-валидация модели основана на повторных выборках (выборках с возвращением).

Действительно, а что еще делать, если ЭВМ показывает не то, что нужно?
Главное в этой истории - потом гордо написать в резюме "работаю и на Питоне и на R".

Smeilz, надеюсь вам понятно, что все, что вы делаете, - из серии "как не надо заниматься статистикой"?

Только, чур, без обид.


У меня нет резюме, и я занимаюсь этим для своего личного проекта.
Хорошо, я специально ради Вас разобью выборку на 2-3 логических сегмента(я немного представляю откуда данные и как их можно разбить без математики), и попробую обучить каждый по-отдельности и потом доложу о результатах, и они могут Вас расстроить. =)
Хотя возможно и расстроюсь я. =(
P.S. Если что я не обидчивый, просто мне интересно искать истину в экспериментах, ну и учиться на своих ошибках.
P.P.S У меня есть похожие данные из немного другой выборки, попробую посчитать точность прогноза на этих данных

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





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



Цитата(ogurtsov @ 10.07.2020 - 19:14) *
Я все же надеюсь, что целью было понять границы применимости модели и просто не использовать ее "в проде" (в какой-то системе поддержки принятия решений?) там, где нормальное качество получить не получается.
Ну и accuracy 62% при том, что константное предсказание преобладающего класса дает 57% - это обычно очень плохо, в том числе с точки зрения калибровки и интерпретации предсказаний модели.

То есть в целом по такой precision можно сказать, что модель плохая? (И в том после имел ввиду precision конечно)
И второй вывод, который я понял из Ваших слов: Если бы accuracy была 57% при дисбалансе предсказываемого класса 57/43, то мы получили бы абсолютный рандом?
Если для Вас это очевидно, то я узнал это в процессе беседы с Вами, и для меня это уже польза и продвижение.
Я просто медленно учусь, но упорно. =)

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





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



Цитата(ogurtsov @ 10.07.2020 - 18:23) *
Вроде прояснилось.
Все деления по точности предиктов на трейне или даже на валидации бесполезны: для новых наблюдений все равно неизвестно, ошибается ли модель.
Вам нужна калибровка вероятности, которую дает классификатор - см., например, https://dyakonov.org/2020/03/27/%d0%bf%d1%8...81%d1%82%d0%b8/ Суть в том, что даже если классификатор выдает число в диапазоне от 0 до 1 (как логрег или более сложная нейросетка с сигмоидой на выходе), то это число лишь похоже на вероятность принадлежности к классу, но на самом деле вероятностью не является.
При помощи калибровки можно приблизить выхлоп модели к истинной оценке уверенности в предсказании, т.е. после калибровки в среднем из 100 предиктов со значением 0.6 в 60% случаев будет верно предсказан целевой класс.

Если копнуть еще глубже, то можно заняться интерпретацией модели с целью понять, почему она дает тот или иной ответ. Подходов много, но для выявления "проблемных" наблюдений можно прикрутить что-то типа https://pbiecek.github.io/ema/localDiagnostics.html


Благодарю. Прочитал статью, буду изучать.
Что я сделал?
Я взял 3 похожих датасета только даже большего размера.
1 была совсем похожа и 2 других несколько отличались.
Установил те же границы prob0 и prob1 выбора класса0 и класса1, при которой процент верных прогнозов для класса1 не менее 69% и для класса0 не менее 55%.
Иными словами я сделал то, за что меня осудил 100$ и вы сказали, что это вероятностью не является, но я пока не могу применить знания из статьи и просто провожу эксперименты.
То есть отсекал все прогнозы, если Prob0 < эмпирического x1, и Prob1 < x2
РЕзультаты:
Для первого датасета, который был очень похож
1 Похожий датасет Дал 68.5% класс1 и 55.5% класс0
2 Менее похожих датасета дали нам 68% и 70% для класса1 и 51% и 51% для класса0

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

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

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





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



Цитата(100$ @ 10.07.2020 - 18:32) *
А ларчик-то просто открывался: исследователь понимает, что на некоторых тестовых выборках прогноз будет неудовлетворительным. Отсюда все разговоры про заранее неизвестное число кластеров-сегментов в выборке, на которых "поведение классов будет..."В общем, что-то будет. В этой связи он желает выбросить все те наблюдения, которые искажают его картину мира. Сместив тем самым выборку и осознанно повысив переобученность модели. При этом напрочь забымши о том, что кросс-валидация модели основана на повторных выборках (выборках с возвращением).


Я кстати не собирался Вам доказывать, что разбиение необходимо, мне просто было интересно рассуждать вслух. Сейчас я пришел к выводу, что данные разбивать бесмысленно, если не знаешь почему эти сегменты могут иметь различные закономерности. В моем случае есть один вариант разбиения на 2 сегмента, но он практически пока слишком сложный в реализации, и я его отложу, и возьму все данные целиком.
И кстати меня учили, что один из главных признаков переобученности модели - это, когда precision, logloss сильно прыгает как на train/test, так и на новых похожих данных.
Пока мои эксперименты такого не показали.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
 
100$
сообщение 10.07.2020 - 22:56
Сообщение #25





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



Цитата(smeilz @ 10.07.2020 - 21:53) *
Хорошо, я специально ради Вас разобью выборку на 2-3 логических сегмента(я немного представляю откуда данные и как их можно разбить без математики), и попробую обучить каждый по-отдельности и потом доложу о результатах, и они могут Вас расстроить. =)


А я в виде ответной любезности напоминаю, что когда вы получите на 2-3 стратах ансамбль классификаторов, прежде чем предъявлять его мне, не забудьте предварительно усредниться по ансамблю. Иначе я точно расстроюсь.

"Я ухожу - легка моя дорога;
Теперь пойду по новому пути.
Таких, как вы, себе найду я много,
Таких, как я, вам больше не найти"

Народная песня.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
 
passant
сообщение 10.07.2020 - 23:18
Сообщение #26





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



Цитата(smeilz @ 10.07.2020 - 22:42) *
Я кстати не собирался Вам доказывать, что разбиение необходимо, мне просто было интересно рассуждать вслух. Сейчас я пришел к выводу, что данные разбивать бесмысленно, если не знаешь почему эти сегменты могут иметь различные закономерности. В моем случае есть один вариант разбиения на 2 сегмента, но он практически пока слишком сложный в реализации, и я его отложу, и возьму все данные целиком.

Ну, я специально тут молча постоял в сторонке, пока шло обсуждение. И я рад, что суммарная рекомендация, которая выработалась в ходе дискуссии практически совпало с тем, о чем я вам говорил на другом форуме.
Держите нас в курсе своих изысканий, будет интересно.
И лучше на этом форуме. Тут вас, конечно, побъют сильнее wink.gif , зато и профессиональнее, а значит - полезнее для дальнейшего научного опыта.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
 

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