Как стать автором
Обновить
6.5

R *

Язык для статистической обработки данных

Сначала показывать
Порог рейтинга
Уровень сложности

Вливаемся в Data Science: подробный roadmap что и где изучать

Уровень сложности Простой
Время на прочтение 10 мин
Количество просмотров 57K

Привет, Хабр!

В этой статье рассмотрим план становления начинающим дата-сайнтистом. Рассмотрим, что и где изучать, чтобы преисполниться в своём познании. А там и до оффера недалеко

Читать далее
Всего голосов 40: ↑37 и ↓3 +34
Комментарии 14

Новости

Как врач сделал себе ИИ помощника. Часть 1

Время на прочтение 3 мин
Количество просмотров 12K

Всем привет, меня зовут Александр и я врач-гематолог. Для справки, это тот, кто занимается болезнями крови. Мой общий стаж перевалил за 16 лет, я кандидат медицинских наук и последние пару-тройку лет интересуюсь анализом данных, machine learning и ИИ в медицине. Под "интересуюсь" я подразумеваю исследования и публикации по этим темам, а также обучение и саморазвитие.

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

Общий анализ крови (ОАК) – самый частый и один из самых сложных анализов человека для интерпретации, что обусловлено большим числом входящих в него параметров. Как правило, именно этот анализ является скрининговым тестом как для гематологов амбулаторного приема, так и для врачей общей практики и других специальностей. Объемы выполняемых анализов исчисляются сотнями тысяч. Моя идея не нова - машинная помощь в правильной и быстрой интерпретации общего анализа крови, которая будет содействовать развитию качественной, доступной и своевременной диагностики онкогематологических заболеваний. Зачастую врач первичного звена (терапевт) не может дифференцировать изменения в ОАК, что приводит либо к гиподиагностике, либо к повышенной настороженности и излишне частому направлению на консультацию к врачу-гематологу. Ситуацию усугубляют огромные объемы анализов, выполняемые в рамках профилактических и лечебно-диагностических процессов как в государственном, так и в частном секторе здравоохранения. Расшифровка анализов онлайн - один из востребованных запросов в Интернете. Меня часто просят об этом в социальных сетях.

Читать далее
Всего голосов 78: ↑74 и ↓4 +70
Комментарии 67

Спросим у Google, насколько наша встреча была предначертана судьбой

Время на прочтение 17 мин
Количество просмотров 23K

Введение


Когда я познакомилась со своим бойфрендом, я иногда ощущала небольшое сожаление от того, что у нас не было умилительной киношной истории встречи, несмотря на то, что мы пять лет жили в одном и том же городе и учились в одном университете. Наша история не уникальна для многих пар в 2020 году: на спаде между двумя волнами COVID мы начали общаться онлайн, в приложении для знакомств Bumble.

Я подумала, что благодаря истории местоположений Google, втихомолку отслеживающей данные GPS, можно было бы найти ответ на вопрос о том, насколько судьбоносно пересекались наши дорожки до встречи. Насколько близко мы были к тому, чтобы воспроизвести романтическую сцену «среди десятков людей они нашли глазами друг друга»?
Читать дальше →
Всего голосов 92: ↑90 и ↓2 +88
Комментарии 22

Кто за всех решил, что python удобен для «гражданской» аналитики?

Время на прочтение 8 мин
Количество просмотров 34K

*«Гарри Поттер и философский камень», (2001)*
«Гарри Поттер и философский камень», (2001)


ИТ-шником (программистом) нынче быть привлекательно. Дата саентистом тоже неплохо. Создаются и множатся курсы. Только вот они все однобокие. Несмотря на большое количество языков, большое количество технологий и алгоритмов, несмотря на весь накопленный в ИТ области багаж, 99% датасаенс курсов строятся по пути python-pandas.


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


Вся аргументация «за питон» строится исключительно по принципу «не думать», «рука рынка, «ну у нас же уже есть в проде 10 строк кода на питоне, что же делать?». Хотя элементарные технологические тесты и оценка экономической эффективности частенько дают неопровержимые доказательства, что DS питон является безответным поглотителем доли ИТ бюджета компаний. Взглянем ниже более пристально на отдельные моменты.


Все предыдущие публикации.

Читать дальше →
Всего голосов 64: ↑48 и ↓16 +32
Комментарии 238

Истории

Войти вайти в 37 лет, личный опыт

Время на прочтение 11 мин
Количество просмотров 46K

