Интеллектуальный анализ данных с помощью программного пакета WEKA: Часть 2. ...

:

Введение

В части 1, мы получили общее представление об основных принципах интеллектуального анализа данных и познакомились с программным пакетом Waikato Environment for Knowledge Analysis (WEKA), позволяющим анализировать значительные объемы информации и определять существующие в них тренды и зависимости. Кроме того, мы обсудили один из методов интеллектуального анализа данных, а именно регрессионный анализ, с помощью которого вы можете спрогнозировать числовое значение зависимой величины на основании набора показателей независимых величин. Метод регрессионного анализа – наиболее простой и наименее эффективный способ интеллектуального анализа данных, однако, построение модели регрессионного анализа является очень удобным примером для начала работы с WEKA, а сам метод наглядно демонстрирует возможности интеллектуального анализа по извлечению пригодных к дальнейшему использованию сведений из больших наборов «сырых» данных.

В этой статье мы познакомимся с двумя другими методами интеллектуального анализа данных. По своей структуре эти методы значительно сложнее, чем регрессионный анализ, однако их использование позволяет достичь больших результатов. Если при использовании регрессионного анализа вы просто получаете некое числовое значение, зависящее от входных параметров, то применение двух других методов позволит вам по-новому интерпретировать полученные данные. Как мы отмечали в части 1, задача интеллектуального анализа – определить и построить модель, соответствующую вашим данным. Вы можете собрать самую обширную коллекцию данных о ваших клиентах, но если у вас нет правильной модели для интерпретации этих данных, то вся собранная вами информация ничего не стоит. Взгляните на этот вопрос по-другому: если бы все использовали только регрессионный анализ, то как Amazon смог бы сказать вам «Покупатели, которые купили X, также купили и Y?» Числовой функции, которая умела бы определять подобную информацию, просто не существует, так что давайте приступим к изучению двух новых методов анализа и разберемся, какую информацию вы можете получить с их помощью.

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


Классификация, кластеризация и метод ближайших соседей

Прежде чем мы перейдем к обсуждению конкретных деталей каждого из рассматриваемых методов и их реализации в WEKA, давайте разберемся, для чего используется этот метод, какими данными он оперирует, и какую информацию можно получить с его помощью. При обсуждении возможностей каждого из методов мы будем использовать нашу модель регрессионного анализа, чтобы вы могли сравнить возможности новых методов с результатами использования уже знакомого вам подхода. Для сравнительного анализа методов мы воспользуемся реальными примерами, использующими данные дилерского центра BMW и его способы повышения продаж. Дилерский центр хранит все данные о своих клиентах, включая тех, кто купил BMW, интересовался BMW или просто зашел в демонстрационной зал BMW. Цель дилерского центра – повысить уровень продаж, опираясь на результаты интеллектуального анализа полученных данных.

Регрессионный анализ

Вопрос: «По какой цене мы должны продавать новый BMW M5?» Регрессионная модель в состоянии ответить на вопрос о конкретном числовом значении. Модель регрессионного анализа в качестве независимых параметров будет учитывать данные проданных автомобилей BMW и параметры модели M5, а в качестве зависимого параметра – стоимость автомобилей, проданных дилерским центром. Таким образом, подставив данные новой модели BMW в полученную зависимость, дилерский центр сможет определить цену автомобиля.

Пример: Selling Price = $25,000 + ($2900 * Liters in Engine) + ($9000 * isSedan) + ($11,000 * isConvertible) + ($100 * inches of car) + ($22,000 * isM).

Классификация

Вопрос: «Какова вероятность того, что некто X купит последнюю модель BMW M5?» Создание классификационной модели (дерева решений) позволяет оценить вероятность того, что некий человек купит автомобиль модели M5. В качестве узлов дерева могут использоваться такие показатели, как возраст, уровень дохода, количество уже имеющихся машин, семейное положение, дети, наличие собственного дома или аренда дома. Параметры конкретного человека будут использоваться для прохождения по дереву с целью определения вероятности покупки M5.

Кластеризация

