Как освоить Big Data? (путеводитель для начинающих IT-шников)

О Big Data сегодня не слышал только человек, совсем далёкий от IT. Тем не менее, молодым IT-шникам не всегда понятно, с чего нужно начать изучение этой темы, какими навыками нужно обладать и какими инструментами стоит пользоваться. Эта статья об этом, делюсь своей версией на базе моего десятилетнего опыта.

Важно сначала разобраться, что же такое Big Data, когда именно они начинаются.

Big Data – это данные, которые не помещаются в оперативную память компьютера.  

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

Поскольку эта сфера сейчас быстро развивается, то информации относительно нее всегда много и она также будет расти дальше. Поэтому важно уметь конкретно в своей голове работать с большими наплывом обучающей информации и структурировать ее «под себя». Для этого важно себе выбрать базис, основной костяк информации, на который Вы, как на дерево будете насаживать разные ветки текущих знаний, да и будущих, с которыми Вам еще предстоит столкнуться. Свой личный базис поможет Вам не путаться во всем многообразии материалов на эту тему, и спокойно в нем «жить». Я предложу свое видение, что можно взять за базис и в каких направлениях его стоит расширять, чтобы шаг за шагом повышать свое мастерство и освоить Big Data. Но повторюсь, что важно собрать базис под себя, поэтому будьте вольны все, что указано ниже, рассматривать только как пример, а конкретный путь под себя выбираете под себя Вы.

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

Казалось бы, тривиальный вопрос для IT-шника, но, порой, это иллюзия. Вот один живой пример. Часто в интернете мы видим разные рейтинги, например, рейтинги фильмов. Это знакомая всем история, когда посетители ресурса ставят оценку фильму от 1 до 5 звездочек, а сайт автоматически интерактивно подсчитывает среднее значение рейтинга фильма. Это очень частая картина, но смысл в том, что тут-то и происходит подмена понятий: идет искажение реальной оценки рейтинга фильма. Нельзя считать среднее значение, если расстояние между всеми оценками не одинаковое. Ведь для кого-то 4-ка — как для Вас 3-ка, или наоборот, как 5-ка. Как в школе, 4-ка у определенного педагога — это подарок «с небес», а у другого — 5-ку получить удается легко, и 4-ка наоборот «обижает». Т.е. оценки от разных пользователей неравнозначны. Поэтому тут для адекватной оценки рейтинга Data Science специалисты используют другие меры измерения. И вот таких жизненных примеров много. Поэтому повторюсь, базис важно знать, и с него стоит начинать свое обучение Big Data. Доступней всего эти важные основы излагают, как ни странно, в гуманитарных науках. Там минимизированное количество формул и больше жизненных понятных примеров вместо абстрактных определений, которыми кишит статический анализ для естественных наук. Конечно, в чистой математике определения максимально точные, но из-за сложности языка, не так-то легко бывает уловить смысл. Поэтому подбирайте под себя литературу о методах математической обработки, например, для психологов, социологов и, возможно, экономистов. И на жизненных примерах на доступном языке Вы разберетесь с нужными основами быстрее. К тому же, по пути Вы разберетесь в том, как данные отбирать. Каким данным стоит верить, а какие ставить под сомнение. Это тоже важно. А заодно определитесь с Вашим уровнем знаний в статистике и начнете параллельно на тех же самых примерах его «подкачивать».

2 этап. Развивать навык задавать интересные осмысленные вопросы.

Дело в том, что когда Вы видите огромный объем данных, очень важно, чтобы Вы знали, что именно Вы хотите при этом разузнать, прояснить и выверить. Поэтому важно уметь видеть не просто данные, а какой смысл за ними скрывается. Например, допустим, Вы хотите выявить ТОП-10 фильмов XX и XXI веков, которые собрали наибольшие кассовые сборы. Вариант просто сделать ранжирование фильмов по убыванию общей суммы кассовых сборов не подходит. Важно видеть смысл и нюансы. В этом примере нужно сначала пересчитать суммы сборов с учетом инфляции доллара с момента выхода фильма до сегодняшнего дня. И только после этого сделать ранжирование и определить ТОП-10 фильмов. А для развития этого важного навыка задавания интересных и осмысленных вопросов, полезно читать книги типа «Все лгут. Поисковики, Big Data и Интернет знают о вас всё» и разные научно-популярные книги, которые провоцируют Ваш мозг думать нестандартно и замечать критические нюансы. Также в этом помогают навыки из других дисциплин, например, коучинг. А еще, конечно, детективы содействуют, потому что, на мой взгляд, специалист в анализе данных — это некий Digital Шерлок.