Сейчас мне сорок пять, и я наконец получил нормальную фултайм позицию аналитика данных. У меня первый диплом - Провизор по специальности Фармация. Я успел поработать таксистом, разнорабочим на складе лекарственных трав, заготовщиком, владельцем цеха металлообработки и одновременно рабочим в этом цеху. Был фармацевтом за кассой, заместителем заведующей аптекой, владельцем аптеки. Никогда не думал, что буду работать в IT, хотя всегда интересовался этой темой.

В школе у нас был компьютерный класс...
Всего голосов 70: ↑61 и ↓9 +52
Комментарии 77

Путь, который занял 100* лет: встречаем CatBoost 1.0.0

Время на прочтение 5 мин
Количество просмотров 20K


Всем привет. Меня зовут Станислав Кириллов, я работаю в команде, которая отвечает за развитие библиотеки машинного обучения CatBoost. Мы впервые поделились ей с сообществом четыре года назад — хотя мы привыкли строить бинарные деревья, поэтому и отсчёт лет предпочитаем вести так же. Это шутка, конечно, но «столетие» — хороший повод для выпуска первой «production ready» версии библиотеки с символичным номером 1.0.0.

Сегодня я кратко отвечу, почему мы считаем выпуск версии 1.0.0 важной вехой, и подсвечу главные изменения (и в новой версии, и в целом за год). А уже завтра выступлю с рассказом на встрече, которая будет целиком и полностью посвящена практике применения CatBoost и противостоянию нейросетей и градиентного бустинга. Если эти слова для вас что-то значат, то добро пожаловать под кат.

Читать дальше →
Всего голосов 60: ↑59 и ↓1 +58
Комментарии 8

Уходим с Mercurial на Git

Время на прочтение 3 мин
Количество просмотров 9.8K
Кадр из фильма «Красный шар». Режиссер Альбер Ламорис. 1956 год

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

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

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

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

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

Время на прочтение 9 мин
Количество просмотров 4.3K

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

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

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

Время на прочтение 7 мин
Количество просмотров 6.5K

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


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


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


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

Читать дальше →
Всего голосов 52: ↑51 и ↓1 +50
Комментарии 2

Моя музыка 2020 года в картинках и графиках

Время на прочтение 7 мин
Количество просмотров 13K

Я взял плейлист «Мой 2020», который сделала Яндекс-музыка, добавил туда немного метаданных о песнях, а потом посчитал статистику и узнал, какие у меня любимые группы и жанры, песни каких лет мне больше всего нравятся и какие слова встречаются в текстах наиболее часто. Нарисовал результаты на графиках, а ещё оформил статью так, как будто это серьёзное исследование. Помогали мне язык программирования R с пакетами ggplot2, tm и wordcloud2.

Узнать результаты исследования
Всего голосов 30: ↑30 и ↓0 +30
Комментарии 3

Ускорение в 14 000 раз или Победа компьютерной науки

Время на прочтение 6 мин
Количество просмотров 17K
Как разработчику научного ПО мне приходится много программировать. И большинство людей из других научных областей склонны думать, что программирование — это «просто» набросать код и запустить его. У меня хорошие рабочие отношения со многими коллегами, в том числе из других стран… Физика, климатология, биология и т. д. Но когда дело доходит до разработки ПО, то складывается отчётливое впечатление, что они думают: «Эй, что тут может быть сложного?! Мы просто записываем несколько инструкций о том, что должен сделать компьютер, нажимаем кнопку „Выполнить” и готово — получаем ответ!»

Проблема в том, что невероятно легко написать инструкции, которые означают не то, что вы думаете. Например, программа может совершенно не поддаваться интерпретации компьютером. Кроме того, нет буквально никакого способа определить, завершится ли программа вообще, не выполнив её. И есть много, очень много способов сильно замедлить выполнение программы. В смысле… реально замедлить. Так замедлить, что выполнение займёт всю вашу жизнь или больше. Это чаще всего происходит с программами, которые написаны людьми без компьютерного образования, то есть учёными из других областей. Моя работа — исправлять такие программы.

Люди не понимают, что информатика учит вас теории вычислений, сложности алгоритмов, вычислимости (то есть можем ли мы действительно что-то вычислить? Слишком часто мы считаем само собой разумеющимся, что можем!) Информатика даёт знания, логику и методы анализа, помогающие написать код, который выполнится за минимальное количество времени или с минимальным использованием ресурсов.
Читать дальше →
Всего голосов 48: ↑47 и ↓1 +46
Комментарии 43

