• Главная <
  • Галерея
  • Карта сайта
  • Наши контакты
  • Обратная связь

Інтелектуальний аналіз даних за допомогою програмного пакета WEKA: Частина 3. Метод найближчих сусідів і бібліотека серверного додатка

  1. Серія контенту:
  2. Цей контент є частиною серії: Інтелектуальний аналіз даних за допомогою програмного пакета WEKA
  3. Метод найближчих сусідів
  4. Математичний алгоритм методу найближчих сусідів
  5. Лістинг 1. Математична модель методу найближчих сусідів
  6. Набір даних для WEKA
  7. Лістинг 2. Файл даних для аналізу методом найближчих сусідів за допомогою пакета WEKA
  8. Малюнок 1. Дані дилерського центру BMW для аналізу методом найближчих сусідів за допомогою WEKA
  9. Малюнок 2. Алгоритм методу найближчих сусідів для набору даних BMW
  10. Малюнок 3. Модель методу найближчих сусідів для набору даних BMW
  11. Використання WEKA на сервері
  12. Лістинг 4. Завантаження даних в WEKA
  13. Лістинг 5. Створення моделі регресійного аналізу в WEKA
  14. Висновок
  15. Ресурси для скачування

Інтелектуальний аналіз даних за допомогою програмного пакета WEKA

Серія контенту:

Цей контент є частиною # з серії # статей: Інтелектуальний аналіз даних за допомогою програмного пакета WEKA

https://www.ibm.com/developerworks/ru/views/global/libraryview.jsp?series_title_by=Интеллектуальный+анализ+данных+с+помощью+программного+пакета+weka

Слідкуйте за виходом нових статей цієї серії.

Цей контент є частиною серії: Інтелектуальний аналіз даних за допомогою програмного пакета WEKA

Слідкуйте за виходом нових статей цієї серії.

У двох попередніх статтях серії Інтелектуальний аналіз даних за допомогою програмного пакета WEKA ми розглянули основні концепції інтелектуального аналізу даних. Якщо ви не читали частина 1 і частина 2 , Ми рекомендуємо вам ознайомитися з ними, так як в перших частинах серії обговорювалися питання, необхідні для розуміння матеріалу, викладеного в даній статті. Основні моменти, що розглядаються в попередніх статтях, стосуються трьох основних технік інтелектуального аналізу даних, які дозволять вам перетворити великі набори незв'язаних і на перший погляд ніяк не може бути застосована даних в мають певний сенс і практично корисні схеми, структури і правила. Перший вивчений нами метод - метод регресійного аналізу використовується для прогнозування чисельного результату (наприклад, вартості будинку), грунтуючись на аналогічних відомих прикладах. Другий метод, метод класифікації, так само відомий як метод класифікаційних дерев або дерев рішень, дозволяє створити дерево для прогнозування можливого значення невідомої величини (в розглянутому прикладі ми спробували передбачити ефективність рекламної компанії BMW). Крім того, ми познайомилися з методом кластеризації, який дозволяє розбити наявні дані на кластери (групи) і для кожної з груп виявити свої тенденції і правила (в якості конкретного прикладу використовувалися дані про продажі BMW). Всі ці методи дозволяють перетворити ваші дані в корисну інформацію, проте кожен з них використовує свій власний аналітичний підхід, свої типи і набори даних, що, власне, і визначає один з найважливіших аспектів інтелектуального аналізу даних: для того, щоб розробити ефективну модель аналізу, повинна мати правильно визначений набір вхідних даних.

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

У попередніх статтях ми використовували програмний пакет WEKA в якості окремого самостійного застосування, але наскільки такий підхід виправданий і корисний в реальному житті? Очевидно, що він далекий від ідеалу. Оскільки WEKA є Java-додатком, то воно включає в себе Java -бібліотеки, яка може викликатися з іншої програми, що виконується на стороні сервера. Такий підхід, швидше за все, виявиться більш корисним для більшості читачів. Використовуючи Java-бібліотеку WEKA, ви можете написати код, який аналізує ваші дані, і «на льоту» вносити всі необхідні корективи, замість того щоб чекати, поки хтось отримає ваші дані зі сховища, конвертує в формат WEKA і прожене їх через WEKA Explorer .

Метод найближчих сусідів

