
Алгоритмы *
Все об алгоритмах
Кластеризация текста в PySpark

Привет, Хабр!
На связи участники профессионального сообщества NTA Кухтенко Андрей, Кравец Максим и Сиянов Артем.
Любой текст – это не просто коллекция слов, он содержит мысли и намерения его автора. Но вручную невозможно обработать огромное количество текстовой информации и понять какие данные они могут содержать. В таком случае нам поможет кластеризация текста, которая позволит получить представление о данных.
«Перспективный вид общественного транспорта для больших и средних городов» — главная идея в кратком пересказе

(источник)
Зачем нужна еще одна статья
Недавно я опубликовал цикл статей “Дешевый как автобус, удобный как такси ...”:
Ссылка на Часть1: «Предварительный анализ» (ру / eng )
Ссылка на Часть2: «Эксперименты на торе» (ру / eng )
Cсылка на «Часть3: Практически значимые решения» (ру / eng )
посвященных тому, как сделать общественный транспорт больших городов полностью беспересадочным. Собственно, в последней из них я подробно описал схему движения микроавтобусов, которая позволяет им действовать почти как такси, но перевозить при этом по 5-10 пассажиров сразу. Такого рода транспорт позволил бы жителям города безо всяких пересадок доехать от любого перекрестка к любому, причем сделать за время, сравнимое с поездкой на личном автомобиле, и по цене, близкой к стоимости билета на обычный городской автобус. Обратная связь от читателей показала, что я выбрал крайне неудачный способ подачи информации и в результате мало до кого смог донести суть дела.
Должен признаться, что три предыдущие три статьи были написаны так, чтобы прочитавший их человек сумел применить полученные знания на практике или продолжить начатые мной исследования самому. К сожалению, мое желание «научить» вылилось в почти 100 страниц не самого простого математического текста, что явно много для читателей, которые хотели бы просто познакомиться с идеей. Здесь я попытаюсь исправить эту ошибку и рассказать о технологии автобусного такси хоть и поверхностно, но зато достаточно коротко и просто.
Контекст, награда, много рук. Многорукие бандиты как метод принятия решений

Всем привет! В предыдущих двух статьях мы подробно рассмотрели технические и методологические аспекты A/B-тестирования в Ozon. А сейчас время перейти к не менее интересным темам. Так как наша команда занимается не только A/B-тестами, но и в целом развитием методов принятия решений с помощью causal inference, стоит уделить внимание многоруким бандитам.
В этой статье мы рассмотрим методологию и границы применимости классических многоруких и контекстуальных бандитов, а также реализуем контекстного бандита, в основе которого будут сэмплирование Томпсона и нейронная сеть. Ну и, конечно, мы постараемся ответить на главный вопрос: могут ли многорукие бандиты заменить A/B-тесты?
Глубокое погружение в LSM-дерево

С увеличением спроса на операции, которые требуют больших объемов записи, традиционные базы данных, использующие B-дерево, становятся узким местом, поскольку обновление записей в b-дереве приводит к многочисленным беспорядочным операциям ввода-вывода (IO) и обновлению нескольких страниц на диске. B-дерево очень хорошо подходит для "тяжелых" операций чтения. Для операций с большими объемами записи у нас есть LSM-дерево.
Давайте попробуем понять, что такое LSM-дерево, как оно работает на самом деле.
Новейшая технология КТ — измерения под контролем реконструкции

Привет, Хабр! Каждому из нас хотя бы однажды было интересно заглянуть внутрь какого-либо объекта, не разрушая его, не так ли? И на сегодняшний день это представляется возможным благодаря одному из методов неразрушающего анализа внутренней структуры объекта - методу компьютерной томографии (КТ), подробнее о котором уже мы писали в статье. Первое, что приходит на ум, когда мы слышим термин КТ: “... что-то из медицины, какое-то исследование ...”. К удивлению многих, КТ не менее успешно применяется и в области промышленности, и в области научных исследований, и даже в области таможенного контроля.
Тут мы расскажем о нашей новой разработке, которая одновременно решает два из наиболее обсуждаемых аспектов в области КТ: как снизить дозу облучения и как сократить время томографического эксперимента? Первый имеет огромную важность для медицины, а второй – для индустрии. В нанотомографии, например, время эксперимента может достигать десятков часов. В статье мы покажем результаты, которых достигли в ходе экспериментов по исследованию разработанного нами подхода.
Идеальный препроцессинговый пайплайн для NLP-моделей

