Reptree (WEKA), сортирует значения числовых атрибутов только один раз.

Я использую алгоритм Reptree от weka. Для этого алгоритма нет подробных документов, только:

Быстрое обучение дереву решений. Строит дерево решений/регрессии, используя прирост информации/уменьшение дисперсии, и сокращает его, используя сокращение с уменьшенной ошибкой (с обратной подгонкой). Сортирует значения для числовых атрибутов только один раз. Отсутствующие значения обрабатываются путем разделения соответствующих экземпляров на части (т. е. как в C4.5).

Может ли кто-нибудь объяснить мне, что подразумевается под: «Только один раз сортирует значения для числовых атрибутов».

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

Спасибо

Любомир


person gugatr0n1c    schedule 13.04.2014    source источник


Ответы (1)


В последнее время я сам искал те же ответы о RepTree Weka и наткнулся на этот пост, я не смог найти достаточно ответов в Интернете, поэтому я открыл исходный код и погрузился в него.

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

Из чтения исходного кода я смог понять, как работает алгоритм:

1) Для классификации нечисловых (дискретных) используется обычное дерево решений с сокращением числа ошибок [http://www.stat.cmu.edu/~ryantibs/datamining/lectures/23-tree.pdf] максимизирует значения энтропии, вы можете увидеть точную реализацию метода в исходном коде в weka.core.ContingencyTables - entropyConditionedOnRows(double[][] matrix)

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

Кроме того, для меня было очень запутанным вычисление выходного дерева, в частности, в числовой классификации, что означает этот выходной лист:

years_since >= 9,03 : 4,64 (8/0,68) [8/6,76]

1) В нечисловой (дискретной) классификации первое число после ':' - это классификационное значение дерева, первое число в скобках () - это количество правильно классифицированных экземпляров из обучения набор под этим листом, второе число — это количество экземпляров, которые были под листом, но имели другое значение классификации, в то время как в скобках [] первое число — это количество правильных классификаций из набора обрезки, а второе число — это количество экземпляров, которые были под листом, но имели другое значение классификации. неправильные классификации. [http://weka.8497.n7.nabble.com/about-REPtree-td15188.html]

2) В числовой классификации этот вывод означает что-то другое. Первое число после ':' - это среднее значение (x_mean) выборок из обучающего набора, которые принадлежат этому листу, первое число в скобках () - это вес -k- значений, которые принадлежат этому листу ( вес означает количество выборок из того, что я понял из кода), а второе значение — это дисперсия выборки, что означает sum_i_from_1_to_k((x_i-x_mean)^2)/k. В скобках [] первое — это количество выборок из набора отсечения -L-, которые принадлежат этому листу, а второе число — это дисперсия относительно x_mean из обучающего набора, что означает sum_i_from_1_to_L((y_i-x_mean)^2 )/л

Надеюсь это поможет

person PeterN    schedule 02.12.2014
comment
хорошая, отличная работа по изучению кода ... спасибо ... Я действительно попробовал другой пакет - обучение scikit в python ... кажется, намного быстрее и точнее ... - person gugatr0n1c; 20.12.2014
comment
да, в настоящее время я использую пакеты Python ML вместо weka - person PeterN; 18.07.2018