Вопрос: «Каков возраст покупателей, предпочитающих серебристый BMW M5?» Необходимые данные могут быть получены при анализе возраста покупателей и цвета выбранных ими машин. Далее, на основании полученных данных, можно сделать вывод, что определенная возрастная группа (например, люди в возрасте от 22 до 30 лет) предпочитает определенный цвет BMW M5 (75% покупают автомобили синего цвета). Точно также, можно определить, что другая возрастная группа (например, люди в возрасте от 55 до 62 лет) предпочитает серебристый BMW (65% покупают серебристые автомобили, а 20% покупают серые). Анализ данных позволит создать кластеры по возрастным группам и цветам и определить зависимости между данными.

Метод ближайших соседей

Вопрос: «Если человек покупает автомобиль BMW M5, какие еще товары он может приобрести?» Как свидетельствуют статистические данные, если человек покупает BMW M5, то довольно часто он берет подходящий по цвету чемодан (подобные исследования называются «анализ рыночной корзины»). Используя подобные данные, дилерский центр может разместить рекламу соответствующих товаров или дать объявление в печать о скидках на чемоданы и сумки соответствующего цвета или их бесплатном предложении всем покупателям M5 в качестве одного из способов повышения количества продаж.


Классификация

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

Листинг 1. Простое классификационное дерево
    [ Вы будете читать этот раздел?  ]
          /              \
        Да               Нет 
        /                 \
[Вы его поймете?]    [Не изучите]
    /         \
  Да          Нет
  /             \
[Изучите]   [Не изучите]

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

Модель классификационного дерева использует подход, аналогичный тому, который мы применяли при создании модели регрессионного анализа в части 1, а именно создание модели на основе обучающей последовательности (training set). Этот подход использует известные данные для анализа влияния входных значений на результат и строит модель на основе полученных зависимостей. Таким образом, когда у нас есть новый набор данных с неизвестным результатом, мы подставляем наши данные в модель и получаем ожидаемый вывод. Пока что новый метод работает так же, как регрессионная модель. Тем не менее, существуют и отличия. Метод классификационного анализа использует улучшенный подход, суть которого состоит в том, что набор известных данных делится на две части. Первая часть (60-80% данных) используется в качестве обучающего набора для создания модели. После этого оставшиеся данные прогоняются через эту модель, и смоделированные результаты сравниваются с реальными. Такой подход позволяет оценить точность аналитической модели.

Для чего нужен дополнительный шаг проверки модели? Он позволяет избежать излишней подгонки модели под собранные данные. Если мы будем использовать слишком много данных для разработки модели, то полученная модель будет идеально соответствовать собранным данным и только им. Наша задача – создать модель для прогнозирования неизвестных нам данных, а не для прогнозирования данных, которые и так уже известны. Для проверки этого и используется тестовый набор. С его помощью мы определяем, что точность модели на тестовом наборе не уменьшается. Таким образом, мы гарантируем, что наша модель сможет с достаточно высокой вероятностью определить неизвестные значения. C помощью WEKA мы рассмотрим, как это работает на конкретном примере.

Вопрос чрезмерного количества данных приводит нас к обсуждению еще одного важного принципа построения классификационных деревьев – принципу отсечения ветвей. Отсечение ветвей, как следует из названия, подразумевает удаление ветвей из классификационного дерева. Но зачем удалять информацию из дерева решений? Опять же, для того, чтобы избежать излишней подгонки дерева под известные данные. По мере роста данных растет и количество атрибутов, так что наше дерево может стать излишне сложным и ветвистым. Теоретически, можно создать дерево с количеством листьев leaves = (rows * attributes), однако насколько полезно такое дерево? Оно вряд ли сможет помочь нам определить неизвестный результат, так как оно всего лишь определяет уже известные данные. Необходимо достичь определенного баланса между точностью анализа и простотой модели. Нам нужна аналитическая модель с минимальным количеством узлов и листьев, которая, тем не менее, отличалась бы высокой точностью. Здесь, как мы видим, необходим определенный компромисс.

И последний вопрос, на котором мы хотели бы остановиться, прежде чем приступить к созданию конкретных моделей в WEKA, это проблема ложного распознавания (false positive и false negative). Основной смысл проблемы ложного распознавания состоит в том, что модель рассматривает какой-либо атрибут как имеющий влияние на конечный результат, в то время как на самом деле этот атрибут никакого влияния на результат не оказывает. И наоборот, существенный атрибут трактуется моделью как несущественный.

