воскресенье, 11 января 2015 г.

Ссылки для изучающих R

Как обещал в прошлом посте, привожу наиболее интересные (на мой взгляд) ссылки по R. Список не исчерпывающий, но для начала сойдет.
Электронные курсы
  • (ENG) Программирование на языке R - бесплатный дистанционный курс от Johns Hopkins University  на Coursera. Стартует каждый месяц. Нагрузка 3-5 часов в неделю. Дает неплохую вводную. Рекомендую также ознакомится с пакетом SWIRL. Он идет факультативно, но, во-первых, дает дополнительные балы, во-вторых, раскрывает моменты, которых нет в лекциях. Эти знаниям потом пригодятся при выполнении лабораторных работ и тестов. Курс рекомендует предварительно пройти предварительно другой -  Data Scientist's Toolbox. Если Вы знакомы с Git и GitHub - этого можно не делать. Если нет, ИМХО значительно проще прочитать об этом за 10 минут на форуме курса по R, чем тратить месяц на прохождение  Data Scientist's Toolbox. И лучше это сделать заранее. Лабораторные работы и тесты имеют строгие дедлайны и будет крайне обидно выполнить задание и застрять в вопросе как опубликовать результаты.  Кроме навыков работы с Git и GitHub и очень поверхностного обзора R и Rstudio, курс Data Scientist's Toolbox является вводным курсом в специальность Data Science. Специальность состоит из девяти курсов  по анализу данных с использованием R. Для освоения всей специальности нужно не менее трех месяцев, при условии, что параллельно будет изучаться не менее трех курсов. Взаимозависимость курсов описана тут.
  • (ENG)  An Introduction to Statistical Learning with Applications in R - 15-часовой виде-курс посвященный машинному обучению. Зеркало.
  • (ENG) Подборка вводных курсов по R на DataCamp.
Блоги
  • (ENG) R-bloggers - один из крупнейших англоязычных хабов посвященных R. На текущий момент публикует посты 563(!) блогеров. Порядка 200 постов в месяц. Разнообразно и интересно.
  • (РУС) R: Анализ и визуализация данных - блог Сергея Мастицкого. Неплохие обзоры событий в мире R. Кроме того автор блога - соавтор книги "Статистический анализ и визуализация данных с помощью R" из которой можно почерпнуть множество полезных советов.  Книга  распространяется бесплатно со всеми данными и скриптами.
  • (ENG) R graph gallery - более сотни практических примеров визуализации данных с помощью R.
  • (РУС) Блог странного учёного - помимо других тем периодически пишет о R.
  • (ENG) Data Science - Hyderabad - Data mining, статистика, машинное обучение и многое другое.
Группы и базы знаний

суббота, 10 января 2015 г.

Если место R в жизни аудитора?

С полгода назад, делая обзор... Наверное "обзор" слишком громкое слово для столь скромного размера поста, скорее несколько мыслей о том, что платному софту  есть достойная альтернатива... В общем в списке  бесплатного аудиторского софта я уже упоминал R. Сегодня хочу остановиться на нем подробнее.
Но сначала небольшая подводка для отдельных  ортодоксов-староверов, которые уже наверняка начали ворчать что-то на подобии: "зачем нужно тратить время на изучение еще одного инструмента, если есть Excel и, для сложных случаев, SQL?". Если данный вопрос не мучает - можно пропустить пару абзацев. В самом деле, Excel - очень мощная штука, в которой можно сделать массу различной полезной аналитики и очень быстро. Основными проблемами, с которыми сталкивались аудиторы, были количество строк, которое можно было обработать и задачи, в которых необходима обработка нескольких связанных таблиц. В этих случаях как раз и приходил на выручку SQL. Но Excel активно развивается. Сначала убрали досадное ограничение в 65,535 строк и  ... довели его до нелогичного и не круглого (с точки зрения программистов) 1,000,000 строк. Проблему это сильно не решило, поскольку при попытке обработать 300-400 тысяч строк начинаются серьезные проблемы с производительностью,  а на задачи по обработке нескольких таблиц количество строк влияет ... никак. Поняв, что переписывать движок с нуля - удовольствие дорогое и трудоемкое, разработчики сделали элегантный реверанс в виде отдельного адона  (а, начиная с версии 2013 года - встроенного функционала) под названием PowerPivot. Это была настоящая революция. Во-первых, ушло ограничение в количестве строк. Во-вторых, можно объединять различные таблицы по ключевым полям и "крутить" объединенные данные в привычном пивоте. В-третьих, таблицы можно объединять из нескольких источников (например, база данных + таблица Excel + текстовый файл + еще одна база данных). В-четвертых,  язык выражений анализа данных (DAX), позволяет создавать собственные метрики и еще очень-очень много вещей, в результате чего можно вообще отказаться от SQL и работать с одним единственным инструментом.
Тем не менее, я периодически посматриваю на различные инструменты в поисках чего-нибудь этакого. В каждом из инструментов есть какая-нибудь интересная фишка, но,  держать тучу разных инструментов ради красивых бантиков... Опять же, задачи лучше решать в одном инструменте, а не переливать туда-сюда данные. В общем, среди большого количества софта чего-то такого этакого долго не находилось. Хотя, справедливости ради, нужно выделить ACL (Audit Command Language). К его безусловным преимуществам (по сравнению с Excel) нужно отнести легкую воспроизводимость тестов (обычно просто заменой ссылки с одного источника данных на другой) для автоматизации рутинных операций.  Плюс вещи, которые можно делать серверной частью, вроде задач для реализации Continuous Auditing. Остальное, пожалуй, было нивелировано PowerPivot.  И такая ситуация сохранялась до моего знакомства с R.
Сразу хочу сказать, что это не очередной "убийца Excel". Инструмент может решать те задачи, которые можно делать в  Excel, но прелесть его в другом. Но об этом чуть позже.
Не смотря на свою достаточно внушительную историю (более 20 лет), инструмент попался мне на глаза совсем недавно. В одной достаточно не большой linkedin'овской группе обсуждали аудиторский инструментарий и меня привлекли достаточно лестные отзывы об R от нескольких руководителей внутреннего аудита. Среди прочих инструментов R выделяли как "наиболее мощный, хотя и наиболее сложный в изучении". Немного покопавшись в аудиторских группах, я с удивлением обнаружил почти полное отсутствие упоминаний и обсуждений R, как аудиторского инструмента. Мне показалось это достаточно странным - инструмент такой мощный, что о нем никто не знает. Прямо как в старом анекдоте про неуловимого Джо. Наконец, прерывая анналы youtube, я натолкнулся на часовой обзор R. Сделан он был не для аудиторов, но давал достаточно неплохое представление для того, чтобы определиться стоит ли тратить время на изучение. Я решил, что стоит и ни разу не жалел.
Характеристику "самый мощный и самый сложный в изучении" подтверждаю на 100%.
Почему сложный? Потому, что это - язык программирования. Мышкой много не навоюешь - нужно писать код. Он  сложнее, чем SQL, зато на голову его функциональнее. Язык создавался как специализированный, поэтому писать на нем значительно легче, чем на языках программирования общего назначения, а код получается на порядок компактнее. Все-таки он создавался не для написания кода, а анализа данных. Например, есть следующая задача. Есть более трехсот файлов, содержащих результаты ежедневных замеров нескольких показателей за пару лет. Каждый файл - уникальное место сбора данных с уникальным номером. Необходимо для произвольного количества мест (одно, некоторые, все) посчитать среднее значение для конкретного показателя на выбор.  Функция, которая реализует данный функционал, у меня составила три строки кода. Разумеется, умещающихся на экране нормальным шрифтом.
Код, который вытягивает данные с Facebook, о моих контактах и строит графическую карту кто кого знает и сохранил результаты в PDF заняла 8 строк. Столько же код, рисующий карту страны по регионам и раскраской регионов в цвета в зависимости от показателей продаж по регионам. Если не хватает базовых функций для решения задачи по обработке данных, можно написать свою функцию, но практически любой каприз уже реализован в более 4000 пакетах готовых функций, которые доступны на сайте разработчиков. И все это абсолютно бесплатно. 
Средства визуализации данных просто потрясающие. Примеры (было лень рисовать самому, взял тут):


Хорошенько порывшись в Гугле, я понял, что R не такой неизвестный, как показалось на первый взгляд. Это один из основных инструментов биохимиков, экологов, статистов.
Язык активно набирает популярность. За последний год по популярности языков программирования R шагнул с 31-го на 12 место, потеснив PL/SQL, T-SQL, Ruby, Pascal и Delphi. Мне показалось не справедливым, что аудиторское сообщество обходит вниманием этот прекрасный инструмент и решил его немного попиарить.

Итак, сухой остаток. Что понравилось и что требует улучшения.

К безусловным достоинствам R следует отнести:
  • Просто огромный функционал по обработке данных.
  • Потрясающие возможности визуализации данных.
  • Всеядность. Данные из всех цифровых источников в самых замысловатых форматах и структурах.
  • Бесплатность.
 К недостаткам:
  • В первую очередь, это время, необходимое на изучение. Но оно того стоит.
  • Благодаря своей достаточно старой архитектуре, R может обрабатывать только те данные, которые умещаются в памяти. На текущий момент существует несколько пакетов, которые позволяют обходить данное ограничение.
  • Производительность на больших объемах данных. Решается при помощи дополнительных пакетов, позволяющих использовать параллельные и распределенные  вычисления.
  • Скудный функционал для 3D визуализации данных. Направление развивается, и, надеюсь, скоро ситуация изменится в лучшую сторону.

В следующий раз приведу немного ресурсов для тех, кто заинтересовался изучением.