Если вы работали над проектом по реферированию текстов, то вы могли заметить сложность получения тех результатов, которые ожидалось получить. Если у вас имелись представления относительно того, как должен работать некий алгоритм, какие предложения он должен выделять при формировании рефератов, то этот алгоритм, чаще всего, выдавал результаты, весьма далёкие от ваших представлений. А ещё интереснее — ситуация с извлечением из текстов ключевых слов. Дело в том, что существует множество самых разных алгоритмов — от тех, что используют тематическое моделирование, до тех, где применяется векторизация данных и эмбеддинги. Все они работают очень хорошо. Но если дать одному из них абзац текста, то выданный им результат, опять же, будет далеко не самым правильным. А дело тут в том, что слова, которые встречаются в тексте чаще всего — это не всегда самые важные слова.
[По полочкам] Алгоритмы сортировок. Часть 1

Существует большое количество различных сортировок, которые применяются повсеместно в программах. Алгоритмы сортировок помогают сэкономить такие ресурсы, как время работы какой-либо части кода и, соответственно, время человека и память, используемую для выполнения вашей программы.
В этой статье рассматриваются следующие сортировки: сортировка обменами, сортировка выбором, сортировка пузырьком, сортировка вставками.
Принцип «Web of Trust» или как работает PGP

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

Книга «Рекурсивная книга о рекурсии» содержит примеры кода на языке Python и JavaScript, которые иллюстрируют основы рекурсии и проясняют фундаментальные принципы всех рекурсивных алгоритмов. Из книги вы узнаете о том, когда стоит использовать рекурсивные функции (и, главное, когда этого не нужно делать), как реализовывать классические рекурсивные алгоритмы, часто обсуждаемые на собеседованиях, а также о том, как рекурсивные методы помогают решать задачи, связанные с обходом дерева, комбинаторикой и другими сложными темами.
Единственным минимальным условием для изучения книги является наличие базового опыта программирования на языке Python или JavaScript, на которых написан код в листингах. Код в книге сведен к самой сути: если вы умеете вызывать и создавать функции, а также различать глобальные и локальные переменные — вы знаете достаточно, чтобы разобраться в этих примерах.
Как аналитику работать с задачами на интеграции — пошаговая инструкция

Каждый системный и бизнес-аналитик проходит "боевое крещение" в своей карьере, когда получает первую задачу на проектирование интеграций. Звучит серьезно и сложно. И это так, если ни разу не работал с таким видом задач.
С чего начать и куда смотреть при работе с задачами на интеграции? Давайте воспользуемся пошаговой инструкцией, чтобы понять план действий.
FTM, который написал MUSIC: точное определение местоположения Wi-Fi-устройств в условиях многолучевости. Часть 3/3

Статья «When FTM Discovered MUSIC: Accurate WiFi-based Ranging in the Presence of Multipath» опубликована в материалах Международной конференции IEEE по компьютерным коммуникациям, которая прошла в Торонто, Канада, с 6 по 9 июля 2020 г. (IEEE International Conference on Computer Communications, INFOCOM 2020). Идеи, изложенные в этой публикации, получили дальнейшее развитие, в частности, в статье «FSI: A FTM Calibration Method Using Wi-Fi Physical Layer Information» («FSI: метод калибровки FTM с использованием информации о физическом уровне Wi-Fi»), опубликованной во 2-й части материалов 17-й Международной конференции по беспроводным алгоритмам, системам и приложениям, которая прошла в Даляне, Китай, с 24 по 26 ноября 2022 г. (Wireless Algorithms, Systems, and Applications; WASA 2022).
Нейросеть, что это такое и как создать свою? Детальная инструкция

В поисковых системах ежедневно растет количество запросов, что такое нейросеть (далее — НС). Прежде всего это связано с растущим интересом к технологиям на базе искусственного интеллекта (далее — ИИ). Многие из нас даже не подозревают, что мы практически ежедневно используем модели глубокого обучения. Запросы Siri или взаимодействие с чат-ботами в мессенджерах — один из ярких примеров использования НС.
Мало кто из нас знает, что нейронки существуют уже 80 лет. Первая НС была представлена в 1943 году Уорреном Маккалоу и Уолтером Питтсом. В ее основе лежала пороговая логика для построения вычислительных моделей. Но с годами подходы к реализации нейронных сетей изменились, как и технологии, которые используются для их разработки. Углубимся в основы НС и разберемся с ключевыми вопросами.
Ближайшие события
Графы и программирование

Что положить в основу классификации графов, какие их признаки и свойства? Единственного правильного ответа на вопрос нет. Естественная классификация пока не открыта поэтому пользуемся искусственной, которая создается конкретным автором для решения конкретного круга задач. Полезными признаками часто оказываются такие как количество вершин, ребер, распределение степеней вершин и др. Важно, что удается разделить все множество графов на классы и дальше работать с ограниченным множеством, не рискуя потерять оптимальный объект.
Характеристика связности графов часто описывается достижимостью из некоторой вершины графа всех других, а очевидное средство такой достижимости – проложенный между парой вершин путь. Наличие множества путей, покрывающих вершины и\или ребра (дуги) графа, обеспечивает часто решение целевых задач таких, например, как минимизация контрольных точек или тестирование программ. Затрагиваются вопросы и цикломатической сложности графа.
Вопросы синтеза и исследования управляющих графов программ остаются пожалуй самым надежным средством отладки и совершенствования программ для ЭВМ. Третья статья цикла освещает кратко эту актуальную тему. Параллельно для внешних программ реализуется процедура выявления программных закладок и своевременно не удаленных контрольных точек.
Новый подход к вычислениям переосмысливает искусственный интеллект

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

