Лучшие способы агрегирования и анализа данных

13

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

  1. Как я должен хранить эти данные? Excel? SQL? ??

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

РЕДАКТИРОВАТЬ: Извинения за мою расплывчатость, когда вы впервые начинаете узнавать о чем-то трудно понять, что вы не знаете, понимаете? ;)

Сказав это, моя цель состоит в том, чтобы применить это к двум основным темам:

  1. Метрики команды разработчиков программного обеспечения (скорость Agile, количественная оценка риска, вероятность успешного завершения итерации с учетом количества баллов)

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

Джастин Бозонье
источник
Это кажется мне очень расплывчатым. Что за данные и какой анализ? Кроме того, это должно быть сообщество вики, если оно субъективно.
Шейн

Ответы:

19

Если у вас есть большие наборы данных - те, которые загружают Excel или Notepad медленно, то база данных - это хороший способ. Postgres имеет открытый исходный код и очень хорошо сделан, и его легко подключить с помощью JMP, SPSS и других программ. Вы можете попробовать в этом случае. Вам не нужно нормализовать данные в базе данных. В противном случае, CSV подходит для совместного использования.

Рассмотрим Apache Hive, если у вас более 100 миллионов строк.

С точки зрения анализа, вот некоторые отправные точки:

Опишите одну переменную:

  • Гистограмма
  • Сводная статистика (среднее, диапазон, стандартное отклонение, минимум, максимум и т. Д.)
  • Есть ли выбросы? (больше 1,5x межквартильного диапазона)
  • Какого рода распространение это следует? (нормально и т. д.)

Опишите связь между переменными:

  • Scatter Plot
  • корреляция
  • Выпадающие? проверить расстояние Mahalanobis

  • Мозаичный сюжет для категоричного

  • Таблица сопряженности для категориальных

Предсказать реальное число (например, цену): регрессия

  • Методы регрессии OLS или машинного обучения

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

Предсказать членство в классе или вероятность членства в классе (например, пройдено / не выполнено): классификация

  • методы логистической регрессии или машинного обучения, такие как SVM

Поместите наблюдения в «естественные» группы: кластеризация

  • Обычно можно найти «похожие» наблюдения, рассчитав расстояние между ними.

Поместите атрибуты в «естественные» группы: факторинг

  • И другие матричные операции, такие как PCA, NMF

Количественная оценка риска = стандартное отклонение или доля случаев, когда происходят «плохие вещи», х насколько они плохие

Вероятность успешного завершения итерации с учетом x количества баллов за историю = логистическая регрессия

Удачи!

Нил Макгиган
источник
Это было потрясающе. Большое вам спасибо за этот ответ. Вы дали мне отличный старт. Любые книги, которые вы рекомендуете, так как вы, кажется, «попадаете» туда, где я нахожусь.
Джастин Бозонье
всегда пожалуйста. книги: Статистика на простом английском языке для начала. Многофакторный анализ данных по волосам после этого. Это хорошие веб-ресурсы: itl.nist.gov/div898/handbook , statsoft.com/textbook
Нил Макгиган
4

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

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

АРС
источник
3

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

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

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

Питер Смит
источник
Питер, ты избил меня до удара! Я полностью согласен с хранением данных в виде текста, хотя в зависимости от размера (сотни миллионов объектов) может потребоваться перейти в базу данных, приводимую к карте (например, Pig, Cassandra или один из параметров NoSQL).
DrewConway
Ох, хорошо, интересно! Так что просто возьмите данные для каждой переменной и выложите их в формате строки-столбца и получите число, а? Есть ли какие-то инструменты, на которые я должен смотреть или я просто должен что-то программировать?
Джастин Бозонье
R - очень обширный (и бесплатный) инструментарий / язык программирования / библиотека для статистики. Мой любимый для большинства вещей, однако, Python с SciPy / NumPy
Питер Смит
0

Одна вещь ROOT действительно хорошо хранит Огромная объемы данных. ROOT - это библиотека C ++, используемая в физике элементарных частиц; он также поставляется с привязками Ruby и Python, поэтому вы можете использовать пакеты на этих языках (например, NumPy или Scipy) для анализа данных, когда вы обнаружите, что ROOT предлагает мало возможностей из коробки.

Формат файла ROOT может хранить деревья или кортежи, а записи можно читать последовательно, поэтому вам не нужно хранить все данные в памяти одновременно. Это позволяет анализировать петабайты данных, что вы бы не хотели использовать в Excel или R.

С документацией ROOT I / O можно ознакомиться здесь .

Бенджамин Банье
источник