Оригинал: B.Chandra, S.Mazumdar, V.Arena and N.Parimi - Elegant Decision Tree Algorithm for Classification in Data Mining   (PDF - 1,86 Мб)
Назад в библиотеку

Изящный алгоритм деревьев решений для классификации в датамайнинге

B. Chandra,
Indian Institute of Technology,
New Delhi, India
bchandra104@yahoo.co.in
Sati Mazumdar , Vincent Arena
University of Pittsburgh,
Pittsburgh, USA
maz1@pitt.edu
and N. Parimi
NSIT,
New Delhi.
 

(перевод - Таран А.В.)


          Краткий обзор

          Деревья решений являются очень оффективными для решения задач классификации в датамайнинге. Данная статья рассматривает модификацию SLIQ алгоритма деревьев решений (Mehta и др.,1996). Недостаток этого алгоритма заключается в том, что на каждом шаге нужно вычислять большое количество индексов в каждом узле дерева решений. Для того чтобы определить какой атрибут должен быть разделен в каждом узле, индексы должны быть вычислены для всех атрибутов и для всех пар значений для всех паттернов, которые не были классифицированы. Модификация SLIQ алгоритма предлагает снизить сложность вычислений. В этом алгоритме индексы вычисляются не для всех пар значений атрибутов, а через разные уровни значений атрибутов. Точность классификации по этой технологии сравнивалась с точностью SLIQ алгоритма и технологией нейронных сетей на трех реальных наборах данных. В результате выявилось, что деревья решений, построенные с использованием предложенной модификации, показали значительно более лучшую точность классификации, чем алгоритм SLIQ и даже нейронные сети. В целом, было выявлено, что данная модификация алгоритма не только уменьшает количество необходимых вычислений, но и приводит к большей точности классификации.

          1. Введение

          Классификация данных - одна из важных задач датамайнинга. Множество методов классификации были предложены со времени основания деревьев решений и нейронных сетей. CART (Breiman и др., 1984) - это один из популярных методов построения деревьев решений, но он в целом не дает лучших результатов при классификации нового набора данных, так как слишком подогнанных. ID3 алгоритм деревьев решений - был предложен Куинланом (Quinlan) в 1981 году и имеет несколько модификаций, среди которых C4.5 (Quinlan,1993). Алгоритм ID3 направлен на то, как выбрать наиболее подходящий атрибут в каждом узле дерева решений. Определяется единица измерения названная Gain, которая вычисляется накаждом узле. Атрибут с наибольшим Gain выбирается как разделяющий атрибут.

           Один из главных недостатков алгоритма ID3 касается использования основания для выбора атрибута. Выбор разделяющего атрибута происходит с предпочтением атрибутов с большим количеством отдельных значений. Этот недостаток преодалевается в некоторых модификациях при помощи введения новой единицы измерения называемой коэффициент Gain, который берет информацию из классификации полученной от разделения на основании текущего атрибута. Gini индексы используются как альтернатива коэффициенту Gain и применяются в SLIQ алгоритме (Mehta и др.,1996). ID3 также неадекватен при обработке потерянной или зашумленной информации. Некоторые модификации были разработаны с целью преодолевания этих препятствих. Таковые появляются в алгоритме SLIQ.

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

          2. SLIQ алгоритм деревьев решений

          SLIQ (Supervised Learning In Quest) и SPRINT (Shaefer и др., 1996) был разработан группой Quest team из IBM. SPRINT изначально носил цель на разпараллеливание SLIQ. Дерево составляется при помощи разделения одного из атрибутов на каждом уровне. Базовая цель - сгенерировать дерево наиболее соответствующее прогнозу. Вводятся Gini индексы, показатель разветвленности дерева. С их помощью решается какой атрибут будет разделен и какая будет точка разделения атрибута. Gini индексы уменьшаются на каждом шаге, поэтому дерево становится менее разветвленное. Класс гистограмм строится для каждой успешной пары значений атрибутов. В любом отдельном узле после получения всех гистограмм для всех атрибутов Gini индексы просчитываются для каждой гистограммы. Та из них, которая получит наименьший индекс получает точку разделения Р для рассматриваемого узла. Метод расчета Gini индексов для гистограммы из примера с двумя классами - А и В - приведен ниже:

Таблица 1 - Пример класса гистограмм

Значение атрибута< P A B
L a1 a2
R b1 b2

P - разделяющее значение атрибута
a1 - показывает количество атрибутов, которые меньше чем Р и принадлежат классу A
a2 - показывает количество атрибутов, которые меньше чем Р и принадлежат классу В
b1 - показывает количество атрибутов, которые больше чем Р и принадлежат классу A
b2 - показывает количество атрибутов, которые больше чем Р и принадлежат классу В

          
          Используя эту формулу, расчитыватся Gini индексы для каждой гистограммы для каждого атрибута. Когда Gini индекс для каждой гистограммы известен, разделяющий атрибут выбран и значение разделения равняется разделяющей точке Р для данной гистограммы. Критерий остановки - случай когда Gini индексы в узле становятся равными 0, что означает, что все данные из данного узла успешно классифицированы.

          3. Изящный алгоритм деревьев решений

          SLIQ предлагает сканировать каждый атрибут и каждое значение принадлежащее атрибуту для определения наилучшего разделения. Однако в случае работы с большими базами данных с многочисленными записями данный процесс сканирования приводит к большим временным затратам. В модификации алгоритма предлагается вместо вычисления Gini индексов для каждого значения в атрибуте, производить вычисления в конкретном фиксированном интервале значений атрибута. Например, вычисления могут проводиться на интервале 10% от количества записей в каждом узле. Это позволяет значительно сократить объемы и время вычислений. В SLIQ общее количество вычислений в узле вычисляется как произведение количества атрибутов (n) и количества записей в узле (m). В модификации алгоритма общее количество вычислений в узле вычисляется является произведением количества атрибутов (n) и количества групп g=m/k (интервал / размер группы). Следует отметить, что так как количество неклассифицированных паттернов с каждым шагом меняется, следует подбирать другое наиболее подходящее значение размерности групп k. От выбора значения k зависят получаемые результаты вычислений.

          Алгоритм

          Входные данные : Тренировочный набор, примеры состоят из атрибутов A1 – An и записей R1 – Rm. num - это номер группы в коротом находится атрибут, используется для расчета Gini индексов.

