2014 dxdy logo

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

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




Начать новую тему Ответить на тему
 
 Можно ли оценить относительную важность признаков?
Сообщение14.01.2019, 18:53 


02/05/18
45
Друзья, всем привет!
Прошу помочь разобраться с постановкой задачи, в чем суть:
Есть набор данных о реализации товара магазина одежды. Как можно оценить влияние критериев на принятие решения в каждом конкретном случае?
Мужчины например ориентируются на материал изделия, женщины больше на цвет. Как проранжировать эти условия?

Первое о чем подумал:
Gradient Boosting feature_importance
Но он не подходит потому-что делает оценку для всего обучающего набора. Мне же нужно относительно каждого примера.

У меня есть 10 признаков, я хочу понять какие из них в конкретном примере какой вес имеют, чтобы при наличии пропуска признака понимать, какой пропуск имеет наибольшее влияние на результат, чтобы именно его "заказывать", а какой можно компенсировать по MICE или IterativeImputer.

 Профиль  
                  
 
 Re: Можно ли оценить относительную важность признаков?
Сообщение14.01.2019, 19:09 
Заслуженный участник
Аватара пользователя


16/07/14
9248
Цюрих
Очевидный (хотя и не очень эффективный вариант) - поставить разные значения признака и посмотреть, насколько будут отличаться предсказания.

 Профиль  
                  
 
 Re: Можно ли оценить относительную важность признаков?
Сообщение14.01.2019, 19:33 


02/05/18
45
mihaild в сообщении #1368703 писал(а):
Очевидный (хотя и не очень эффективный вариант) - поставить разные значения признака и посмотреть, насколько будут отличаться предсказания.

А как это поможет определить feature-impact по строке?
Или вы имеете ввиду отслеживать изменение прогноза и на разницу менять важность?

 Профиль  
                  
 
 Re: Можно ли оценить относительную важность признаков?
Сообщение15.01.2019, 05:42 


12/07/15
3363
г. Чехов
Alex7 в сообщении #1368698 писал(а):
Как можно оценить влияние критериев на принятие решения в каждом конкретном случае?
Мужчины например ориентируются на материал изделия, женщины больше на цвет. Как проранжировать эти условия?

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

 Профиль  
                  
 
 Re: Можно ли оценить относительную важность признаков?
Сообщение15.01.2019, 15:13 
Заслуженный участник
Аватара пользователя


16/07/14
9248
Цюрих
Alex7 в сообщении #1368710 писал(а):
А как это поможет определить feature-impact по строке?
А что вы тут понимаете под feature impact?
Это поможет понять, какой признак для данной записи важнее всего выяснить.

 Профиль  
                  
 
 Re: Можно ли оценить относительную важность признаков?
Сообщение15.01.2019, 18:01 


02/05/18
45
Mihaylo в сообщении #1368781 писал(а):
Alex7 в сообщении #1368698 писал(а):
Как можно оценить влияние критериев на принятие решения в каждом конкретном случае?
Мужчины например ориентируются на материал изделия, женщины больше на цвет. Как проранжировать эти условия?

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

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

-- 15.01.2019, 19:08 --

mihaild в сообщении #1368853 писал(а):
Alex7 в сообщении #1368710 писал(а):
А как это поможет определить feature-impact по строке?
А что вы тут понимаете под feature impact?
Это поможет понять, какой признак для данной записи важнее всего выяснить.

У меня есть набор признаков 1, 2, 3, 4, 5, 6, 7, 8, 9, 10.
Я хочу узнавать их важность для каждой строки. Например:
2-1-5-8-7-3-4-6-10-9
Где 2 самый влиятельный на результат признак, а 9 наименее важный.
Это необходимо, чтобы понять какой признак нужно дозаказать, например вывести сообщение в покупателю интернет-магазина, а какой просто заполнить медианой или средним значением.
В любом случае, спасибо за помощь!

 Профиль  
                  
 
 Re: Можно ли оценить относительную важность признаков?
Сообщение15.01.2019, 18:09 
Заслуженный участник
Аватара пользователя


16/07/14
9248
Цюрих
Alex7 в сообщении #1368906 писал(а):
Где 2 самый влиятельный на результат признак, а 9 наименее важный.
А что вы понимаете под "важностью" тут?

 Профиль  
                  
 
 Re: Можно ли оценить относительную важность признаков?
Сообщение15.01.2019, 18:17 


02/05/18
45
mihaild в сообщении #1368909 писал(а):
Alex7 в сообщении #1368906 писал(а):
Где 2 самый влиятельный на результат признак, а 9 наименее важный.
А что вы понимаете под "важностью" тут?

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

 Профиль  
                  
 
 Re: Можно ли оценить относительную важность признаков?
Сообщение15.01.2019, 18:21 
Заслуженный участник
Аватара пользователя


16/07/14
9248
Цюрих
Ну вот в предположении что ваша модель хорошо работает и посмотрите, насколько сильно изменится результат при изменении значения признака.

 Профиль  
                  
 
 Re: Можно ли оценить относительную важность признаков?
Сообщение15.01.2019, 18:45 


12/07/15
3363
г. Чехов
Смотрите метод ассоциативных правил. Просто и сердито. Тема диплома Сергея Брина и Ларри Пейджа.

 Профиль  
                  
 
 Re: Можно ли оценить относительную важность признаков?
Сообщение15.01.2019, 19:53 


02/05/18
45
Mihaylo в сообщении #1368920 писал(а):
Смотрите метод ассоциативных правил. Просто и сердито. Тема диплома Сергея Брина и Ларри Пейджа.

Спасибо, обязательно посмотрю

 Профиль  
                  
 
 Re: Можно ли оценить относительную важность признаков?
Сообщение15.01.2019, 21:51 


02/05/18
45
Alex7 в сообщении #1368930 писал(а):
Mihaylo в сообщении #1368920 писал(а):
Смотрите метод ассоциативных правил. Просто и сердито. Тема диплома Сергея Брина и Ларри Пейджа.

Спасибо, обязательно посмотрю


Ознакомился с ARL («кто купил х, также купил y»), к сожалению это не моя задача.
Но спасибо за помощь, возьму метод на вооружение.

-- 15.01.2019, 22:57 --

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


Вы натолкнули меня на одну идею.., статистика есть. Я попробую отобрать категории лиц, и по переменным значениям рассчитать важность признака в зависимости от категории. А потом на контрольном примере, буду определять к какой категории относится новый объект и применять на него модель важности.

 Профиль  
                  
 
 Re: Можно ли оценить относительную важность признаков?
Сообщение17.01.2019, 21:37 


02/05/18
45
Всем спасибо за помощь!
Решение найдено. Листинг прикладываю.

Решение находится в библиотеке eli5, функция explain_weights, которая взвешивает примеры на полученной модели.

Код:
from concurrent.futures import ProcessPoolExecutor

future = X_train.columns.values.tolist()

def multiproc_iter_func(max_workers, an_iter, func, item_kwarg, **kwargs):
    with ProcessPoolExecutor(max_workers=max_workers) as executor:
        future_results = [executor.submit(func, **{item_kwarg: item}, **kwargs)
                          for item in an_iter]
        results = [future.result() for future in future_results]
    return results

import eli5
train_expl_list = multiproc_iter_func(12, X_train.as_matrix(),
                                      eli5.explain_prediction_df, 'doc',
                                      estimator=gbrt,
                                      feature_names=future)

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 13 ] 

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



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

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


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

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