Pull to refresh
59
0
Илья Шутов @i_shutov

Data Science

Send message

Уходим с Mercurial на Git

Reading time3 min
Views9.9K
Кадр из фильма «Красный шар». Режиссер Альбер Ламорис. 1956 год

Так уж случилось, что у меня остался ряд репозиториев на Mercurial, которые захостил на Bitbucket много лет назад. Проекты перешли в полуархивное состояние, поэтому заглядывал в них не так уж и часто. И тут я решил обратиться к материалам, надо было внести правку. С удивлением обнаружил, что репозиториев на битбакете нет, но есть публикация «Sunsetting Mercurial support in Bitbucket».

Не критично, локальные репозитории сохранились же (а там коммитов за 10+ лет). Попробуем переехать на github/gitlab по инструкции из статьи. И, конечно же, эти инструкции работают только с latin-1, русские буквы либо не дают переехать, либо заменяются на ?. Извечная проблема кодировок. Можно ли что-то сделать?

UPDATE по результатам комментариев.
Для «приземления» задачи рассмотрите контекст коммерческой поддержки большой инсталляции ПО, созданного в компании где вы сейчас работаете, которое n лет уже не развивается (выпустили совсем новую ветку), но обязательства по поддержке остались по проданным ранее контрактам. И периодически всплывают баги.

Является продолжением серии предыдущих публикаций.
Читать дальше →
Total votes 37: ↑36 and ↓1+35
Comments34

Разработка (dev) и data science в enterprise — битва за ресурсы или эффективное сотрудничество?

Reading time9 min
Views4.3K

В подавляющем большинстве случаев, когда речь заходит о «настоящей» разработке продукта или решения enterprise уровня, сразу появляются корпоративные архитекторы и глобальные архитектуры и шаблоны, высокоуровневые модели данных и концепты, попытки охватить всё и вся. Формируется шорт лист из языков и фреймворков, в рамках которых идет вся последующая разработка. Все «только на Java» или «только на C#» или… (впишите на свое усмотрение).
Несомненно, это является отражением предыдущего проектного опыта, лучших мировых практик, готовности подхватить новые запросы бизнеса и в общем случае такой подход оправдан. Но в каждом частном случае подобный глобализм на этапе взлета продукта, в тот момент, когда многое еще находится в состоянии неопределенности, может просто погрести под собой начинание и превратить проект в очередную неудачу. Можно ли что-то изменить, упростить и улучшить не теряя при этом в качестве?
Оказывается что это вполне возможно за счет объединения классической разработки ПО с инструментами и подходами data science (далее просто DS). Как этого можно достичь — разберем по шагам.

Материал является продолжением серии предыдущих публикаций.
Читать дальше →
Total votes 31: ↑30 and ↓1+29
Comments7

Запросить 100 серверов нельзя оптимизировать код. Ставим запятую

Reading time7 min
Views6.5K

Можно выделить ряд алгоритмов, которые являются базовыми и лежат в основе практически каждой строчки программ, написанных на языках высокого уровня. Хорошо иметь под руками классический многотомный труд Дональда Кнута "The Art of Computer Programming", там детально разобраны многие базовые алгоритмы. Но прочесть и усвоить все — задача, требующая много усилий и времени, которая должна как-то быть мотивирована.


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


Далее разберем нюансы на примере функций сортировки. Сортировка и поиск используются максимально часто во всех манипуляциях с данными. Экономия нескольких миллисекунд на операции может приводить к суммарному сокращению часов расчета на значительных данных.


Является продолжением серии предыдущих публикаций.

Читать дальше →
Total votes 52: ↑51 and ↓1+50
Comments2

Оценка структуры кредитного портфеля с помощью R

Reading time4 min
Views2.4K

В ходе обсуждений возникла «маленькая» задачка — построить динамику структуры кредитного портфеля (динамика кредитной карты, например). Есть важная специфика — необходимо применять метод FIFO для погашения займов. Т.е. при погашении первыми должны гаситься самые ранние займы. Это накладывает определенные требования на расчет статуса каждого отдельного займа и определения его даты погашения. Задачу решаем честно.


Рассматриваем как олимпиадную задачу. Никаких «кровавых энерпрайзов с корпоративными архитекторами» и педалинга кода, подход исключительно «сначала подумать». Не более одного экрана кода на прототип и никаких циклов (закладные для производительности и читаемости). Ниже приведен код на R с прототипом подхода.