attr stores the splitting attribute
ginival stores the final gini index
splitval stores the final splitting value of attribute attr
Assumed to be c no. of classes
//initializations
ginival = infinity // high value
splitval = 0
attr = 0
Copy records R1– Rm from samples to data.
Maketree(data)
{

1. construct attribute lists alist1– alistn such that alisti contains all records sorted on Ai.
2. //make histograms for each alisti
3. for i = 1 to n
4. val = (alist[i][m] - alist[i][0])/num
5. count=0
6. while count < num
7. split = alist[i][0] + count*val
8. let l[c] contain all records that have value in Ai < split. Order these records into l[0],l[1]– l[c] according to the class to which they belong
9. Repeat step 8 for records that contain value in Ai >= split to obtain r[c].
10. //calculate gini index
11. gini = calc(l[c],r[c])
12. if ginival > gini
13. ginival = gini
14. splitval = split
15. attr = I
16. count++
17. Construct a new node with (attr,splitval,ginival)
18. if gini = 0
19. return //classification complete
20. Put all records with value in Aattr < splitval into data1
21. Put all records with value in Aattr >= splitval into data2
22. maketree(data1)
23. maketree(data2)
//function to compute gini index
calc(l[c],r[c])
{
let k be total no. of records in l[c] and r[c].
//let ans be the return value
1. ans = 0, lval = 1, rval = 1.
2. lsum = sum of no. of records in l[c].
3. rsum = sum of no. of records in r[c].
4. for i = 1 to c
5. lval -= (l[i]/lsum)2
6. rval -= (r[i]/rsum)2
7. lval *= lsum/k.
8. rval *= rsum/k.
9. ans = lval + rval.
10. return(ans).
}

          4. Результаты

           Классификация была проведена на основании оригинального алгоритма SLIQ, Изящного алгоритма деревьев решений и нейронных сетей по трем наборам данных.

          Первы набор данных (107 записей, или патернов) для тестирования базируется на наборе из 15 атрибутов. Результат ясляется логическим значением и представляется нулем или единицей. Деревья решений были построены с использованием оригинального алгоритма SLIQ, Изящного алгоритма деревьев решений используя 87 записей для тренировки. Оставшиеся 20 записей были использованы для тестирования точности классификации алгоритмов.

          Все наборы данных также использвались для тренировки нейросети. Для классификации был использован алгоритм обратного прохода (Rumelhart, 1986). Используемая модель состоит из 15 входящих нейронов и 2 исходящих.

          Результаты сравнения классификации с использованием вышеупомянутых трех алгоритмов на основании тестовых наборов данных приведены ниже.

Таблица 2. Сравнение точности классификации с использованием различных алгоритмов

Технология классификации SLIQ Изящное дерево решений Нейронные сети
Данные о загрязнении воды 60% 80% 70%
Данные прогноза погоды 75% 100% 90%
Данные графического образа 75% 95% 90%

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

          5. Выводы

          Данная статья представила Изящный алгоритм деревьев решений, который является модификацией алгоритма SLIQ. Главное усовершенствование нового алгоритма - уменьшение объема вычислений Gini индексов в каждом узле дерева, что одновременно привело к повышению результатов точности классификации. Результаты применения алгоритма на трех тестовых наборах данных показывают, что данный алгоритм дает лучшую точность классификации чем оригинальных алгоритм SLIQ и даже нейронные сети.

          6. Ссылки на литературу

  1. Alis Hadi. Identifying multiple outliers in multivariate data. J.R. Statist. Soc.,1992 B 54, No. 3,pp. 761-771.
  2. Breiman L, Freidman J. , Olshen R. and Stone C.: Classification and Decision Trees , Wadsworth,1984.
  3. Mehta M., Agarwal R. and Rissanen J. SLIQ: A fast scalable classifier for data mining, Proceedings of the International conference on Extending Database Technology,France, March 1996
  4. Quinlan J.R. Introduction of decision tree. Machine Learning,1:81-106,1986
  5. Quinlan J.R C4.5 : Programs for Machine Learning:Morgan Kauffman, 1993
  6. Rocke, M. and David L. Woodruff. Identification of outliers in multivariate data. Journal of the American Statistical Association. September 1996, vol. 91, No. 435, Theory and Methods.
  7. Rumelhart, D.E., Hinton G.E. and R.J. Williams, " Learning internal representation of error propagation",in D.E. Rumelhartand J. McCelland editors, Parallel Distributed processing, Cambridge, MIT press,1986.
  8. Shafer J.C., Agarwal R. and Mehta M.. SPRINT: A scalable parallel classifier for data mining, Proceedings of the 24th International Conference on Very lrge Databases, Mumbai, India September 1996.




Оригинал: B.Chandra, S.Mazumdar, V.Arena and N.Parimi - Elegant Decision Tree Algorithm for Classification in Data Mining   (PDF - 1,86 Мб)
Назад в библиотеку