Практически каждый день мы видим и слышим новости о том, что искусственный интеллект научился делать что-то новое либо начал применяться в новом амплуа. С одной стороны, это невероятно значимые события в научном и технологическом плане. С другой, многих это настораживает, а порой откровенно пугает. Тем не менее польза от ИИ превосходит любые связанные с ним страхи. Ученые из Венского технического университета (Австрия) разработали новый алгоритм, способный определять необходимое лечение кортикостероидами для пациентов с сепсисом. На чем основан алгоритм, как именно он работает, и лучше ли он человека в этой задаче? Ответы на эти вопросы мы найдем в докладе ученых.
Русские шашки: реализация минимакса с альфа-бета отсечением в Golang
В предыдущих записях блога мы обсудили, как эффективно генерировать ходы и представлять шашечную доску в Golang. Теперь мы углубимся в сердце нашей игры в шашки: ИИ, который принимает решения. ИИ будет использовать алгоритм Minimax с Alpha-Beta отсечением, популярный метод принятия решений в настольных играх.
Математическое моделирование в ORtools: задача планирования расписаний

Математическое моделирование, оптимизация, исследование операций, программирование в ограничениях … Продолжим двигаться в этом направлении.
Статья выполнена в рамках проекта “Make optimization simple”, который погружает в область бизнес задач с точки зрения математического моделирования и оптимизации. Посредством готовых библиотек демонстрируются примеры решения такого рода задач.
В этой статье разберем одну из таких постановок. На примере задачи планирования сменного графика сотрудников сети стоматологических клиник пройдем этапы: от формулирования бизнес ограничений до получения готового решения. Для моделирования и поиска решения будем использовать инструменты Python и библиотеку OR-Tools.
Несколько мыслей по подготовке к алгоритмической части собеседования

Всем привет! На связи снова Петр Коробейников, техлид сервисов DBaaS for Redis и RabbitMQ (релиз скоро) в #CloudMTS. В этой статье хочу поделиться с вами некоторым опытом подготовки к прохождению алгоритмических интервью. Конечно, статья не про хардкорные алгоритмы. Это, скорее, эскиз к роадмапу по подготовке. Тем не менее, я надеюсь, он будет полезен новичкам (и даже некоторым «старичкам»).
Готовьтесь
Это первый и самый важный совет. Если вы думаете, что, ворочая базами в десятки терабайт, вывозя 50-100k RPS к фронту, обрабатывая десятки миллионов сообщений в Kafka, вы сможете перенести свой опыт на решение алгоритмических задач, то могу вас немного расстроить.
Двоичное дерево без подготовки вы сможете покрутить в лучшем случае только на неприличном месте. Это чем-то похоже на экзамен по математике или физике: вы не сможете вывести формулу, если не знакомы с теорией и не решали задачи заранее. И вас будет ждать обидный провал.
Как журналист помогает выявлять серийных убийц с помощью алгоритма

17 октября 2014 года в мотеле маленького городка Хаммонд, Индиана, был обнаружен труп 19 летней Африки Харди. Вызванные на место полицейские почти сразу пришли к выводу, что это было убийство. На поиски убийцы ушло меньше суток — его обнаружили по записям камер наблюдения, установленных возле мотеля, а также по анализу телефонных разговоров жертвы (в номере был найден её телефон).
43-летний Даррен Ванн был арестован уже 18 октября и, как ни странно, совсем не был удивлён появлению полиции. Когда наручники защёлкнулись на его запястьях, Даррен повернулся и сказал полицейскому: «Наконец-то вы меня поймали». Так попался серийный убийца, жертвами которого стали ещё минимум шесть женщин. Но как полагали детективы, на самом деле счёт приближался к 20.
Примечательно в этой истории то, что полиция могла бы поймать Даррена Вана ещё за 4 года до этого. Но никто не хотел слушать Томаса Харгроува — бывшего журналиста, который помогает искать маньяков с помощью собственного алгоритма, о котором и пойдёт далее речь.
Вклад авторов
alizar 2996.5ZlodeiBaal 1564.0Fil 1460.0agorkov 1345.0haqreu 1277.0Leono 1086.0YUVladimir 1037.0valemak 1014.0mephistopheies 996.0Zalina 922.0