Как уменьшить модель слова? - PullRequest
1 голос
/ 02 октября 2019

Название вопроса говорит само за себя: как я могу уменьшить размер модели слов? Я использую Случайный Лес и набор функций пакета слов. Размер моей модели достигает 30 ГБ, и я уверен, что большинство слов в наборе функций не влияет на общую производительность.

Как уменьшить модель большого набора слов без потери (слишком большой) производительности

Ответы [ 2 ]

3 голосов
/ 02 октября 2019

Использовать выбор функции. При выборе функции удаляются элементы из вашего набора данных на основе их распределения в отношении ваших меток с использованием некоторой функции оценки.

Функции, которые редко встречаются или встречаются случайно со всеми вашими ярлыками, например, очень маловероятны для точной классификации и получают низкие оценки.

Вот пример использования sklearn:

from sklearn.feature_selection import SelectPercentile

# Assume some matrix X and labels y
# 10 means only include the 10% best features
selector = SelectPercentile(percentile=10)

# A feature space with only 10% of the features
X_new = selector.fit_transform(X, y)

# See the scores for all features
selector.scores

Как всегда, обязательно звоните fit_transform только с данными о тренировках. При использовании данных dev или test используйте только transform. См. здесь для получения дополнительной документации.

Обратите внимание, что есть также SelectKBest, который делает то же самое, но который позволяет вам указать абсолютное количество сохраняемых функций вместопроцент.

1 голос
/ 02 октября 2019

Если вы не хотите менять архитектуру своей нейронной сети и пытаетесь только уменьшить объем используемой памяти, можно сделать небольшую поправку, заключающуюся в сокращении сроков, указанных в CountVectorizer. Из документации scikit-learn у нас есть (как минимум) три параметра для уменьшения размера словаря.

max_df : float в диапазоне [0.0, 1.0] или int, по умолчанию= 1.0

При построении словаря игнорируйте термины, у которых частота документа строго выше заданного порогового значения (стоп-слова, характерные для корпуса). Если число с плавающей запятой, параметр представляет пропорцию документов, целые абсолютные числа. Этот параметр игнорируется, если словарь не является None.

min_df: плавающий в диапазоне [0.0, 1.0] или int, по умолчанию = 1

При построении словаря игнорируйте термины, у которых частота документа строго ниже заданного порога. Это значение также называется отсечением в литературе. Если число с плавающей запятой, параметр представляет пропорцию документов, целые абсолютные числа. Этот параметр игнорируется, если словарь не является None.

max_features: int или None, по умолчанию = None

Если не None, создайте словарьэто учитывает только верхние max_features, упорядоченные по частоте термина по всему корпусу. Этот параметр игнорируется, если словарь не None.

В первом случае попробуйте поиграть с max_df и min_df . Если размер все еще не соответствует вашим требованиям, вы можете уменьшить размер, как вам нравится, используя max_features .

ПРИМЕЧАНИЕ :
Настройка max_features может снизить точность классификации на более высокий коэффициент, чем другие параметры

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