Что Al go использовать для классификации моих данных на 3 класса - PullRequest
0 голосов
/ 04 марта 2020

Я ищу способ дифференциации между 3 классами (проблема классификации) для каждого ОБЪЕКТА для классификации.

У меня большой набор данных (миллионы строк). Есть 2 объекта, каждый из которых имеет 100 значений (масштабируется до 0-1).

Каждая строка относится к одному образцу указанного c объекта (Object_id, 100 столбцов моего первого объекта, 100 моего второго особенность).

Каждый объект (который должен быть классифицирован по трем классам) имеет не менее 100 образцов (1 образец - одна строка)

К сожалению, класс Classe 3 имеет значение только 1/10 по сравнению с 1 и 2 (каждый объект класса 3 имеет около 500 образцов, однако объекты класса 1 и 2 имеют около 2000 и более).

Чтобы выполнить классификацию, мне нужно взять пакет образцов для каждого объект (например, 20, 50 или 100).

Я не знаю, что al go лучше подходит для моего случая, я новичок в углубленном изучении, поэтому терпите меня, пожалуйста

1 Ответ

0 голосов
/ 05 марта 2020

Давайте разберем это с двумя основными вопросами: как обрабатывать несбалансированные наборы данных и какую модель использовать.

Несбалансированные наборы данных

Большинство алгоритмов машинного обучения в некоторой степени чувствительны к несбалансированным наборам данных. Это серьезная проблема для машинного обучения в таких областях, как медицинская диагностика или сейсмология, где у вас 98% «нормальных» показаний и 2% «событийных» показаний. У этой проблемы нет серебряной пули . Некоторые алгоритмы более устойчивы к несбалансированному набору данных, а некоторые - умышленно разбалансируют свои наборы данных для поддержки сильной модели (см. bagging ), и есть варианты дополнить ваши данные, вводя клонированные данные со статистическим шумом. Тем не менее, ваш самый простой и эффективный подход состоит в том, чтобы уничтожить ваш набор данных, чтобы сделать его сбалансированным.

У вас есть разделение классов на 2000 | 2000 | 500 точек данных. Произведите случайную выборку 500 точек данных из каждого из первых двух классов, чтобы получить сбалансированный набор данных 500 | 500 | 500. Важно сделать выборку случайным образом, вместо того, чтобы просто брать первые 500, как вы хотите, чтобы была репрезентативная выборка класса населения. о том, как выбрать точки данных, см. в модуле numpy.random.

Выбор модели

Несмотря на то, что Deep Learning изображается как начало и конец для машинного обучения, он представляет значительную сумму времени и затрат на подготовку, обучение и мониторинг. Типичный подход к любой новой проблеме - попробовать некоторые базовые модели поверхностного обучения. Часто вы видите следующий сценарий ios:

  1. Ваши базовые модели не могут тренироваться.
  2. Ваша базовая модель тренируется и подходит умеренно
  3. Ваша базовая модель тренируется и подходит близко

В первом сценарии ваша модель глубокого обучения также вряд ли будет тренироваться. В третьем сценарии нет необходимости строить модель глубокого обучения, когда ее может решить более простой алгоритм. Сценарий 2 - ваш кандидат для глубокого обучения.

Итак, какие модели вы могли бы использовать?

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

В качестве альтернативы, если вы смотрите на соответствие классов с помощью кластеризации, K-означает ++ модели (и со) или даже Гауссовские модели смесей - хорошее место для начала (опять же, см. Scikit Learn's sklearn.clustering и sklearn.mixture)

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

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