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

Astrophysicist, Software Engineer, PhD

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

Конспект по «Машинному обучению». Математическая статистика. Метод максимального правдоподобия

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


Вспомним некоторые определения математической статистики


Пусть задано вероятностное пространство $(\Omega, \Sigma, P)$.

Определение 1:

Случайной величиной $\xi = \xi(w)$, принимающей значения в множестве $S$ c $\sigma$-алгеброй подмножеств $\Phi$ называется любая $(\Sigma, \Phi)$-измеримая функция $\xi \colon \Omega \to S$, то есть $\forall A \subseteq S, A \in \Phi$ выполняется условие $\xi^{-1}(A)=\{\omega \in \Omega \space \colon \space \xi(w) \in A\} \in \Sigma$.
Читать дальше →
Всего голосов 14: ↑8 и ↓6+2
Комментарии1

Пользовательские правила iptables для docker на примере zabbix

Время на прочтение3 мин
Количество просмотров30K
Задача: Закрыть все входящие соединение, кроме определенных ip адресов.

Имеется тестовая среда, состоящий из linux и трех windows c статическими ip адресами. На linux установлен docker образами zabbix, redmine. А на двух windows машинах установлены и настроены агенты от zabbix, на третьем нужно организовать возможность просмотра zabbix. Нужно ограничить других пользователей от zabbix сервера, но не ограничивая от redmine.
Читать дальше →
Всего голосов 12: ↑12 и ↓0+12
Комментарии3

Математические выражения в .NET (разбор, дифференцирование, упрощение, дроби, компиляция)

Время на прочтение19 мин
Количество просмотров41K
Мне со школьных времен был интересен алгоритм вывода аналитических производных и упрощения выражений. Данная задача была актуальна впоследствии и в вузе. Тогда-то я реализовал ее, только получилось все не так, как хотелось: вместо кода IL у меня просто генерировался C# код в текстовом виде, сборки не выгружались, ну и к тому же не было возможности вывода производных в аналитическом виде. Однако потом я решил все-таки реализовать такую библиотеку, так как интерес остался. Стоит отметить, что таких библиотек в интернете большое количество, но нигде я не нашел именно этапа компиляции выражений в IL код, т.е. по сути везде выполняется интерпретация, которая не столь эффективна, в отличие от компиляции. Ну и к тому же я это разрабатывал чисто для себя, для изучения новых технологий, особо не надеясь, что результат моих трудов может где-нибудь потребоваться. Для нетерпеливых: исходники, программа.

