Обновить
215.6

Алгоритмы *

Все об алгоритмах

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

Как нужно обрабатывать изображения, чтобы не расстраивать математику?

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

Мы часто расстраиваем математику, выполняя привычные операции с изображениями — например, когда мы масштабируем их или применяем к ним фильтры. Одним словом — тогда, когда мы производим арифметические операции (+,-,*,/) над значениями цветовых каналов. Обычно это не заметно, но иногда это может доставить неприятности.

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

Читать далее

Как ЯRUS ежедневно собирает более 56 000 новостей из источников и выбирает из этого самое интересное

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

Сегодня уже мало кто заходит на один единственный сайт, чтобы почитать новости. Медиаполе современного человека соткано из множества инфопотоков и ресурсов, и для многих вопрос информационной гигиены стоит очень остро. Где и как организовать удобную новостную ленту, которая бы имела максимально широкий охват источников, но при этом выдавала бы из них только интересные конкретному пользователю материалы? Именно эту проблему решает раздел новостей в приложении ЯRUS, о котором пойдет речь ниже. 

Ежедневно агрегатор мониторит около 10 тысяч новостных ресурсов и собирает не менее 56 000 новостей для парсинга. Со стороннего ресурса берутся заголовок, текст и изображения, поэтому у пользователя приложения есть возможность прочесть новость, не покидая его. При этом в ленте отображаются не только заголовки, но и лид, что дает возможность быстро оценить, стоит ли открыть новость и продолжить чтение или же листать дальше.

Читать далее

Самопаркующаяся тачка в 500 строк кода

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

В этой статье мы "научим" автомобиль выполнять самостоятельную парковку с помощью генетического алгоритма.

В 1-м поколении автомобили будут иметь случайный геном и будут вести себя хаотично.

К ≈40-му поколению автомобили понемногу начнут учиться парковке и будут все ближе и ближе подбираться к парковочному месту

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

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

Читать далее

Лингвистика, математика и колориметрия: коммуникативные потребности в цветах

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


В отличие от многих существ, обитающих по соседству с нами на планете Земля, наш вид богат национальностями, культурами, языками и обычаями. Несмотря на принадлежность к одному виду, люди из разных уголков планеты обладают множеством отличий, одним из которых является язык. Внутри любого вида существует потребность обмениваться информацией. Методов реализации этой потребности достаточно много: запахи, цвета, движения, звуки и т.д. Человек больше всего полагается на вербальный метод коммуникации, в результате чего за долгие годы эволюции и развития нашей цивилизации образовалось множество языковых групп и отдельных языков. Другими словами, человек обладает очень разнообразным ассортиментом вербальных инструментов, которые, по идее, должны в равной степени точно описывать те или иные предметы и события. Однако структура языка может сильно отличаться между языковыми группами. Ученые из Пенсильванского университета (США) выяснили, что словесное описание индивидуальных цветов сильно отличается между разными нациями (т.е. между языками), но вот группировка цветов по категориям демонстрирует общие черты. Какую роль в этом играют коммуникативные потребности, как фрукты повлияли на словесное описание цветов, чем разные народы отличаются, и что между ними общего, когда речь идет о цветах? Об этом мы узнаем из доклада ученых. Поехали.
Читать дальше →

Геоанализ этажности Санкт-Петербурга алгоритмом KDE, или Как меняется облик города

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

Всем привет, меня зовут Максим Шаланкин, в Ситимобил я занимаюсь машинным обучением. Мы используем множество крутых алгоритмов для оптимизации наших сервисов и улучшения бизнес-процессов. В этой публикации я расскажу, как использовать в геоаналитике алгоритм ядерной оценки плотности (Kernel Density Estimation) и строить полигоны на карте, основываясь на распределении географических данных.

Врууум

Распознавание печатей: нейронные сети против SIFT, и причем тут Госзакупки

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

Привет, Хабр! Сегодня мы расскажем, как делали в нашей группе анализа данных прототип для уже успешно работающего внутри DLP-системы Solar Dozor движка детектирования графических объектов на изображениях. Покажем это на примере одного его представителя - оттисков печатей на изображениях документов. Вспомним о противоречивых требованиях к решению задачи и очертим бизнес-метрики, определяющие успешное решение. В процессе подберем фильтр наличия печатей из арсенала компьютерного зрения и сравним подходы к детектированию объектов - популярных движках CNN, SIFT и их вариациях. А также поведаем об интересных находках в части создания датасетов. Здесь, как оказалось, немало места для творчества и экспериментов. В общем, запасайтесь попкорном.

Читать дальше →

Модельно-ориентированное проектирование на службе у специалиста по электроприводу. Часть 2. Эксперименты

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