Метод найближчих сусідів, так само відомий як метод коллаборатівной фільтрації або метод навчання на прикладах, є вельми корисним способом інтелектуального аналізу даних, що дозволяє використовувати накопичені приклади з відомим результатом для прогнозування очікуваного результату для нових зразків даних. Подібне визначення схоже на визначення методів регресійного аналізу та класифікації. Чим же новий метод відрізняється від них? По-перше, як ви пам'ятаєте, метод регресійного аналізу використовується для прогнозування чисельного результату. Це його основна відмінність від методу найближчих сусідів. Метод класифікації, як ми переконалися на розглянутих раніше завданнях, використовує кожне значення для створення дерева рішень, за яким потрібно пройти для визначення кінцевого результату. Подібний підхід може викликати певні складнощі. Задумайтесь, наприклад, про діяльність такої компанії, як Amazon, і що надається їй функціональності «Покупці, які купили X, також купили і Y». Уявляєте, скільки гілок і вузлів включало б в себе класифікаційне дерево для подібного аналізу, якби компанія Amazon використовувала метод класифікації? Список продуктів містить кілька сотень тисяч різних найменувань, так що ви можете уявити собі обсяг результуючого дерева і його точність. Навіть якщо ви дійшли до останньої гілки, то ви з подивом виявите, що вона містить всього 3 продукту, в той час як Amazon зазвичай пропонує своїм відвідувачам 12 продуктів. Так що класифікаційне дерево є не надто підходящою моделлю для такого аналізу.

Ви побачите, що метод найближчих сусідів в змозі успішно вирішити ці проблеми, особливо проблему аналізу великих масивів даних, таких, якими оперує, наприклад, Amazon. Метод не має обмежень по кількості порівнянь і однаково добре працює і з базою даних, що містить інформацію про 20 користувачів, і з базою даних, яка налічує 20 мільйонів для користувача записів. Крім того, ви самі можете визначити, скільки варіантів рішень ви хочете отримати в результаті роботи методу. Судячи з цього короткого опису, метод просто чудовий. Так і є насправді. Можливо, метод найближчих сусідів виявиться найбільш корисним методом для тих читачів, які володіють підприємством електронної комерції.

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

Математичний алгоритм методу найближчих сусідів

Як ви переконаєтеся самі, алгоритм методу найближчих сусідів багато в чому схожий з алгоритмом, використовуваним в методі кластеризації. Метод визначає відстань між невідомої точкою і всіма відомими точками даних. Визначення відстані - цілком тривіальна процедура, легко виконувана в рамках електронних таблиць, так що досить потужний комп'ютер справиться з цим завданням практично миттєво. Найпростіший і найпоширеніший спосіб визначення відстані - це нормалізоване евклідова відстань. Опис звучить складніше, ніж власне обчислення. Звернемося до конкретного прикладу і спробуємо визначити, який товар схильний придбати покупець № 5.

Лістинг 1. Математична модель методу найближчих сусідів

Покупець Вік Дохід Набутий продукт 1 45 46k Книга 2 39 100k TV 3 35 38k DVD 4 69 150k Чохли для автомобіля 5 58 51k ??? Крок 1: Формула для визначення відстані Відстань = SQRT (((58 - Вік) / (69-35)) ^ 2) + ((51000 - Дохід) / (150000-38000)) ^ 2) Крок 2: Обчислення балів Покупець бали Набутий продукт 1 .385 Book 2 .710 TV 3 .686 DVD 4 .941 Car Cover 5 0.0 ???

Щоб відповісти на питання, який товар з найбільшою ймовірністю придбає покупець № 5, ми скористалися алгоритмом методу найближчих сусідів, наведеним вище, і отримали в результаті в якості найбільш вірогідної покупки книгу. Справа в тому, що відстань між покупцем № 5 і покупцем № 1 менше (значно менше), ніж відстань між покупцем № 5 і будь-яким іншим покупцем. Грунтуючись на цій моделі, можна стверджувати, що поведінка покупця № 5 з великою часткою ймовірності співпаде з поведінкою найближчого до нього покупця.

