1 / 1 / 0
Регистрация: 01.07.2020
Сообщений: 11
1

Бинарная классификация

01.07.2020, 14:58. Показов 3136. Ответов 36

Author24 — интернет-сервис помощи студентам
Есть датасет с одним бинарным признаком(зависимой переменной) 0 или 1. Распределение 57/43
Моя задача найти такие сочетания признаков, при которых точность предсказаний 0/1 возрастет до 70% и выше.
И вторая задача создать шаблон на будущее для быстрого и удобного просмотра данных и предварительной оценки.
Также есть 80 независимых переменных, по которым будем предсказывать.
Как можно быстро провести визуальную аналитику и отбросить те, которые не имеют прогностической ценности?
Немного знаю язык R, мне кажется, что визуализация в нем гораздо проще делается, чем в Python.
Пока план такой.
1) Сделать визуализацию данных в R. Как сделать это быстро и удобно по 80 признакам и сразу отбросить ненужные? Или это делать не нужно?
2) Загрузить в Python и через Pandas быстро сделать прогон простым алгоритмом ML или даже просто перебором выяснить какая модель лучше всего подойдет и имеет наимененьшей эффект подгонки.

Сейчас разбил выборку на Train/test 70/30
Буду раз советам по первому пункту
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.07.2020, 14:58
Ответы с готовыми решениями:

Нейронка для чайника. Классификация
Всем привет. Не так давно начал изучение QtCreator и хочу разобраться с классификатором. По сети...

Классификация изображений на основе онтологии
Здравствуйте! Есть такая задача – разработать систему распознавания изображений на основе...

Классификация текста с нейронной сетью. начало
здравствуйте только начинаю вникать (сильно не пинайте) отталкиваюсь отсюда...

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

36
1485 / 1412 / 240
Регистрация: 19.02.2010
Сообщений: 3,912
06.07.2020, 14:38 21
Author24 — интернет-сервис помощи студентам
Цитата Сообщение от passant Посмотреть сообщение
Ага, в пространстве из 274 разных параметров (на математическом языке - 274-мерном пространстве). Много вы там увидите??
А чО такого?
Надо просто взять способ визуализации, который потянет исходные (непреобразованные) категориальные переменные, коих всего 80 штук.
Например, обычные параллельные координаты.
И пусть товарищ играет в "пятнашки", переставляя оси и отдельные категории (если состояния категориальных переменных не связаны отношением порядка) внутри осей туда-сюда
1
1 / 1 / 0
Регистрация: 01.07.2020
Сообщений: 11
06.07.2020, 23:48  [ТС] 22
Мне кстати посоветовали тему по выбору лучших предикторов.
https://blog.datadive.net/sele... m-forests/
0
1 / 1 / 0
Регистрация: 01.07.2020
Сообщений: 11
07.07.2020, 16:14  [ТС] 23
Цитата Сообщение от VTsaregorodtsev Посмотреть сообщение
А чО такого?
Надо просто взять способ визуализации, который потянет исходные (непреобразованные) категориальные переменные, коих всего 80 штук.
Например, обычные параллельные координаты.
И пусть товарищ играет в "пятнашки", переставляя оси и отдельные категории (если состояния категориальных переменных не связаны отношением порядка) внутри осей туда-сюда
А можно чуть более простым языком, если конечно Вас не затруднит? Я с трудом понимаю математический =)
Представьте, что вы играете в любую карточную игру.
В основном против Вас играют обычные игроки, против которых у Вас перевес математически 50 на 50.
Но иногда к Вам подсаживается игрок-новичок, он играет плохо, и против него перевес будет 80 на 20.
Вот этот датасет огромная куча игр,и признаки новичков мне неизвестны.
Так вот я хочу разделить это на 2 сегмента: игры с обычными игроками и игры с новичками. Очевидно, что это 2 разных сегмента игр.
Как мне это сделать по шагам?

Добавлено через 1 минуту
Цитата Сообщение от Skryp Посмотреть сообщение
Смотрите в сторону кластеризации - обучение без учителя. В Википедии приводят кучу других алгоритмов
https://ru.m.wikipedia.org/wik... 0%B8%D0%B7

Посмотрите тут https://www.google.com/amp/s/p... ython/amp/

По идеи ваши входные данные нужно распределить на два кластера - те что приводят к "1" и те что приводят к "0".
Ну бы не стал так разбивать, так как по сути оба сегмента содержат и 0 и 1, просто в разных соотношениях.

Добавлено через 1 минуту
Цитата Сообщение от passant Посмотреть сообщение
Еще раз. Зачем применять обучение без учителя, если ТС в первом посте написал