Ложное распознавание свидетельствует об ошибочности модели и неверной классификации данных. Безусловно, определенная погрешность в классификации допустима, и задача разработчика модели – определить допустимый процент ошибок. Например, при разработке модели оценки кардиомониторов для больниц от вас потребуются исключительно низкие показатели ошибочности результатов. Напротив, если вы разрабатываете учебную модель для иллюстрации статьи об интеллектуальном анализе данных, вы можете позволить себе достаточно высокий уровень погрешности модели. Развивая эту тему, полезно определить приемлемое процентное отношение ложноотрицательного распознавания к ложноположительному. Самый очевидный пример – модель определения спама. Ложноположительное распознавание (нужное письмо помечается как спам), скорее всего, будет иметь больше отрицательных последствий, нежели ложноотрицательное (письмо-спам попадет в разряд нужных писем). В этом случае может считаться приемлемым соотношение ложноотрицательных распознаваний к ложноположительным как 100:1.

Но довольно общих рассуждений и технической тарабарщины, давайте возьмем реальные данные и пропустим их через аналитический механизм WEKA.

Набор данных для WEKA

Набор данных, который мы будем использовать для примера классификационного анализа, содержит информацию, собранную дилерским центром BMW. Центр начинает рекламную компанию, предлагая расширенную двухгодичную гарантию своим постоянным клиентам. Подобные компании уже проводились, так что дилерский центр располагает 4500 показателями относительно предыдущих продаж с расширенной гарантией. Этот набор данных обладает следующими атрибутами:

  • Распределение по доходам [0=$0-$30k, 1=$31k-$40k, 2=$41k-$60k, 3=$61k-$75k, 4=$76k-$100k, 5=$101k-$150k, 6=$151k-$500k, 7=$501k+]
  • Год/месяц покупки первого автомобиля BMW
  • Год/месяц покупки последнего автомобиля BMW
  • Воспользовался ли клиент расширенной гарантией

Файл данных в формате Attribute-Relation File Format (ARFF) будет выглядеть следующим образом:

Листинг 2. Файл данных для классификационного анализа в WEKA
@attribute IncomeBracket {0,1,2,3,4,5,6,7}
@attribute FirstPurchase numeric
@attribute LastPurchase numeric
@attribute responded {1,0}

@data

4,200210,200601,0
5,200301,200601,1
...

Классификация в WEKA

Загрузите файл bmw-training.arff (см.раздел Загрузка) в программный пакет WEKA, используя те же шаги, которые мы проделали для загрузки данных в случае регрессионного анализа. Замечание: в предлагаемом файле содержатся 3000 из имеющихся 4500 записей. Мы разделили набор данных так, чтобы часть их использовалась для создания модели, а часть – для проверки ее точности, чтобы убедиться, что модель не является подогнанной под конкретный набор данных. После загрузки данных окно WEKA должно выглядеть так, как показано на рисунке 1.

Рисунок 1. Данные дилерского центра BMW для классификации в WEKA
Screenshot shows the WEKA Preprocess tab after the bmw-training.arff data is loaded

Аналогично тому, как мы выбирали тип модели для регрессионного анализа в части 1,теперь нам следует выбрать модель для классификации: откройте закладку Classify, выберите опцию trees, а затем опцию J48 (понятия не имею, почему она так называется, тем не менее, это именно то, что нам нужно).

Рисунок 2. Алгоритм классификации данных BMW
Screenshot shows the Classify tab in Weka after the described selections are made

Теперь мы готовы приступить к созданию конкретной модели анализа средствами пакета WEKA. Убедитесь, что выбрана опция Use training set, чтобы пакет WEKA при создании модели использовал именно те данные, которые мы только что загрузили в виде файла. Нажмите кнопку Start и предоставьте WEKA возможность поработать с нашими данными. Результирующая модель должна выглядеть так, как показано в листинге 3.

Листинг 3. Результат работы классификационной модели WEKA
Number of Leaves  : 	28

Size of the tree : 	43


Time taken to build model: 0.18 seconds

=== Evaluation on training set ===
=== Summary ===

Correctly Classified Instances        1774               59.1333 %
Incorrectly Classified Instances      1226               40.8667 %
Kappa statistic                          0.1807
Mean absolute error                      0.4773
Root mean squared error                  0.4885
Relative absolute error                 95.4768 %
Root relative squared error             97.7122 %
Total Number of Instances             3000     