Однак корисність методу найближчих сусідів цим не вичерпується. Цей алгоритм може бути розширений таким чином, що замість одного найближчого сусіда можна було б визначати будь-яку кількість досить близьких відповідників. Таке розширення алгоритму називається N найближчих сусідів (наприклад, три найближчих сусіда). Наприклад, якщо в розглянутому вище прикладі потрібно визначити два найбільш вірогідних придбання покупця № 5, то відповідь буде книга і DVD. Якщо потрібно визначити 12 найбільш ймовірних покупок, то слід скористатися алгоритмом 12 найближчих сусідів (насправді Amazon використовує більш складний метод, ніж просто 12 найближчих сусідів).

Крім того, алгоритм не обмежується визначенням найбільш вірогідною покупки, він може бути використаний для отримання бінарного відповіді так / ні. Якщо в розглянутому вище прикладі ми замінимо значення в останньому стовпці на «Так, Ні, Так, Ні» (для покупців з першого по четвертий), то метод одного найближчого сусіда визначить «Так» в якості найбільш прогнозованого відповіді покупця № 5, метод двох найближчих сусідів теж видасть «так» (покупці №1 і № 3 відповіли «так»), і метод трьох найближчих сусідів теж спрогнозує позитивну відповідь (покупці №1 і № 3 відповіли «так», покупець № 2 відповів «Ні», так що середнє значення дорівнює «Так»).

Останнє питання, на якій потрібно відповісти, перш ніж приступити до використання метод найближчих сусідів в практичних завданнях, це вирішити, скільки сусідів потрібно для нашої моделі. Ну що ж, не на всі питання можна легко знайти відповідь. Вам буде потрібно кілька експериментальних спроб для того, щоб визначити, яка кількість сусідів є оптимальним. Крім того, якщо ви використовуєте модель для отримання бінарного результату (0 або 1), то очевидно, що вам буде потрібно парна кількість сусідів.

Набір даних для 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, чи скористався клієнт розширеною гарантією.

Лістинг 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 ...

Чому ми вирішили використовувати той же самий набір даних, яким ми скористалися для вивчення методу класифікації? Тому що, якщо ви пам'ятаєте отриманий нами результат, метод класифікації на цьому наборі даних виявився недостатньо точним (59% точності - з таким же успіхом можна просто намагатися вгадати шуканий відповідь). Тепер ми спробуємо побудувати модель з більш високою точністю прогнозування та надати нашому вигаданому дилеру інформацію, придатну для практичного використання.

Завантажимо файл bmw-training.arff в WEKA, виконавши в закладці Preprocess вже знайомі вам кроки. Вікно WEKA має виглядати так, як показано на малюнку 1.

Малюнок 1. Дані дилерського центру BMW для аналізу методом найближчих сусідів за допомогою WEKA
Інтелектуальний аналіз даних за допомогою програмного пакета WEKA   Серія контенту:   Цей контент є частиною # з серії # статей: Інтелектуальний аналіз даних за допомогою програмного пакета WEKA   https://www

Точно так же, як ми виконали це для методів регресійного аналізу і класифікації в попередніх статтях, ми повинні відкрити закладку Classify. В панелі Classify потрібно вибрати опцію lazy, а потім Ibk (тут IB означає Instance-Based - навчання на прикладах, а k вказує на кількість сусідів, поведінка яких ми хочемо дослідити).

Малюнок 2. Алгоритм методу найближчих сусідів для набору даних BMW

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

Малюнок 3. Модель методу найближчих сусідів для набору даних BMW
Лістинг 3. Результат обчислень IBk

=== Evaluation on training set === === Summary === Correctly Classified Instances 2663 88.7667% Incorrectly Classified Instances 337 11.2333% Kappa statistic 0.7748 Mean absolute error 0.1326 Root mean squared error 0.2573 Relative absolute error 26.522% Root relative squared error 51.462% Total Number of Instances 3000 === Detailed Accuracy By Class === TP Rate FP Rate Precision Recall F-Measure ROC Area Class 0.95 0.177 0.847 0.95 0.896 0.972 1 0.823 0.05 0.941 0.823 0.878 0.972 0 Weighted Avg. 0.888 0.114 0.893 0.888 0.887 0.972 === Confusion Matrix === ab <- classified as 1449 76 | a = 1 261 1214 | b = 0

