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, Супермодераторы



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

Сейчас этот форум просматривают: Mihaylo


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

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