Наука о данных и открытый код

Изучите инструменты с открытым кодом для превращения данных в полезную информацию

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

М. Тим Джонс, инженер-консультант, Emulex

M. Тим Джонс (M. Tim Jones) является архитектором встраиваимого программного обеспечения и автором работ: Программирование Приложений под GNU/Linux, Программирование AI-приложений и Использование BSD-сокетов в различных языках программирования. Он имеет опыт разработки процессоров для геостационарных космических летательных аппаратов, а также разработки архитектуры встраиваемых систем и сетевых протоколов. Сейчас Тим работает инженером-консультантом в корпорации Эмулекс (Emulex Corp.) в г.Лонгмонт, Колорадо.



02.06.2014

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

Наука о данных и ученые-аналитики

Наука о данных начинается со сбора данных. Кандидатами на сбор могут быть открытые данные или результаты некоторых внутренних деловых процессов (например, статистика Интернет-сайтов). Далее идёт уточнение данных: некоторый исследовательский процесс, который уменьшает объем данных до некоторого полезного массива, позволяющего получить ответ на интересующие нас вопросы. Как правило, эти вопросы определяют подход к извлечению информации. Шаги по сбору и уточнению данных содержат другие важные действия, такие как очистка (предварительная обработка) и визуализация данных.

Открытые данные

Открытые данные – это концепция демократизации данных путем предоставления свободного доступа к ним без ограничения правил и возможностей использования. Растущее движение за открытые данные следует идеям, появившимся в среде поклонников открытого кода. Полезным источником открытых данных является Data.gov (см. Ресурсы) - Интернет-сайт правительства США, созданный с целью расширения публичного доступа к данным, порождаемым исполнительными органами федерального правительства.

Науку о данных саму по себе можно рассматривать как некоторый деловой процесс. Майк Лукидес (Mike Loukides) из компании O'Reilly представляет убедительные доказательства того, что наука о данных обеспечивает преобразование данных не просто в информацию, но и в продукцию (см. Ресурсы). С этой точки зрения обсуждаемая область науки является настоящим Клондайком – полем для конкурентного поиска золотых самородков в горах информации.

Старателей этой золотой лихорадки по обработке данных называют аналитиками данных. По мере того как бизнес осознаёт ценность данных, растет и потребность в талантливых междисциплинарных инженерах и ученых. Аналитики данных должны иметь навыки в области информатики, математики и статистики. В идеале они также должны иметь отраслевые знания - понимание особенностей источников данных (медицинских, финансовых и других). На рисунке 1 наука о данных показана как пересечение информатики, математики, статистики и знаний о предметной области:

Рисунок 1. Ключевые дисциплины для аналитика данных
Ключевые дисциплины для аналитика данных

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

Инженеры и ученые с опытом анализа больших данных сегодня пользуются большим спросом. Компания McKinsey & Company прогнозирует, что к 2018 году возникнет нехватка специалистов, которые могут выполнять роль аналитика данных (см. Ресурсы). Идеи и подходы науки о данных также полезны во многих других дисциплинах. Даже если вы не стремитесь стать аналитиком данных, навыки науки о данных могут быть отличным дополнением к вашему набору инженерных умений.


Где используется наука о данных

Как и облачные вычисления, наука о данных быстро обретает интерес и признание. По данным сервиса Google Insights for Search (прежнее название Google Trends), за год, предшествовавший написанию этой статьи, интерес к науке о данных вырос примерно в два раза. Google Insights for Search и сам по себе представляет пример науки о данных в действии. На рисунке 2 можно увидеть, что частота Web-поиска термина "наука о данных" значительно возросла в период между летом 2011 и весной 2012 года:

Рисунок 2. Интерес к науке о данных по информации сервиса Google Insights for Search
Интерес к науке о данных по информации сервиса Google Insights for Search

Наука о данных быстро становится важнейшим направлением в организациях, которые собирают данные в Интернете (будь то сбор данных роботами или формирование собственных внутренних массивов, которые основаны на поведении пользователей, например, на переходах по ссылкам). Наиболее известные сайты, такие как Google, Amazon, Facebook и LinkedIn, имеют свои собственные научные команды обработки данных, работающие с доступными им данными (см. Ресурсы).

