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
8355
Цюрих
Очевидный (хотя и не очень эффективный вариант) - поставить разные значения признака и посмотреть, насколько будут отличаться предсказания.

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


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

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

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


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

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

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


16/07/14
8355
Цюрих
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
8355
Цюрих
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
8355
Цюрих
Ну вот в предположении что ваша модель хорошо работает и посмотрите, насколько сильно изменится результат при изменении значения признака.

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


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

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



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

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


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

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