2014 dxdy logo

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

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




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


02/05/18
45
Друзья, всем привет!

Общая проблема:
Есть разряженный набор данных с двумя классами. Наблюдения у экземпляров класса могут могут прилично отличаться. Например, в одном экземпляре известны параметры: х1, х3, х4, х5; в другом экземпляре известны: х1, х2, х6 и т. д. При этом оба примера принадлежат одному классу.

Понимаю, что есть различные методики борьбы с пропусками. Мой вопрос кроется именно в том, чтобы сохранить пропуски.

Подскажите, какие алгоритмы наиболее толерантны к пропускам в данных на этапе обучения?

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


07/10/15

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

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


12/07/15
2907
г. Чехов
Большинство алгоритмов работают с гладкими-линейными зависимостями, таких очень много.

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

С такими данными непросто работать. Это надо понимать. Это значит, что алгоритмов может и не быть, они просто сложны для современного datascience.

Alex7 в сообщении #1413889 писал(а):
Например, в одном экземпляре известны параметры: х1, х3, х4, х5; в другом экземпляре известны: х1, х2, х6 и т. д. При этом оба примера принадлежат одному классу.

В данном примере трудно написать алгоритм, который классифицирует примеры правильно. Ну сами посудите.

Мне кажется, следует разработать модель образования данных с пропусками, т.е. объяснить, почему эти пропуски появляются, найти какие-то закономерности...

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


10/03/16
3855
Aeroport
Alex7 в сообщении #1413889 писал(а):
Например, в одном экземпляре известны параметры: х1, х3, х4, х5; в другом экземпляре известны: х1, х2, х6 и т. д. При этом оба примера принадлежат одному классу.


Смотрите random forest

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


31/10/08
1244
Andrey_Kireew
Andrey_Kireew в сообщении #1413917 писал(а):
Большинство алгоритмов, в своём. исходном виде, попросту непригодны, не говоря уже о толерантности.

Напротив. Все машинные алгоритмы должны обладать умение интерполировать данные и быть устойчивым к шумам.

Так что к пропускам непригодны разве, что самые примитивные.

Alex7
У вас нет конкретики в вопросе. Вам подойдут любой алгоритм: деревья решений(random forest), машина опорных векторов(SVM), нейронные сети(ANN и CNN), линейный классификатор, c-mean и k-mean, скользящего среднего(mean shift), самоорганизующаяся карта Кохонена и тд.

Судя по всему лучше вам обратить внимание на то, как работают с текстами.

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


07/10/15

2400
Pavia в сообщении #1413944 писал(а):
Все машинные алгоритмы должны обладать умение интерполировать данные и быть устойчивым к шумам.

Так что к пропускам непригодны разве, что самые примитивные


Что же Вы тогда советуете ТС
Pavia в сообщении #1413944 писал(а):
Вам подойдут любой алгоритм: деревья решений(random forest), машина опорных векторов(SVM), нейронные сети(ANN и CNN), линейный классификатор, c-mean и k-mean, скользящего среднего(mean shift), самоорганизующаяся карта Кохонена и тд.


по Вашему все эти алгоритмы устойчивы к шумам и способны работать с пропусками данных, без введения каких либо видоизменений?

-- 06.09.2019, 22:30 --

Alex7 в сообщении #1413889 писал(а):
Например, в одном экземпляре известны параметры: х1, х3, х4, х5; в другом экземпляре известны: х1, х2, х6 и т. д.

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

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


17/10/08

1313
Что-то я не совсем понимаю, в чем затруднение...

Если переменная категориальная, то проблемы нет, так как пропуск это просто одно из значений.

Если переменная числовая, то можно завести дополнительную пседвобулеву переменную - она принимает значение 1 если значение исходной переменной пропущено; и 0, если значение исходной переменной заполнено. Пропуски нужно заполнить, например, константой - нулем, средним и т.п.

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

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


07/10/15

2400
mserg в сообщении #1413965 писал(а):
Пропуски нужно заполнить, например, константой - нулем, средним и т.п.

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

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


31/10/08
1244
Andrey_Kireew в сообщении #1413949 писал(а):
по Вашему все эти алгоритмы устойчивы к шумам и способны работать с пропусками данных, без введения каких либо видоизменений?

