Я обучил модель классификации на 13 000 рядов этикеток с помощью лассо в библиотеке r's gl mnet. Я проверил свою точность, и она выглядит прилично, теперь я хочу сделать прогнозы для остальной части набора данных, который составляет 300 000 строк. Мой подход состоял в том, чтобы маркировать остальные строки, используя обученную модель. Я не уверен, что это самая эффективная стратегия для приблизительной маркировки. Но, когда я пытаюсь пометить остальные данные, я сталкиваюсь с этой ошибкой:
Error in asMethod(object) : Cholmod error 'problem too large' at file ../Core/cholmod_dense.c, line 105
Даже если я разбью набор данных на 5000 строк для прогнозов, я все равно получаю ту же ошибку. Вот мой код:
library(glmnet)
#the subset of original dataset
data.text <- data.text_filtered %>% filter(!label1 == "NA")
#Quanteda corpus
data_corpus <- corpus(data.text$text, docvars = data.frame(labels = data.text$label1))
set.seed(1234)
dataShuffled <- corpus_sample(data_corpus, size = 12845)
dataDfm <- dfm_trim( dfm(dataShuffled, verbose = FALSE), min_termfreq = 10)
#model to train the classifier
lasso <- cv.glmnet(x = dataDfm[1:10000,], y = trainclass[1:10000],
alpha = 1, nfolds = 5, family = "binomial")
#plot the lasso plot
plot(lasso)
#predictions
dataPreds <- predict(lasso, dataDfm[10000:2845,], type="class")
(movTable <- table(dataPreds, docvars(dataShuffled, "labels")[10000:2845]))
делает прогнозы для остальной части набора данных. Этот набор данных имеет 300 000 строк.
data.text_NAs <- data.text_filtered %>% filter(label1 == "NA")
data_NADfm <- dfm_trim( dfm(corpus(data.text_NAs$text), verbose = FALSE), min_termfreq = 10)
data.text_filtered <- data.text_filtered %>% mutate(label = predict(lasso, as.matrix(data_NADfm), type="class", s="lambda.1se")
Большое спасибо за любую помощь.