В предыдущей статье я рассказал, как создается модель векторного управления СДПМ, и определил параметры двигателя по экспериментальным данным.

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

Читать далее

Тесты своей реализации ассоциативных массивов vs хеш-таблица

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

Приветствую, читатель. Я являюсь автором языка программирования Shar. В стандартном модуле Shar есть несколько реализаций ассоциативных массивов и при написании данного модуля я подумал: "А какую структуру данных для реализации ассоциативных массивов мне выбрать?". Являясь любителем слушать различные конференции по программированию, я периодически натыкаюсь на выступления людей, принимающих участие в разработке популярных языков программирования. На основании таких выступлений, у меня сложилось субъективное восприятие того, что в большинстве случаев для реализации ассоциативных массивов используется хеш-таблица. Хеш таблица действительно является очень хорошим выбором, но тогда почему я начал задумываться о выборе подходящей структуры данных? А причина в том, что ...

Читать далее

Алгоритмы поиска схожих объектов в рекомендательных системах

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

«Досмотрю вот это видео на YouTube и пойду спать! Ой, в рекомендациях еще одно интересное. Сон, прости…». «Закажу в IKEA только стулья. Ах, сайт показал мне еще посуду, постельное белье и новую кухню в сборке. Когда там следующая зарплата?». «Бесконечный плейлист любимых музыкальных жанров в СберЗвуке заряжает меня позитивом! Как специалистам удается создавать выборку специально для меня?».

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

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

TL:DR

Статья описывает основные подходы к поиску схожих объектов в наборе данных и содержит вводный курс в мир рекомендательных систем. Представлены варианты подготовки данных. Информация будет полезна аналитикам, которые изучают python, и начинающим data-scientist’ам. Мы не будем останавливаться на подробном описании каждого метода и разбирать отличия контентных и коллаборативных рекомендательных систем. Базовая теоретических часть находится здесьздесь и здесь. Нас интересует применение алгоритмов матчинга (matching, англ. Поиск схожих объектов) в повседневных задачах. К статье прилагается ноутбук на платформе Kaggle с основным кодом, который рекомендуем запускать одновременно с изучением текста.

Читать далее

Как финансировать стартап на этапе MVP? Краткое руководство по первичному финансированию

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

Как финансировать стартап на этапе MVP? Краткое руководство по первичному финансированию

Деньги на собственный бизнес — самая заветная мечта начинающего предпринимателя, не так ли?

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

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

Читать далее

Впечатления от прохождения конкурса Яндекс «One Day Offer Frontend»

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

Делюсь впечатлениями как я поучаствовал в конкурсе Яндекс "One Day Offer Frontend". Суть в том, что надо пройти онлайн соревнование - решить за 3часа 5 задач, можно частично. Задачи на алгоритмы и верстку на 5, 45, 70, 90 и 90 баллов. Надо набрать >=100 баллов и тогда будет уже онлайн собес с людьми 25 сентября и оффер в одну из команд Я.Такси, Маркет или Поиск если все будет ОК.

Читать далее

Лунный звездный месяц (27.32 дней), лунный месяц по фазам Луны (29.5306 дней) в радиоактивном распаде

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

Эта статья продолжение серии публикаций по эффекту Шноля - космо-физических циклов проявляющихся в случайных процессах (прежде всего в радиоактивном распаде). Здесь приведенный алгоритм используется и в данной статье. Изменение косметические (графики вероятностей не двигаются до более полного совпадения по дистанции Эвклида). Данные предоставлены пользователем - 48 дней с 19 декабря 2012 года по 6 февраля 2013 года распад стронция-90, измерение дозиметром ДП-5В.

Читать далее

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

Involution: Attention is not what you need, или Как скрестить Self-Attention из NLP и Convolution в задачах CV

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

Если говорить про Self-Attention в картиночных моделях, то тут есть 2 варианта. Олдскульный  “давайте просто перевзвесим фичи” в разных вариантах: поканально, пространственно, в некоторой проекции. И новомодный "давайте обучим трансформер" с представлением патчей как визуальных слов. Первый подход рабочий, но не дает значительного улучшения в плане метрик. Второй подход слишком вычислительно сложный и часто заточен на размер картинок.

Подход коллег из ByteDance AI Lab и университета Пекина сильно отличается от этих крайностей и является переосмыслением Attention-механизма трансформеров в работе свёрток.

Читать подробнее об Involution

Как я писал Биномиальную кучу

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

Я сейчас изучаю продвинутые структуры данных и в один прекрасный вечер я решил собирать алгоритмы и структуры данных к себе на гитхаб (и до сих пор это делаю). Захотел я сделать так, чтобы сделать всё шаблонным, если что-то мне резко понадобится, то я смог за считанные секунды добавить себе шаблонный класс структуры данных или шаблонную функцию алгоритма и использовать. Звучит замечательно, особенно на контесты с codeforces.

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

Читать далее

Рейкастинг в игровых 2D-движках

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

Введение


На мой взгляд, рейкастинг — великолепная концепция, понять которую не так сложно, но качественных ресурсов по ней очень мало. Я расскажу о математике, лежащей в её основе, чтобы вы при желании с лёгкостью могли реализовать её в своих будущих проектах. Постараюсь сделать объяснение как можно более понятным, рассказать о всех тонкостях и проблемах, с которыми вы можете столкнуться. Также мы поговорим об оптимизации и о том, как сильно вам могут помочь пространственные хэш-карты. Ещё я напишу простые интерактивные примеры, с которыми вы сможете поэкспериментировать. Учтите, что демо написаны максимально простым образом, не ожидайте увидеть в них код уровня энтерпрайза — мы изучаем саму концепцию, а не реализацию.
Читать дальше →

Делаем быстрый поиск по неточному совпадению среди 100 миллионов товаров

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

Это четвертая статья с этой картинкой для привлечения внимания. Она каким-то удивительным образом опять подошла по смыслу.

Мы делаем проект по управлению большими каталогами товаров, и нам потребовалось быстро искать товары по неточному совпадению.

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

Исходная ситуация такова: таблица в MS SQL базе, 50 миллионов записей, записи добавляются постоянно, удаляются или обновляются крайне редко. Средняя длина названия товара составляет 64 символа. Поиск по неточному совпадению работает, для этого используются триграммы и полнотекстовый индекс по столбцу с триграммами. Ранжирование результатов осуществляется при помощи функции CONTAINSTABLE. Результаты получаются релевантные, но поиск работает откровенно медленно, 2-5 секунд на запрос, в зависимости от длины запроса. Мы хотим ускорить его раз в 20, а лучше в 100 подручными средствами.

Читать далее

Кластеризуем миллионы планов PostgreSQL

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

Как найти самые "горячие" запросы на вашем PostgreSQL-сервере? Поискать их в логе и проанализировать план или воспользоваться расширением pg_stat_statements.

А если в лог попадает миллион запросов за сутки?.. Тогда любое значение лимита pg_stat_statements.max окажется недостаточно велико, чтобы собрать правдивую статистику. Так давайте собирать эту статистику прямо с планов!

Но для некоторых сервисов СБИС нам в "Тензоре" производительность запросов к базе настолько важна, что auto_explain.log_min_duration приходится выставлять в единицы миллисекунд - и вот они, миллионы планов... Как не потеряться в них?

Читать далее

Как работает распознавание лиц? Разбор

Время на прочтение4 мин
Количество просмотров38K
Среднестатистический человек может идентифицировать знакомое лицо в толпе с точностью 97,53%. Вы скажете, это немало и будете правы. Но это ничто по сравнению с современными алгоритмами, которые добились точности 99,8% еще в 2014 году. А в последние несколько лет они достигли практически совершенства! Современный алгоритм, использующийся в камерах видеонаблюдения в Москве способен обрабатывать 1 миллиард изображений менее чем за полсекунды с точностью близкой к 100%.


Этот алгоритм насколько крут, что уже в этом году в Московском Метро планируют ввести систему прохода по лицу — FacePay. При этом нам обещают, что система будет работать даже если человек в медицинской маске.


Как вы понимаете, жизнь уже не будет прежней. Поэтому давайте разберемся:

  • Как работают алгоритмы распознавания лиц?
  • Страшны ли эти алгоритмы на самом деле и где их применяют во благо?
  • А также поговорим какого будущего нам ждать.
Читать дальше →

Как назначить самого подходящего курьера: наша скоринговая модель

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


Всем привет! Меня зовут Михаил Моловцев, и я алкоголик операционный аналитик в Delivery Club. Наша команда помогает бизнесу и разработке в процессах и исследованиях, связанных с курьерами и доставкой заказов. Я занимаюсь исследованиями систем назначений заказов, прогнозированием времени доставки и курьерскими скорингами. Расскажу о том, как мы обновили подход к скорингу курьеров для системы назначения заказов.

Немного о скоринге


Представим, что у вас есть некий сервис и клиентская аудитория. У клиентов много различных характеристик, которые важны для сервиса: возраст, длительность пользования сервисом, поведенческие особенности при пользовании и т.д. Характеристик может быть сколь угодно много, и их набор зависит от предметной области.

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

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