=== Detailed Accuracy By Class ===

               TP Rate   FP Rate   Precision   Recall  F-Measure   ROC Area  Class
                 0.662     0.481      0.587     0.662     0.622      0.616    1
                 0.519     0.338      0.597     0.519     0.555      0.616    0
Weighted Avg.    0.591     0.411      0.592     0.591     0.589      0.616

=== Confusion Matrix ===

    a    b   <-- classified as
 1009  516 |    a = 1
 710  765 |    b = 0

Ну и что же означают все эти числа? Как нам понять, насколько хороша полученная модель? И где, собственно, это так называемое «дерево», которое должно было получиться в результате? Вполне закономерные вопросы. Давайте ответим на каждый из них по очереди:

  • Что означают все эти числа? Наиболее существенные данные – это показатели классификации "Correctly Classified Instances" (59.1%) и "Incorrectly Classified Instances" (40.9%). Кроме того, следует обратить внимание на число в первой строке столбца ROC Area (0.616). Чуть позже мы подробно обсудим эти значения, пока же просто запомните их. Наконец, таблица Confusion Matrix показывает количество ложноположительных (516) и ложноотрицательных (710) распознаваний.
  • Как понять, насколько хороша полученная модель? Поскольку показатель точности нашей модели – 59,1%, то в первоначальном рассмотрении ее нельзя назвать достаточно хорошей.
  • Где это так называемое дерево? Вы сможете увидеть дерево, если щелкнете правой кнопкой мышки в панели результирующей модели. В контекстном меню выберите опцию Visualize tree. На экране отобразится визуальное представление классификационного дерева нашей модели (рисунок 3), однако в данном случае картинка мало чем нам поможет. Еще один способ увидеть дерево модели – прокрутить вверх вывод в окне Classifier Output, там вы найдете текстовое описание дерева с узлами и листьями.
Рисунок 3. Визуальное представление дерева классификации
Screenshot shows the tree visualization composed of various ovals for data labels and squares with numbers, interconnected with lines

Остался последний этап проверки классификационного дерева: нам надо пропустить оставшийся набор данных через полученную модель и проверить, насколько результаты классификации будут отличаться от реальных данных. Для этого в секции Test options выберите опцию Supplied test set и нажмите на кнопку Set. Укажите файл bmw-test.arff, содержащий оставшиеся 1500 данных, которые не были включены в обучающий набор. При нажатии на кнопку Start WEKA пропустит тестовые данные через модель и покажет результат работы модели. Давайте нажмем на Start и проверим, что у нас получилось.

Рисунок 4. Проверка классификационного дерева
Screenshot shows the classification tree test

Сравнивая показатель Correctly Classified Instances для тестового набора (55,7%) с этим же показателем для обучающего набора (59,1%), мы видим, что точность модели для двух разных наборов данных примерно одинакова. Это значит, что новые данные, которые будут использоваться в этой модели в будущем, не снизят точность ее работы.

Однако, поскольку собственно точность модели довольно низка (всего лишь 60% данных классифицировано верно), мы имеем полное право остановиться и сказать: «Увы, эта модель вообще никуда не годится. Она работает с точностью чуть выше 50%, с таким же успехом мы можем просто пытаться угадать значение случайным образом». И это высказывание будет совершенно справедливо. Это приводит нас к пониманию весьма важного факта, суть которого я попытался осторожно и постепенно донести до сведения читателей: существуют случаи, когда использование алгоритмов интеллектуального анализа данных приводит к созданию неудачной аналитической модели. Наш пример – наглядное тому доказательство, и именно для этого я и включил его в статью.

Мы сознательно проделали все шаги, необходимые для создания классификационного дерева на основании данных, казалось бы, идеально подходящих для классификационной модели. Однако, результат, полученный WEKA, указывает на ошибочность наших рассуждений. Классификационная модель не подходит для анализа имеющихся у нас данных. Созданная нами модель не даст нам никаких полезных сведений, а ее использование может привести к принятию неверных решений и потере денег.

Означает ли это, что наши данные вообще не подлежат никакому анализу? Ответ демонстрирует еще одну важную особенность интеллектуального анализа данных: используя метод «ближайших соседей», который мы подробно рассмотрим в следующей статье, мы создадим другую модель на базе этого же набора данных, с точностью работы 88%. Итак, всегда необходимо помнить, что для того, чтобы извлечь полезную информацию из большого набора данных, вам следует выбрать подходящую модель.

