2013-10-14 3 views
7

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

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

То, что я пытаюсь понять, - это правильная общая процедура подготовки наборов данных для проблемы ML.

Как подготовить набор данных для ML, чтобы я мог измерять точность алгоритмов?

Мое настоящее понимание заключается в том, что для оценки точности алгоритм должен быть снабжен предварительно помеченными результатами (из значительного подмножества набора данных?), Чтобы оценить разницу между ожидаемым результатом и решением алгоритма?

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

Кроме того, любые советы по обучению машинам в Python были бы высоко оценены!

Благодарим вас за помощь!

С наилучшими пожеланиями,

Майк

+2

Это очень широкий вопрос. Данные для маркировки/аннотации дороги: исследователи платят студентам, платят анонимным незнакомцам за Механический Турк и, вероятно, используют кучу других методов, с которыми я не знаком. Много исследований проводится с использованием стандартных наборов данных для a) обеспечения количественного сравнения методов и b) не нужно беспокоиться о маркировке .... В Python некоторые наборы данных включены в sklearn - http://scikit-learn.org/stable /tutorial/basic/tutorial.html#loading-an-example-dataset - или, в более общем плане, смотрите здесь: http://mark.reid.name/blog/a-meta-index-of-data-sets.html – YXD

+0

Спасибо Г-н E. Mechanical Turk - хороший крик! – Mike

ответ

4

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

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

  1. Lebel it by hand.
  2. Используйте некоторый неконтролируемый алгоритм обучения для маркировки данных.

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

Я рекомендую начать с примерами здесь - http://scikit-learn.org/stable/

+3

Я бы категорически не согласен с вариантом «2». В то время как использование полунаблюдаемых методов дает некоторые интересные результаты (например, маркирование части данных, учебной модели в контролируемой моде, а затем обучение на наборе, помеченном самой моделью) - маркировка неконтролируемым способом - довольно бессмысленный подход.Если можно найти неконтролируемую модель для кластеризации данных, то почему мы бы приблизили эту модель, обучая другую по этим данным? Конечно, есть некоторые сценарии и расширенные методы, которые используют такой подход, но предоставление его в качестве опции для начинающего в поле ML просто неверно – lejlot

+1

Спасибо за ответ Lain и lejlot. Стыдно, что недостаточно внимания уделяется этой процедуре, так как она сильно влияет на результаты. Это приводит к следующему вопросу, скажем, если я вручную маркирую данные, что было бы приемлемым для набора данных обучения? Существуют ли какие-либо «нормы» или «принятые» пороговые значения для размера набора данных? – Mike

+0

Вы также можете использовать некоторые автоматические и ручные процедуры ... Как использование Amawon Mechanical Turk или Fiverr ... – aaronfc

Смежные вопросы