Зачем ОТБРАСЫВАТЬ имеющуюся информацию?
Я не отбрасываю, я просто пытаюсь поделить огромный массив на осмысленные сегменты(смысл подтверждается логически) и предсказать потом отдельно по сегментам.
Так что как предсказать в целом я понимаю, но вот как грамотно поделить на сегменты - это уже вопрос другой, и я думаю на будущее уметь грамотно это делать тоже было бы здорово.
0
645 / 521 / 72
Регистрация: 20.09.2014
Сообщений: 3,353
07.07.2020, 16:18 24
Цитата Сообщение от Smeilz Посмотреть сообщение
Вот этот датасет огромная куча игр,и признаки новичков мне неизвестны.
Если признаки неизвестны => неизвестен риск => неизвестен выигрыш/проигрыш.

Поэтому обучайте свою нейронку, чтобы она умела определять вероятность (это максимум, на что вы можете рассчитывать). И как только нейронка говорит "вероятность выигрыша 80%", верьте ей, она ведь умная и обученная на реальных примерах, вкладывайте максимум в этот риск!

Бинарную классификацию замените на регрессию с одним выходом.
1
Модератор
Эксперт функциональных языков программирования
3051 / 2193 / 459
Регистрация: 26.03.2015
Сообщений: 8,469
07.07.2020, 18:08 25
Цитата Сообщение от Smeilz Посмотреть сообщение
В основном против Вас играют обычные игроки, против которых у Вас перевес математически 50 на 50.
Но иногда к Вам подсаживается игрок-новичок, он играет плохо, и против него перевес будет 80 на 20.
А где вариант 20 на 80?
0
1485 / 1412 / 240
Регистрация: 19.02.2010
Сообщений: 3,912
07.07.2020, 18:29 26
Цитата Сообщение от Mikhaylo Посмотреть сообщение
Поэтому обучайте свою нейронку, чтобы она умела определять вероятность (это максимум, на что вы можете рассчитывать). И как только нейронка говорит "вероятность выигрыша 80%"
Ну, такое можно было бы советовать, если бы ТС обладал знаниями и самостоятельно, с пониманием всех применяемых алгоритмов (для чего они), конструировал бы нейронку.
Но скорее всего будет взят готовый пример на каком-нить Питоне, и изменятся всего лишь входная и выходная размерности.
И с учётом разработанных в последние годы focal loss / conservative loss есть шанс схватить пример именно с ними - и фиг там затем будут получаться высокие вероятности. Ибо эти лоси вероятностей до пределов не выкручивают - а ориентируются в первую очередь на получение правильных (после интерпретации значений выходов как номера класса) ответов от нейронки.
0
578 / 411 / 68
Регистрация: 09.01.2018
Сообщений: 1,361
07.07.2020, 20:44 27
Цитата Сообщение от Smeilz Посмотреть сообщение
Так вот я хочу разделить это на 2 сегмента: игры с обычными игроками и игры с новичками. Очевидно, что это 2 разных сегмента игр.
Как мне это сделать по шагам?
Знаете, как-то скучно повторять 256 раз. Но все-таки повторю.

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

Но если вы заранее знаете, что садится играть новичок или опытный игрок. Что именно при этом вы хотите ЕЩЕ выяснить???? Что вам надо предсказать "потом отдельно по сегментам"?? Шанс выиграть у новичка??? Так при чем тут машинное обучение и тем более - не к ночи будет помянут - "искусственный интеллект"??

Поставьте четко задачу, а то создается все более уверенное впечатление, что вы вообще не очень понимаете, а что в итоге вам надо?
1
1 / 1 / 0
Регистрация: 01.07.2020
Сообщений: 11
07.07.2020, 23:02  [ТС] 28
Цитата Сообщение от Mikhaylo Посмотреть сообщение
Если признаки неизвестны => неизвестен риск => неизвестен выигрыш/проигрыш.

Поэтому обучайте свою нейронку, чтобы она умела определять вероятность (это максимум, на что вы можете рассчитывать). И как только нейронка говорит "вероятность выигрыша 80%", верьте ей, она ведь умная и обученная на реальных примерах, вкладывайте максимум в этот риск!

Бинарную классификацию замените на регрессию с одним выходом.
К сожалению я не умею писать нейронки, умею пользоваться только алгоритмами машинного обучения, например Catboost и вот его Prob0 и prob1 к сожалению не совпал с реальными вероятностями класса 1 и 0. То есть отобрал все случаи, где система была уверена 70% и более, а по факту процент угадывания класса был намного меньше 70%.

Добавлено через 3 минуты
Цитата Сообщение от passant Посмотреть сообщение
Знаете, как-то скучно повторять 256 раз. Но все-таки повторю.

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