Разработка компанией Google алгоритма PageRank является одним из первых примеров применения науки о данных. Google сканирует Web-сайты и присваивает числовой вес гиперссылкам на каждой странице, измеряя тем самым относительную важность этих ссылок. (Полная информация о PageRank является интеллектуальной собственностью Google и недоступна.) Алгоритм служит средством ранжирования Web-контента в зависимости от условий поиска.

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

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

Одним из новейших примеров применения науки о данных для Web-ресурсов является компания Bitly. На первый взгляд, Bitly - это сервис, который позволяет пользователям сократить любой адрес URL до короткого URL с не более чем 19 символами (который хранится постоянно в центре обработки данных Bitly). Ссылки на укороченный URL перенаправляются из Bitly к первоначальному URL. Bitly может видеть, какие URL-адреса клиенты сокращали и какие URL-адреса использовали пользователи. Этот процесс порождает огромное количество данных, которые Bitly (и его главный аналитик Хилари Мейсон) могут использовать для формирования полноценной статистики о просмотрах и привычках посетителей ресурса. Пользователи, зарегистрированные в Bitly, могут видеть, когда их укороченные URL-адреса были нажаты, через какие источники посетитель попал на сайт (почтовый клиент, Twitter или другой URL), из какой страны. Предприятия могут также использовать Bitly для отслеживания поведения пользователя для наборов Интернет - ресурсов.


Инструменты с открытым исходным кодом для науки данных

Как компьютерное программирование не ограничивается использованием одного языка или среды разработки, так наука о данных не связана с каким-либо одним инструментом или набором инструментов. Существует богатый и широкий спектр инструментов с открытым исходным кодом для развития науки о данных. Они включают в себя инструменты, которые обрабатывают большие объемы данных в цифровой форме, обеспечивают их визуализацию и моделирование, которые в итоге помогают в создании решений для комплексной обработки данных. В таблице 1 приведены известные инструменты с открытым исходным кодом для аналитиков данных и описаны их назначения:

Таблица 1. Инструменты для науки о данных с открытым кодом
ИнструментарийОписание
Apache HadoopИнфраструктура для обработки больших данных
Apache MahoutМасштабируемый инструмент для машинного обучения для Hadoop
SparkКластерная инфраструктура для анализа данных
Проект R для статистических вычисленийИнструмент для работы с данными и построения графиков
Python, Ruby, PerlСкриптовые языки для прототипирования и разработки
SciPyПакет Python для научных вычислений
scikit-learnПакет Python для машинного обучения
AxiisИнтерактивная визуализация данных

Список в таблице 1 не является исчерпывающим, но представляет некоторые из основных элементов набора инструментов аналитика данных. Множество инструментов с открытым исходным кодом также включает набор узкоспециализированных и предметно-ориентированных библиотек и инструментов (например, утилиты для интерактивной визуализации данных на карте или для анализа текстов).

Hadoop, Mahout и Spark

Интернет создает возможности для сбора больших массивов данных о поведении и привычках пользователей. Apache Hadoop является основным инструментом для обработки больших наборов данных. Hadoop является важным элементом для науки о данных, поскольку обеспечивает масштабируемую среду для распределенной обработки данных. Не все проблемы науки о данных требуют обработки больших данных, но Hadoop идеально подходит для случая, когда задача включает в себя данные Интернет-масштаба. Реализация алгоритма PageRank в виде инфраструктуры Google MapReduce является одним из первых примеров применения инфраструктуры для работы с большими данными в науке о данных. (Hadoop также является реализацией MapReduce.) Проект Apache Pig позволяет сделать Hadoop еще доступнее за счет использования языка запросов, который автоматически строит MapReduce-приложения (см. Ресурсы).

Apache Mahout является реализацией масштабируемых алгоритмов машинного обучения для платформы Hadoop (см. Ресурсы). Mahout включает масштабируемые реализации алгоритмов кластеризации и пакетных алгоритмов фильтрации данных (для реализации рекомендательных систем).

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

Проект R

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

Как язык программирования, R поддерживает ряд различных парадигм: объектно-ориентированный, функциональный, процедурный и императивные стили программирования. Язык имеет интерпретатор с интерфейсом командной строки, а также располагает обширными графическими возможностями для разработки корпоративных приложений. Имеется набор готовых статических графиков. С помощью дополнительных пакетов возможна разработка динамических и интерактивных Интернет-приложений. На рисунке 3 показан пример графика, созданного с помощью R:

Рисунок 3. Пример 3D графика, созданного с помощью R
Пример 3D графика, созданного с помощью R