Як це співвідноситься з моделлю, яку ми отримали за допомогою методу класифікації? У моделі, що використовує метод найближчих сусідів, показник точності дорівнює 89% - зовсім непогано для початку, з огляду на те, що точність попередньої моделі становила всього 59%. Практично 90% точності - це цілком прийнятний рівень. Давайте розглянемо результати роботи методу в термінах помилкових визначень, щоб ви змогли на конкретному прикладі побачити, як саме WEKA може використовуватися для вирішення реальних питань бізнесу.

Результати використання моделі на нашому наборі даних показують, що у нас є 76 хибнопозитивних распознаваний (2.5%) та 261 помилково негативні распознаваний (8.7%). У нашому випадку Хибнопозитивні розпізнавання означає, що модель вважає, що даний покупець придбає розширену гарантію, хоча насправді він відмовився від покупки. Псевдонегативну розпізнавання, в свою чергу, означає, що згідно з результатами аналізу даний покупець відмовиться від розширеної гарантії, а насправді він її купив. Припустимо, що вартість кожної рекламної листівки, що розсилається дилером, становить $ 3, а покупка однієї розширеної гарантії приносить йому 400 $ доходу. Таким чином, помилки помилкового розпізнавання в термінах витрат і доходів нашого дилера будуть виглядати наступним чином: 400 $ - (2.5% * $ 3) - (8.7% * 400) = $ 365. Отже, помилкове розпізнавання помиляється на користь дилера. Порівняємо цей показник з даними моделі класифікації: $ 400 - (17.2% * $ 3) - (23.7% * $ 400) = $ 304. Як ви бачите, використання більш точної моделі підвищує потенційний дохід дилера на 20%.

В якості самостійного вправи спробуйте змінити кількість найближчих сусідів в моделі (для цього розкрийте список параметрів, клацнувши правою кнопкою мишки на поле "IBk -K 1 ...."). Ви можете вибрати довільне значення для параметра "KNN" (К найближчих сусідів). Ви побачите, що точність моделі підвищується в міру додавання сусідів.

Зверніть увагу на певні недоліки моделі найближчих сусідів. Корисність цього методу цілком очевидна, коли йдеться про значні наборах даних, таких, наприклад, якими володіє Amazon. Маючи дані про 20 мільйонів користувачів нескладно отримати досить точний результат - в базі потенційних покупців Amazon напевно знайдеться людина, чиї переваги схожі з вашими. Модель, заснована на такому значному обсязі даних, безумовно, буде відрізнятися високою точністю прогнозів. З іншого боку, модель стає практично марною, якщо у вас є лише кілька записів для порівняння. На початкових етапах розвитку он-лайн магазинів електронної комерції, їх власники могли використовувати дані приблизно про 50 покупців. На такому невеликому наборі даних рекомендації, отримані за допомогою методу найближчих сусідів, не збігалися з дійсними покупками, так як переваги вашого найближчого сусіда були дуже далекі від ваших уподобань.

Остання проблема, пов'язана з використанням методу найближчих сусідів полягає в тому, що цей метод є високозатратним з точки зору проведення обчислень. У випадку з компанією Amazon, яка має даними про 20 мільйонів покупців, щоб визначити найближчих сусідів, конкретного покупця необхідно порівняти з кожним з решти 20 мільйонів. Ну по-перше, якщо ваш бізнес налічує 20 мільйонів клієнтів, то подібні обчислення не викличуть у вас серйозних проблем, так як ви, цілком очевидно, просто купаєтеся в грошах. По-друге, подібні обчислення - ідеальна завдання для хмарних систем, так як в цьому випадку обчислювальні процеси будуть виконуватися паралельно на декількох десятках комп'ютерів, а після обчислення всіх відстаней, результати будуть порівнюватися між собою для визначення найближчих наборів даних (як, наприклад, це робить Google MapReduce). По-третє, на практиці таких масштабних обчислень не буде потрібно. Якщо необхідно визначити, куплю я одну книгу, то для цього зовсім не обов'язково порівнювати мене з усіма 20 мільйонами користувачів Amazon, досить буде знайти найближчого сусіда серед покупців книг. Подібний підхід дозволяє використовувати лише частина бази даних і скоротити обсяг обчислень.

Запам'ятайте: інтелектуальний аналіз даних не зводиться до простого механізму завантаження вхідних даних та отримання бажаного результату на виході. Необхідно провести досить ретельне дослідження даних для вибору найбільш відповідної моделі для аналізу. Крім того, зменшення обсягу вхідних даних дозволить скоротити час, необхідний для виконання всіх розрахунків. Далі, отриманий результат необхідно проаналізувати з точки зору його точності, тільки після цього ви можете схвалити застосування вашої аналітичної моделі в реальній практиці.

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

