Дерево классификации на основе правил сокращения (алгоритм PART)

Я использую алгоритм PART в R (через пакет RWeka) для классификации нескольких классов. Целевой атрибут - это интервал времени, в течение которого клиент оплачивает счет (например, 7-15 дней, 15-30 дней и т. Д.). Я использую следующий код для подгонки и прогнозирования из модели:

fit <- PART(DELAY_CLASS ~ AMT_TO_PAY + NUMBER_OF_CREDIT_DAYS + AVG_BASE_PRICE, data= trainingData)
predictedTrainingValues <- predict(fit, trainingData)    

Используя эту модель, я получаю около 82 % точности данных тренировок. Но точность данных испытаний составляет около 59 %. Я понимаю, что переоцениваю модель. Я попытался уменьшить количество переменных-предикторов (переменные-предикторы в приведенном выше коде - это сокращенные переменные), но это не очень помогает. Уменьшение количества переменных повышает точность данных испытаний до 61 % и снижает точность данных обучения до примерно 79 %

Поскольку алгоритм PART основан на частичном дереве решений, другой вариант может заключаться в сокращении дерева. Но я не в курсе, как подрезать дерево по алгоритму PART. При поиске в Интернете я обнаружил, что критерии FOIL могут использоваться для алгоритма на основе правил сокращения. Но я не могу найти реализацию критерия FOIL в R или RWeka.

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

Заранее спасибо!!

ПРИМЕЧАНИЕ. Я рассчитываю точность как число правильно классифицированных экземпляров, деленное на общее количество экземпляров.

1 ответ

Решение

Чтобы обрезать дерево с помощью PART, необходимо указать его в аргументе управления функции:

Здесь приведен полный список команд, которые вы можете передать в аргумент управления.

Я цитирую некоторые из вариантов здесь, которые имеют отношение к сокращению:

Допустимые варианты:

-С уверенностью

Установите доверительный порог для обрезки. (По умолчанию: 0,25)

М номер

Установите минимальное количество экземпляров на лист. (По умолчанию: 2)

Используйте уменьшенное сокращение ошибок.

Номер

Установите количество сгибов для сокращения ошибок. Одна складка используется как набор для обрезки. (По умолчанию: 3)

Похоже, что приведенный выше аргумент C может помочь вам, а затем, возможно, R, N и M.

Чтобы использовать те, что в функции, выполните:

fit <- PART(DELAY_CLASS ~ AMT_TO_PAY + NUMBER_OF_CREDIT_DAYS + AVG_BASE_PRICE,
       data= trainingData,
       control = Weka_control(R = TRUE, N = 5, M = 100)) #random choices

На отдельном примечании для метрики точности:

Сравнивать точность между тренировочным набором и тестовым набором для определения переоснащения, на мой взгляд, не оптимально. Модель была обучена на тренировочном комплекте, и поэтому вы ожидаете, что она будет работать там лучше, чем тестовый набор. Лучшим тестом является перекрестная проверка. Попробуйте сначала выполнить 10-кратную перекрестную проверку (можно использовать последовательность функций каретки), а затем сравнить среднюю точность перекрестной проверки с точностью вашего тестового набора. Я думаю, что это будет лучше. Если вы не знаете, что такое перекрестная проверка, в целом она разбивает ваш тренировочный набор на более мелкие тренировочные и тестовые наборы, а также обучает обучению и тестам на тестовом наборе. Подробнее об этом можете прочитать здесь.

Другие вопросы по тегам