Pull to refresh
@resetmeread⁠-⁠only

Скромный пастух нулей и единиц…

Send message

Стекинг и блендинг в ML. Ключевые особенности и реализация с нуля на Python

Level of difficultyHard
Reading time11 min
Views11K

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

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

Читать далее

Градиентный бустинг. Реализация с нуля на Python и разбор особенностей его модификаций (XGBoost, CatBoost, LightGBM)

Level of difficultyHard
Reading time28 min
Views25K

На сегодняшний день градиентный бустинг (gradient boosting machine) является одним из основных production-решений при работе с табличными, неоднородными данными, поскольку обладает высокой производительностью и точностью, а если быть точнее, то его модификации, речь о которых пойдёт чуть позже.

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

Читать далее

Бэггинг и случайный лес. Ключевые особенности и реализация с нуля на Python

Level of difficultyHard
Reading time13 min
Views13K

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

Читать далее

Метод K-ближайших соседей (KNN). Принцип работы, разновидности и реализация с нуля на Python

Level of difficultyHard
Reading time9 min
Views41K

К-ближайших соседей (K-Nearest Neighbors или просто KNN) — алгоритм классификации и регрессии, основанный на гипотезе компактности, которая предполагает, что расположенные близко друг к другу объекты в пространстве признаков имеют схожие значения целевой переменной или принадлежат к одному классу.

Читать далее

Метод опорных векторов (SVM). Подходы, принцип работы и реализация с нуля на Python

Level of difficultyHard
Reading time14 min
Views21K

Метод опорных векторов (Support Vector Machines или просто SVM) — мощный и универсальный набор алгоритмов для работы с данными любой формы, применяемый не только для задач классификации и регрессии, но и также для выявления аномалий. В данной статье будут рассмотрены основные подходы к созданию SVM, принцип работы, а также реализации с нуля его наиболее популярных разновидностей.

Читать далее

Дерево решений (CART). От теоретических основ до продвинутых техник и реализации с нуля на Python

Level of difficultyHard
Reading time22 min
Views16K

Дерево решений CART (Classification and Regressoin Tree) — алгоритм классификации и регрессии, основанный на бинарном дереве и являющийся фундаментальным компонентом случайного леса и бустингов, которые входят в число самых мощных алгоритмов машинного обучения на сегодняшний день. Деревья также могут быть не бинарными в зависимости от реализации. К другим популярным реализациям решающего дерева относятся следующие: ID3, C4.5, C5.0.

Читать далее

Безопасность веб-приложений: анализ методов защиты от атак на уровне Backend

Level of difficultyMedium
Reading time18 min
Views10K

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

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

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

Читать далее

Смысл жизни с точки зрения программиста-буддиста

Level of difficultyEasy
Reading time24 min
Views15K

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

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

Читать далее

Ищем Арнольда Шварценеггера среди мужчин, женщин и детей с помощью нейросети на С++

Level of difficultyMedium
Reading time24 min
Views10K

Привет, Хабр! Меня зовут Кирилл Колодяжный, я ведущий инженер-программист в YADRO. Помимо основных рабочих задач, включающих исследование проблем производительности СХД, я увлекаюсь машинным обучением. Участвовал в коммерческих проектах, связанных с техническим зрением, 3D-сканерами и обработкой фотографий. В задачах часто использовал С++, хотя машинное обучение традиционно ассоциируется с Python. Этот язык программирования буквально захватил сферу, его используют повсюду — от обучающих курсов до серьезных ML-проектов.

Однако Python — не единственный язык, на котором можно решать задачи машинного обучения. Так, альтернативой может стать С++. Если последний вам ближе, вам будет интересен и полезен этот текст.

Под катом разберемся:

как организовать работу с данными и загрузку обучающего датасета, 

как описать структуру нейронной сети, 

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

как организовать конвейер обучения сети, 

как использовать предобученные глубокие сети для решения задач. 

Читать далее

Алгоритмы AdaBoost (SAMME & R2). Принцип работы и реализация с нуля на Python

Level of difficultyHard
Reading time11 min
Views5.8K

Следующим мощным алгоритмом машинного обучения является AdaBoost (adaptive boosting), в основе которого лежит концепция бустинга, когда слабые базовые модели последовательно объединяются в одну сильную, исправляя ошибки предшественников.

В AdaBoost в качестве базовой модели используется пень решений (могут использоваться другие модели) — дерево с небольшой глубиной, которому присваивается вектор весов размера N, каждое значение которого соответствует определённому значению y_train и изначально равно 1 / N, где N — количество образцов в обучающей выборке. Каждый следующий пень обучается с учётом весов, рассчитанных на основе ошибок предыдущего прогноза. Также для каждого обученного пня отдельно рассчитывается вес, используемый для оценки важности итоговых прогнозов.

Читать далее

Проблема квантового измерения и её решения: байесовские вероятности или неопределённость самолокации?

Level of difficultyMedium
Reading time37 min
Views8.2K

Кажется, наука приближается к разрешению парадокса, породившего множество интерпретаций квантовой механики и множество споров между их сторонниками. Реализованный в 2019 г. эксперимент «Друг друга Вигнера», в котором наблюдатели моделируются с помощью фотонов или кубитов квантового компьютера, убедительно показал, что квантовую механику нельзя применять для описания мира с точки зрения других наблюдателей. В результате теории, постулирующие коллапс волновой функции, перестают быть самосогласованными и выбывают из игры. В финальный раунд проходят только кьюбизм и многомировая интерпретация – две самые радикальные и диаметрально противоположные интерпретации, предлагающие очень похожие решения проблемы измерения. Одна из них требует отказаться от идеи объективной реальности, а вторая – признать собственную неуверенность в том, в какой вселенной вы находитесь. Я делаю ставку на второй вариант, а какое из этих двух зол выбираете вы?