Використання WEKA на сервері

Одне з основних переваг WEKA полягає в тому, що це не тільки самостійне додаток, але і автономний Java JAR-файл, який ви можете скопіювати в папку бібліотек на сервері і використовувати в коді серверного додатка. Тільки уявіть собі, скільки нових цікавих і корисних можливостей ви зможете реалізувати в своєму додатку за допомогою WEKA-бібліотеки. Ви можете створити новий віджет Product Recommendation для магазину електронної комерції, який буде працювати за аналогією з віджетом, розміщеному на сайті Amazon (очевидно, що доступ до подібної функціональності кожного клієнта не може бути реалізований за допомогою окремого додатка). Сам додаток WEKA просто використовує WEKA Java API, так що ви вже бачили API в дії. Тепер давайте розберемося, як інтегрувати його в ваш власний код.

Насправді, ви вже завантажили WEKA API JAR, це той самий JAR-файл, який ви використовуєте для запуску WEKA Explorer. Для того щоб використовувати цей файл в коді свого застосування, вам потрібно додати його в classpath вашої середовища розробки Java, тобто виконати всі ті стандартні кроки, які потрібні для включення стороннього JAR-файлу в ваш код.

Як ви можете здогадатися, центральним блоком WEKA API є дані. Інтелектуальний аналіз заснований на даних, і всі алгоритми, які ми вивчили, обертаються навколо даних. Так що давайте подивимося, як нам перетворити дані в формат, який використовується WEKA API. Щоб нам простіше було розібратися в цьому питанні, почнемо з даних, які ми використовували в першій статті цієї серії для визначення вартості будинку.

Зауваження: Тут необхідно зауважити, що навігація в WEKA API може викликати певні труднощі. Перш за все, перевірте версію пакету WEKA і версію API, яку ви використовуєте. Різні версії API значно відрізняються один від одного, так що код різних версій може не збігатися. Крім того, незважаючи на те, що API представляє закінчену реалізацію, існує не так багато прикладів для початківців (власне, тому ви і читаєте цю статтю). Я використовую версію WEKA V3.6.

Лістинг 4 демонструє, як потрібно відформатувати дані для завантаження в WEKA.

Лістинг 4. Завантаження даних в WEKA

// Визначте кожен атрибут (або стовпець) і надайте йому номер // Очевидно, що правильніше буде не привласнювати явно номер колонки, // а отримати його в якості індексу в контейнері Attribute a1 = new Attribute ( "houseSize", 0); Attribute a2 = new Attribute ( "lotSize", 1); Attribute a3 = new Attribute ( "bedrooms", 2); Attribute a4 = new Attribute ( "granite", 3); Attribute a5 = new Attribute ( "bathroom", 4); Attribute a6 = new Attribute ( "sellingPrice", 5); // Кожен елемент повинен бути доданий в FastVector // призначений для користувача контейнер, який використовується в даній версії WEKA. // В пізніших версіях Weka ця помилка виправлена, // і використовується тільки ArrayList FastVector attrs = new FastVector (); attrs.addElement (a1); attrs.addElement (a2); attrs.addElement (a3); attrs.addElement (a4); attrs.addElement (a5); attrs.addElement (a6); // Кожен елемент даних повинен створювати об'єкт класу Instance // Конструктор вимагає вказати кількість рядків, // яке повинно бути визначено. У нашому випадку це // хороший дизайн, так як ви можете передавати порожні значення, якщо вони є Instance i1 = new Instance (6); i1.setValue (a1, 3529); i1.setValue (a2, 9191); i1.setValue (a3, 6); i1.setValue (a4, 0); i1.setValue (a5, 0); i1.setValue (a6, 205000); .... // Кожен об'єкт Instance необхідно додати до більшого контейнеру // класу Instances. У конструкторі цього класу вам // потрібно визначити ім'я, задати атрибути, які використовуються // в наборі даних, і кількість об'єктів Instance, // які будуть додані. Це теж не ідеальний дизайн, // так як потрібно заздалегідь визначити в конструкторі кількість об'єктів, // але ви все одно можете вказати 0 в якості початкового значення, // а потім додати об'єкти Instance і отримати правильне значення // (іншими словами, вам слід вказати тут «0») Instances dataset = new Instances ( "housePrices", attrs, 7); dataset.add (i1); dataset.add (i2); dataset.add (i3); dataset.add (i4); dataset.add (i5); dataset.add (i6); dataset.add (i7); // Для класу Instances нам потрібно вибрати стовпець для // кінцевого результату (тобто залежну змінну). Як ви пам'ятаєте, // деякі методи інтелектуального аналізу даних використовуються // для прогнозування результату, і метод регресійного аналізу // якраз відноситься до таких методів dataset.setClassIndex (dataset.numAttributes () - 1);

