Как стать автором
Обновить
-1
0

Пользователь

Отправить сообщение

Теория вероятностей в машинном обучении. Часть 1: модель регрессии

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

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

В следующей части рассмотрим метод максимизации правдоподобия в классификации: в чем роль кроссэнтропии, функций сигмоиды и softmax и как кроссэнтропия связана с "расстоянием" между распределениями вероятностей и почему модель регрессии тоже обучается через минимизацию кроссэнтропии. Затем перейдем от метода максимизации правдоподобия к байесовскому выводу и его различным приближениям.

Данная серия статей не является введением в машинное обучение и предполагает знакомство читателя с основными понятиями. Задача статей - рассмотреть машинное обучение с точки зрения теории вероятностей, что позволит по новому взглянуть на проблему, понять связь машинного обучения со статистикой и лучше понимать формулы из научных статей. Также на описанном материале строятся более сложные темы, такие как вариационные автокодировщики (Kingma and Welling, 2013), нейробайесовские методы (Müller et al., 2021) и даже некоторые теории сознания (Friston et al., 2022).

Читать далее
Всего голосов 23: ↑23 и ↓0+23
Комментарии0

Неполная, неточная и наполовину выдуманная история исключений

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

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

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

Чтобы программа не грохалась, а выдавала осмысленное сообщение и давала возможность продолжить работу, надо было добавить проверку.

Читать далее
Всего голосов 20: ↑19 и ↓1+24
Комментарии121

Работа с поверхностными и глубокими копиями в Python

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

В этой статье объясняется, как делать копии списков Python, массивов NumPy и датафреймов Pandas при помощи операций получения срезов, списочного индексирования (fancy indexing) и логического (boolean indexing). Эти операции очень часто используются при анализе данных и должны рассматриваться всерьёз, поскольку ошибочные предположения могут привести к падению быстродействия или неожиданным результатам.

Python кажется простым, но всякий раз, возвращаясь к его азам, ты находишь новые для освоения вещи. Здесь на ум приходит известное изречение Эйнштейна:

«Чем больше я узнаю, тем больше понимаю, как много я ещё не знаю».
Читать дальше →
Всего голосов 42: ↑42 и ↓0+42
Комментарии4

Вам нужен чистый код? Используйте правило шести

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

Все хотят писать чистый код. Этому посвящены целые книги.

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

Решение таково:

Каждая строка делает только одно действие


Одна строка, одна задача.

Но не стоит слишком перебарщивать.
Читать дальше →
Всего голосов 52: ↑41 и ↓11+42
Комментарии87

Как лучше обучать RNN для прогнозирования временных рядов?

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

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

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

Читать далее
Всего голосов 19: ↑19 и ↓0+19
Комментарии32

Когда TCP-сокеты отказываются умирать

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

Когда TCP-сокеты отказываются умирать

В поисках причин, почему установленные соединения не разрываются в некоторых случаях, я набрёл на отличную статью в блоге Cloudflare. Которая в итоге помогла найти не только решение моей проблемы, но и помогла лучше понять как работают таймауты TCP соединений в Linux.

Читать далее
Всего голосов 66: ↑66 и ↓0+66
Комментарии5

Простое понимание замыканий в Rust

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

У вас бывало такое, что вы никак не можете скомпилировать код с замыканиями в Rust? Уже и все варианты Fn-трейтов перебрали, и move написали везде, где можно, а borrow checker все равно не унимается? И тут оказывается, что просто нужно внутри замыкания клонировать переданную переменную окружения! Сложно и непонятно. Дурацкий привереда Rust.


На самом деле довольно просто понять, почему так происходит и на что влияет move, а на что — клонирование. Но отсутствие подобного понимания я наблюдаю не только у начинающих программистов, но и у вполне зрелых. Хуже того, есть статьи, в которых это объясняется неправильно.

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

Что делать, если твой временной ряд растёт вширь

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

Привет, Хабр! Есть мнение, что прогнозирование временных рядов - сложная задача. Но не будем расстраиваться, ведь есть и плюсы - существует ещё большое количество задач, когда рядов сразу несколько, и такие задачи ещё сложнее! Когда начинаем сравнивать, понимаем, что прогнозировать одномерные временные ряды не так уж и сложно. А вот что делать с ситуацией, когда временной ряд обрастает параллельно идущими с ним последовательностями других параметров (многомерный ряд), какие методы и алгоритмы использовать, и что делать, если задача прогнозировать такие ряды есть, а опыта не очень много (спойлер - используйте AutoML, а пока он работает восполните пробел прочитав пару статей по теме), разбираем под катом.

Что такое временной ряд 

Если начинать совсем издалека, то это последовательность значений, упорядоченная по времени. Во временных рядах есть закономерность: текущие значения ряда связаны с предыдущими. Если такого свойства у ряда нет, то поздравляем (или не поздравляем), вы имеете дело с процессом, который прогнозировать классическими (и не очень) моделями не выйдет, в таком случае стоит смотреть в сторону Марковских процессов.

Простенькая картинка ниже иллюстрирует описанное выше свойство, - этого бэкграунда для продолжения чтения поста достаточно (Рисунок 1).

Ну и что же делать
Всего голосов 5: ↑5 и ↓0+5
Комментарии7

Регрессионный анализ в DataScience. Часть 2. Преобразование Бокса-Кокса. Проверка тренда и случайности

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

Обзор построения и анализа линейной регрессионной модели с использованием преобразования Бокса-Кокса

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

Зоопарк ML-моделей или лучший справочник на Хабре

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

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

