Big data: размер имеет значение?

Источник: habrahabr

 

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

В каждой эпохе развития IT-индустрии существовали свои buzzwords - слова, которые у всех были на слуху, каждый знал, что за ними будущее, но лишь немногие знали, что действительно стоит за этим словом и как им  правильно  воспользоваться. В своем время баззвордами были и "водопад", и "XML", и "Scrum", и "веб-сервисы". Сегодня одним из основных претендентов на звание баззворда №1 является "big data". С помощью больших данных британские ученые диагностируют беременность по чеку из супермакета с точностью, близкой к ХГЧ-тесту. Крупные вендоры создают платформы для анализа больших данных, стоимость которых зашкаливает за миллионы долларов, и нет сомнений, что каждый пиксель в любом уважающем себя интернет-проекте будет строиться с учетом больших данных не позднее, чем к 2020 году.

При этом редкая статья про алгоритмы анализа больших данных обходится без комментария "Ну покажите мне работающий в промышленных масштабах пример!". Поэтому не будем ходить вокруг да около и начнем с примера: www.ok.ru/music. Большая часть контента в музыкальном разделе Одноклассников подбирается на основе "больших данных" индивидуально для каждого пользователя. Стоит ли оно того? Вот несколько простых цифр:

  • +300% прослушиваний и подписок
  • +200% добавлений песен
  • +1000% CTR при таргетировании музыкальной рекламы

Но главное совсем не это. Куда ценнее живое и непредвзятое мнение реальных пользователей. Год назад в рамках проекта "За окном" люди, никогда раньше не пользовавшиеся Одноклассниками, провели в сети две недели, подробно отчитываясь о своих впечатлениях. Один из отзывов о музыкальном разделе звучал так: "Оно каким-то образом угадывает, что мне нравится. Не понимаю как, но это приятно".

На самом деле никакой магии, конечно, нет - все дело в данных. Тех самых данных, которые генерируют наши пользователи, прослушивая и загружая музыку, просматривая музыкальный каталог. Информация обо всех действиях пользователя стекается в классическую реляционную базу данных MS SQL, где происходит первичная обработка, фильтрация и агрегация данных (да, старый добрый SQL тоже может обрабатывать big data). Подготовленные в SQL данные выгружаются для дополнительного анализа в небольшой Hadoop-кластер, который делает компактную, но информативную выжимку, используемую уже в реальном времени (часть её импортируется в Cassandra, часть загружается сразу в память). Для пущей оперативности последние действия пользователей складываются в БД (Tarantool) и также учитываются в онлайне.

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

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

  • оценить их релевантность для конкретного пользователя (количество и вес путей длины не больше N между пользователем и треками),
  • разбить вкусы пользователя на связные блоки (кластеризация по плотности подграфа общих соседей методом affinity propagation) и подобрать рекомендации под блок (personalized PageRank)

Имея сборник песен, составленный пользователем, можно подобрать похожие интересные треки (тоже PPR для сборника и персонализация результата для пользователя). Технические детали о том, как, зачем и почему, можно найти здесь.

От взгляда внимательного читателя не ускользнет тот факт, что ни одно из используемых решений нельзя назвать новым/прорывным/уникальным (нужное подчеркнуть) ни с точки зрения алгоритмов, ни с точки зрения технологий. Почему тогда действительно качественные решения на основе big data появляются на российском рынке так редко?

Немало копьев было сломано (и ломается до сих пор) в спорах о том, какого же размера данные можно считать действительно "большими". Но действительно ли дело в размере? Сотни гигабайт/терабайт/петабайт (нужное подчеркнуть) данных не представляют ценности сами по себе - основное их предназначение в том, чтобы помочь  понять прошлое и  предсказать  будущее. Очевидно, что одних лишь данных для этого не достаточно - нужны алгоритмы анализа, технологии и люди, которые смогут их внедрить. 

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

Достаточно легко найти программиста, знающего все нюансы сборки мусора в Java, имеющего опыт работы с дюжиной СУБД разного типа, досконально знакомого со Spring/Trove/Hibernate и еще полусотней библиотек и пакетов. Однако большинство из них технологически ориентированы и "не заточены" на то, чтобы работать с литературой, осваивать новые методы статистической обработки, ставить эксперименты. Найти математика, способного на это, сложнее, но тоже возможно. Но в этом случае продвинуться дальше бесформенного облака кода Matlab будет чрезвычайно сложно. Вероятность же найти человека, способного взять лучшее от двух миров, настолько мала, что многие вообще сомневаются в их существовании.

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

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


Страница сайта http://test.interface.ru
Оригинал находится по адресу http://test.interface.ru/home.asp?artId=36378