Умирает ли RuTracker? Анализируем раздачи

Время на прочтение 14 мин
Количество просмотров 235K

Любая деятельность генерирует данные. Чем бы вы ни занимались, у вас наверняка на руках кладезь необработаной полезной информации, ну или хотя бы доступ к его источнику.


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


У вас есть свой бизнес? Или может… хотя, не важно. Сам процесс добычи данных бесконечен и увлекателен. И даже просто хорошо покопавшись в интернете можно найти себе поле для деятельности.


Вот, что мы имеем сегодня – Неофициальная XML-база раздач сайта RuTracker.ORG. База обновляется раз в полгода и содержит в себе информацию о всех раздачах за историю существования данного торрент-трекера.


Что она может рассказать владельцам рутрекера? А непосредственным пособникам пиратства в интернете? Или обычному юзеру, увлекающемуся аниме, например?

Читать дальше →
Всего голосов 191: ↑187 и ↓4 +183
Комментарии 296

Машинное обучение на языке R с использованием пакета mlr3

Время на прочтение 16 мин
Количество просмотров 9K

Источник: https://mlr3book.mlr-org.com/


Привет, Хабр!

В этом сообщении мы рассмотрим самый продуманный на сегодняшний день подход к машинному обучению на языке R — пакет mlr3 и экосистему вокруг него. Данный подход основан на «нормальном» ООП с использованием R6-классов и на представлении всех операций с данными и моделями в виде графа вычислений. Это позволяет создавать упорядоченные и гибкие пайплайны для задач машинного обучения, но на первых порах может показаться сложным и запутанным. Ниже постараемся внести определенную ясность и замотивировать к использованию mlr3 в ваших проектах.

Содержание:


  1. Немного истории и сравнение с конкурирующими решениями
  2. Технические детали: R6-классы и пакет data.table
  3. Основные составляющие ML-пайплайна в mlr3
  4. Настройка гиперпараметров
  5. Обзор экосистемы mlr3
  6. Пайпы и граф вычислений
Читать дальше →
Всего голосов 35: ↑33 и ↓2 +31
Комментарии 7

Ближайшие события

Московский туристический хакатон
Дата 23 марта – 7 апреля
Место
Москва Онлайн
Геймтон «DatsEdenSpace» от DatsTeam
Дата 5 – 6 апреля
Время 17:00 – 20:00
Место
Онлайн

Доверительный интервал для числа заболевших коронавирусом (расчёт по летальности)

Время на прочтение 4 мин
Количество просмотров 48K
Популярный аргумент к ставшей вирусной публикации про коронавирус — да как же можно по трём случаям какую-то статистику выводить? Нельзя делать выводы по таким маленьким выборкам! Эту историю про размеры выборок все, кто учился социальным наукам, впитали с молоком альма матери. И это правильно в тех ситуациях, с которыми мы обычно имеем дело — с выборочными статистиками.

К случаю с тремя умершими эти статистики имеют весьма опосредованное отношение. В те годы, когда я ещё преподавал матметоды для психологов в универе, я всегда пытался остановиться на этом месте — то, о чём весь этот курс, не имеет отношения к фактическим данным. Только к задаче, когда нам надо по случайной выборке сделать какой-то вывод о генеральной совокупности.

И вот перед нами число 3. Три умерших, не вектор какой-нибудь, не таблица и не выборка. Это факт. Три умерших попали к нам совершенно не случайно. Они умерли.
Читать дальше →
Всего голосов 137: ↑123 и ↓14 +109
Комментарии 123

Анализ популярности YouTube видео участников Евровидения 2020

Время на прочтение 6 мин
Количество просмотров 29K

13 марта на официальном YouTube канале Евровидения была выложена композиция группы Little Big, которая будет представлять Россию на конкурсе. Посмотрев клип, захотелось сравнивать статистику видео нашей группы, с видео других участников; какие ролики самые просматриваемые, у кого самый большой процент лайков, кого чаще всего комментируют. Гугление готовой статистики ни к чему не привело. Поэтому было решено самому собрать нужную статистику.

Читать дальше →
Всего голосов 35: ↑34 и ↓1 +33
Комментарии 49

Как выбрать случайное число от 1 до 10

Время на прочтение 6 мин
Количество просмотров 40K
Представьте, что вам нужно сгенерировать равномерно распределённое случайное число от 1 до 10. То есть целое число от 1 до 10 включительно, с равной вероятностью (10%) появления каждого. Но, скажем, без доступа к монетам, компьютерам, радиоактивному материалу или другим подобным источникам (псевдо) случайных чисел. У вас есть только комната с людьми.

