Як я можу динамічно розрізняти категоричні дані та числові дані?


12

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

Однак він не знає, як рухатись щодо динамічного призначення типів даних певним числом даних. Наприклад:

    CITY
    Albuquerque
    Boston
    Chicago

Це, очевидно, не числові дані, і вони зберігатимуться як текст. Однак,

    ZIP
    80221
    60653
    25525

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


Кілька ідей у ​​нас були:

  1. Якщо у стовпці є цілі числа, позначте його як категоричне. Це, очевидно, не вийшло, але це була ідея.
  2. Якщо стовпець має менше n унікальних значень і є числовим, позначте його категорично. Це може бути ближче, але все ж можуть виникнути проблеми з числовими даними, що проникають.
  3. Підтримуйте перелік загальних числових даних, які насправді мають бути категоричними, і порівняйте заголовки стовпців із цим списком на відповідність. Наприклад, будь-що з "ZIP" в ньому було б категоричним.

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


Не повний доказ, але якщо він починається з 0, він зазвичай не є числовим
папараццо

Напевно, ви також повинні запитати себе, що є наслідком того, що ви помилитесь? Це повинно визначити, скільки зусиль потрібно докласти до цього процесу. Ви хочете на 90% точні, або 99% точні, або 99,9999% точні?
Розміщений

Я брав би всю евристику, запропоновану у відповідях, як функції та тренував двійковий класифікатор.
Емре

Дивіться stats.stackexchange.com/a/106400/17230 . Тут насправді немає основної правди.
Scortchi

Дивіться також stats.stackexchange.com/q/336261/17230 .
Scortchi

Відповіді:


8

Мені невідомо дурний спосіб зробити це. Ось одна ідея у верхній частині моєї голови:

  1. Ставтесь до значень як категорійних за замовчуванням.
  2. Перевірте наявність різних атрибутів даних, які б означали, що вони насправді є безперервними. Зважуйте ці атрибути, виходячи з того, наскільки вірогідними вони є співвідношення з постійними даними. Ось кілька можливих прикладів:
    • Значення цілі числа: +.7
    • Значення поплавків: +.8
    • Значення зазвичай розподіляються: +.3
    • Значення містять порівняно невелику кількість унікальних значень: +.3
    • Значення - це не однакова кількість символів: +.1
    • Значення не містять провідних нулів: +.1
  3. Віднесіться до будь-яких стовпців, сума яких перевищує 1, як до числових. Налаштуйте коефіцієнти та ваги на основі тестування на різні набори даних відповідно до ваших потреб. Можна навіть створити і навчити окремий алгоритм машинного навчання лише для цього.

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

@PabloSuau, мені подобається ця ідея. Алгоритми класифікації тут можуть бути чудовим методом. Завдяки jncraton за деякі характеристики, на які слід звернути увагу.
Пуассонова риба

4

Якщо у вас є, наприклад, кількість дітей у сім'ї (яка може бути, наприклад, від 0 до 5), це категорична чи числова змінна? Насправді це залежить від вашої проблеми та того, як ви маєте намір її вирішити. У цьому сенсі ви можете зробити наступне:

  • Обчисліть кількість унікальних значень цього стовпця
  • Поділіть це число на загальну кількість рядків
  • Якщо це співвідношення нижче деякого порогу (наприклад, 20%), ви вважаєте це категоричним.

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

Ми працювали порівняно добре в минулому ...


2

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

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

По-друге, враховуючи, що ці дані в реальному світі містять відомі типи даних, що визначають помилку класифікації.

Третій крок передбачає ітераційне оновлення правил для більш точного відображення інформації, яка передається, - наскільки це можливо.

На мій погляд, такий проект, як не втомлюючи, не передбачав би занадто великої роботи.

---- Додатковий коментар ----

Хороша дискусія щодо вилучення функцій, оскільки вона стосується процесу генерації даних, що з'явився на CV тут:

/stats/191935/what-does-the-process-that-generates-the-data-mean-and-how-does-feature-selec

Видобуток, відбір можливостей та ГДЗ є прекрасним пунктом для розробки експертної системи.


Я видалив запитання на перехресній валідації. Для довідки @NickCox заявив: "Це гірше, ніж ви думаєте, навіть якщо ви думаєте, що це гірше, ніж ви думаєте. Десяткові бали можуть ховатися в рамках категоричних змінних, як частина кодованих класифікацій, наприклад, галузей чи захворювань. Малі цілі числа можуть означати підрахунки швидше ніж категорії: 3, тобто 3 машини або коти, це не те саме, що 3, тобто "людина володіє автомобілем" або "людина належить кішці". Виміри можуть бути просто цілими за умовами, наприклад, висота людей може бути просто повідомляється як ціле см або дюйми, артеріальний тиск як ціле мм мм рт. ст. "
Пуассона Риба

Другий коментар @NickCox: "Кількість чітких (кращий термін, ніж" унікальний ", який все ще має основний сенс виникнення лише одного разу), також не є хорошим орієнтиром. Кількість різних висот людей, можливих у помірних зразках, становить напевно, значно менше, ніж кількість різних релігійних приналежностей чи етнічного походження ".
Пуассона Риба
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.