Как найти важность функции в дереве решений, построенном Weka

Я использовал Weka для успешного построения дерева решений J48 (C4.5). Теперь я хотел бы оценить, насколько эффективны или важны мои функции.

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

Однако я думаю о другом подходе, основанном на понимании алгоритма C4.5. Поскольку каждое разбиение в дереве основано на решении о максимальном получении информации, разбиение объекта ближе к корню дерева должно означать, что объект имеет больше информации, чем разбиение с другим признаком, расположенным ниже в дереве. Таким образом, для данной характеристики F, которая встречается в нескольких разделах дерева, я могу вычислить среднее расстояние F от корня. Затем я могу ранжировать все объекты по среднему расстоянию, при этом самое низкое среднее значение является наиболее ценным. Будет ли это правильный подход?


person stackoverflowuser2010    schedule 19.07.2012    source источник
comment
Среднее расстояние от корневого узла не будет хорошей метрикой, потому что количество получаемой информации не является постоянным на разных уровнях дерева. Было бы лучше суммировать информационный выигрыш для всех ветвей, соответствующих конкретной функции, взвешивая выигрыш в каждой ветви по количеству выборок, присутствующих в ветви.   -  person bogatron    schedule 20.07.2012
comment
Предоставляет ли Weka данные о получении информации на каждом сплите? В выходном текстовом файле это не отображается.   -  person stackoverflowuser2010    schedule 20.07.2012
comment
Я не знаю, хранит ли Weka прирост информации явно, но вы можете рассчитать его самостоятельно, если знаете количество наблюдений / выборок на каждом узле. Я не знаю, дает ли визуализация дерева по умолчанию возможность увидеть количество образцов на каждом узле, но есть плагин, который покажет эту информацию: weka.wikispaces.com/Explorer+tree+visualization+plugins   -  person bogatron    schedule 23.07.2012


Ответы (2)


Немного некро-пост ... но вот ...

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

Если это так, вы всегда можете использовать мета-классификатор AttributeSelectedClassifier, а затем указать j48 в качестве классификатора.

Затем вы должны выбрать оценщик для подмножеств атрибутов и метод поиска. Например, в настоящее время я экспериментирую с оценщиком «WrapperSubsetEval» и алгоритмом поиска «GeneticSearch».

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

С этими настройками он будет развивать подмножество атрибутов (с генетическим алгоритмом), который хорошо работает с алгоритмом j48, затем он будет запускать j48 для ваших данных с этим развитым набором атрибутов.

Это затратно с точки зрения вычислений, поскольку необходимо построить и протестировать множество деревьев, но он может дать хорошие результаты (и намного быстрее, чем пытаться сделать это вручную) :)

person DenseGrothOfTrees    schedule 02.12.2012

Вы можете попробовать вкладку «Выбор атрибута». Там вы можете выполнить анализ PCA, CfsSubsetEval + BestFirst ..., чтобы определить, какие функции являются лучшими.

Другой (но ручной) способ - обучить и протестировать один и тот же алгоритм с разными атрибутами и проверить результаты статистически с помощью T-теста, чтобы определить, является ли улучшение статистически значимым.

person arutaku    schedule 04.09.2012
comment
Есть ли способ пройти Т-тест, не покидая Weka? - person Vladtn; 01.08.2013
comment
@Vladtn: окно экспериментатора предназначено для проведения тестов статистической значимости - person Josep Valls; 06.06.2016