3 этап. Развивать навык как из интересных вопросов строить гипотезы, переводить их на языке математики и «компьютерного мышления» и проверять их.

Сначала, на всякий случай, поясню: любой исследователь Вам скажет, что одна гипотеза — это не вариант, их должно быть как минимум три. И кроме этого, важно разбираться в стратегии их проверки. На уровне анализа обычных данных в первую очередь проверяется гипотеза от противного, а не наоборот, как часто бывает в наших привычках. Приведу пример. Допустим, у Вас есть гипотеза, что онлайн-образование влияет на мотивацию учеников учиться, то просто проверка именно этой гипотезы ничего не доказывает. Важно проверить обратную гипотезу, что онлайн-образование НЕ влияет на мотивацию учеников учиться. И если именно обратная гипотеза не будет подтверждена, то верна первоначальная гипотеза: что онлайн-образование влияет на мотивацию. Так что эти нюансы важны. Где можно почерпнуть эти знания? Там же, где и про типы данных. В литературе для гуманитариев по методам матобработки в исследованиях по психологии, социологии и т.п.

4 этап. Обучаться на конкретных примерах, не зацикливаясь на языке программирования.

На мой взгляд, в первую очередь, важно набивать руку не на коде, а на смыслах. Для этого хорошо подходят онлайн-программы MOOC, в частности edX. Можно подобрать себе бесплатные онлайн-курсы на Python, R или аналогичные варианты. Есть ряд курсов, где не растрачивается время на сложности программирования и настройку среды программирования, и для этого задействуются настроенные версии web-платформ для интерактивных вычислений, таких как Open-Source проект Jupiter. В его названии как раз и кроется ответ какие языки этот проект поддерживает: Julia, Python и R. На самом деле там больше языков есть, но суть в том, что благодаря Jupiter и другим аналогичным проектам, Вы можете сразу начать программировать на онлайн-курсе, разбирая ключевые смыслы задач, не тратя время на настройку среды. На этом этапе как раз чтобы не тратить время на сложности языка. А живые примеры помогут Вам и укрепить свой базис, начать в этом разбираться. А также по пути Вы научитесь структурировать данные и обогащать копилку методов и приемов, которые используют как в обычном анализе данных, так и в анализе больших данных. Плюс ко всему, Вы обучитесь азам визуализации данных, что очень полезно и важно для выверки верности своих гипотез.

5 этап. Переход на чистый Big Data Analysis.

На этом этапе Вы уже понимая ключевые смыслы анализа данных, обновляете свои инструменты именно для работы с суперкомпьютерами, кластерами и хранилищами данных. Т.е. этот этап позволит Вам оптимизировать вычисления через парадигму параллельных вычислений и платформ обработки для распределенных в разных местах больших данных (Hadoop, Scala и т.п.). Именно их используют, когда объем данных уже слишком велик, и не помещается в оперативную память одного компьютера. Если есть азарт выходить на уровень промышленного или научного программирования, то тут понадобятся знания уже языков C++ или Go и подключение параллельных библиотек MPI или CUDA. Если Ваши аппетиты чуть пониже, то тогда можно остановиться на обработке информации через различные системы (например, для обработки информации в реальном времени используют платформы Scala и Storm). Системы обработки больших данных являются фреймворками, то есть каркасами, для использования которых необходимо состыковать их с другими фреймворками, прикладным программным обеспечением пользователя и системой хранения данных. Для изучения инструментов этого этапа также подойдут различные MOOC курсы, либо при сильной математической подготовке можно раскачать свои навыки Big Data Analysis в Школе Анализа Данных Яндекса.

Ну а дальше начинается своя самостоятельная дорога.

На базе заказов с Big Data, общения с коллегами и используя разные научные публикации формируется Ваш профессионализм и личная версия мастерства. И, как говорится, нет предела совершенству.