Я работаю над проблемой мультиклассификации с более чем 500 классами.Данные относятся к меню ресторана, и моя цель состоит в том, чтобы классифицировать элемент на основе имени элемента и категории, к которой он принадлежит.Я использую библиотеку FeatureHashing в R для хэширования полей имени элемента и категории.Затем используя XGBoost в качестве моей модели.По какой-то причине ошибка поезда увеличивается с каждой итерацией.Набор данных очень большой ...> 2 миллиона строк.Странно то, что когда я работал в Azure ML и выполнял хэширование объектов того же типа и использовал модель случайного леса, я смог достичь точности обучения на уровне около 80%.Я не уверен, что я делаю неправильно.Вот пример кода
## libraries
library(tidyverse)
library(FeatureHashing)
library(xgboost)
## sample data
df <- data.frame(
item_name=c('jose cuervo', 'chicken with shrimp', 'lasagna',
'oreos', 'chicken marsala', 'beef stew'),
category=c('adult beverage', 'chicken dish', 'pasta',
'dessert', 'chicken dish', 'soup'),
target=c(0, 1, 2, 3, 1, 4)
)
## hashing function
f <- ~ category + split(item_name, delim=" ")
## hash features
hashed.mat <- hashed.model.matrix(f, df, hash.size=2^6)
## define some model parameters
num.class <- df$target %>% unique() %>% length()
target <- df$target
## xgboost paramters
xgb.params <- list(booster='gbtree',
objective='multi:softmax',
num_class=num.class,
eta=0.3,
gamma=0,
max_depth=6,
min_child_weight=1,
subsample=1,
colsample_bytree=1)
## fit model
xgb.fit <- xgboost(hashed.mat, target, params=xgb.params, nrounds=10,
verbose=1, print_every_n = 1)