Дерево классификации на основе правил сокращения (алгоритм 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-кратную перекрестную проверку (можно использовать последовательность функций каретки), а затем сравнить среднюю точность перекрестной проверки с точностью вашего тестового набора. Я думаю, что это будет лучше. Если вы не знаете, что такое перекрестная проверка, в целом она разбивает ваш тренировочный набор на более мелкие тренировочные и тестовые наборы, а также обучает обучению и тестам на тестовом наборе. Подробнее об этом можете прочитать здесь.