2014 dxdy logo

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

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




Начать новую тему Ответить на тему На страницу Пред.  1, 2, 3, 4
 
 Re: Какие алгоритмы наиболее толерантны к пропускам в данных?
Сообщение09.09.2019, 22:57 


07/10/15

2400
mserg в сообщении #1414296 писал(а):
Поэтому можно сказать, что XGBoost принимает пропуски, хотя NaN ему не скормить

Почитал, правда не до конца. Пишут, что действительно XGBoost обходит пропуски, похоже на то, что действительно обходит, а не заполняет. Как оно на самом деле, ТС скоро узнает сам, кажется начать он решил именно с него.

 Профиль  
                  
 
 Re: Какие алгоритмы наиболее толерантны к пропускам в данных?
Сообщение10.09.2019, 12:03 


10/03/16
4444
Aeroport
mserg в сообщении #1414296 писал(а):
Это работа Gilles Louppe, называется "UNDERSTANDING RANDOM FORESTS"


Many thanks

Andrey_Kireew в сообщении #1414277 писал(а):
почему Вы считаете, что этот алгоритм больше похож на бустинг а не беггинг?


:appl: :appl: :appl: :appl: :appl:
А я всё ждал -- когда же вы меня подловите! К своему стыду я путаю термины )))

 Профиль  
                  
 
 Re: Какие алгоритмы наиболее толерантны к пропускам в данных?
Сообщение17.09.2019, 00:34 


02/05/18
45
Друзья, всем привет!
Докладываю о промежуточных итогах:
1) Уменьшил выборку до ~ 7 тыс. примеров и сократил количество признаков до 54.
2) Протестировал два подхода: импутация пропусков (замещение средними/медианными значениями) и работа с пропусками (замена на резко отрицательное число -999999). Использовал классификатор CatBoostClassifier, в первом случае прогнозная точность на новых примерах находится в районе 65%, во втором случае в районе 73%. Контрольная выборка 10% от набора данных. Метрика "доля правильных ответов". Полагаю, что на кросс-валидации точность может быть улучшена.

Работу ещё не закончил, планирую постепенно добавлять/удалять признаки для повышения точности.

 Профиль  
                  
 
 Re: Какие алгоритмы наиболее толерантны к пропускам в данных?
Сообщение18.09.2019, 15:54 


07/10/15

2400
Alex7 в сообщении #1415495 писал(а):
в первом случае прогнозная точность на новых примерах находится в районе 65%, во втором случае в районе 73%

Очень интересные результаты. Они позволяют предположить, что законы распределения некоторых признаков у Вас сильно асимметричны. В этом случае минимальное значение может оказаться лучше среднего и лучше медианы (уточняю, в Вашем случае значение -999999 следует интерпретировать как минимальное значение по выборке, в контексте древовидных алгоритмов это именно так).

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

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

И по поводу приведённых цифр, не совсем понятно, они получены с учётом корректировки на отброшенные наблюдения или нет?

И ещё, по поводу отбора признаков. Если это делать на основании кросс-валидации, то результаты самой кросс-валидации, строго говоря, перестают быть валидными. Если этим увлечься, то зайти можно очень далеко (может возникнуть иллюзия создания очень хорошего классификатора, хотя, в действительности всё будет с точностью до наоборот). На мой взгляд, надёжнее и лучше отбирать признаки по внутренним критериям, а кросс-валидацию использовать исключительно для проверки полученных результатов. Ну и чтобы дополнительно обезопасится, советую сразу случайным образом выделить из данных тестовую подвыборку, которая вообще не будет участвовать ни в обучении ни в кросс-валидации и использовать её только 1 раз, при окончательном тестировании модели. Только так можно приобрести хотя бы какую то уверенность в качестве классификатора, ибо риск переобучения в случае древовидных алгоритмов очень велик.

 Профиль  
                  
 
 Re: Какие алгоритмы наиболее толерантны к пропускам в данных?
Сообщение18.09.2019, 19:04 


02/05/18
45
Andrey_Kireew в сообщении #1415675 писал(а):
И по поводу приведённых цифр, не совсем понятно, они получены с учётом корректировки на отброшенные наблюдения или нет?

Ммм.. вы имеете ввиду участвовали ли эти данные в обучении? Если да, то ответ - не участвовали.

Andrey_Kireew в сообщении #1415675 писал(а):
из него видно, что минимальное значение, равное нулю, оказывается даже ближе к наиболее вероятному, коим является мода, чем медиана, а уж тем более - среднеарифметическое. Если признак положительный, а таких у Вас видимо много, то такая ситуация очень вероятна.

В наборе данных только положительные значения.

Andrey_Kireew в сообщении #1415675 писал(а):
На мой взгляд, надёжнее и лучше отбирать признаки по внутренним критериям

Спасибо, а что такое внутренние критерии?

 Профиль  
                  
 
 Re: Какие алгоритмы наиболее толерантны к пропускам в данных?
Сообщение18.09.2019, 19:47 


07/10/15

2400
Alex7 в сообщении #1415747 писал(а):
Ммм.. вы имеете ввиду участвовали ли эти данные в обучении? Если да, то ответ - не участвовали

Если так, и Вы получили 65% и 73% без их учёта, то можно предположить, что качество классификации отброшенных наблюдений будет 50%. С учётом этого
$$0,7\cdot0,65+0,3\cdot 0,5=0,605$$
$$0,7\cdot0,73+0,3\cdot 0,5=0,661$$
т.е. на всей выборке эти различия будут проявляться уже не так ярко. Вероятнее всего, так же будет и на неизвестных данных.