Но если вы заранее знаете, что садится играть новичок или опытный игрок. Что именно при этом вы хотите ЕЩЕ выяснить???? Что вам надо предсказать "потом отдельно по сегментам"?? Шанс выиграть у новичка??? Так при чем тут машинное обучение и тем более - не к ночи будет помянут - "искусственный интеллект"??

Поставьте четко задачу, а то создается все более уверенное впечатление, что вы вообще не очень понимаете, а что в итоге вам надо?
Нет, я не знаю заранее новичок он или опытный игрок.
Мне нужно сначала классифицировать его по имеющимся данным, то есть отнести с определенной вероятностью к тому или иному классу, и уже затем делать предсказание для данного класса.
В итоге вопрос какой метод кластеризации лучше применить?
0
645 / 521 / 72
Регистрация: 20.09.2014
Сообщений: 3,353
08.07.2020, 05:09 29
Цитата Сообщение от Smeilz Посмотреть сообщение
Нет, я не знаю заранее новичок он или опытный игрок.
Мне нужно сначала классифицировать его по имеющимся данным, то есть отнести с определенной вероятностью к тому или иному классу, и уже затем делать предсказание для данного класса.
В итоге вопрос какой метод кластеризации лучше применить?
Нее, вы не поняли.
Если у вас есть часть размеченных данных и на них вы обучаете любой алгоритм машинного обучения, рассчитанный на классификацию, а затем применяете его для предсказания на неразмеченных данных, т.е. уже в боевых условиях, то ваш выбор верен - алгоритм бинарной классификации. Бинарный классификатор отбирает примеры с вероятностью p>0,5, а вам надо отбор p>0,66, так возьмите алгоритм регрессии с выходом probability и сравнивайте с любой вероятностью. Скачайте похожую библиотеку Sci-kit learn, если CatBoost не умеет регрессию, тем более первую упоминают в CatBoost.

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

Добавлено через 2 минуты
В CatBoost есть overfitting detector, сможете им проверить факт переобучения?

Добавлено через 36 минут
Ещё один тупик не упомянул: нерешаемость самой задачи, т.е. бесполезно искать закономерности в белом шуме, признаки не связаны или слабо связаны с ответами алгоритма.
1
странный недолёкий чел
748 / 474 / 123
Регистрация: 31.10.2016
Сообщений: 3,957
09.08.2020, 18:24 30
Smeilz, правильно ли я понимаю, что Вы хотите разделить все наблюдения выборки на 2 группы, первая из которых позволяет построить бинарный точный классификатор (с точностью более 65% по признаку r_raiser_action), а вторая - менее точный . В последствие, номер группы Вы планируете использовать как новый признак, и именно его предсказание является Вашей главной целью?

Добавлено через 14 минут
И кстати, в Вашем примере r_raiser_action при r_caller_action = 1 принимает 4 возможных значения "0", "2", "3" и "4". В основном, конечно "2" и "3", но как быть с остальными? Ведь в бинарной классификации только 2 класса. "0" и "2" считать одним классом, а "3" и "4" другим? или как?
0
1 / 1 / 0
Регистрация: 01.07.2020
Сообщений: 11
10.08.2020, 07:13  [ТС] 31
Цитата Сообщение от Alexis333 Посмотреть сообщение
Smeilz, правильно ли я понимаю, что Вы хотите разделить все наблюдения выборки на 2 группы, первая из которых позволяет построить бинарный точный классификатор (с точностью более 65% по признаку r_raiser_action), а вторая - менее точный . В последствие, номер группы Вы планируете использовать как новый признак, и именно его предсказание является Вашей главной целью?

Добавлено через 14 минут
И кстати, в Вашем примере r_raiser_action при r_caller_action = 1 принимает 4 возможных значения "0", "2", "3" и "4". В основном, конечно "2" и "3", но как быть с остальными? Ведь в бинарной классификации только 2 класса. "0" и "2" считать одним классом, а "3" и "4" другим? или как?
Да, все верно. Можно 0 считать первым классом, а все остальные цифры вторым классом. Какие у Вас мысли на этот счет?
0
645 / 521 / 72
Регистрация: 20.09.2014
Сообщений: 3,353
10.08.2020, 07:33 32
В датасайенсе важно на вещи смотреть так, как они на самом деле устроены. У Виктора Царегородцева скоро поп-корн кончится смотреть на попытки искусственного подбора какой-то комбинации на базе взятого с потолка алгоритма...
0
странный недолёкий чел
748 / 474 / 123
Регистрация: 31.10.2016
Сообщений: 3,957
10.08.2020, 12:48 33
Цитата Сообщение от Smeilz Посмотреть сообщение
Какие у Вас мысли на этот счет?
Сейчас рано делать какие либо заявления или выводы, данные довольно большие, требуется предварительный анализ.
Чтобы упростить задачу, ответьте пожалуйста, какие столбцы точно не являются информативными? Вопрос не про столбцы с одинаковыми значениями, а про даты, названия файлов и т.п. Дело в том, что данные этих столбцов могут коррелировать с целевым показателем r_raiser_action, хотя корреляция эта может быть ложной. Определить этот момент может только специалист в предметной области (в Вашем случае в покере), коим я не являюсь.
Так же в таблице есть столбец, содержащий наименования 3-х карт. Имеет ли значение порядок их следования?

