С моей точки зрения, главное отличие корпоративных систем от персональных – их разработка осуществляется централизованно. Например, если нужно внести изменения в отчет или другую компоненту, то самостоятельно это не сделать и придется обратиться к разработчику. Часто доходит до крайности, когда становится невозможным что-то изменить в системе без участия разработчика.
Полностью персональные системы автономны: данные берутся напрямую из источников данных и складируются в виде локальных файлов на компьютере аналитика. Им не нужен разработчик – аналитик может сделать все самостоятельно. Это другая крайность. Давайте сравним эти два подхода.
С моей точки зрения, оба варианта имеют право на жизнь. Лучшие результаты можно получить, объединив два подхода. Ничто не мешает вам построить хранилище (или озеро данных), а затем использовать гибкие персональные инструменты для работы в «последней миле». Часть вопросов снимается, вероятность ошибки пользователя остается, но она становится меньше.
Мой опыт
Я работал с разными системами: от файлов электронных таблиц до распределенных систем Hadoop/Spark с петабайтами данных. Могу только сказать: всему свое время. Архитектура аналитических систем – это искусство, требующее недюжинных талантов. В этой главе я рассказал о своих наработках, которые были проверены на практике. У любых решений есть плюсы и минусы, и знать их лучше до создания системы, а не после.
Вы всегда будете балансировать между скоростью и качеством, между стоимостью сейчас и потом. Но всегда полезно думать о пользователе. Чем быстрее и интуитивнее он сможет работать с данными, тем меньше эта работа будет вызывать отторжение и тем эффективнее он будет принимать решения. Я считаю, что именно скорость, даже при средних гарантиях качества, обеспечивает успех компаний. Выиграет та, которая приняла больше решений.
Аналитические системы позволяют ориентироваться в данных, но они не принимают решения – это делают пользователи. Давайте сделаем их жизнь лучше, упростив для них путь принятия решений.
Глава 8
Алгоритмы машинного обучения
Как я уже писал, основное отличие машинного обучения от обычного программирования заключается в том, что программа обучается на примерах, а не на прямых инструкциях. Поэтому неотъемлемой частью какого-либо решения является обученная на данных (примерах) модель. Выглядит это как черный ящик: программный код, который представляет собой интерфейс взаимодействия обученной модели или черного ящика с внешним миром. В самом ящике находится набор коэффициентов и параметров модели, которые понятны только этому коду.
Польза ML заключается в автоматизации принятия решений, за счет этого данные обрабатываются гораздо быстрее. Мы, люди, обладаем настоящим универсальным интеллектом, но из-за этой универсальности количество задач, которые мы можем решить за единицу времени, очень ограниченно. Чего не скажешь о ML, типовой алгоритм которого заточен на очень узкую задачу, но его можно масштабировать неограниченно. Хотите один миллион прогнозов в секунду – пожалуйста, предоставьте только необходимые ресурсы.