Читать далее

Автоматизируем рутину в Android разработке: плагин для создания шаблонного кода на примере создания -api -impl модулей

Level of difficultyMedium
Reading time9 min
Views6K

Привет, хабр! Меня зовут Алексей, я ведущий разработчик платформенной команды и по совместительству лид архитектурной компетенции в проекте Альфа-Бизнес. Сегодня я расскажу, как можно автоматизировать повторяющуюся работу в андроид-разработке при помощи плагина для Android Studio.

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

Также мы привыкли автоматизировать свою собственную работу. Инструменты CI/CD позволяют быстрее доставлять ценность клиентам, чем ручное развертывание, линты помогают уменьшить время, которое мы тратим на прохождение задачи код ревью. 

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

Читать далее

Как сверстать письмо, чтобы оно дошло до получателя таким, как задумано

Level of difficultyEasy
Reading time14 min
Views14K

Привет! Меня зовут Егор Стеблин, я фронтенд-разработчик отдела спецпроектов в KTS.

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

В конце — пример целого письма в HTML.

Читать далее

Open Source в финансах. Проект Okama

Level of difficultyEasy
Reading time7 min
Views4.4K

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

Читать далее

Кластеризация в ML: от теоретических основ популярных алгоритмов к их реализации с нуля на Python

Level of difficultyHard
Reading time34 min
Views52K

Кластеризация — это набор методов без учителя для группировки данных по определённым критериям в так называемые кластеры, что позволяет выявлять сходства и различия между объектами, а также упрощать их анализ и визуализацию. Из-за частичного сходства в постановке задач с классификацией кластеризацию ещё называют unsupervised classification.

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

Читать далее

Регулярные выражения в Python от простого к сложному. Подробности, примеры, картинки, упражнения

Reading time25 min
Views1.7M

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




Решил я давеча моим школьникам дать задачек на регулярные выражения для изучения. А к задачкам нужна какая-нибудь теория. И стал я искать хорошие тексты на русском. Пяток сносных нашёл, но всё не то. Что-то смято, что-то упущено. У этих текстов был не только фатальный недостаток. Мало картинок, мало примеров. И почти нет разумных задач. Ну неужели поиск IP-адреса — это самая частая задача для регулярных выражений? Вот и я думаю, что нет.
Про разницу (?:...) / (...) фиг найдёшь, а без этого знания в некоторых случаях можно только страдать.

Плюс в питоне есть немало регулярных плюшек. Например, re.split может добавлять тот кусок текста, по которому был разрез, в список частей. А в re.sub можно вместо шаблона для замены передать функцию. Это — реальные вещи, которые прямо очень нужны, но никто про это не пишет.
Так и родился этот достаточно многобуквенный материал с подробностями, тонкостями, картинками и задачами.

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

Портретная гармонизация изображений

Level of difficultyMedium
Reading time8 min
Views3K

Привет! В данной публикации команда RnD CV из SberDevices познакомит вас с нашим подходом к решению задачи повышения степени реалистичности портретных изображений (по-научному — портретной гармонизации изображений). Мы не только расскажем о задаче портретной гармонизации, но и представим архитектуру нейронной сети, которая прекрасно решает эту задачу. В конце статьи будут представлены примеры работы нашей модели и получившиеся метрики.

Читать далее

Одномерный лес и все прочее

Level of difficultyEasy
Reading time7 min
Views4.5K

Объяснение «на пальцах» и реализация решающего дерева, случайного леса и бустинга.

Дерево принятия решений (также называют деревом классификации или регрессионным деревом) — средство поддержки принятия решений, использующееся в машинном обучении, анализе данных и статистике. Структура дерева представляет собой «листья» и «ветки». На рёбрах («ветках») дерева решения записаны признаки, от которых зависит целевая функция, в «листьях» записаны значения целевой функции, а в остальных узлах — признаки, по которым различаются случаи. Чтобы классифицировать новый случай, надо спуститься по дереву до листа и выдать соответствующее значение.

Читать далее

Что такое переадресация портов Kubectl и как она работает?

Reading time5 min
Views10K

Kubernetes — это платформа для оркестровки контейнеров, которая позволяет запускать и управлять контейнеризированными приложениями. Иногда необходимо провести отладку или протестировать приложение локально, но при этом не безопасно открывать его внешнему миру. В этом случае на помощь приходит команда kubectl port-forward. Она позволяет перенаправлять трафик с вашего локального компьютера на под, в котором находится контейнеризированное приложение.

Перевели гайд о том, как использовать kubectl port-forward для перенаправления сетевого трафика с нашего локального компьютера на под с веб-сервером nginx. 

Читать далее

Памятка: 15 фраз для стендапов на английском языке

Level of difficultyEasy
Reading time2 min
Views5.8K

Работая с зарубежными коллегами, вам наверняка придётся участвовать в стендапах — коротких ежедневных встречах, на которых IT-специалисты рассказывают о выполненных задачах, проблемах и планах на сегодня. Делать это на английском сложнее, чем на родном языке, но, к счастью, стендапы обычно проходят по шаблонам, и основные конструкции можно выучить.

Меня зовут Наталья Зеленова, я методист курсов английского для работы в IT в Яндекс Практикуме. В этой памятке я приведу 15 фраз, которые можно использовать в разных ситуациях, — сохраните в закладки, чтобы структурировать свою речь на стендапе и чувствовать себя увереннее.

Читать далее

Information

Rating
Does not participate
Registered
Activity