Меня зовут Ирина, я работаю ML инженером в Brand Analytics. Моя работа тесно связана с NLP, ведь мы ежедневно получаем огромное количество текстовых данных со всего интернета. Сегодня я хочу поговорить о теме, которая беспокоила меня еще с тех времен, когда я только начала изучать SOTA-решения в задачах обработки естественного языка.

Читать далее
Всего голосов 16: ↑16 и ↓0+16
Комментарии5

DeepWalk: поведение и как его реализовать

Время на прочтение8 мин
Количество просмотров4K
imageШпаргалка по быстрому анализу и оценке отношений в графовых сетях при помощи Python, Networkx и Gensim.

При помощи графовых структур данных можно представлять сложные взаимодействия, и работа с ними открыла новые пути анализа и классификации сущностей – смотря, как они влияют друг на друга. Притом, что такой анализ – очень мощное средство для нахождения различных структур внутри сообществ, в них не хватает возможностей запрограммировать аспекты графа как входную информацию для традиционных алгоритмов машинного обучения. Алгоритм DeepWalk [1] позволяет схватывать взаимодействия, содержащиеся в графе и программировать их в простых нейронных сетях как векторные представления, которые далее могут потребляться вышеупомянутыми алгоритмами машинного обучения. В Интернете много простых вводных статей, позволяющих познакомиться с алгоритмом DeepWalk, однако не хватает таких, в которых приводился бы код и сообщались бы детали реализации подобных систем. Под такими деталями я понимаю параметризацию модели, соображения о развертывании и обработку невидимых данных.

В этой короткой статье мы в общем виде рассмотрим графовые сети, Word2Vec / Skip-Gram, а также процесс DeepWalk. В качестве иллюстрации приведу пример с многоклассовой классификацией, на котором демонстрируется ход алгоритма. Рассмотрим различные конфигурации параметров и обратим внимание, как они влияют на производительность алгоритма. В заключение обрисую некоторые моменты, связанные с развертыванием и обработкой невидимых данных внутри системы.
Читать дальше →
Всего голосов 7: ↑7 и ↓0+7
Комментарии1

Безопасность в Linux

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

В новой статье говорим про безопасность в Linux: как настроить и что важно учитывать в процессе. Дополнительно разбираем PAM и модули аутентификации, рассматриваем iptables. 

За основу взят один из уроков нашего практического курса «Администрирование Linux Мега».

Читать далее
Всего голосов 23: ↑13 и ↓10+4
Комментарии19

Проверка автокорреляции с использованием критерия Дарбина-Уотсона средствами Python

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

Методический разбор для специалистов DataScience по применению критерия Дарбина-Уотсона для проверки автокорреляции средствами python

Читать далее
Всего голосов 16: ↑16 и ↓0+16
Комментарии2

Наглядное руководство по SSH-туннелям

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

Прим. переводчика: автор статьи рассматривает практические сценарии и примеры организации SSH-туннелей. А для лучшего понимания того, как это работает, графически показывает потоки трафика.

Туннели SSH — это зашифрованные TCP-соединения между клиентами и серверами SSH. Трафик входит с одной стороны туннеля и прозрачно выходит с другой. Изначально этот термин относился к туннелям на виртуальных сетевых интерфейсах TUN/TAP, однако сейчас так обычно называют проброс портов SSH.

Читать далее
Всего голосов 75: ↑75 и ↓0+75
Комментарии17

Краткий справочник по «всем-всем» командам Linux

Уровень сложностиСредний
Время на прочтение74 мин
Количество просмотров162K

Периодически меня на начальном курсе просят дать "список всех-всех команд с кратким описанием что делает"... Ну прям "всех-всех". И ведь если искать в интернете "такие" справочники существуют - либо про "20-30 команд, но самых важных", либо с неточностями и устаревшей информацией. Так что предлагаю вашему вниманию свою версию такого "краткого" справочника (на 300, 515, 612, 716, 842, 1005, 1110 команд) с ссылками на wiki-описание и на cheat.sh-примеры наиболее важных команд.

Справочник по всем-всем командам LINUX
Всего голосов 105: ↑102 и ↓3+120
Комментарии114

4 анти-паттерна pandas и способы борьбы с ними

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

Pandas — это мощная библиотека для анализа данных, API которой обладает широкими функциональными возможностями. Этот API позволяет решить любую задачу, связанную с обработкой данных, несколькими способами. Некоторые из подходов к решению задач лучше других. Часто бывает так, что пользователи pandas узнают о подходах, не отличающихся особой эффективностью, привыкают к ним и постоянно их применяют. Этот материал посвящён разбору четырёх анти-паттернов pandas и рассказу о приёмах работы, которые стоит использовать вместо них.

Автор черпал вдохновение из многих источников, ссылки на которые даны в статье. В частности — из замечательной книги Effective Pandas.

Читать далее
Всего голосов 20: ↑19 и ↓1+26
Комментарии15

Создание ботов для торговли криптовалютами и акциями (часть вторая)

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

Я не планировал писать вторую статью на эту тему, но получив от вас много вопросов и откликов, на предыдущий пост (https://habr.com/ru/post/675092/) решил ответить сразу всем, закрыть эту тему и перейти к следующим, не связанным с торговлей.

Читать далее
Всего голосов 14: ↑13 и ↓1+13
Комментарии13

Создание ботов для торговли криптовалютами и акциями на Postgres

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

Создание надежных ботов и эмуляторов для торговли акциями и криптовалютой управляемый через телеграмм на базе Postgresql с использованием только pgsql.

Читать далее
Всего голосов 19: ↑19 и ↓0+19
Комментарии12
2

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность

Специализация

Backend Developer
Junior
Python
PostgreSQL
Linux
Rust
Git
English
SQL
REST
Golang