Дополнительные материалы: если вы заинтересовались классификационными деревьями, мы предлагаем вам несколько ключевых фраз для поиска и объяснения понятий, детальное описание которых осталось за рамками этой статьи: ROC-кривая, AUC, ложное положительное, ложное отрицательное, обучающие кривые, метод Байеса (Naive Bayes), прирост информации, переподгонка (overfitting), отсечение ветвей, критерий хи-квадрат.


Кластеризация

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

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

Краткий обзор математических методов

Далее предлагается краткое общее описание математических методов и алгоритмов, используемых методом кластеризации.

  1. Каждый атрибут должен быть приведен к нормальному виду. Для этого каждый показатель делится на разность между самым большим и самым маленьким значением, которые принимает рассматриваемый атрибут на конкретном наборе данных. Например, если рассматриваемый атрибут – возраст, и его наибольшее значение - 72, а наименьшее – 16, то значению 32 будет соответствовать нормализованная величина 0.5714.
  2. Исходя из желаемого количества кластеров, случайным образом выбирается такое же количество строк данных. Эти строки будут использоваться в качестве начальных центров масс кластеров.
  3. Для каждой строки данных определяется расстояние от этой строки до центра масс кластера (случайным образом выбранной строки данных) с помощью метода наименьших квадратов.
  4. Каждая строка набора данных включается в тот кластер, расстояние до центра масс которого оказалось наименьшим.
  5. В каждом кластере определяется новый центр масс как набор средних значений по столбцам на множестве элементов этого кластера.
  6. Определяется расстояние от каждого элемента данных до нового центра масс. Если при этом распределение элементов по кластерам не меняется, разбиение данных на кластеры закончено, и все группы данных определены. Если состав кластеров меняется, следует вернуться к п.3 и повторять этот процесс до тех пор, пока разбиение на кластеры не станет неизменным.

В целом, все эти вычисления выглядят довольно нудно. Для того чтобы разбить набор данных из 10 строк на три кластера с помощью электронных таблиц, потребуется примерно полчаса напряженной работы. Можете представить, сколько времени займет разбиение на 10 кластеров набора из 100000 записей. К счастью, у нас есть компьютер, который способен выполнить подобные расчеты за несколько секунд.

Набор данных для WEKA

Для построения модели кластеризации мы вновь воспользуемся данными дилерского центра BMW. Сотрудники центра собрали данные обо всех посетителях демонстрационного зала, машинах, которые их заинтересовали, и о том, насколько часто посетители демонстрационного зала в итоге покупали приглянувшийся им автомобиль. Теперь дилерскому центру надо проанализировать эти данные для того, чтобы выделить различные группы посетителей и понять, нельзя ли определить какие-либо тенденции в их поведении. В нашем примере используется 100 записей, и каждый столбец описывает определенный этап, который, как правило, проходит покупатель в процессе выбора и приобретения автомобиля. Соответственно, значение 1 в столбце говорит о том, что посетитель прошел конкретный этап, а 0 – что посетитель этот этап не прошел. Файл с данными в формате ARFF приведен в листинге 4.

Листинг 4. Данные для кластерного анализа средствами WEKA
@attribute Dealership numeric
@attribute Showroom numeric
@attribute ComputerSearch numeric
@attribute M5 numeric
@attribute 3Series numeric
@attribute Z4 numeric
@attribute Financing numeric
@attribute Purchase numeric

@data

1,0,0,0,0,0,0,0
1,1,1,0,0,0,1,0
...

Кластеризация в WEKA

Загрузите файл bmw-browsers.arff в WEKA, выполнив те же шаги, которые мы проделали ранее для открытия данных в закладке Preprocess. Потратьте несколько минут на визуальный анализ данных, обратите внимание на атрибуты данных, распределение данных по столбцам, и так далее. После загрузки данных ваш экран WEKA должен выглядеть так, как показано на рисунке 5.

Рисунок 5. Данные BMW для кластеризации
Screenshot of WEKA Explorer after loading the bmw-browsers.arff data

Поскольку мы хотим разбить имеющиеся у нас данные на кластеры, вместо закладки Classify нам потребуется закладка Cluster. Нажмите на кнопку Choose и в предлагаемом меню выберите опцию SimpleKMeans (в рамках данной статьи мы будем пользоваться этим методом кластеризации). В результате окно WEKA Explorer будет выглядеть так, как показано на рисунке 6.

Рисунок 6. Алгоритм кластеризации данных BMW
Screenshot showing the Cluster tab with the SimpleKMeans selection

Теперь нам нужно выбрать необходимые параметры для нашего алгоритма кластеризации. Щелкните на опции SimpleKMeans (дизайн пользовательского интерфейса оставляет желать лучшего, но работать с ним можно). Единственный атрибут алгоритма, который нас интересует – это поле numClusters, которое указывает на количество кластеров для разбиения (напоминаем, что это значение вам нужно выбрать еще до создания модели). Изменим значение по умолчанию (2) на 5. Постарайтесь запомнить последовательность шагов, чтобы вы смогли впоследствии поменять количество кластеров. Теперь ваше окно WEKA Explorer должно выглядеть так, как показано на рисунке 7. Нажмите на кнопку OK, чтобы сохранить выбранные параметры.

Рисунок 7. Настройки алгоритма кластеризации
Screenshot of attribute editor with numClusters changed to 5

Теперь мы можем приступить к созданию модели. Как уже отмечалось выше, для разбиения 100 строк на 5 кластеров с помощью электронных таблиц потребовалось бы несколько часов, однако WEKA выдает нам результат менее чем за секунду. Результат обработки наших данных показан в листинге 5.

Листинг 5. Результаты кластеризации
                               Cluster#
Attribute            Full Data      0          1          2          3          4
                       (100)       (26)       (27)        (5)       (14)       (28)
==================================================================================
Dealership              0.6     0.9615     0.6667          1     0.8571          0
Showroom               0.72     0.6923     0.6667          0     0.5714          1
ComputerSearch         0.43     0.6538          0          1     0.8571     0.3214
M5                     0.53     0.4615      0.963          1     0.7143          0
3Series                0.55     0.3846     0.4444        0.8     0.0714          1
Z4                     0.45     0.5385          0        0.8     0.5714     0.6786
Financing              0.61     0.4615     0.6296        0.8          1        0.5
Purchase               0.39          0     0.5185        0.4          1     0.3214


Clustered Instances

0       26 ( 26%)
1       27 ( 27%)
2        5 (  5%)
3       14 ( 14%)
4       28 ( 28%)

Как нам интерпретировать полученный результат? Данные кластеризации показывают, каким образом сформирован каждый кластер: значение «1» означает, что у всех данных в этом кластере соответствующий атрибут равен 1, а значение «0» означает, что у всех данных в этом кластере соответствующий атрибут равен 0. Данные соответствуют среднему значению атрибута на кластере. Каждый кластер характеризует определенный тип поведения клиентов, таким образом, на основании нашего разбиения мы можем сделать некоторые полезные выводы:

  • Кластер 0— эту группу посетителей можно было бы назвать «мечтатели». Они бродят вокруг дилерского центра, рассматривая машины, выставленные на внешней парковке, но никогда не заходят внутрь, и, хуже того, никогда ничего не покупают.
  • Кластер 1— эту группу следовало бы назвать «поклонники М5», поскольку они сразу же подходят к выставленным автомобилям этой модели, полностью игнорируя BMW серии 3 или Z4. Тем не менее, эта группа не отличается высокими показателями покупки машин – всего 52%. Это потенциально может свидетельствовать о недостаточно продуманной стратегии продаж и о необходимости улучшить работу дилерского центра, например, за счет увеличения количества продавцов в секции M5.
  • Кластер 2— эта группа настолько мала, что мы могли бы назвать ее выбраковкой. Дело в том, что данные этой группы статистически довольно разбросаны, и мы не можем сделать каких-либо определенных заключений относительно поведения посетителей, попавших в этот кластер (подобная ситуация может указывать на то, что вам следует сократить количество кластеров в модели)
  • Кластер 3— эту группу следовало бы назвать «любимцы BMW», потому что посетители, попавшие в это кластер, всегда покупают машину и получают необходимое финансирование. Обратите внимание, данные этого кластера демонстрируют интересную модель поведения этих покупателей: сначала они осматривают выставленные на парковке машины, а затем обращаются к поисковой системе дилерского центра. Как правило, они покупают модели M5 или Z4, но никогда не берут модели третьей серии. Данные этого кластера указывают на то, что дилерскому центру следует активнее привлекать внимание к поисковым компьютерам (может быть, вынести их на внешнюю парковку), и кроме того, следует найти какой-нибудь способ выделить модели M5 и Z4 в результатах поиска, чтобы гарантированно обратить на них внимание посетителей. После того, как посетитель, попавший в этот кластер, выбрал определенную модель автомобиля, он гарантированно получает необходимый кредит и совершает покупку.
  • Кластер 4— эту группу можно назвать «начинающие владельцы BMW», поскольку они всегда ищут модели 3 серии и никогда не интересуются более дорогими M5. Они сразу же проходят в демонстрационный зал, не тратя время на осмотр машин на внешней стоянке. Кроме того, они не пользуются поисковой системой центра. Примерно 50% этой группы получают одобрение по кредиту, тем не менее, покупку совершают всего 32% участников. Анализируя данные этого кластера, можно сделать следующий вывод: посетители этой группы хотели бы купить свой первый BMW и точно знают, какая машина им нужна (модель 3 серии с минимальной конфигурацией). Однако, для того чтобы купить машину, им нужно получить положительное решение по кредиту. Чтобы повысить уровень продаж среди посетителей 4 кластера, дилерскому центру следовало бы понизить уровень требований для получения кредита или снизить цены на модели 3 серии.

