#r #r-caret
#r #r-каретка
Вопрос:
Я работал над проектом, связанным с поздним прибытием самолетов в 2019 году в 10 лучших аэропортах США.
Набор данных содержит более 140000 наблюдений.(ЗАДЕРЖКА — в минутах, отменена, перенаправлена, delay30 являются логическими)
FL_DATE,FL_DAY,FL_MONTH,CARRIER,ORIGIN,DEP_DELAY,ARR_DELAY,CANCELLED,DIVERTED,DELAY30_MINS
1/1/2019,Tuesday,January,AA,LAX,21,12,0,0,0
1/1/2019,Tuesday,January,AA,SFO,0,8,0,0,0
1/1/2019,Tuesday,January,AA,JFK,0,20,0,0,0
1/1/2019,Tuesday,January,AA,DFW,27,39,0,0,0
1/1/2019,Tuesday,January,AA,LAX,0,1,0,0,0
1/1/2019,Tuesday,January,AA,DEN,0,14,0,0,0
1/1/2019,Tuesday,January,AA,JFK,23,40,0,0,0
1/1/2019,Tuesday,January,AA,SFO,12,24,0,0,0
1/1/2019,Tuesday,January,AA,LAS,15,6,0,0,1
1/1/2019,Tuesday,January,AA,DFW,38,10,0,0,0
1/1/2019,Tuesday,January,AA,SEA,0,24,0,0,1
1/1/2019,Tuesday,January,AA,ORD,31,28,0,0,0
1/1/2019,Tuesday,January,AA,LAX,4,5,0,0,0
1/1/2019,Tuesday,January,AA,DFW,22,9,0,0,0
1/1/2019,Tuesday,January,AA,ORD,6,2,0,0,0
Я делал графики и моделирование на нем. Я прогнозирую точность 4 атрибутов, а именно FL_MONTH, FL_DAY. ОТМЕНЕНО и ПЕРЕНАПРАВЛЕНО.
Для прогнозирования FL_MONTH и FL_DAY я использую rpart, j48, случайный лес в методе. Для прогнозирования ОТМЕНЕННЫХ и ПЕРЕНАПРАВЛЕННЫХ я использую rpart, glm, случайный лес и наивный байесовский метод.
#Using a 75% training and 25% testing split (Removed FL_DATE before training)
month.rpart.fit = train(FL_MONTH ~ ., data = DF.train, method = "rpart", tuneLength = 5,trControl=trainControl(method = "cv", number = 10))
varImp(month.rpart.fit)
month.rpart.pred = predict(month.rpart.fit, DF.test)
confusionMatrix(month.rpart.pred, DF.test$FL_MONTH)
Вот мои результаты прогнозирования
FL_MONTH с использованием 3 классификаторов составляет около 12%, FL_DAY с использованием 3 классификаторов — около 18%, ОТМЕНА с использованием 4 классификаторов — около 95%, ПЕРЕНАПРАВЛЕНИЕ с использованием 4 классификаторов — около 99%
Вот 2 проблемы, которые я не могу понять / исправить
1-я проблема: поскольку FL_MONTH и FL_DAY являются задачами с несколькими классификациями, я использую классификаторы на основе дерева, и точность очень низкая. Я не уверен, как повысить точность. Я попытался обучить FL_MONTH всем другим 8 переменным класса, затем смешать и сопоставить с несколькими избранными, но точность всегда составляет от 10 до 12%. Есть ли другой классификатор, который я могу использовать, или есть способ повысить точность?
Переменная важность и матрица путаницы для случайного леса при прогнозировании FL_MONTH
2-я проблема: ОТМЕНЕННЫЕ и ОТКЛОНЕННЫЕ прогнозы хороши, но по какой-то причине специфичность составляет менее 10% при использовании rpart и случайного леса и в 0 для glm и наивного Байеса. Это делает значение Neg Pred NaN для последних 2 случаев. Есть ли способ повысить специфичность и отрицательное значение Pred?
Матрица переменной важности и путаницы для случайного леса при прогнозировании ОТМЕН
Комментарии:
1. Это связано с дисбалансом классов. Обычный способ решения проблемы — использовать методы выборки, такие как уменьшение выборки для более многочисленного класса, увеличение выборки для класса меньшинства и некоторые более сложные методы выборки, такие как SMOTE и ROSE. Другой способ — настроить порог принятия решения. И все же третий способ — присвоить разные веса алгоритмам ML только для классов, которые поддерживают подобные вещи. Как случайный лес, так и rpart поддерживают веса классов.
2. Спасибо за предложение. Я действительно боролся с этим. Сначала я попробую выборку вниз и вверх.
3. вы можете использовать
sampling
аргумент дляtrainControl
.