Используемые программы и библиотеки


  1. GOLD Parsing System — IDE для написания грамматик и генерации кода лексеров и парсеров под различные языки (C, C#, Java, JavaScript, Objective-C, Perl, Python, Ruby и др.). Основана на LALR парсинге.
  2. Visual Studio 2010
  3. GOLD.Engine — сборка под .NET, подключаемая для взаимодействия со сгенерированными таблицами.
  4. NUnit — Открытая среда юнит-тестирования приложений для .NET.
  5. ILSpy — OpenSource дизассемблер под .NET.

Этапы, на которые я разбил весь процесс:
  1. Построение дерева выражения
  2. Вычисление аналитической производной
  3. Упрощение (симплификация) выражения
  4. Обработка рациональных дробей
  5. Компиляция выражения

Читать дальше →
Всего голосов 80: ↑76 и ↓4+72
Комментарии35

Заполнение текстовых шаблонов данными на основе модели. Реализация на .NET с использованием динамических функций в байт-коде (IL)

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

Пролог


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

Сразу возник вопрос — как это реализовать? На ум приходили различные решения, начиная от задания в шаблоне неких константных значений, которые бы заменялись на данные модели, и заканчивая полноценными вьюхами Razor (сайт построен на MVC 5).

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

В данной статье я расскажу о решении на основе генератора байт-кода, которое удовлетворяет этим требованиям, а также прокомментирую наиболее интересные фрагменты кода.

Если вас интересует только шаблонизатор, ссылочки ниже:

Исходные коды шаблонизатора (Genesis.Patternizer) и тестовой консоли в проекте на SourceForge: https://sourceforge.net/projects/open-genesis/?source=navbar
Или в архиве одним файлом: Patternizer.zip

Читать дальше →
Всего голосов 6: ↑5 и ↓1+4
Комментарии5

15 книг по машинному обучению для начинающих

Время на прочтение5 мин
Количество просмотров156K
Сделал подборку книг по Machine Learning для тех, кто хочет разобраться, что да как.
Добавляйте в закладки и делитесь с коллегами!

Книги по машинному обучению на русском


1. «Математические основы машинного обучения и прогнозирования» Владимир Вьюгин.

О чем

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

2. «Верховный алгоритм» Педро Домингос.

О чем

Книга, благодаря которой даже ничего не смыслящие в математике и статистике люди поймут, что такое алгоритмы машинного обучения и каково их применение в жизни. Профессор Педро Домингос рассказывает о пяти основных школах Machine Learning и о том, как они используют идеи из различных областей научного знания — нейробиологии, физики, статистики, биологии, — чтобы помогать людям решать сложные задачи и упрощать рутину с помощью алгоритмов.
Читать дальше →
Всего голосов 34: ↑33 и ↓1+32
Комментарии23

Ассемблерные вставки… в C#?

Время на прочтение9 мин
Количество просмотров36K
Итак, эта история началась с совпадения трёх факторов. Я:

  1. в основном писал на C#;
  2. лишь примерно представлял, как он устроен и работает;
  3. заинтересовался ассемблером.

Эта, на первый взгляд, невинная смесь породила странную идею: а можно ли как-то совместить эти языки? Добавить в C# возможность делать ассемблерные вставки, примерно как в C++.

Если вам интересно, к каким последствиям это привело, — добро пожаловать под кат.


Читать дальше →
Всего голосов 60: ↑57 и ↓3+54
Комментарии37

Большая Философская Мысль: топ-10 докладов DotNext 2019 Piter

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


Здравствуй, Хабр! В мае прошла наша большая .NET-конференция, где нашлось место и хардкору, и трендам, и архитектуре, и просто хорошим практикам.

А теперь делимся лучшими докладами (по оценкам зрителей конференции), из которых вы:

  • узнаете, почему (скорее всего) пишете функциональный код, даже не подозревая об этом;
  • погрузитесь в асинхронное программирование;
  • услышите в доступной форме про уязвимости десериализаторов;
  • получите комплексную информацию о кардинальных изменениях, которые принёс C# 8 с non-nullable reference types;
  • захотите купить Raspberry Pi;
  • узнаете о «настоящей» стоимости кода.

Есть нюанс: в этот раз возникла особая ситуация с докладом-лидером. Во-первых, он посвящён не .NET, а во-вторых, вот его видеозаписью мы поделиться не можем (согласно условиям выступления). Чтобы компенсировать это, мы добавили в пост 11-е место — так что под катом вы всё равно сможете увидеть видеозаписи 10 отличных докладов про .NET-разработку. Поехали!
Читать дальше →
Всего голосов 30: ↑28 и ↓2+26
Комментарии4

Построение анимационного линейного графика скользящего среднего в R. Получение данных через NBA API

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

Продолжим анализировать баскетбольные данные с помощью R.


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


А строить мы будем графики скользящего среднего для трёх видов рейтинга команд НБА: атакующего, оборонительного и net-рейтинга (т.е. разницы между первыми двумя). В двух словах о них. Атакующий и оборонительный рейтинги — это количество очков, набранных/пропущенных командой за 100 владений. NET рейтинг — это их разница также на сто владений. Кому интересно узнать о них более подробно, могут прочитать глоссарий на сайте basketball-reference. Там есть формула расчёта, которую я тоже реализовал с помощью R, но так пока и не опубликовал статью об этом.

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

Fighting complexity in software development

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

What's this about


After working on different projects, I've noticed that every one of them had some common problems, regardless of domain, architecture, code convention and so on. Those problems weren't challenging, just a tedious routine: making sure you didn't miss anything stupid and obvious. Instead of doing this routine on a daily basis I became obsessed with seeking solution: some development approach or code convention or whatever that will help me to design a project in a way that will prevent those problems from happening, so I can focus on interesting stuff. That's the goal of this article: to describe those problems and show you that mix of tools and approaches that I found to solve them.

Read more →
Всего голосов 21: ↑20 и ↓1+19
Комментарии2

Визуализация количества побед у команд НБА с помощью анимационных столбиковых диаграмм в R

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

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

Читать дальше →
Всего голосов 17: ↑14 и ↓3+11
Комментарии4

Виды моделирования. Основы скульптинга, ретопологии и развертки

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


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

Предположим, что мы решили создавать персонажа для игры, но что если это будет окружение, архитектура или что-то еще? Сначала нужно узнать какие бывают способы моделирования и понять какой нам больше подходит.
Читать дальше →
Всего голосов 22: ↑22 и ↓0+22
Комментарии23

Идеальное резюме, которому будут рады рекрутер и работодатель

Время на прочтение12 мин
Количество просмотров230K
Данная статья основана на материалах моего выступления перед студентами Южного Федерального Университета. Большинство примеров – из мира веб-разработки. Однако принципы, о которых я рассказываю, применимы к любой области деятельности.
Читать дальше →
Всего голосов 34: ↑18 и ↓16+2
Комментарии78

Disposable pattern (Disposable Design Principle) pt.1

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


Disposable pattern (Disposable Design Principle)


I guess almost any programmer who uses .NET will now say this pattern is a piece of cake. That it is the best-known pattern used on the platform. However, even the simplest and well-known problem domain will have secret areas which you have never looked at. So, let’s describe the whole thing from the beginning for the first-timers and all the rest (so that each of you could remember the basics). Don’t skip these paragraphs — I am watching you!


If I ask what is IDisposable, you will surely say that it is


public interface IDisposable
{
    void Dispose();
}

What is the purpose of the interface? I mean, why do we need to clear up memory at all if we have a smart Garbage Collector that clears the memory instead of us, so we even don’t have to think about it. However, there are some small details.


This chapter was translated from Russian jointly by author and by professional translators. You can help us with translation from Russian or English into any other language, primarily into Chinese or German.

Also, if you want thank us, the best way you can do that is to give us a star on github or to fork repository github/sidristij/dotnetbook.
Read more →
Всего голосов 18: ↑17 и ↓1+16
Комментарии0

DynamicData: Изменяющиеся коллекции, шаблон проектирования MVVM и реактивные расширения

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


В феврале 2019 года состоялся релиз ReactiveUI 9  —  кроссплатформенного фреймворка для построения приложений с GUI на платформе Microsoft .NET. ReactiveUI  — это инструмент для тесной интеграции реактивных расширений с шаблоном проектирования MVVM. Знакомство с фреймворком можно начать с серии статей на Хабре или со вступительной страницы документации. Обновление ReactiveUI 9 включает в себя множество исправлений и улучшений, но, пожалуй, самое интересное и значимое изменение — тесная интеграция с фреймворком DynamicData, позволяющим работать с изменяющимися коллекциями в реактивном стиле. Попробуем разобраться, в каких случаях нам может пригодиться DynamicData и как устроен внутри этот мощный реактивный фреймворк!
Читать дальше →
Всего голосов 36: ↑36 и ↓0+36
Комментарии4

Как Protonmail блокируется в России

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

English version of the post


Совершенно рутинный трабл-тикет в нашу техподдержку вскрыл очередную странную блокировку довольно значимого для уважающего свои интернет-свободы сообщества сервиса Protonmail в некоторых сетях России. Не хотелось бы эксплуатировать «жёлтый заголовок», но история странная и несколько возмутительная.


TL;DR


Важное замечание: разбор продолжается и пока всё в процессе. Может «мальчика и нет», но скорее всего есть. Будет дополняться по мере появления новой информации.


Крупнейшие российские операторы связи МТС и Ростелеком внереестрово блокируют трафик на SMTP-сервера сервиса защищённой электронной почты Protonmail по письму из ФСБ. Судя по всему, уже достаточно долго, но никто особого внимания пока не обращал. А мы вот обратили.


WTF и пригорание продолжается, все участники получили соответствующие запросы и должны предоставить мотивированные ответы.


UPD: МТС предоставили скан письма ФСБ, по которому производится блокировка. Мотивировка: Универсиада и «телефонный терроризм». Чтобы письма с ProtonMail не попадали на тревожные адреса спацслужб и школ.


UPD: Protonmail удивились методам борьбы с фродом у «этих странных русских» и посоветовали более эффективный вид борьбы через abuse mailbox.


UPD: Бравая концепция борьбы ФСБ с ложными обращениями не выдержала критики: письмом поломали входящую почту на ProtonMail, а не исходящую.


UPD: Protonmail пожали плечами и сменили IP-адреса своих MX, таким образом уведя их из под блокировки по этому конкретному письму. Вопрос, что будет дальше открыт.


UPD: Судя по всему, такое письмо не одно и есть ещё набор IP-адресов VOIP-сервисов, которые внереестрово блокируются.


UPD: Так как история стала распространяться за пределы Рунета, подготовили перевод на английский язык, ссылка вверху.

Всего голосов 425: ↑418 и ↓7+411
Комментарии397

«Анализ данных на Python» в двух частях

Время на прочтение5 мин
Количество просмотров57K
Курсы по анализу данных в CS центре читает Вадим Леонардович Аббакумов — кандидат физ.-мат. наук, он работает главным экспертом-аналитиком в компании Газпромнефть-Альтернативное топливо.

Лекции предназначены для двух категорий слушателей. Первая — начинающие аналитики, которым сложно начинать с изучения, например, книги The Elements of Statistical Learning. Курс подготовит их к дальнейшей работе. Вторая — опытные аналитики, не получившие систематического образования в области анализа данных. Они могут заполнить пробелы в знаниях. С прошлого года на занятиях используется язык программирования Python.

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

Приятного просмотра!
Всего голосов 22: ↑20 и ↓2+18
Комментарии0

Data Science «спецназ» собственными силами

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

Практика показывает, что многие enterprise компании сталкиваются с трудностью в реализации аналитических проектов.


Все дело в том, что, в отличии от классических проектов по поставке железа или внедрению вендорских решений, укладывающихся в линейную модель исполнения, задачи, связанные с продвинутой аналитикой (data science) очень трудно формализуются в виде четкого и однозначного ТЗ в виде достаточным для передачи исполнителю. Ситуация отягощается тем, что для реализации задачи требуется интеграция массы различных внутренних ИТ систем и источников данных, часть вопросов и ответов может появиться только после того, как начинается работа с данными и вскрывается реальное положение дел, сильно отличающееся от документальной картины мира. Это все означает, что для написания грамотного ТЗ необходимо провести предварительную часть работы сопоставимую с половиной проекта, посвященную изучению и формализации реальных потребностей, анализу источников данных, их связей, структуры и пробелов. В рамках организаций сотрудников, которые способны провернуть такую масштабную работу, практически не бывает. Вот и получается, что на конкурсы выкладывают совсем сырые требования. В лучшем случае конкурсы отменяются (отправляются на доработку) после цикла уточняющих вопросов. В худшем случае — за громадный бюджет и длинные сроки получается нечто, совершенно не похожее на планы авторов требований. И остаются они у разбитого корыта.


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


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

Читать дальше →
Всего голосов 29: ↑27 и ↓2+25
Комментарии19

Своя видео-платформа — ffmpeg и качество кодирования видео. Part 2

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

Lenna любит хорошо выглядеть — фотомодель в конце концов. Ходят легенды, что добавление её в заголовок статьи, связанной с обработкой визуальных данных даёт +5 к шансу на плюсы.

Продолжаю раскрывать особенности работы видео сервисов. Сегодня заметки про параметры кодирования и их выбор.

Первая часть

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

К сожалению, волшебной кнопки «скодировать совсем хорошо» не предусмотрено. Как и аналога caniuse для параметров кодирования. Придётся разбираться в особенностях работы кодеков.
Читать дальше →
Всего голосов 27: ↑27 и ↓0+27
Комментарии19

Другой GitHub: репозитории по Data Science, визуализации данных и глубокому обучению

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

(с)

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

Эта подборка поможет разобраться, на какие именно репозитории стоит обратить внимание, если вас интересует работа с данными и сфера глубокого обучения.
Читать дальше →
Всего голосов 58: ↑55 и ↓3+52
Комментарии10

Разбор задачи с собеседования в Google: синонимичные запросы

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


Это новая статья из разбора задач с собеседований в Google. Когда я там работал, то предлагал кандидатам такие задачи. Потом произошла утечка, и их запретили. Но у медали есть обратная сторона: теперь я могу свободно объяснить решение.
Читать дальше →
Всего голосов 53: ↑51 и ↓2+49
Комментарии112

Информация

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