2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему На страницу 1, 2  След.
 
 Кросс-валидация и отбор признаков в задаче классификации
Сообщение14.10.2020, 22:56 


14/10/20
6
Добрый день.
Вероятно, я не до конца понимаю, что делает кросс-валидация, поэтому возник следующий вопрос.
Решаю задачу бинарной классификации. Имеется $n$ признаковых описаний объектов (features) и я хочу найти такое подмножество признаковых описаний из $n$-элементного множества признаковых описаний, которое бы максимизировало мою метрику (roc_auc_score).
Ввиду небольшого количества признаков (15 штук) и знания предметной области, общее количество подмножеств сокращается до порядка $2^{10}$ - т.е. полный перебор возможен.
Полным перебром нахожу интересующее подмножество.
Вопрос - зачем тут может понадобится кросс-валидация?
Кросс-валидация не поможет мне отыскать набор признаков, который максимизирует метрику, а лишь позволит посчитать мою метрику на разных разбиениях обучающей выборки, но это бессмысленно, так как оптимум был найден полным перебором, и второго оптимума нет.
В чем я ошибаюсь?
Верен ли тезис, что если задача может быть (на практике) решена полным перебором, кросс-валидация не нужна?
Кросс-валидация позволяет настроить только гиперпараметры "оценщика" (estimator в sklearn) - например, коэффициент регуляризации, вид регуляризации, критерий останова и т.п. ?

 Профиль  
                  
 
 Re: Кросс-валидация и отбор признаков в задаче классификации
Сообщение15.10.2020, 22:50 


12/07/15
2907
г. Чехов
Кросс-валидация - это технология, которая используется при недостатке размеченных данных. Вам надо размеченные данные разделить на обучающие 80% и тестовые 20%. А вы посчитали количество тех 20% и прослезились... Вот тут на помощь приходит кросс-валидация - это когда примеры попеременно по нескольку раз выступают в качестве обучающих и в другой раз в качестве тестовых...

-- 16.10.2020, 01:04 --

Что касается полного перебора, то тут надо понять такую вещь: машинное обучение применяется для задач интуитивного характера, когда нельзя сказать, является ли решение правильным или неправильным. Здесь есть только хорошие и плохие решения, а хорошо и плохо - это когда нельзя утверждать, что идеально плохо 0% или идеально хорошо 100%. Нету в машинном обучении категорических утверждений...
Вам нужно избавиться от строгого мышления программиста и начать мыслить не строго (как математики-статистики и их друзья дата-сайентисты). Я так понял ваш случай.

 Профиль  
                  
 
 Re: Кросс-валидация и отбор признаков в задаче классификации
Сообщение16.10.2020, 01:59 
Заслуженный участник
Аватара пользователя


16/07/14
8355
Цюрих
Beginner_DS в сообщении #1487168 писал(а):
Полным перебром нахожу интересующее подмножество
Вот тут вопрос - как вы проводите перебор. А именно, как вы оцениваете качество какого-то подмножетсва?
Mihaylo в сообщении #1487359 писал(а):
машинное обучение применяется для задач интуитивного характера, когда нельзя сказать, является ли решение правильным или неправильным
Это неправда. В большинстве случаев качество решения - вполне объективная характеристика.

 Профиль  
                  
 
 Re: Кросс-валидация и отбор признаков в задаче классификации
Сообщение16.10.2020, 12:49 


14/10/20
6
Mihaylo в сообщении #1487359 писал(а):
Кросс-валидация - это технология, которая используется при недостатке размеченных данных. Вам надо размеченные данные разделить на обучающие 80% и тестовые 20%. А вы посчитали количество тех 20% и прослезились... Вот тут на помощь приходит кросс-валидация - это когда примеры попеременно по нескольку раз выступают в качестве обучающих и в другой раз в качестве тестовых...

-- 16.10.2020, 01:04 --

Что касается полного перебора, то тут надо понять такую вещь: машинное обучение применяется для задач интуитивного характера, когда нельзя сказать, является ли решение правильным или неправильным. Здесь есть только хорошие и плохие решения, а хорошо и плохо - это когда нельзя утверждать, что идеально плохо 0% или идеально хорошо 100%. Нету в машинном обучении категорических утверждений...
Вам нужно избавиться от строгого мышления программиста и начать мыслить не строго (как математики-статистики и их друзья дата-сайентисты). Я так понял ваш случай.