Является продолжением серии предыдущих публикаций.

Читать дальше →
Total votes 1: ↑1 and ↓0+1
Comments0

Storytelling R отчет против BI, прагматичный подход

Reading time6 min
Views4.7K

Проблематика


Когда говорят про отчеты к данным (неважно, какая тема) все хотят гибкие дашборды, МНОГО дашбордов, играют конкурсы про BI, выдумывают разные сложные требования и кейсы, отсматривают массу вендоров и решений, разбиваются на непримиримые лагеря и на 100% уверены, что это то, без чего жизнь на работе тяжела, уныла и печальна.


Так ли это? По описанию очень сомнительно (похоже на серебряную пулю), а практика дает подтверждение «отнюдь не так».


Является продолжением серии предыдущих публикаций.

Читать дальше →
Total votes 5: ↑4 and ↓1+3
Comments8

R в руках маркетолога. Когортный анализ своими руками

Reading time4 min
Views3.2K

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


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


Является продолжением серии предыдущих публикаций.

Читать дальше →
Total votes 3: ↑3 and ↓0+3
Comments1

R и работа со временем. Что за кулисами?

Reading time15 min
Views4.2K

Даты и время являются весьма непростыми объектами:


  • месяцы содержат различное число дней;
  • года бывают високосными и нет;
  • существуют различные временнЫе зоны;
  • часы, минуты, дни используют различные системы счисления;
  • и многие другие нюансы.

Далее тезисно приведены отдельные моменты, которые редко высвечиваются в документации, а также трюки, которые позволяют писать быстрый и контролируемый код.


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


Является продолжением серии предыдущих публикаций.

Читать дальше →
Total votes 10: ↑10 and ↓0+10
Comments3

R vs Python в продуктивном контуре

Reading time2 min
Views5K

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


  • объема доступного железа;
  • требований по производительности;
  • стабильности;
  • соблюдения требований ИБ;
  • … (добавьте специи по вкусу).

Нынче в России такая фаза, что для задач data science язык python позиционируется как "серебряная пуля". Похоже, что такой тезис выдвинули те, кто продают курсы по DS на python. А дальше маховик пошел. В целом, это вполне нормально — почти все процессы в физическом мире являются колебательными.


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


Является продолжением серии предыдущих публикаций.

Читать дальше →
Total votes 11: ↑10 and ↓1+9
Comments10

R, Монте-Карло и enterprise задачи, часть 2

Reading time7 min
Views2.1K

Как ни парадоксально, но пока еще нередко в enterprise встречаются задачи, отличные от построения еще одного личного кабинета, еще одного мониторинга или еще одного документооборота. Если немного подумать, а не хвататься сразу кодировать или искать специализированное ПО, то можно написать компактное, весьма элегантное и быстрое решение, используя метод Монте-Карло .


Задачи в Enterprise достаточны компактны для перебора и не требует точности 100 знаков после запятой. Не ракеты или реакторы запускаем и не научную теорию всего строим.


Рассмотрим далее на примере одной из нестандартных задач.


Является продолжением серии предыдущих публикаций.

Читать дальше →
Total votes 3: ↑3 and ↓0+3
Comments8

Дети, русский язык и R

Reading time4 min
Views15K

Типичная ситуация в нынешнем образовательном процессе в школе. На часах 22:00, в электронном дневнике ребенка появляется новое задание. В лучшем случае на послезавтра, но обычно на завтра.


Вариантов реакции три:


  • не делать вовсе;
  • «не заметить» и отложить решение вопроса на потом;
  • попробовать сделать.

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


Выбирая третий вариант, в отдельных случах даже задания по русскому языку можно попробовать решить с помощью R, принимая во внимание, что на все про все есть 15-20 минут максимум. 5 минут на «экстремальное программирование», 10-15 минут на чистовое оформление. Когда принципиально задача решена оформление можно уже и утром сделать


Является продолжением серии предыдущих публикаций.

Читать дальше →
Total votes 10: ↑7 and ↓3+4
Comments24

IT Service Health Monitoring средствами R. Взгляд под иным углом

Reading time3 min
Views1.4K

Казалось бы тема давно исхоженная, пик инновационности OSS систем давно позади. Однако иногда бывают локальные жаркие всплески и бурные споры на эту тему. Можно ходить по торной вендорской дороге, а можно попробовать погрызть эту задачку с другого угла.


Ключевые слова: cmdb, multi-agent sumulation, monte-carlo, ml.