Тепер наш набір даних завантажений в WEKA. Наведений вище приклад вимагає кілька великих зусиль, ніж потрібно насправді. Ви завжди можете написати свої власні wrapper-класи для того, щоб швидко отримати дані з бази і експортувати їх в клас об'єктів WEKA. Якщо ви збираєтеся використовувати WEKA в якості частини серверного додатка, я настійно рекомендую вам витратити час на розробку таких wrapper-класів, тому що працювати з даними так, як показано в прикладі вище, досить утомливо. Як тільки ваші дані перетворені в об'єкти instances, ви можете використовувати будь-який метод для аналізу наявної у вас інформації, так що має сенс максимально полегшити і оптимізувати процес завантаження даних в WEKA.

Тепер давайте припустимо наші дані через модель регресійного аналізу і переконаємося, що результат збігається з результатом, який ми отримали за допомогою Weka Explorer. Використовувати метод регресійного аналізу за допомогою WEKA API на готовому наборі даних досить просто, набагато простіше, ніж завантажити самі дані.

Лістинг 5. Створення моделі регресійного аналізу в WEKA

// Створимо модель LinearRegression, що є реалізацією // методу інтелектуального аналізу даних, який ми хочемо // використовувати в нашому прикладі LinearRegression linearRegression = new LinearRegression (); // Цей метод виконує всі кроки, необхідні для аналізу // даних методом регресії. Він буде використовувати весь // наявний у нас набір даних // Як тільки метод закінчить роботу, наш аналіз готовий // і ви можете побачити кінцевий результат linearRegression.buildClassifier (dataset); // Нас, перш за все, цікавлять обчислювані коефіцієнти нашої моделі // так як саме вони визначають результуюче значення // невідомого параметра double [] coef = linearRegression.coefficients (); // Використовуючи дані про мій будинок (наведені в першій статті), // ми можемо підставити конкретні значення і помножити їх // на коефіцієнти, визначені моделлю регресійного аналізу // Зверніть увагу, ми не використовуємо coefficient [5], він // дорівнює 0, так як відповідає результуючої змінної нашого тестового набору double myHouseValue = (coef [0] * 3198) + (coef [1] * 9669) + (coef [2] * 5) + (coef [3] * 3) + ( coef [4] * 1) + coef [6]; System.out.println (myHouseValue); // результат буде дорівнює 219328.35717359098 // що збігається з величиною, отриманою в першій статті

От і все! Використання методів класифікації, кластеризації або найближчих сусідів зажадає кілька великих зусиль, ніж застосування методу регресійного аналізу, однак і ці методи не повинні викликати у вас великих труднощів. Пропустити готовий набір даних через обрану модель інтелектуального аналізу даних значно простіше, ніж завантажити самі дані в WEKA.

В ідеалі, цей невеликий розділ розрахований на те, щоб викликати певний інтерес до питань інтеграції WEKA в код вашого серверного додатка. Якщо ви є власником магазину електронної комерції і хочете рекомендувати правильні продукти свої покупцям, якщо ви хочете підвищити ефективність продажів за допомогою купонів на знижку, оптимізувати рекламну компанію, що проводиться за допомогою AdWords, або поліпшити цільові сторінки рекламних оголошень, застосування методів інтелектуального аналізу даних допоможе вам домогтися кращих результатів. Використовуючи можливості вбудовування WEKA API, ви можете створити серверний додаток, перемикаюче цільові сторінки реклами та аналізує дані для визначення найбільш ефективної цільової сторінки. Об'єднуючи отримані результати з результатами аналізу рекламних компаній AdWords, ви зможете визначити оптимальний спосіб залучення відвідувачів на ваш сайт і підвищите свій рівень продажів.