Спасибо за ответ, но не совсем то - я не пытаюсь сказать, что есть истина а что нет, а лишь хочу получить приемлемое качество решения конкретной задачи используя указанный инструментарий.
Цитата:
mihaild в сообщении #1487377 писал(а):
Beginner_DS в сообщении #1487168 писал(а):
Полным перебром нахожу интересующее подмножество
Вот тут вопрос - как вы проводите перебор. А именно, как вы оцениваете качество какого-то подмножетсва?


У меня есть логрегрессия ($f(x,\theta)=\frac{1}{1+e^{-\left\langle x^{T},\theta\right\rangle}}$, где $\left\langle x^{T},\theta\right\rangle$ скалярное произведение вектора признаков на вектор параметров (весов) признаков, или, что то же самое, взвешенная сумма признаков.)
Я говорю, что некоторое подмножество $Xi$ "лучше" подмножества $Xj$, если площадь под ROC кривой для подмножества $Xi$ (логрегрессия обучена на элементах данного подмножества и на ее основе построена ROC кривая) больше, чем для подмножества $Xj$.
Для расчета площади использую стандартную функцию библиотеки sklearn - roc_auc_score.

 Профиль  
                  
 
 Re: Кросс-валидация и отбор признаков в задаче классификации
Сообщение16.10.2020, 12:55 
Заслуженный участник
Аватара пользователя


16/07/14
8355
Цюрих
Beginner_DS в сообщении #1487424 писал(а):
Я говорю, что некоторое подмножество $Xi$ "лучше" подмножества $Xj$, если площадь под ROC кривой для подмножества $Xi$ (логрегрессия обучена на элементах данного подмножества и на ее основе построена ROC кривая) больше, чем для подмножества $Xj$.
То есть вы учите и проверяете модель на одном и том же множестве?
Это неправильно, потому что можно легко упереться в переобучение - модель находит какие-то закономерности, которых на самом деле нет.
Линейные модели на небольшом количестве признаков к этому не слишком склонны (хотя так тоже бывает), с более сложными моделями это встает в полный рост. Представьте, например, что у вас модель, которая способна просто запомнить обучающую выборку, например 1-knn.

 Профиль  
                  
 
 Re: Кросс-валидация и отбор признаков в задаче классификации
Сообщение16.10.2020, 13:00 


10/03/16
3871
Aeroport
mihaild в сообщении #1487377 писал(а):
В большинстве случаев качество решения - вполне объективная характеристика.


Например, площадь под roc-кривой. Которая вполне определенная величина для обучающей/валидационной/тестовой выборки и меняется в боевом режиме плюс-минус квадратный километр по неизвестному закону. Так что Mihaylo в чём-то прав, хотя и не на 100%

-- 16.10.2020, 13:02 --

mihaild в сообщении #1487427 писал(а):
То есть вы учите и проверяете модель на одном и том же множестве?


ИМХО, он говорит про критерий сравнения подмножеств факторов. Надеюсь, что саму roc-кривую он строит по тестовой выборке. Если нет, то это десять фейспалмов из десяти )

 Профиль  
                  
 
 Re: Кросс-валидация и отбор признаков в задаче классификации
Сообщение16.10.2020, 13:18 


14/10/20
6
mihaild в сообщении #1487427 писал(а):
Beginner_DS в сообщении #1487424 писал(а):
Я говорю, что некоторое подмножество $Xi$ "лучше" подмножества $Xj$, если площадь под ROC кривой для подмножества $Xi$ (логрегрессия обучена на элементах данного подмножества и на ее основе построена ROC кривая) больше, чем для подмножества $Xj$.
То есть вы учите и проверяете модель на одном и том же множестве?
Это неправильно, потому что можно легко упереться в переобучение - модель находит какие-то закономерности, которых на самом деле нет.
Линейные модели на небольшом количестве признаков к этому не слишком склонны (хотя так тоже бывает), с более сложными моделями это встает в полный рост. Представьте, например, что у вас модель, которая способна просто запомнить обучающую выборку, например 1-knn.