Является продолжением серии предыдущих публикаций.

Читать дальше →
Total votes 1: ↑1 and ↓0+1
Comments2

Ещё немного о параллельных вычислениях в R

Reading time6 min
Views1.6K

Публикация очень краткая. Многие думают, что параллельные вычисления в R -- это очень сложно и неприменимо к их текущим задачам.

И да и нет. Если сознательно не вдаваться в теорию, железо и всякие подробности, то можно нарисовать «3 и 1/2» почти универсальных рецепта.

Является продолжением серии предыдущих публикаций.

Читать далее
Total votes 4: ↑4 and ↓0+4
Comments1

Нюансы эксплуатации R решений в enterprise окружении

Reading time6 min
Views2.4K

Решения на базе R, как классические «отчетные», так и в контуре операционной аналитики, очень хорошо себя зарекомендовали в enterprise окружении. Несомненно, значительную роль в этом играет компания RStudio и ее увлеченный коллектив. В коммерческих продуктах RStudio можно особо не думать об инфраструктурных вопросах, а просто обменять небольшую денежку на готовые решение «из коробки» и сразу заняться самой задачей. В open-source редакциях, а большинство инсталляций в российских компаниях именно такая, приходится думать про инфраструктурные вопросы самостоятельно. Независимо от варианта развертывания, вопрос эксплуатации R приложений остается за разработчиком.

Решения на R хорошо закрывают нишу «средних данных», когда данных «чуть больше» чем влезает в excel или в ненастроенную реляционку и нужны сложные алгоритмы и процессинг, но когда разворачивать пусковой комплекс бигдаты еще более чем рано. Речь идет о десятках-сотнях террабайт в полном объеме, которые легко умещаются в бэкенд на Clcikhouse. Важный момент: все находится во внутреннем контуре, в подавляющем большинстве случаев ПОЛНОСТЬЮ отрезанном от интернета.

Является продолжением серии предыдущих публикаций, уточняет публикацию «Конструктивные элементы надежного enterprise R приложения».

Читать далее
Total votes 9: ↑9 and ↓0+9
Comments1

Как в enterprise приручить при помощи R технологии process mining?

Reading time6 min
Views2K

Как-то так получилось, что в 2020 году возник всплеск интереса к тематике Process Mining. Не исключено, что новая реальность удаленного режима потребовала более пристальной оценки эффективности технологических и бизнес-процессов. Это же как с кривыми и косыми деревянными рамами. Сквозит из всех щелей, а счетчик накручивает мегаватты на обогрев.


В целом, видны несколько популярных запросов по применению технологии process mining:


  • хочется что-то улучшить, но кроме модного слова больше ничего не слышали;
  • получить или сэкономить «живые деньги» путем оптимизации классического процесса «order-to-cash» и ему подобных;
  • системный аудит всего и вся собственной командой аудиторов;
  • построение операционной аналитики и мониторинга на основе показателей процессов, а не ИТ метрик.

В 99% случаев начинают читать Gartner/Forrester и попадают на 4-ку вендоров (Celonis/Minit/Software AG/UiPath), которые как-то присутствуют в России. И до того, как начать получать какую-либо выгоду, тут же получают немаленький ценник за лицензии и последующую ежегодную поддержку. При этом экономическое обоснование шито белыми нитками.


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


Является продолжением предыдущих публикаций.

Читать дальше →
Total votes 5: ↑5 and ↓0+5
Comments3

Пакеты-пакеты-пакеты… Насколько эффективно вы используете R?

Reading time11 min
Views3K

Нынешняя культура «компетенций» и «практик» предполагает, что человека обучают каким-то подходам и рецептам к решению набора задач. При этом за рамками скрывается время актуальности этих «рецептов» и они, фактически, отливаются в монолит, тиражируясь человеком годами. Порой приходится слышать изречения о «лучших практиках», которым уж лет 30 и за это время прошло несколько смен парадигм. А с этой «лучшей практикой» находишься как-будто во временнОй капсуле.


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


R образца 2020 года очень сильно отличается от R даже 2018 года. В самом базовом коде были внесены достаточно значимые изменения для повышения эффективности и стабильности работы (скорость и потребление памяти). Но более динамичная часть экосистемы — это пакеты. Их коллекцию полезно периодически пересматривать с тем, чтобы перейти на более удобные и производительные реализации. С момента прошлой публикации «Джентельменский набор пакетов R для автоматизации бизнес-задач» и сами пакеты претерпели серьезные модернизации и спектр их достаточно сильно расширился и лидеры многократно менялись местами.


