Различие в показателях производительности модели между обучающей и тестовой выборками.

Вопрос или проблема

Я использую метод классификации CART, разделяя набор данных на обучающую и тестовую выборки. Я использовал ошибку классификации, KS по ранговой сортировке, AUC и Gini в качестве MPM (меры производительности модели). Проблема, с которой я сталкиваюсь, заключается в том, что значения MPM значительно различаются.

Я пробовал использовать minsplit от 20 до 1400 и minbucket от 5 до 100, но не получил ожидаемых результатов. Я также пробовал пере/недо-сэмплирование через пакет ROSE, но без улучшений. Более того, ошибка классификации значительно увеличилась. Следующий код является тем, через который я мог получить лучшие значения, но они были недостаточны.

#Чтение данных
pdata = read.csv("PL_XSELL.csv", header = TRUE)

#Преобразование ACC_OP_DATE из типа фактор в дату
pdata$ACC_OP_DATE<-as.Date(pdata$ACC_OP_DATE, format = "%d-%m-%Y")

#Разделение данных на обучающую и тестовую выборки
set.seed(2000)
n=nrow(pdata)
split= sample(c(TRUE, FALSE), n, replace=TRUE, prob=c(0.70, 0.30))
ptrain = pdata[split, ]
ptest = pdata[!split,]

#Модель CART
#Выбор минимальных значений minsplit и minbucket для последующей обрезки
#Большие значения не позволяли обрезку
r.ctrl = rpart.control(minsplit=20, minbucket = 5, cp = 0, xval = 10)

#Вызов функции rpart для построения дерева
cartModel <- rpart(formula = TARGET ~ ., 
    data = ptrain[,-1], method = "class", 
    control = r.ctrl)

#Код обрезки дерева
cartModel<- prune(cartModel, cp= 0.00225  ,"CP")

#Прогнозирование класса и оценок
ptrain$predict.class <- predict(cartModel, ptrain, type="class")
ptrain$predict.score <- predict(cartModel, ptrain, type="prob")

Результаты, которые я получил: Ошибка классификации на обучающих данных – 0.103 AUC – 0.679 KS – 0.259 Gini – 0.313

Ошибка классификации на тестовых данных – 0.113 AUC – 0.664 KS – 0.226 Gini – 0.307

Это из-за набора данных или я делаю что-то неправильно. Я новичок в аналитике данных. Это часть моего академического проекта, поэтому мне необходимо использовать только метод CART. Я задам отдельные вопросы по Random Forest и нейронным сетям. Пожалуйста, помогите.

Ваша модель страдает от небольшого переобучения, однако это не кажется слишком критичным.

Производительность на обучающей выборке всегда лучше, чем на тестовой, если выборка рандомизирована (при статистически значительных объемах)

Возможно, вы можете уменьшить разрыв в производительности, контролируя параметр CP, попробуйте установить более высокое значение cp при обрезке дерева (например, 0.01) или использовать параметр maxdepth, который обрезает в соответствии с длиной дерева.

Ответ или решение

Когда речь идет о различиях в мерах производительности модели (MPM) на обучающем и тестовом наборах данных, важно понимать природу этих различий. Вы применяете метод CART для классификации и наблюдаете значительные различия в метриках, таких как Mis-classification Error, KS по ранжированию, AUC и Gini.

Анализ различий в показателях производительности

  1. Основываясь на текущих результатах:

    • Ошибка классификации для обучающего набора составляет 0.103, а для тестового — 0.113.
    • AUC для обучающего набора — 0.679, для тестового — 0.664.
    • KS для обучающего набора — 0.259, для тестового — 0.226.
    • Gini для обучающего набора — 0.313, для тестового — 0.307.
  2. Оверфиттинг: Это означает, что модель слишком хорошо подстроилась под обучающие данные и может быть менее эффективной на новых данных. Некоторая степень оверфиттинга неизбежна, но она не должна быть слишком значительной.

  3. Корректировка параметров:

    • CP (Complexity Parameter): Попробуйте увеличить параметр CP при обрезке дерева (например, до 0.01). Это может помочь устранить чрезмерно подстроенные участки модели.
    • maxdepth: Ограничение глубины дерева поможет избежать оверфиттинга, что также может привести к улучшению производительности на тестовых данных.
  4. Рассмотрение структуры данных:

    • Ваши данные могли быть неравномерно сбалансированы, что влияет на результаты. Продолжите эксперименты с методами взвешивания или балансировки данных, хоть предыдущие попытки с помощью ROSE не дали улучшений.
  5. Проверка и валидация:

    • Проведите кросс-валидацию для уточнения оценки модели на различных поднаборах данных. Это позволит более точно оценить обобщающую способность вашей модели.
  6. Анализ важности переменных:

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

Заключение

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

Постоянно работайте над улучшением модели и проведите детальную проверку влияния каждого параметра на производительность. Успех в работе над проектом!

Оцените материал
Добавить комментарий

Капча загружается...