Вопрос или проблема
Я проводил анализ известного набора данных ‘Adult’, доступного на UCI, с использованием Orange Data Mining. В своей диссертации Pelleg (2004; стр. 79) использует неконтролируемую кластеризацию заданного обучающего набора, устанавливая количество кластеров равным 4, а затем использует полученные кластеры для определения непрерывных областей пространства признаков, определенных каждым кластером. Во время кластеризации целевая переменная ‘доход’ (две категории: ‘>50K’ и ‘<=50K’) первоначально рассматривается как одна из характеристик. Каждой кластерной области затем приписывается класс в зависимости от класса целевой переменной, то есть, ‘>50K’ или ‘<=50K’.
Чтобы оценить ‘класс обучения кластеров’, он определяет, относится ли каждый экземпляр из независимого тестового набора к кластерной области (например, 1 = ‘>50K’, 2 = ‘<=50K’, 3 = ‘>50K’ и 4 = ‘<=50K’, например). Из этого простого упражнения затем может быть построена матрица ошибок. Pelleg сообщает об точности до 97%.
Я попробовал обучение с использованием деревьев решений, случайного леса и алгоритмов kNN (тестирование и обучение на одних и тех же данных), и у меня получилось 90% ACC (алгоритм RF). Я решил попробовать концепцию Pelleg. В данный момент меня не беспокоит достижение высокой точности, а только возможность построить рабочий процесс обучения/тестирования в Orange, эффективно используя кластеризацию в качестве обучающего метода. Мне удалось:
- случайным образом выбрать 3000 экземпляров (виджет выборки данных) из обучающего набора (кластеризация k-Means может использовать максимум 3000 экземпляров)
- преобразовать целевую переменную в переменную признака (виджет ‘выбор колонок’)
- использовать виджет кластеризации k-Means, установив 4 кластера
- преобразовать мета-колонку кластера обучающего набора в целевую переменную (виджеты ‘выбор колонок’ и ‘редактировать домен’), установив основной класс целевой переменной в каждом кластере для всего кластера.
- ввести кластеризованный обучающий набор и оригинальный тестовый набор в виджет ‘тестирование и оценка’, используя kNN в качестве обучающего метода.
Шаги 4-5 были единственным способом, который я смог придумать, чтобы определить, попадает ли каждый тестовый экземпляр в ‘регион’ каждого кластера (т.е. используя алгоритм kNN, чтобы найти ближайший обучающий экземпляр и эффективно поместить тестовый экземпляр в этот кластер).
В Orange Data Mining есть ли лучший способ установить/определить непрерывные ‘регионы’ кластеров, которые могут быть маркированы как целевой класс (возможно, взвешивая размер региона по размеру кластера)?
Могут ли эти регионы затем использоваться для тестирования и оценки/составления матрицы ошибок?
Я тоже хотел использовать кластеризацию для ввода в обучающего метода, но выяснил, что данные передаются обучающему методу в порядке, как в исходном наборе данных. В Orange это невозможно. Только если вы вручную считываете данные из виджета кластеров и каким-то образом вручную “транспонируете” оригинальный набор данных, чтобы получить кластерные данные, похожие на те, что передаются обучающему методу. Другие решения: использовать другие программные пакеты (не тестировал) или написать некоторые решения самостоятельно. Возможно, вы попробуете использовать Rapid Miner, кластеризация может быть определена в предвходном потоке для обучающего метода.
Ответ или решение
Использование кластеризации для построения модели машинного обучения в Orange Data Mining может быть весьма эффективным подходом. Чтобы использовать результаты кластеризации набора данных для тестирования и оценивания тестового набора, следуйте следующему пошаговому руководству.
1. Подготовка данных
Вы уже провели предварительную обработку данных. Важно убедиться, что вы тщательно подготовили обучающий набор, выбрав 3000 экземпляров, и преобразовали целевую переменную (‘income’) в признак.
2. Кластеризация
Разделите обучающий набор с помощью виджета k-Means, выставив количество кластеров равным 4. Этот шаг позволит вам разбить ваше пространство признаков на четыре кластера.
3. Определение классов для кластеров
Для каждого кластера определите, какова доминирующая категория (например, ‘income’ >50K или <=50K). Это можно сделать с помощью виджета Select Columns, после чего используйте Edit Domain, чтобы обновить мета-данные кластера. В результате вы получите новый признак, который можно интерпретировать как целевую переменную для дальнейшего анализа.
4. Измерение расстояния к кластерам
Для того чтобы определить, к какому кластеру принадлежит каждый экземпляр из тестового набора, вы можете использовать алгоритм kNN. Ваш подход, при котором вы подаете кластеризованный обучающий набор и оригинальный тестовый набор на вход к Test and Score виджету, является корректным.
5. Оценка классов на тестовом наборе
Можно рассмотреть увеличение точности путем присвоения весов классам в зависимости от размера кластеров. В этом случае, если у вас есть кластер с большим количеством экземпляров и один с меньшим, вы можете указать модели на предпочтение первого, таким образом повышая вероятность успеха предсказания. Однако в Orange нет встроенной функции для автоматического присвоения весов классам на основе их размеров.
6. Создание матрицы ошибок
После выполнения всех вышеописанных шагов вы сможете создать матрицу ошибок, которая поможет вам проанализировать точность ваших предсказаний. Визуализируйте результаты в Confusion Matrix виджете, который наглядно покажет, сколько экземпляров было правильно или неправильно классифицировано.
7. Выводы
Использование кластеризации для построения модели позволяет получить интересные результаты, как вы уже отметили. Однако важно помнить, что подходы к кластеризации могут быть ограничены архитектурой Orange Data Mining. Если вы столкнулись с проблемами, возможно, имеет смысл рассмотреть использование других платформ, таких как RapidMiner, или написание собственного кода для более гибкой настройки процессинга данных.
Заключение
Ваша текущая схема работы уже показывает, что вы на правильном пути. Соединение кластеризации и машинного обучения может принести вам результаты, близкие к тем, что приводит к высокой точности, как описано у Pelleg (2004). Не бойтесь тестировать различные конфигурации, адаптируя вашу модель к вашим данным.