Не секрет, что мейнстрим не означает максимальную эффективность и универсальность. Придерживаясь рамок мейнстрима очень легко пропустить пакеты, которые являются жемчужинами. Особенно удобно открывать их на R конференциях UseR!, Rconf, eRum, и т.д.


Ниже приведен список пакетов общего применения, который оказывается весьма полезным при решении повседневных задач (x пакетов из >10K на CRAN). Часто оказывается так, что многие новинки оказываются неизвестны собеседникам. Для сводного ознакомления по срезу на июль 2020 публикую в виде подборки. Ссылки, в большинстве случаев, ведут на страницу с подборкой функций. Уверен, что каждый найдет для себя что-то полезное.

Читать дальше →
Total votes 5: ↑5 and ↓0+5
Comments2

R Markdown. Как сделать отчет в условиях неопределенности?

Reading time2 min
Views4.2K

Маленький рецепт, который будет полезен при создании динамических отчетов.


Достаточно часто встречается ситуация, когда размер и содержание отчетной формы будет зависеть от состава переданных на вход данных. Речь идет именно о story-telling отчете, а не о простом выводе таблицы. В этом случае, в зависимости от содержания входных данных, могут появляться или исчезать отдельные пункты, графики, таблицы, текст.


Что будет делать классический Excel-Word аналитик? Под каждый новый запрос делать кастомный отчет и сохранять его в отдельный файл. Но можно заглянуть немного под капот и заставить компьютер делать все самостоятельно.


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

Читать дальше →
Total votes 7: ↑6 and ↓1+5
Comments0

Медианы выборок. Доверительные интервалы и сравнение

Reading time3 min
Views5.9K

Публикация носит характер описания тропинки, выводящей к эффективной алгоритмизации методов вычисления доверительного интервала (Confidence Interval = CI) для


  • медианы распределения;
  • разницы медиан двух распределений.

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


Выборки по объему большие, 10^5 — 10^7 записей, ощутимо ассимметричные, с длинными хвостами, могут иметь несколько мод. В этом случае медианы более устойчивы к выбросам.


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


Хвататься за молоток бутстрапа можно, но и с ним надо думать + на симуляцию требуется время и память.


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

Читать дальше →
Total votes 7: ↑4 and ↓3+1
Comments1

Карантин, онлайн-системы и data science. Кто думает об удержании клиентов?

Reading time4 min
Views1.6K

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


Сейчас ИТ может прийти к бизнесу и потребовать десятки и сотни миллионов на внедрение или разработку модных онлайн-систем. Однако окажется ли это все оправданным? Без построения полноценного управления оттоком клиентов (то что в телекоме называлось 'customer churn prediction') эффективность затраченных средств окажется под большим вопросом и вот почему.


В тематике CRM существует два широко употребляемых маркетинговых тезиса:


  • Стоимость привлечения нового клиента в 10 раз выше стоимости продажи существующему клиенту.
  • Довольный клиент приводит двух, а недовольный уводит десятерых.
Читать дальше →
Total votes 5: ↑4 and ↓1+3
Comments0

Применение R при вычислениях с неограниченной разрядностью

Reading time4 min
Views2.5K

Периодически встречаются задачи, даже в обыденной жизни, когда разрядной точности float64/int64 оказывается недостаточной для того, чтобы получить ответ с требуемой точностью. Метаться в поисках другого инструмента? Тоже вариант.


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


Библиотека хороша и заслуживает того, чтобы на нее обращали внимание, хотя бы в рамках расширения кругозора. По R к ней есть обертка Rmpfr. Ниже приведу простенький пример на задачках для школьников (ну не трогать же проектные данные под NDA) и затрону ряд классических граблей, на которые наступают почти сразу же.


Является продолжением предыдущих публикаций.

Читать дальше →
Total votes 11: ↑11 and ↓0+11
Comments9

Применение R в задаче обновления кассового ПО

Reading time2 min
Views1.8K

На первый взгляд, это два непересекающихся мира. Но на практике, это не так.


Ниже дан краткий локальный комментарий к хорошей статье «Не спать! Как мы научились тиражировать релизы на 12000 касс за ночь» в части системы мониторинга качества обновления ПО и применению R в этой задаче.


Является продолжением предыдущих публикаций.

Читать дальше →
Total votes 8: ↑7 and ↓1+6
Comments4

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity