Какие методы уменьшения размеров я могу примерить на свои данные (0-1 объектов + оценки tfidf как функции) перед подачей их в SVM - PullRequest
0 голосов
/ 20 июня 2019

У меня около 8000 объектов, измеряющих двухуровневую переменную отклика, т. Е. Выходные данные могут принадлежать к классу 1 или 0. 8000 объектов состоят из около 3000 объектов с 0-1 значениями и около 5000 объектов (которые в основном являются словами из текстовых данных иих оценки tfidf.

Я строю линейную SVM-модель на этой основе, чтобы предсказать мою выходную переменную, и получаю приличные результаты / точность, отзыв и точность около 60-70%

Я ищупомогите со следующим:

  1. Стандартизация: нужно ли стандартизировать значения 0-1? Нужно ли стандартизировать оценки tfidf, даже если я использую сублинейный tdf=true?

  2. Уменьшение размеров: я пытался до сих пор f_classif, используя SelectPercentile функцию sklearn. Любые другие методы уменьшения размеров, которые можно предложить? Я прошел URL сокращения размера sklearn, который также говорит оУменьшение яркости chi2, но это не дает мне хороших результатов. Можно ли применить pca, если данные представляют собой набор из 0-1 столбцови столбцы оценки tfidf?

  3. Удаление коллинеарности: как удалить высоко коррелированные независимые переменные.

Я довольно плохо знаком с питоном и машинным обучением, поэтому любая помощь будет оценена.

1 Ответ

1 голос
/ 20 июня 2019

(отредактировано для включения дополнительных вопросов)

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

2 - (оригинальный ответ) = Не могли бы вы попробовать применить модель randomForest, а затем проверить баллы важности (отбрасывая баллы с низкой важностью). С таким количеством функций я буду беспокоиться о проблемах с памятью, но сможет ли ваша машина справиться с этим ...?

Другим хорошим подходом здесь будет использование логистической регрессии гребня / лассо. По самой своей природе это хорошо для выявления (и исключения) избыточных переменных и может помочь с вашим вопросом 3 (коррелированные переменные).

Примите во внимание, что вы новичок в этом, но обе приведенные выше модели хороши для обхода корреляционных / несущественных переменных, поэтому вы можете использовать их на пути к финализации SVM.

3 - Там нет волшебной пули, о которой я знаю. Выше может помочь. Я преимущественно использую R, и в этом есть пакет Boruta, который подходит для этого шага. Там может быть эквивалент Python?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...