Когда мы говорим, что набор данных не классифицируется?

11

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

  1. Создайте графические зависимости метки от числовых значений.
  2. Уменьшите размерность до 2 или 3, чтобы увидеть, разделяются ли классы, также иногда пробовал LDA.
  3. Сильно попытайтесь приспособить SVM и Случайные Леса и посмотрите на важность функции, чтобы видеть, имеют ли функции какой-либо смысл или нет.
  4. Попробуйте изменить баланс классов и методов, таких как недостаточная выборка и избыточная выборка, чтобы проверить, не может ли быть дисбаланс классов.

Есть много других подходов, я могу думать, но не пробовали. Иногда я знаю, что эти функции не очень хороши и совсем не связаны с лейблом, который мы пытаемся предсказать. Затем я использую эту бизнес-интуицию, чтобы завершить упражнение, и пришел к выводу, что нам нужны лучшие функции или совершенно другие ярлыки.

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

vc_dim
источник
Я чувствую, что если на этот вопрос есть четкий и объективный ответ, то все научные усилия становятся бессмысленными. Наука это искусство.
Мефи
Хаха, да, правда. Мне просто интересно узнать больше методов, чтобы найти отделимость. Больше похоже на то, как статистически показывать клиентам, что уделять больше времени некоторым упражнениям было бы бесполезно.
vc_dim
1
Я предлагаю опустить последние два абзаца, поскольку они делают вопрос слишком открытым / широким. Первая часть - как профессионально обрабатывать и сообщать о нереализованных результатах - должна быть подотчетна, и лично я думаю, что нам нужно больше вопросов такого типа по профессиональному этикету Data Science на сайте.
Нил Слэйтер
Имеет смысл Нейл. Редактирование это будет четким.
vc_dim

Ответы:

4

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

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

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

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

Средства массовой информации
источник
Это полезно, я не знал об ошибке Байеса. Мне было трудно повысить точность после изменения распределения классов. Я согласен, что это не очень хорошая идея. Тем не менее, я иногда пытался изменить иерархию классов, надеясь, что эта особенность может представлять более гранулированные или абстрактные классы (например, изменение обезьян, собак и других на млекопитающих). Я думаю, что если есть ошибка Байеса, изменение иерархии классов тоже не поможет.
vc_dim
@SumitSinghChauhan На самом деле, в ситуациях, когда ошибка Байеса велика, попытка разработки функций является лучшим решением. Потому что глубокое обучение, которое само находит особенности, не может быть использовано в тех случаях, когда набор данных не велик.
Медиа,
5

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

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

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

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


источник
1
Спасибо, Роберт. Это знакомо и кажется правильным. Я сделал тот же анализ для некоторых проектов. У меня был набор данных с одним и тем же вектором объектов, помеченный по-разному, и я использовал его как основу для того, насколько точной я могу быть. Несколько раз черчения коробки сюжета помогли тоже. До сих пор я нашел подход вы только что говорил лучше , чтобы убедить клиентов.
vc_dim