Alex7 в сообщении #1415747 писал(а):
В наборе данных только положительные значения

Значит, скорее всего, всё так как я написал. Постройте гистограммы распределения значений признаков, для начала хотя бы для нескольких, и увидите где там медиана, где среднее и где мода. Если все значения положительные, ставьте Вы хоть -99999, хоть -1, для древовидного алгоритма нет абсолютно никакой разницы.

В Вашем случае ещё можно рекомендовать box-cox transformation, возможно, его применение даст дополнительное улучшение.

Alex7 в сообщении #1415747 писал(а):
Спасибо, а что такое внутренние критерии?

Это критерии, позволяющие судить о качестве модели без использования контрольной выборки. Сами по себе, они обычно хуже характеризуют прогностическую способность, по сравнению с кросс-валидацией, но их вычислением, если оно возможно, пренебрегать не стоит. Ведь близость значений внутреннего критерия и результатов кросс-валидации свидетельствует об адекватности полученных результатов, и наоборот.
Для каждого метода разработаны свои внутренние критерии. Например, в классической линейной регрессии используется эмпирический коэффициент детерминации, который можно использовать так же и в дискриминанте Фишера. Качество логистической регрессии оценивается с помощью показателя псевдодетерминации. Разнообразны так же разнообразные информационные критерии, например критерий Акаике, по которым можно сравнивать модели с разным числом признаков. Есть ли что то подобное для деревьев, да и вообще для древовидных алгоритмов, я не знаю. Вполне возможно, что нет.

 Профиль  
                  
 
 Re: Какие алгоритмы наиболее толерантны к пропускам в данных?
Сообщение18.09.2019, 20:12 


02/05/18
45
Andrey_Kireew в сообщении #1415770 писал(а):
Если так, и Вы получили 65% и 73% без их учёта, то можно предположить, что качество классификации отброшенных наблюдений будет 50%

Мне кажется мы друг друга не поняли, см. листинг:

Код:
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=100, test_size=0.10)
clf = CatBoostClassifier(random_state=100, task_type='GPU', iterations=10000)
clf.fit(X_train, y_train, eval_set=(X_test, y_test), plot=True, verbose=False)


65% и 73% - это и есть качество отброшенных наблюдений (тестовых).
Точность модели на обучающей выборке 90%.

 Профиль  
                  
 
 Re: Какие алгоритмы наиболее толерантны к пропускам в данных?
Сообщение18.09.2019, 20:41 


07/10/15

2400
Alex7 в сообщении #1415786 писал(а):
Мне кажется мы друг друга не поняли

как же Вас понять, если вы пишите, что оставили 7 тыс. наблюдений из 10 тыс. (т.е. 30%), и потом указываете что объём тестовой выборки только 10%. 10% от чего, от 70% оставшихся? А как быть с теми 30%, которые Вы отбросили. Предпочитаете их просто игнорировать? Но это неправильно, ведь они объективно существуют. Среди неизвестных наблюдений могут встретиться такие же. И это будет случаться с вероятностью 30%. На них у Вас будет отказ классификации, придётся присваивать произвольное значение класса, вероятность угадать при этом будет только 50% а не 65 и не 73%.

-- 18.09.2019, 21:47 --

Alex7 в сообщении #1415786 писал(а):
Точность модели на обучающей выборке 90%

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

 Профиль  
                  
 
 Re: Какие алгоритмы наиболее толерантны к пропускам в данных?
Сообщение18.09.2019, 21:27 


02/05/18
45
Andrey_Kireew в сообщении #1415805 писал(а):
как же Вас понять, если вы пишите, что оставили 7 тыс. наблюдений из 10 тыс. (т.е. 30%), и потом указываете что объём тестовой выборки только 10%. 10% от чего, от 70% оставшихся? А как быть с теми 30%

Из-за уменьшения количества критериев у этих примеров не осталось данных, я при всём желании не смогу их использовать.

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


Спасибо, буду думать!

 Профиль  
                  
 
 Re: Какие алгоритмы наиболее толерантны к пропускам в данных?
Сообщение18.09.2019, 22:03 


17/10/08

1313
Поиск по "catboostclassifier parameters tuning" находит, что можно подкрутить. Если поиском выделить overfitting, то прямо видно куда смотреть в первую очередь.

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

 Профиль  
                  
 
 Re: Какие алгоритмы наиболее толерантны к пропускам в данных?
Сообщение18.09.2019, 22:08 


07/10/15

2400
Alex7 в сообщении #1415821 писал(а):
Из-за уменьшения количества критериев у этих примеров не осталось данных, я при всём желании не смогу их использовать

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

 Профиль  
                  
 
 Re: Какие алгоритмы наиболее толерантны к пропускам в данных?
Сообщение19.09.2019, 00:23 


02/05/18
45
Andrey_Kireew в сообщении #1415840 писал(а):
Если говоря не осталось данных Вы подразумеваете, что все значения признаков оказываются пропущены, то что мешает заполнить их все, например, значениями -99999?

Ничего не мешает. Только какой в этом смысл? Алгоритму ведь не за что будет зацепится, и он в условиях полной неопределенности не сможет найти паттерны на этих примерах. Мне кажется это будет просто шум. Ведь примеры не несут в себе информации.

mserg в сообщении #1415838 писал(а):
Поиск по "catboostclassifier parameters tuning" находит
, что можно подкрутить. Если поиском выделить overfitting, то прямо видно куда смотреть в первую очередь.

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

Большое спасибо, очень полезная информация, не знал!

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

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



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

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


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

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