Найкращий спосіб класифікувати набори даних із змішаними типами атрибутів


13

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

Відповіді:


11

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

Крім того, якщо ви використовуєте техніку зменшення розмірності, ви отримуєте трохи більш надійний формат для вашого функціонального вектора (вони, як правило, є прямими числовими векторами замість змішаних типів даних), що може дозволити вам використовувати різні методи. Ви також можете ознайомитись із ручними технічними можливостями. Завдяки правильно розробленим ручним функціям Random Forestви зможете дуже наблизитись до найсучасніших у більшості завдань.


2
Ще один голос за зменшення розмірності. Лише деякі доповнення: Principal Component Analysisабо Non-Negative Matrix Factorizationзменшать кількість змінних, збагатять рідкісні дані та перетворять усі змінні в кількісні. Крім того, оцінюючи якість моделі зменшення розмірності, автор запитання може оцінити корисність текстових змінних.
собач

@indico чудова відповідь. Чи можете ви надати нам довідку в книзі чи статті, що алгоритми на основі дерев краще працюють із даними змішаного типу (категоріальні та кількісні дані)?
ZelelB

6

На це питання важко відповісти, не знаючи більше про дані. З цього приводу я б запропонував таку пораду:

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

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


2

Маючи невелику інформацію, яку ви надали стосовно характеру ваших даних, я б радив дотримуватися наступного підходу:

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

    Спочатку нам потрібно переконатися, що відповіді з подібним значенням написані однаково і належать до тієї ж категорії (наприклад, "на велосипеді", "на велосипеді", "на велосипеді" мають однакове значення). Тоді ви можете спробувати додатково об'єднатись у менш деталізовані категорії (наприклад, об'єднати "трамвай", "метро" та "автобус" у "Засоби громадського транспорту") або навіть більше (наприклад, "Піші прогулянки", "Пробіжки", "Велоспорт" у " Фізичні навантаження ") залежно від того, що ви намагаєтесь з’ясувати.

    Ви навіть можете помістити кілька різних комбінацій у свій набір даних, і тоді наступні кроки визначать, які з них будуть використані для аналізу. У випадках, коли текстові дані можна "перекласти" впорядкованими змінними, переконайтеся, що ви це зробите (наприклад, якщо у вас "малий, середній, високий" перетворіть їх на "1,2,3").

  2. Перетворіть ваші категоричні змінні (а не порядкові) на манекенні (бінарні) змінні. Більшість алгоритмів вибору класифікацій / ознак роблять це автоматично, але переконайтесь, що це саме так з обраними ними. Я розумію, що розмірність даних стане досить великою в цей момент, але це вирішиться на наступному кроці.

  3. Застосуйте до своїх даних техніку вибору / зменшення розмірності. Корисний огляд таких прийомів ви можете знайти тут . Якщо ви використовуєте Python, інструменти sklearn дають вам багато варіантів (докладнішу інформацію див . Тут ). Переконайтеся, що ви використовуєте техніку, яка також враховує мультиколінеарність. Я б спробував аналіз основних компонентів або алгоритм на основі дерева.

  4. Для класифікації даних я б за допомогою класифікатора дерев рішень (також доступний через sklearn ). Він також виконує вибір функції, встановлюючи важливість ваг для функцій. Ви можете встановити рівень деталізації на генерованому дереві залежно від ваших параметрів (наприклад, max_depth, min_samples_split) Переконайтесь, що регулюйте рівень деталізації на основі перехресної перевірки, щоб уникнути перевиконання.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.