В общем, идея сейчас одна - привести данные к пригодному для дальнейшего анализа виду
0
странный недолёкий чел
748 / 474 / 123
Регистрация: 31.10.2016
Сообщений: 3,957
11.08.2020, 15:22 34
Категории предварительно можно заменить числами, NaN - нулями. Тогда получится однородный dataset. Features в нём, на первом этапе, можно анализировать с помощью корреляций. По результатам такого анализа у меня осталось только 60 значимых features. К стати, мой вопрос по поводу полей с датами, именами файлов и т.п. снимается, все они оказались не значимы.
0
странный недолёкий чел
748 / 474 / 123
Регистрация: 31.10.2016
Сообщений: 3,957
13.08.2020, 18:01 35
Удалось выделить 17 факторов (features), все остальные оказались несущественными, построил на них логистическую регрессию. Вот, что получилось:
Бинарная классификация
максимальное значение Accuracy 0.6, также, как и у ТС. Но это метод плохо подходит для категориальных данных, поэтому от других алгоритмов можно ожидать заметного улучшения. Есть смысл попробовать ещё с деревьями
0
странный недолёкий чел
748 / 474 / 123
Регистрация: 31.10.2016
Сообщений: 3,957
14.08.2020, 13:45 36
Цитата Сообщение от Smeilz Посмотреть сообщение
Я пытался использовать библиотеку Catboost, но выше 62% качество прогноза не поднималось
Попробовал деревья, правда не CatBost, а простые одиночные, но результаты получились такие: максимумальная точность на обучающем множестве 89%, но на кросс-валидации этот показатель падает до 53%. Наложение ограничений на листья, максимальное число ветвлений, повышает точность на кросс-валидации до 60%, причём, точность на обучающем множестве снижается тоже до 60% (различия train-accurate и CV-accurate только в третьем знаке).
Вообще, дерево получилось очень компактное, содержит всего 5 узлов, и использует только 5 признаков
Бинарная классификация
Учитывая результаты, полученные с логистической регрессией, можно предположить, что accurate=60% это предел для Ваших данных. Всё, что выше этого - скорее всего результат overfitting. Просто на кросс-валидации это не всегда удаётся выявить, особенно, с случае ансамблей алгоритмов.
0
странный недолёкий чел
748 / 474 / 123
Регистрация: 31.10.2016
Сообщений: 3,957
14.08.2020, 14:13 37
Ну и по поводу разбиения на группы. Правильно я понимаю Smeilz, что всё это в конечном счёте сводится к определению надёжности результатов классификации? Если так, то существуют алгоритмы, позволяющие её оценивать.
Это и логистическая регрессия, и ансамбли деревьев, и нейросети. Нужно пробовать.

После некоторых размышлений, я пришел к выводу, что Ваша идея с разбиением, имеет смысл только в случае линейного классификатора. Да в этом случае может возникнуть ситуация с регрессионной неоднородностью, когда одна модель не может одинаково хорошо работать на всех данных. Тогда данные делятся на подвыборки, для каждой из которых строится отдельная модель. Есть даже тест Чоу на регрессионную неоднородность, показывающий, есть ли смысл строить несколько моделей, или достаточно одной.

Но повторяюсь, это всё имеет смысл только для линейного классификатора. Деревья и нейросети таковыми не являются, для них, само понятие неоднородности теряет смысл.
0
14.08.2020, 14:13
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.08.2020, 14:13
Помогаю со студенческими работами здесь

Классификация временного ряда с использованием нейросети
Пишу дипломную работу, суть такова: необходимо классифицировать данные энцефалограммы с помощью...

Наивная байесовская классификация для датасета курсов
Добрый день, надо решить задачу классификации на категории предметов (физика, химия, органическая...

Минимальная Бинарная Heap
# В каконическом виде | Не в каноническом виде # | # (1) |...

Бинарная система счисления - деление
Добрый вечер! Запутался с делением в столбик. надо разделить 1101 1111 на 1111 пишу так: ...

Алгоритмическая задача бинарная последовательность
Естественно код не нужен, а только на словах

БДР(Бинарная диаграмма решений) реализация по формуле
Всем здрасьте ! Извините, если не туда написал. Допустим у меня есть огромная булевая формула от...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
37
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru