Search
Write a publication
Pull to refresh
@resetmeread⁠-⁠only

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

Send message

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

Level of difficultyHard
Reading time9 min
Views42K

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

Читать далее

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

Level of difficultyHard
Reading time14 min
Views22K

Метод опорных векторов (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
Views11K

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

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

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

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

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

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

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

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

Читать далее

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

Level of difficultyHard
Reading time11 min
Views6K

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

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

Читать далее

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

Level of difficultyMedium
Reading time37 min
Views8.4K

Кажется, наука приближается к разрешению парадокса, породившего множество интерпретаций квантовой механики и множество споров между их сторонниками. Реализованный в 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.5K

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

Читать далее

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

Level of difficultyHard
Reading time34 min
Views53K

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

Читать далее

Типичные задачи аналитика. Часть 2. А есть ли тренд?

Level of difficultyMedium
Reading time18 min
Views13K

В первой части статьи на Habr мы рассмотрели классические подходы к оценке изменений метрики при условии ее стационарности. В этом контексте статистические критерии, применяемые в A/B тестировании, оказались весьма эффективными.

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

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

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

Читать далее

Как перестать «ходить на дырку» на даче и не надышаться миазмами

Level of difficultyEasy
Reading time5 min
Views75K

Эта статья адресована тем, кто сам занимается строительством канализации на даче.

Миллионы дач в России ранее были оборудованы туалетами типа "сортир с выгребной ямой". С этого многие начинали и многие этим и закончили. Но по мере продвижения ИИ в массы и вообще развития технологий, многие задумались о том, что душ доме на даче это хорошо. А также нормальный тубзик. В котором можно нормально гнездится и почитать газету в интернете, Хабр или что-то еще полезное, а не напряженно ждать вцепится ли в тебя рой мух или нет. Опять же эстетика сортира уже устарела.

Читать далее

Вы вообще нормальн… нормализованный??

Level of difficultyMedium
Reading time5 min
Views5.5K

Сказ о том, нормализация данных завела производительность many-to-many в postgres в тупик, как это зло было повержено, и как тут нам помог Clickhouse.

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

Читать далее

Information

Rating
Does not participate
Registered
Activity