Предположим, что в этой комнате чуть более 8500 студентов.

Самое простое — попросить кого-нибудь: «Эй, выбери случайное число от одного до десяти!». Человек отвечает: «Семь!». Отлично! Теперь у вас есть число. Однако вы начинаете задаваться вопросом, является ли оно равномерно распределённым?
Читать дальше →
Всего голосов 43: ↑41 и ↓2 +39
Комментарии 77

Парсим 25TB с помощью AWK и R

Время на прочтение 19 мин
Количество просмотров 13K

Как читать эту статью: прошу прощения за то, что текст получился таким длинным и хаотичным. Чтобы сэкономить ваше время, я каждую главу начинаю со вступления «Чему я научился», в котором одним-двумя предложениями излагаю суть главы.

«Просто покажи решение!» Если вы хотите всего лишь увидеть, к чему я пришёл, то переходите к главе «Становлюсь изобретательнее», но я считаю, что интереснее и полезнее почитать про неудачи.


Недавно мне поручили настроить процесс обработки большого объёма исходных последовательностей ДНК (технически это SNP-чип). Нужно было быстро получать данные о заданном генетическом местоположении (которое называется SNP) для последующего моделирования и прочих задач. С помощью R и AWK мне удалось очистить и организовать данные естественным образом, сильно ускорив обработку запросов. Далось мне это нелегко и потребовало многочисленных итераций. Эта статья поможет вам избежать некоторых моих ошибок и продемонстрирует, что же у меня в конце концов получилось.
Всего голосов 74: ↑72 и ↓2 +70
Комментарии 11

10 полезных фич R, о которых вы могли не знать

Время на прочтение 5 мин
Количество просмотров 9.8K
image

В R полным-полно самых разных функций. Ниже я приведу десять самых интересных из них, о которых многие могли не знать. Статья появилась после того, как я обнаружил, что мои рассказы о некоторых возможностях R, которые я использую в работе, восторженно воспринимаются знакомыми программистами. Если вы и так знаете об этом всё, то прошу прощения за потраченное время. В то же время, если есть чем поделиться — посоветуйте что-то полезное в комментариях.
Читать дальше →
Всего голосов 29: ↑29 и ↓0 +29
Комментарии 7

Создаем анимированные гистограммы при помощи R

Время на прочтение 4 мин
Количество просмотров 7.6K


Анимированные гистограммы, которые можно встроить прямо в публикацию на любом сайте, становятся все более популярными. Они отображают динамику изменений любых характеристик за определенное время и делают это наглядно. Давайте посмотрим, как их создать при помощи R и универсальных пакетов.
Читать дальше →
Всего голосов 31: ↑30 и ↓1 +29
Комментарии 2

Quick Draw Doodle Recognition: как подружить R, C++ и нейросетки

Время на прочтение 32 мин
Количество просмотров 6.7K


Привет, Хабр!

Осенью прошлого года на Kaggle проходил конкурс по классификации нарисованных от руки картинок Quick Draw Doodle Recognition, в котором среди прочих поучаствовала команда R-щиков в составе Артема Клевцова, Филиппа Управителева и Андрея Огурцова. Подробно описывать соревнование не будем, это уже сделано в недавней публикации.

С фармом медалек в этот раз не сложилось, но было получено много ценного опыта, поэтому о ряде наиболее интересных и полезных на Кагле и в повседневной работе вещей хотелось бы рассказать сообществу. Среди рассмотренных тем: нелегкая жизнь без OpenCV, парсинг JSON-ов (на этих примерах рассматривается интеграция кода на С++ в скрипты или пакеты на R посредством Rcpp), параметризация скриптов и докеризация итогового решения. Весь код из сообщения в пригодном для запуска виде доступен в репозитории.

Содержание:


  1. Эффективная загрузка данных из CSV в базу MonetDB
  2. Подготовка батчей
  3. Итераторы для выгрузки батчей из БД
  4. Выбор архитектуры модели
  5. Параметризация скриптов
  6. Докеризация скриптов
  7. Использование нескольких GPU в облаке Google Cloud
  8. Вместо заключения
Читать дальше →
Всего голосов 48: ↑48 и ↓0 +48
Комментарии 7

Вклад авторов

Работа

Data Scientist
66 вакансий