Висновок

Ця стаття завершує серію з трьох частин, що знайомить читачів з основною концепцією інтелектуального аналізу даних і з програмним продуктом для аналізу даних WEKA. Як ви переконалися, за допомогою WEKA ви можете вирішити цілий ряд завдань аналізу даних, які раніше могли бути вирішені тільки за допомогою комерційного ПЗ. Програмний продукт WEKA має потужну функціональність і є вільно поширюваним ПЗ. WEKA - оптимальне рішення проблеми аналізу даних, тому що завантаження, установка і запуск цього додатка не викликає ніяких проблем і не вимагає багато часу.

Дана стаття розглядає ще один метод інтелектуального аналізу даних, метод найближчих сусідів. Цей алгоритм ідеальний для визначення даних, найбільш близьких до невідомого значенням, і використовує набір відомих параметрів для визначення невідомої величини. Ми розглянули, наскільки такий підхід близький до того, що ви бачите кожні день в онлайн-магазинах в розділі рекомендованих продуктів. За допомогою аналізу даних такі сайти як Amazon можуть швидко (по крайней мере, для них, за допомогою тисяч комп'ютерів, якими вона володіє) показати, що саме придбали покупці, схожі на вас.

Завдання останньої секції цієї статті - показати, що можливості застосування WEKA не обмежуються запуском окремого додатка. ПО WEKA може використовуватися в якості самостійної Java-бібліотеки, яку ви можете скопіювати у середу свого серверного додатка і використовувати WEKA API точно так же, як API будь-який інший бібліотеки Java. Ми розглянули один з можливих способів завантаження даних за допомогою WEKA API (хоча я як і раніше настійно рекомендую вам витратити час на розробку зручною у використанні wrapper-програми, автоматично виконує імпорт даних з вашої бази і їх перетворення в формат WEKA). І на завершення, ми переконалися, наскільки просто створити модель регресійного аналізу даних і повторити результат, отриманий за допомогою програми WEKA, але вже засобами API.

Останнє, що хотілося б порадити читачам, готовим приступити до використання API, це уважно вивчити документацію і ознайомитися з усіма доступними функціями. Робота з API може здатися досить складною, так що ретельне вивчення можливостей інтерфейсу має допомогти вам успішно використовувати функції API замість того, щоб відмовитися від них після декількох невдалих спроб.

Сподіваюся, що ця серія статей спонукає вас завантажити WEKA і спробувати визначити взаємозв'язку і правила, приховані в наявних у вас даних.

Ресурси для скачування

Схожі тими

  • Згідно з вимогою проекту WEKA, всі публікації про це програмному продукті повинні посилатися на документ The WEKA Data Mining Software: An Update , Складений Марком Холом (Mark Hall), Ейбом Франком (Eibe Frank), Джеффрі Холмсом (Geoffrey Holmes), Бернардом Пфарінгером (Bernhard Pfahringer), Петером Рейтеманн (Peter Reutemann) і Яном Віттені (Ian H. Witten).
  • Документацію про програмний продукт WEKA і відповіді на найбільш поширені питання ви знайдете на Web-сайті проекту WEKA .
  • завантажте WEKA , Щоб встановити цей пакет на своєму комп'ютері.
  • Опис функцій WEKA API ви можете знайти тут .
  • Дізнайтеся більше про формат ARFF , За допомогою якого можна завантажувати свої дані в WEKA.
  • Корпорація IBM розробила свій власний програмний продукт для інтелектуального аналізу даних. Стаття Integrate InfoSphere Warehouse data mining with IBM Cognos reporting, Part 1 познайомить вас з цим програмним продуктом.
  • Слідкуйте за developerWorks в Твіттері .

Підпишіть мене на повідомлення до коментарів

Jsp?
У попередніх статтях ми використовували програмний пакет WEKA в якості окремого самостійного застосування, але наскільки такий підхід виправданий і корисний в реальному житті?
Чим же новий метод відрізняється від них?
Уявляєте, скільки гілок і вузлів включало б в себе класифікаційне дерево для подібного аналізу, якби компанія Amazon використовувала метод класифікації?
Чому ми вирішили використовувати той же самий набір даних, яким ми скористалися для вивчення методу класифікації?
Новости