Сам язык R разработан с помощью языков C и Fortran. Многие из внутренних стандартных функций в R написаны с помощью самого R. R поддерживает программирование в многоязычной парадигме, предоставляя доступ к объектам R из таких языков, как C и Java ™. Возможности R можно легко расширить с помощью пакетов, которые можно разрабатывать на языках программирования R, C, Java и Fortran.

Скриптовые языки

Скриптовые языки, такие как Python, Ruby и Perl, поддерживающие одновременно несколько парадигм программирования, предоставляют профессиональную платформу для разработки и развертывания приложений. Они идеально подходят для прототипирования и тестирования новых идей. Эти языки поддерживают различные форматы хранения данных и взаимодействия, такие как XML и JavaScript Object Notation (JSON), а также большое разнообразие открытых библиотек для научных вычислений и машинного обучения. Python является безусловным лидером в этой области, вероятно потому, что он проще всего в освоении для пользователей из других областей, не сведущих в информационных технологиях. Знание Python часто является обязательным требованием для аналитиков данных при устройстве на работу.

SciPy и scikit-learn

Пакет SciPy расширяет Python в область научного программирования. Он поддерживает различные функции, в том числе инструменты для параллельного программирования, интеграции, решения обыкновенных дифференциальных уравнений и даже расширение (Weave) для включения C / C + + кода в код Python.

Связанный с SciPy пакет scikit-learn предназначен для реализации машинного обучения на основе Python. Scikit-learn включает в себя множество алгоритмов для обучения с учителем (поддержка векторных машин, байесовских алгоритмов), обучения без учителя (алгоритмы кластеризации) и других алгоритмов для работы с массивами данных.

Оба эти пакета расширяют возможности Python для использования в составе платформы для науки о данных.

Интерактивная визуализация данных Axiis

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

Рисунок 4. Визуализация с использованием инфраструктуры Axiis
Визуализация с использованием инфраструктуры Axiis

Рисунок 4 представляет статическую версию интерактивного примера от Тома Гонсалеса (Tom Gonzalez), управляющего директора компании BrightPoint Consulting. В разделе Ресурсы приведена ссылка на интерактивную версию.


Двигаемся дальше

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

Ресурсы

Научиться

Получить продукты и технологии

  • Apache Hadoop: загрузите Hadoop.
  • Apache Mahout: загрузите Mahout с зеркала Apache.
  • Spark: получите последнюю версию Spark.
  • Язык программирования R: получите R - язык и среду разработки для широкого круга задач в области статистики и визуализации.
  • Python, Ruby и Perl: упростите разработку и создание прототипов алгоритмов для обработки данных с использованием этих скриптовых языков.
  • SciPy и scikit-learn: используйте возможности Python для обработки научных данных с помощью пакета SciPy для научных вычислений и пакета scikit-learn для машинного обучения.
  • Axiis: инфраструктура для визуализации данных Axiis является полезным инструментом как для новичков, так и для экспертов. На странице с примерами можно увидеть различные возможности инструмента, включая интерактивную версию графика, приведенного на рисунке 4.
  • Ознакомьтесь с продуктами IBM загрузите пробные версии, попробуйте поработать с продуктом удаленно или используйте продукты в облачной среде.

Обсудить

  • Подключайтесь к сообществу developerWorks. Общайтесь с другими пользователями developerWorks, посещая поддерживаемые разработчиками блоги, форумы, группы и вики-сайты.

Комментарии

developerWorks: Войти

Обязательные поля отмечены звездочкой (*).


Нужен IBM ID?
Забыли Ваш IBM ID?


Забыли Ваш пароль?
Изменить пароль

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


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

Вся введенная информация защищена.

Выберите имя, которое будет отображаться на экране



При первом входе в developerWorks для Вас будет создан профиль и Вам нужно будет выбрать Отображаемое имя. Оно будет выводиться рядом с контентом, опубликованным Вами в developerWorks.

Отображаемое имя должно иметь длину от 3 символов до 31 символа. Ваше Имя в системе должно быть уникальным. В качестве имени по соображениям приватности нельзя использовать контактный e-mail.

Обязательные поля отмечены звездочкой (*).

(Отображаемое имя должно иметь длину от 3 символов до 31 символа.)

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Вся введенная информация защищена.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=Open source
ArticleID=973001
ArticleTitle=Наука о данных и открытый код
publish-date=06022014