Нет, я не обучаю и не проверяю модель на одном и том же множестве.
Исходную выборку я разбил на обучающую (70%) и тестовую (30%), и далее провожу перебор по подмножествам признаков, для каждого обучая модель на обучающей выборке и рассчитывая площадь под ROC кривой.
В итоге получаю максимальную величину площади и соответствующее ей подмножество признаков на обучающей выборке.
А потом с этими же признаками и подобранными к ним весами считаю площадь на тестовой выборке.
То есть я максимизирую величину площади именно на обучающей выборке.

-- 16.10.2020, 13:27 --

ozheredov в сообщении #1487430 писал(а):
mihaild в сообщении #1487377 писал(а):

mihaild в сообщении #1487427 писал(а):
То есть вы учите и проверяете модель на одном и том же множестве?

ИМХО, он говорит про критерий сравнения подмножеств факторов. Надеюсь, что саму roc-кривую он строит по тестовой выборке. Если нет, то это десять фейспалмов из десяти )

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

 Профиль  
                  
 
 Re: Кросс-валидация и отбор признаков в задаче классификации
Сообщение16.10.2020, 13:32 


10/03/16
3871
Aeroport
Beginner_DS
Разделите выборку на 3 части. По первой обучайте, по второй оптимизируйте подмножество факторов, по третьей проверяйте.

 Профиль  
                  
 
 Re: Кросс-валидация и отбор признаков в задаче классификации
Сообщение16.10.2020, 13:48 


14/10/20
6
ozheredov в сообщении #1487443 писал(а):
Beginner_DS
Разделите выборку на 3 части. По первой обучайте, по второй оптимизируйте подмножество факторов, по третьей проверяйте.


Можно пожалуйста подробнее.
Не очень понятно как это сделать: мне нужно обучить модель на конкретном подмножестве признаков (первая в вашей терминологии), на второй что я должен оптимизировать, если я уже обучил модель и могу посчитать результат (площадь) ?

 Профиль  
                  
 
 Re: Кросс-валидация и отбор признаков в задаче классификации
Сообщение16.10.2020, 14:40 
Заслуженный участник
Аватара пользователя


16/07/14
8355
Цюрих
Beginner_DS в сообщении #1487437 писал(а):
Нет, я не обучаю и не проверяю модель на одном и том же множестве
Beginner_DS в сообщении #1487437 писал(а):
То есть я максимизирую величину площади именно на обучающей выборке
Так вы площадь считаете по отложенной выборке, или нет?
Beginner_DS в сообщении #1487437 писал(а):
Исходную выборку я разбил на обучающую (70%) и тестовую (30%)
Ну вот проверять на отложенном множестве - один из вариантов. Хорошо работает, если у нас выборка большая. Если выборка маленькая - то откладывать достаточно существенную её часть, чтобы можно было достаточно точно оценивать качество, жалко, и используют кросс-валидацию.

 Профиль  
                  
 
 Re: Кросс-валидация и отбор признаков в задаче классификации
Сообщение16.10.2020, 15:09 


14/10/20
6
mihaild в сообщении #1487458 писал(а):
Beginner_DS в сообщении #1487437 писал(а):
Нет, я не обучаю и не проверяю модель на одном и том же множестве
Beginner_DS в сообщении #1487437 писал(а):
То есть я максимизирую величину площади именно на обучающей выборке
Так вы площадь считаете по отложенной выборке, или нет?


Последовательность действий
1. Исходную выборку разбиваю на обучение и контроль (70%/30%)
2. На обучающей выборке настраиваю алгоритм следующим образом:
2.1 Строю булеан множества признаков
2.2 Для каждого элемента из булеана обучаю логистическую регрессию (то есть подбираю вектор параметров). Вектор бинарных переменных, естественно имеется.
2.3 Считаю площадь под ROC кривой по обученной регресии из пункта 2.2 и вектору бинарных переменных
2.4 Если получившаяся площадь больше, чем лучшая за предшествующие итерации, присваиваю лучшей площади значение текущей, лучшее подмножество устанавливаю текущим подмножеством. Если площадь не больше предыдущей лучшей, перехожу к следующему элементу булеана (следующему подмножеству)
3. Пункты 2.3 и 2.4 повторяю до тех пор, пока не закончатся элементы в булеане
4. Результат после пункта 3 (подмножество факторов и вектор их коэффициентов) использую для расчета площади на тестовой выборке
Примерно такой подход.

 Профиль  
                  
 
 Re: Кросс-валидация и отбор признаков в задаче классификации
