Внедрение FeatureHasher Scikit Learn для данных с большим количеством элементов - PullRequest
0 голосов
/ 02 апреля 2020

Справочная информация: Я работаю над бинарной классификацией заявок на медицинское страхование. Данные, с которыми я работаю, имеют приблизительно 1 миллион строк и набор числовых c функций и категориальных функций (все из которых являются номинальными дискретными). Проблема, с которой я сталкиваюсь, заключается в том, что некоторые из моих категорических особенностей имеют большую мощность со многими необычными или уникальными значениями. Ниже я наметил 8 из моих категорических особенностей, у которых было наибольшее количество уникальных уровней факторов: enter image description here

Альтернатива фиктивным переменным: Я читал на хеширование признаков и поймите, что этот метод является альтернативой, которая может быть использована для быстрого и экономичного способа векторизации функций и является особой подходящей для категориальных данных с высоким количеством элементов. Я планирую использовать FeatureHasher в Scikit Learn для хеширования функций моих категориальных функций с более чем 100 уникальными уровнями функций (я создам фиктивные переменные для остальных категориальных функций с менее чем 100 уникальными уровнями функций). Перед тем, как реализовать это, у меня есть несколько вопросов, касающихся хеширования функций и как это связано с производительностью модели в машинном обучении:

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

  2. Мне интересно оценить важность функций после оценки нескольких отдельных моделей классификации. Есть ли способ оценить хэшированные функции в контексте их отношения к исходным категориальным уровням? Есть ли способ отменить хэши или хеш-функции неизбежно приведут к потере интерпретируемости модели?

Извините за длинный пост и вопросы. Буду признателен за любые отзывы / рекомендации!

1 Ответ

1 голос
/ 02 апреля 2020
  1. Функция хеширования может поддерживать новые категории во время вывода, которые не были замечены в обучении. При использовании фиктивного кодирования вы можете кодировать только фиксированный набор ранее просмотренных категорий. Если вы столкнулись с категорией, не замеченной на тренировках, вам не повезло.

  2. Для важности функций есть два канонических подхода.

    a) Обучать / оценивать Ваша модель с и без каждой функции, чтобы увидеть ее эффект. Это может быть вычислительно дорого.

    b) Обучите / оцените вашу модель с помощью функции, а также с этой функцией, переставленной среди всех образцов.

    При хешировании объектов каждая функция расширяется до нескольких столбцов, поэтому б) будет сложно, и я не нашел пакетов, которые переставляют важность столбцов с хэш-функцией.

    Итак, я думаю, что ), вероятно, является вашей лучшей ставкой, учитывая, что у вас есть только 1 миллион строк.

Кроме того, вы, вероятно, получите лучшие ответы на Перекрестная проверка для вопросов ML по stackoverflow .

...