2015-02-25 3 views
0

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

В соответствии с инструкциями, приведенными здесь - http://www.psychstat.missouristate.edu/multibook/mlt08m.html

Похоже, я должен дихотомизации категориальные особенности. Означает ли это, что у меня будет 23 функциональных переменных (Dummy coding с уровнями 10M)?

Это лучший способ справиться с таким сценарием?

ответ

1

Да. По существу, у вас будет 10 миллионов предикторов. Это неизбежно, если вы делаете регрессию/классификацию, если вы не хотите группировать «похожие» ключевые слова вместе, чтобы уменьшить количество переменных-предикторов. Например. вы можете ввести ключевое слово keyword_1, keyword_2, keyword_3 в одно ключевое слово, если они разделяют определенное отношение между собой и так далее.

Чтобы сократить это количество ключевых слов (10 М), у вас есть такие методы, как LASSO (http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.Lasso.html) и RIDGE (http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.Ridge.html). Идея состоит в том, что большинство из этих предикторов 10 M переменных не важны для прогнозирования результатов, и поэтому вы хотите удалить их на ранней стадии обучения, чтобы повысить интерпретируемость и избежать чрезмерной обработки ваших результатов.

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

+0

Как насчет особенного хэширования как метода? – Tushar

+0

', если вы не хотите, чтобы «похожие» ключевые слова клуба вместе сокращали количество переменных-предикторов ». Это сходство может быть методом хэширования. –

+0

Получил это спасибо! – Tushar

1

Вы получите лучшие результаты, если вы преобразуете свои данные в разреженную матрицу, такие методы, как One Hot Encoding, а затем примените любой метод выбора объектов (выбор вперед/назад, Lasso). Надеюсь это поможет!

+0

Как мне обрабатывать такие функции, как userId? – Tushar

+0

Какова ваша переменная ответа? Вы думаете, что userId станет хорошим предиктором? Если да, то вам нужно будет преобразовать DataFrame из длинного кадра в широкоэкранный, например, для переменной Response Variable UserId29 (0 или 1) UserId30 (0 или 1) UserId31 i.e преобразовать в разреженную матрицу. –

+0

Наверное, я получил благодарность! – Tushar

Смежные вопросы