Задание 2: Классификация исходных данных различными методами
Классифицировать исходные данные наивным байесовским методом, методом J4.8 (модификация С4.5), методом ID3, методом 1R, методом SVM (в среде Weka он называется SMO). В случае невозможности применить метод к данным воспользоваться фильтрами. Описать полученные результаты.
Файл *.arff необходимо загрузить в систему. Это делается при помощи кнопки Open File вкладки Preprocess. На данной вкладке можно загрузить файл в систему, а затем редактировать загруженные данные. Редактирование может осуществляться как вручную, так и наложением на данные фильтра для их очищения и/или трансформации. Фильтры необходимы для модификации данных таким образом чтобы стало возможно применение различных методов. Так, например, некоторые методы могут работать только с перечислимым типом данных. Для этого при помощи фильтра RemoveType можно убрать из набора данные неподходящих типов.
Рисунок 1
На рисунке 1 показано главное окно Weka Explorer с открытым набором данных. На графике в нижнем правом углу показано отношение между age и income.
Во вкладке Classify при помощи кнопки Choose выбирается метод классификации. После выбора метода классификации (классификатора, classifier) необходимо выбрать метод проверки. Основным методом является кросс-проверка (cross-validation), однако можно также проводить проверку результатов анализа на обучающем множестве (training set), на специальном тестовом множестве (supplied test set) и на тестовой части обучающего множества (Percentage Split).
После этого требуется выбрать зависимую переменную классификации.
После этого нажимается кнопка Start. По завершении анализа заполнится окно Output и добавится новая запись в окно Result.
С нашем случае методом проверки является кросс-проверка. Суть ее в том, что исходный набор данных в какой-либо пропорции разбивается на обучающее и проверочное множества. Далее по обучающему множеству данные классифицируются, а по проверочному проверяются. Таким образом и вычисляется ошибка.
Классификация методом Naïve Bayes
Этот алгоритм применяется сразу к исходным данным без какого либо их изменения. Т.е. не приходилось использовать фильтры. Пример вывода результата работы алгоритма в окне Weka представлен в листинге 2.
Листинг 2
Naive Bayes Classifier Class >50K: Prior probability = 0.22 age: Normal Distribution. Mean = 44.5168 StandardDev = 10.1778 WeightSum = 87 Precision = 1.0701754385964912
workclass: Discrete Estimator. Counts = 54 11 7 8 8 3 1 1 (Total = 93)
fnlwgt: Normal Distribution. Mean = 181233.8294 StandardDev = 91901.5756 WeightSum = 87 Precision = 1592.3392405063291
education: Discrete Estimator. Counts = 28 12 3 20 6 4 2 1 1 2 16 1 2 3 1 1 (Total = 103)
education-num: Normal Distribution. Mean = 11.7701 StandardDev = 2.3425 WeightSum = 87 Precision = 1.0
marital-status: Discrete Estimator. Counts = 77 5 7 2 1 1 1 (Total = 94)
occupation: Discrete Estimator. Counts = 2 11 3 11 23 20 1 3 8 5 6 1 4 1 (Total = 99)
relationship: Discrete Estimator. Counts = 11 4 66 9 1 2 (Total = 93)
race: Discrete Estimator. Counts = 80 5 1 1 5 (Total = 92)
sex: Discrete Estimator. Counts = 14 75 (Total = 89)
capital-gain: Normal Distribution. Mean = 3959.092 StandardDev = 15322.5902 WeightSum = 87 Precision = 5555.5
capital-loss: Normal Distribution. Mean = 242.6638 StandardDev = 679.5541 WeightSum = 87 Precision = 127.95
hours-per-week: Normal Distribution. Mean = 42.7874 StandardDev = 12.3899 WeightSum = 87 Precision = 2.5
native-country: Discrete Estimator. Counts = 82 1 1 1 2 1 1 2 1 1 1 2 2 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 (Total = 127)
Class <=50K: Prior probability = 0.78 age: Normal Distribution. Mean = 37.4698 StandardDev = 13.7417 WeightSum = 313 Precision = 1.0701754385964912
workclass: Discrete Estimator. Counts = 231 17 10 8 25 12 1 1 (Total = 305)
fnlwgt: Normal Distribution. Mean = 194997.9651 StandardDev = 110927.7691 WeightSum = 313 Precision = 1592.3392405063291
education: Discrete Estimator. Counts = 40 82 12 122 1 6 11 4 12 2 7 3 15 5 6 1 (Total = 329)
education-num: Normal Distribution. Mean = 9.492 StandardDev = 2.4195 WeightSum = 313 Precision = 1.0
marital-status: Discrete Estimator. Counts = 121 57 114 14 11 2 1 (Total = 320)
occupation: Discrete Estimator. Counts = 17 48 37 41 19 30 15 25 40 9 18 3 8 1 (Total = 311)
relationship: Discrete Estimator. Counts = 14 60 103 86 14 42 (Total = 319)
race: Discrete Estimator. Counts = 270 10 6 7 25 (Total = 318)
sex: Discrete Estimator. Counts = 124 191 (Total = 315)
capital-gain: Normal Distribution. Mean = 88.746 StandardDev = 925.9167 WeightSum = 313 Precision = 5555.5
capital-loss: Normal Distribution. Mean = 70.72 StandardDev = 354.404 WeightSum = 313 Precision = 127.95
hours-per-week: Normal Distribution. Mean = 39.0815 StandardDev = 11.7335 WeightSum = 313 Precision = 2.5
native-country: Discrete Estimator. Counts = 282 2 2 3 1 3 1 1 1 1 1 3 1 1 2 2 1 2 1 2 12 1 1 1 1 1 1 1 1 1 1 1 3 1 1 1 3 1 1 1 1 (Total = 349) Time taken to build model: 0.06 seconds === Stratified cross-validation ===
=== Summary === Correctly Classified Instances 341 85.25 %
Incorrectly Classified Instances 59 14.75 %
Kappa statistic 0.5027
Mean absolute error 0.1607
Root mean squared error 0.3548
Relative absolute error 47.0789 %
Root relative squared error 85.9928 %
Total Number of Instances 400 === Detailed Accuracy By Class === TP Rate FP Rate Precision Recall F-Measure Class
0.483 0.045 0.75 0.483 0.587 >50K
0.955 0.517 0.869 0.955 0.91 <=50K === Confusion Matrix === a b <-- classified as
42 45 | a = >50K
14 299 | b = <=50K
Этот метод основывается на анализе данных по всем исходным переменным. Формулируются правила, в условных частях которых сравниваются все независимые переменные с соответствующими возможными значениями. Оценив ошибки, выбирается переменная, для которой ошибка набора минимальна. Для каждого значения атрибута обучающего множества приводится его вероятность, а также выкладки по всем атрибутам тестового множества, включающие в себя средние значения и точность (количество совпадений тестового набора и обучающего множества) для численных (перечислимых) типов данных. В результате кросс-проверки получаем достаточно высокий процент верной классификации (85.25%), а также относительно небольшую среднюю абсолютную ошибку.
В результате после анализа данных на основе Classifier model можно сделать выводы о людях имеющих зароботок больше или меньше 50К. К примеру в нашем случае можно сделать вывод что средний возраст тех кто зарабатывает >50K – 44.1189 (age: Normal Distribution. Mean = 44.5168), а тех кто зарабатывает <50K – 37.4698. Т.е. для числовых значений показывается среднее значение для данного класса, а также отклонение и точность. Для значений номинального типа показывается сколько раз встречается какое-то номинальное значение в конкретном классе. Например при заработке >50K 64 человека имеют workclass private (workclass: Discrete Estimator. Counts = 54 11 7 8 8 3 1 1 (Total = 93)) тут перечислены количества значений, перечисленных в тех данных что мы добавляли для получения arff «@ATTRIBUTE 'workclass' {Private, Self-emp-not-inc, Self-emp-inc, Federal-gov, Local-gov, State-gov, Without-pay, Never-worked}»}) В итоге получим, что человек с доходом >50К (их 22%) должен удовлетворять следующим условиям: возраст: 44.5168+-10.1778
рабочий класс: 54 11 (Private, Self-emp-not-inc)
fnlwgt: 181233.8294+-91901.5756
образование: 28 12 16 (Bachelors, Some-college, HS-grad)
степень образованности: 11.7701 +-2.3425
семейное положение: 77 (Married-civ-spouse)
занятость: 11 11 23 20 (Craft-repair, Sales, Exec-managerial, Prof-specialty)
семейный статус: 11 66 9 (Wife, Husband, Not-in-family)
раса: 80 (White)
пол: 14 75 (Female, Male)
капитальная прибыль: 3959.092+-15322.5902
капитальный убыток: 242.6638+-679.5541
рабочих часов в неделю: 42.7874+-12.3899
родная страна: = 82 (United-States)
В итоге получим, что человек с доходом <=50К (их 78%) должен удовлетворять следующим условиям:
возраст: 37.4698 +-13.7417
рабочий класс: 231 (Private)
fnlwgt: 194997.9651 +-110927.7691
образование: 40 82 122 (Bachelors, Some-college, HS-grad)
степень образованности: 9.492 +-2.4195
семейное положение: 121 57 114 (Married-civ-spouse, Divorced, Never-married)
занятость: 48 37 41 30 40 (Craft-repair, Other-service, Sales, Prof-specialty, Handlers-cleaners, Farming-fishing)
семейный статус: 60 103 86 42 (Own-child, Husband, Not-in-family, Unmarried)
раса: 270 (White)
пол: 124 191 (Female, Male)
капитальная прибыль: 88.746 +-925.9167
капитальный убыток: 70.72 +-354.404
рабочих часов в неделю: 39.0815 +-11.7335
родная страна: = 282 (United-States)
50k> |