Сообщение16.10.2020, 15:23 


10/03/16
3871
Aeroport
Beginner_DS
На первой Вы обучаете модели для ВСЕХ возможных подмножеств.
На второй считаете площади и исходя из них делаете ВЫБОР в пользу оптимального подмножества факторов.
На третьей считаете площадь для модели, обученной на 1-й выборке, с факторами из подмножества, выбранного на 2-й (см. выше).
Счастливо потираете руки, если эта площадь (по третьей выборке) лезет хоть в какие-нибудь ворота

 Профиль  
                  
 
 Re: Кросс-валидация и отбор признаков в задаче классификации
Сообщение16.10.2020, 15:28 
Заслуженный участник
Аватара пользователя


16/07/14
8355
Цюрих
Beginner_DS в сообщении #1487465 писал(а):
обучение и контроль
Beginner_DS в сообщении #1487465 писал(а):
на тестовой выборке
У вас контроль и тестовая выборка - одно и то же, или нет?
Beginner_DS в сообщении #1487465 писал(а):
Считаю площадь под ROC кривой
Вопрос был, по какому множеству вы тут считаете площадь - по обучению или по контролю.
По обучению считать площадь малоосмысленно. По контролю можно, но нужно учитывать, что вы по сути учите модель и на контроле тоже (так как перебираете довольно большое пространство параметров), так что итоговое качество на контроле легко может оказаться завышенным.

 Профиль  
                  
 
 Re: Кросс-валидация и отбор признаков в задаче классификации
Сообщение16.10.2020, 15:50 


14/10/20
6
mihaild в сообщении #1487471 писал(а):
Beginner_DS в сообщении #1487465 писал(а):
обучение и контроль
Beginner_DS в сообщении #1487465 писал(а):
на тестовой выборке
У вас контроль и тестовая выборка - одно и то же, или нет?

Да, тестовая, контрольная, отложенная - одно и то же.
Beginner_DS в сообщении #1487465 писал(а):
Считаю площадь под ROC кривой
Вопрос был, по какому множеству вы тут считаете площадь - по обучению или по контролю.
mihaild в сообщении #1487471 писал(а):
По обучению считать площадь малоосмысленно. По контролю можно, но нужно учитывать, что вы по сути учите модель и на контроле тоже (так как перебираете довольно большое пространство параметров), так что итоговое качество на контроле легко может оказаться завышенным.

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

-- 16.10.2020, 15:50 --

ozheredov в сообщении #1487470 писал(а):
Beginner_DS
На первой Вы обучаете модели для ВСЕХ возможных подмножеств.
На второй считаете площади и исходя из них делаете ВЫБОР в пользу оптимального подмножества факторов.
На третьей считаете площадь для модели, обученной на 1-й выборке, с факторами из подмножества, выбранного на 2-й (см. выше).
Счастливо потираете руки, если эта площадь (по третьей выборке) лезет хоть в какие-нибудь ворота


Спасибо, попробую так сделать.

 Профиль  
                  
 
 Re: Кросс-валидация и отбор признаков в задаче классификации
Сообщение16.10.2020, 16:13 
Заслуженный участник
Аватара пользователя


16/07/14
8355
Цюрих
Beginner_DS в сообщении #1487475 писал(а):
Ну а как Вы будете настраивать признаки для модели?
Как написал ozheredov - разделяем выборку на train, validate и test. На train учим модель, на validate подбираем гиперпараметры, на test считаем итоговый результат.
По теме - кросс-валидация нужна, если размер выборки не позволяет выделить train и validate достаточных размеров. Если у нас данных условно бесконечно - то можно и просто разбить в начале.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 16 ]  На страницу 1, 2  След.

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group