Еще один интересный способ изучения результатов кластеризации – это визуальное представление данных. Щелкните правой кнопкой мышки в секции Result List закладки Cluster (и вновь элементы пользовательского интерфейса оставляют желать лучшего). В контекстном меню выберите опцию Visualize Cluster Assignments. В результате откроется окно с графическим представлением результатов кластеризации, настройки которого вы можете выбрать наиболее удобным для вас образом. Для нашего примера, измените настройку оси X так, чтобы она соответствовала количеству автомобилей М5 (M5 (Num)), а настройку оси Y – так, чтобы она показывала количество купленных автомобилей (Purchase (Num)), и укажите выделение каждого кластера отдельным цветом (для этого установите значение поля Color в Cluster (Nom)). Такие настройки помогут нам оценить распределение по кластерам в зависимости от того, сколько человек интересовалось BMW M5, и сколько человек купило эту модель. Кроме того, сдвиньте указатель Jitter примерно на три четверти в сторону максимума, это искусственным образом увеличит разброс между группами точек, чтобы вам было удобнее их просматривать.

Соответствует ли визуальное отображение кластеризации тем заключениям, которые мы сделали на основании данных в листинге 5? Как мы видим, в окрестности точки X=1, Y=1 (посетители, которые интересовались автомобилями модели M5 и купили их) расположены только два кластера: 1 и 3. Аналогично, в окрестности точки X=0, Y=0 расположены только два кластера: 4 и 0. Соответствует ли это нашим выводам? Да, соответствует. Кластеры 1 и 3 покупают BMW M5, в то время как кластер 0 не покупает ничего, а кластер 4 ищет BMW серии 3. На рисунке 8 показано визуальное отображение кластеров нашей модели. Мы предлагаем вам самостоятельно попрактиковаться в обнаружении других трендов и течений, меняя настройки осей X и Y.

Рисунок 8. Визуальное отображение кластеризации
Screenshot of cluster data in the visual inspection view

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


Заключение

Эта статья посвящена рассмотрению двух методов интеллектуального анализа данных: методу классификационных деревьев и методу кластеризации. Отличие этих методов от модели регрессионного анализа, описанной в части 1, состоит в том, что при использовании классификации или кластеризации мы не ограничиваемся получением какого-либо одного числового значения. Методы классификационных деревьев и кластеризации позволяют нам более гибко использовать имеющиеся данные и являются мощным инструментом интеллектуального анализа данных.

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

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

Третья, заключительная, статья серии Интеллектуальный анализ данных с помощью программного пакета WEKA будет посвящена обсуждению метода ближайших соседей. Кроме того, мы рассмотрим возможности использования WEKA не в качестве самостоятельного приложения, а в виде внешней Java™-библиотеки, что позволит нам встроить этот аналитический пакет непосредственно в наш код на стороне сервера. Таким образом, мы сможем анализировать данные на сервере без преобразования их в ARFF-файл и ручного анализа полученных данных в WEKA.


Загрузка