Именно так.
Andrey_Kireew в сообщении #1413968 писал(а):
в этом вся и проблема, заполнять можно чем угодно, но лучше использовать для этого наиболее вероятные значения, а не нули и произвольные константы

Опять Вы ошибаетесь.

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


07/10/15

2400
Pavia в сообщении #1413971 писал(а):
Andrey_Kireew в сообщении #1413949

писал(а):
по Вашему все эти алгоритмы устойчивы к шумам и способны работать с пропусками данных, без введения каких либо видоизменений?
Именно так.

в таком случае продолжать беседу с вами не имеет никакого смысла

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


17/10/08

1313
Andrey_Kireew в сообщении #1413968 писал(а):
mserg в сообщении #1413965 писал(а):
Пропуски нужно заполнить, например, константой - нулем, средним и т.п.

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

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

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


07/10/15

2400
Всё верно, коэффициенты при dummy variables настроятся так, что при пропущенном признаке сумма заменяющей константы и соответствующего коэффициента как раз и будет равна оптимальному значению пропущенного признака, с точки зрения достижения максимального качества классификации на обучающей выборке. А это ведёт к переобучению. К тому же, при наличии существенной взаимосвязи между признаками, оптимальные для заполнения пропущенных значений одного и того же признака, для разных наблюдений будут разными. В этом случае эффект от dummy variables может вообще сойти на нет, а останутся только одни проблемы. На мой взгляд, применение такого ничем не оправдано.
К тому же
mserg в сообщении #1413965 писал(а):
Если переменная категориальная, то проблемы нет, так как пропуск это просто одно из значений.

это распространённое заблуждение - отождествлять неопределённость с нулём или ещё чем то конкретным.
Представьте сами для конкретики, пусть один из признаков - это вес человека. Для одного из наблюдений вес неизвестен. Поставим ноль, и к чему это приведёт в итоге? Да, в этом случае можно поставить dummy variable или сразу - наиболее вероятное значение веса. Это отчасти решит проблему. Ну а если распределение заполняемого признака туповершинное, или бимодальное? Например выборка состоит из мужчин с весом 90$\pm$15 кг и женщин с весов 60$\pm$15 кг. Какой константой заполнить пропуски? маловероятным значением 75? Можно конечно, но лучше заполнять зависящими от пола значениями. Это существенно повысит качество классификатора.

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


10/03/16
3855
Aeroport
Если пропущеное значение заполнять на локальной основе (интерполяция и т.д.), это будет сильно недостоверно, поскольку в каждом акте заполнения участвует мало данных. По итогу возможно это все не очень помешает, но и явно не поможет. Если пропуск (категориальной) переменной считать еще одним ее значением, то в случае неслучайного распределения пропусков процесс обучения может пойти не в ту сторону (типа как сетка научилась отличать амерские танки от совковых, просто потому что в Америке все время солнечно, а у нас -- дождливо.

ИМХО здесь нужен некий комитет решающих правил, каждое из которых ориентируется на свой (случайный) набор переменных и будет просто затыкаться, когда лично у него этот набор неполон. Как раз концепция random forest

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


07/10/15

2400
ozheredov в сообщении #1413981 писал(а):
то будет сильно недостоверно, поскольку в каждом акте заполнения участвует мало данных

Это не так. Всегда можно построить прогноз пропущенного значения по оставшимся признакам, причём на основании всей выборки. Пропуски в остальных признаках можно сначала принять равными их безусловным модам. Так пройтись несколько раз по всем признакам, и получится неплохая интерполяция.
С той же целью можно использовать нелинейное шкалирование. О нём можно почитать здесь [Краскэл Дж. Б. Взаимосвязь между многомерным шкалированием и кластер-анализом]. Насколько я помню, там прямо утверждается, что метод позволяет восстановить до 30% пропусков. Но лично, я с этим дела не имел, так что как оно на самом деле - не знаю.

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

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


12/07/15
2907
г. Чехов
Мы просто не знаем, чем вызваны пропуски. "Гадать по фото" можно бесконечно.

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

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



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

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


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

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