Привет Хабр! В этой статье мы рассмотрим некоторые полезные библиотеки Python для задач обработки данных, с которыми, возможно, вы еще не знакомы. Хотя для задач машинного обучения на ум приходят такие библиотеки, как pandas, numpy, scikit-learn, keras, tensorflow, matplotlib и т.д., но всегда полезно знать о других предложениях Python, особенно если это поможет улучшить ваши проекты.
Бизнес-анализ, управление проектами, разработка
Helena.4.0 – новый алгоритм для подбора гиперпараметров
С целью автоматизации процесса подбора гиперпараметров автором данной статьи разработан алгоритм Helena.4.0. Конечной целью является создание автоматической системы построения моделей (auto-ML), которая бы подбирала гиперпараметры за минимальное время.
С помощью алгоритма Helena.4.0 можно подбирать гиперпараметры для моделей градиентного бустинга, нейросетей, и более того – для генетических алгоритмов. Автор считает, что алгоритмы Helena могут заменить в генетических алгоритмах генеративную часть – т.е. уйти от биологических аналогий, заменив псевдобиологическую генерацию признаков путем процедур «скрещивания» и «мутаций» на генерацию с помощью указанных алгоритмов.
Для поиска максимума функции алгоритм Helena.4.0 использует только ее значения, и не используют первые и последующие производные. Таким образом, этот алгоритм не требуют ни дифференцируемости, ни непрерывности максимизируемой функции.
Сравнение алгоритма Helena.4.0 с наиболее популярными конкурентами (Optuna, HyperOpt, RandomSearch) показывает его высокую конкурентоспособность.
В отличие от других алгоритмов, не использующих градиент для максимизации функции, алгоритмов Helena.4.0 способен успешно противостоять комбинаторному взрыву. Т.е. алгоритм Helena.4.0 достаточно стабильно работает, несмотря на увеличение размерности пространства. Время, необходимое алгоритму Helena.4.0 для поиска максимума функции, оценивается как квадратичная функция от размерности пространства.
Ниже в статье приведено подробное описание алгоритма Helena.4.0 и результаты сравнительных тестов с алгоритмами-конкурентами.
Полный релиз бесплатного интерактивного 700-страничного учебника по тестированию
Гуд ньюз эвриван! Спустя полтора года работы восьми айтишников с суммарным опытом в IT 130 лет достигнут результат в виде учебника по тестированию, которого еще никто и никогда не делал.
Подслушиваем чат телеграма с помощью своего клиента
Захотелось как-то мне, чтобы сообщения одного из чатов телеграма сохранялись у меня на диске (не запуская обычного клиента). Не буду раскрывать своих побудительных мотивов, но возможность эта показалась мне нужной и полезной.
Для этого в телеграме есть боты. На Хабре есть несколько статей, посвященных ботам, например: "Чат-помощник на сайт".
Бот позволяет читать и посылать сообщения, для регистрации бота не нужен телефон и количество ботов может быть любым. Но название бота включает в себя слово "bot", что может вызвать у хозяина чата ненужные вопросы.
Но, как говорится, правильно поставленный вопрос — половина ответа.
Проработка нефункциональных требований? Нет, проработка аспектов обеспечения качества
При "проработке нефункциональных требований", ИТ аналитик сталкивается с проблемой: "надежность/доступность системы должна быть 99.5%", "время открытия страницы должно быть 3 секунды". А почему не 99.9% или 99.99999% или не 1 или 0.0001 секунды ? В реальности, должен быть достигнут баланс обеспечения качества между потерями бизнеса от необеспечения и расходами на обеспечение.
"Проработка нефункциональных требований" на практике является поиском обеспечения этого баланса, для чего нужно выяснить не только бизнес-потери от необеспечения, но тщательно спроектировать модели обеспечения качества (что часто является работой ИТ-аналитика) и оценить стоимость их создания и владения.
В статье описана методика проработки качества ИТ систем на примерах для аспектов надежности/доступности, производительности и времени отклика.
Эффективное изменение размера картинок при помощи ImageMagick
Веб таким образом работает отлично, но для доставки картинок разных размеров разным пользователям необходимо все эти картинки сначала создать.
Множество инструментов занимается изменением размера, но слишком часто они выдают большие файлы, аннулирующие выигрыш в быстродействии, который должен приходить вместе с отзывчивыми картинками. Давайте рассмотрим, как при помощи ImageMagick, инструмента командной строки, быстренько изменять размеры картинок, сохраняя превосходное качество и получая файлы небольших объёмов.
Большие картинки == большие проблемы
Средняя веб-страница весит 2 Мб, из них 2/3 – картинки. Миллионы людей ходят в интернет через 3G, или ещё хуже. 2Мб-сайты в этих случаях работают ужасно. Даже на быстром соединении такие сайты могут израсходовать лимиты трафика. Работа веб-дизайнеров и разработчиков – упростить и улучшить жизнь пользователя.
Очень маленькие сайты могут просто сохранить несколько вариантов всех картинок. Но что, если у вас их дофига? Например, в магазине может быть сотня тысяч картинок – не делать же их варианты вручную.
ImageMagick
Утилита командной строки с 25-летним стажем в то же время является редактором картинок с полным набором функций. В ней огромная куча функций, и среди них – быстрое и автоматическое изменение размера картинок. Но с настройками по умолчанию файлы часто получаются излишне большими – иногда по объёму больше оригинала, хотя в них и меньше пикселей. Сейчас я объясню, в чём проблема, и покажу, какие настройки необходимы для её решения.
Сети ZigBee. Зачем и почему?
Чего «репу» чешешь?
На золотую рыбку другая сеть нужна!
Собственно, я собирался продолжить серию топиков, посвященных работе RTLS – системы позиционирования в реальном времени. А именно, рассказать о беспроводной инфраструктуре системы, основанной на сетях ZigBee. Но вдруг с удивлением обнаружил, что на Хабрахабре нет публикаций, посвященных стандарту IEEE 802.15.4 и спецификации ZigBee. Есть лишь немногочисленные упоминания, связанные с тем или иным приложением. Попытаюсь по мерее сил заполнить этот пробел.
В последнее время все большее распространение и значение приобретают беспроводные сенсорные сети. Сети, которые по своему назначению, параметрам, спецификациям существенно отличаются от сетей связи – WiFi, GSM, LTE и т.п. Среди прочих, используемых в сенсорных сетях, выделяется спецификация ZigBee – наиболее продвинутая надстройка к стандарту IEEE 802.15.4
В этом году исполнилось 10 лет со времени основания ZigBee альянса, а в октябре исполняется 5 лет с момента утверждения действующей в настоящее время спецификации ZigBee Pro Feature Set 2006. Так что публикацию можно считать юбилейной.
Желающих познакомиться с самоорганизующейся самовосстанавливающейся и не требующей специального частотного разрешения сенсорной сетью прошу под кат.
Торговый робот с использованием нейросетей
Сразу скажу, что под искусственным интеллектом здесь будет пониматься использование обученных нейросетей, т.е. мы будем обучать нейросеть, потом торговый робот на основании обученной модели будет принимать решение о покупке актива и выполнять действие - покупать актив.
Эта тема последовательно раскрывается в этой статье, сразу приведу основные этапы по созданию такого торгового робота:
1) получение исторических данных по торговым инструментам;
2) подготовка датасета из этих исторических данных по определенной логике для нейросети;
3) обучение нейросети и выбор лучшей обученной модели по параметрам loss, accuracy, val_loss, val_accuracy;
4) проверка предсказаний сделанных нейросетью;
5) проверка подключения к API Финама;
6) определение торговой логики для открытия позиций;
7) запуск live стратегии с использованием выбранной лучшей модели обученной нейросети с нашей торговой логикой.
Препарирование нейронок, или TSNE и кластеризация на терабайтах данных
У вас продакшн нейронные сети, терабайты данных? Вам хочется понять, как работает нейронная сеть, но на таком объеме это сложно сделать? Сложно, но можно. Мы в NtechLab находимся именно в той ситуации, когда данных так много, что привычные инструменты интроспекции нейронных сетей становятся не информативны или вовсе не запускаются. У нас нет привычной разметки для обучения атрибутов. Но нам удалось вытащить из нейронной сети достаточно, чтобы классифицировать все имеющиеся данные на понятные человеку и учтенные нейронной сетью атрибуты. В этом посте мы расскажем, как это сделать.
Открытый курс машинного обучения. Тема 7. Обучение без учителя: PCA и кластеризация
Привет всем! Приглашаем изучить седьмую тему нашего открытого курса машинного обучения!
Данное занятие мы посвятим методам обучения без учителя (unsupervised learning), в частности методу главных компонент (PCA — principal component analysis) и кластеризации. Вы узнаете, зачем снижать размерность в данных, как это делать и какие есть способы группирования схожих наблюдений в данных.
UPD 01.2022: С февраля 2022 г. ML-курс ODS на русском возрождается под руководством Петра Ермакова couatl. Для русскоязычной аудитории это предпочтительный вариант (c этими статьями на Хабре – в подкрепление), англоговорящим рекомендуется mlcourse.ai в режиме самостоятельного прохождения.
Видеозапись лекции по мотивам этой статьи в рамках второго запуска открытого курса (сентябрь-ноябрь 2017).
Патч от Intel для ускорения алгоритмов библиотеки scikit-learn
Уведомление о возможности ускорить работу появляется при установке scikit-learn, поэтому пишу для тех, кто давно не переустанавливал эту библиотеку.
Подробное описание ускорителя – по ссылке https://intel.github.io/scikit-learn-intelex/
Ниже перечислил важные моменты и результаты испытаний по повышению производительности.
Установка
Устанавливать можно с помощью pip или conda. Важный момент: ускоритель пока не работает с версиями python 3.10 и новее, поэтому лучше ставить в окружение с версией 3.9. Например, так:
conda create -n env python=3.9 scikit-learn-intelex
Сама библиотека scikit-learn при этом устанавливается автоматически.
Работа с GPU поддерживается.
Использование
Предусмотрено несколько вариантов применения «заплатки». Например, при запуске своего приложения без изменения его кода:
python -m sklearnex my_application.py
Второй вариант – подключать ускоритель внутри приложения. В этом случае можно применять и отменять заплатку.
Важно загружать запускать ускоритель до загрузки самой библиотеки:
from sklearnex import patch_sklearn
patch_sklearn()
from sklearn import…
Если нужно отменить, то после отмены снова загружаем sklearn:
sklearnex.unpatch_sklearn()
from sklearn import …
Ограничения
У некоторых алгоритмов есть ограничения на используемые гиперпараметры, но, по-моему, это больших проблем создать не должно. например, у RandomForestClassifier в качестве критерия можно использовать только gini.
Полный список ограничений: https://intel.github.io/scikit-learn-intelex/algorithms.html
Тест на скорость
О модифицирующих командах
На волне нынешнего хайпа про инфраструктурные платформы каждый, наверное, слышал о книге Team Topologies, вышедшей года 3 назад.
Я ее сейчас пересказывать не буду, поэтому если какие-то термины или рассуждения ниже вам окажутся непонятными я рекомендую прочитать сперва ее, а затем вернуться к моему посту.
Из всех тем, рассматриваемых в Team Topologies наиболее непонятная тема — это Enabling team, “модифицирующая” или “преобразующая” команда. Я буду использовать слово Модифицирующая Команда, потому что такой же перевод используется в Platen.
Neural Network Optimization: океан в капле
Всех приветствую, меня зовут Антон Рябых, работаю в Doubletapp. Вместе с коллегой Данилом Гальпериным мы написали статью про важный этап в процессе обучения нейронных сетей и получения необходимых нам результатов — оптимизацию модели. Зачем нужно оптимизировать модель, если и так все работает? Но как только вы начнете разворачивать модель на устройстве, которое будет ее обрабатывать, перед вами встанет множество проблем.
Более крупные модели занимают больше места для хранения, что затрудняет их распространение. Более крупные модели требуют больше времени для работы и могут потребовать более дорогого оборудования. Это особенно важно, если вы создаете модель для приложения, работающего в реальном времени.
Оптимизация моделей направлена на уменьшение размера моделей при минимизации потерь в точности и производительности.
Методы оптимизации
• Pruning — устранение части параметров нейронной сети.
• Quantization — уменьшение точности обрабатываемых типов данных.
• Knowledge distillation — обновление топологии исходной модели до более эффективной, с уменьшенным количеством параметров и более быстрым выполнением.
• Weight clustering — сокращение количества уникальных параметров в весах модели.
• OpenVino, TensorRT — фреймворки, с помощью которых можно оптимизировать модели.
Python Дайджест: как актуализировать всю кодовую базу с помощью pre-commit
Продолжаю рассказывать, как open source проект Python Дайджест спустя 5 лет без обновлений удалось актуализировать по всему стэку технологий. В первой части рассказал, как удалось outdated проект с Python 3.4 обновить до Python 3.11 и Django 4.1.
В этой части расскажу, как удалось максимально дешево привести кодовую базу в актуальное состояние.
Как воспитать GPT модель в домашних условиях [LLaMA Update]
Мы решили проверить технологию, на которой основан ChatGPT, посмотреть актуальное состояние open-source GPT-like моделей и ответить на вопрос — можно ли обучить GPT-like модель в домашних условиях?
Для эксперимента выбрали LLaMA и GPT-J и не самый мощный ПК с видеокартой Nvidia GTX 1080TI с 11 GB VRAM. Оказалось, что этого достаточно не только, чтобы загрузить модель, но и дообучить ее (fine-tune). Рассказываем — как мы это сделали.
Описательная статистика перформанс-распределений
Нужна ли разработчику математика? Если анализировать замеры производительности, то матстатистика понадобится. Но оказывается, о ней полезно знать не совсем то, что в учебниках. А что тогда?
Андрей Акиньшин @DreamWalker поговорил об этом в докладе на нашей конференции Heisenbug. И теперь, пока мы готовим следующий Heisenbug (где тоже будут доклады о производительности), решили опубликовать текстовую версию его выступления (а для тех, кому удобнее другие форматы, прикрепляем видеозапись и слайды). Предупреждаем: много букв, цифр, графиков и формул!
Центры компетенций. Что может пойти не так?
Матричные структуры управления известны с 1960 годов. Тогда для полета в космос потребовалось объединить усилия предприятий из разных отраслей, сохраняя единую точку ответственности за проект.
Со временем концепция матричного управления позволила управлять не только проектами, но и продуктами, и была взята на вооружение как ИТ‑организациями, так и организациями, успех которых в высокой степени зависит от ИТ.
Матричные организации состоят из кросс‑функциональных команд проектов (или команд продуктов или команд потоков ценности), в которые входят специалисты самых разных профилей: продуктологов, дизайнеров, маркетологов, архитекторов, аналитиков, проектировщиков, разработчиков, тестировщиков, специалистов по внедрению и развертыванию, лояльных клиентов, сотрудников сопровождения и мониторинга, продавцов, специалистов контакт‑центров, аккаунт‑менеджеров, юристов, специалистов по информационной безопасности для того, чтобы организация быстрее адаптировалась к изменениям.
Центрами компетенций в данной структуре принято называть ее функциональную часть — например, центр компетенций архитектуры, центр компетенций маркетинга или центр компетенций по управлению проектами.
В теории каждый из центров компетенций поставляет в кросс‑функциональные команды правильных сотрудников, после чего кросс‑функциональные команды самостоятельно добиваются результата.
На практике эта идея часто не взлетает и все идет совсем не так, как хотелось бы. Как именно и почему? Обсудим в статье.
Disclaimer: данная статья является собирательным образом тех проблем, которые автор наблюдал в ходе работы с различными компаниями огранизованными по матричному принципу за 25 лет работы на рынке и не относится к какой‑либо конкретной компании в частности. Проблема помещалась в список если автор наблюдал ее лично или обсуждал в профессиональном сообществе как минимум 3 раза по отношению к разным организациям.
Сколько получают российские разработчики: наше исследование
У нас тут накопилось очень много цифр о состоянии российского IT, и мы решили их как-то оформить. Получилось 27 таблиц, но надеюсь, каждый сможет найти ту, которая ему релевантна.
Будет полезно тем, кто хочет быть в курсе рынка. Или иметь лишний повод обратиться к своему работодателю за повышением. Мы знаем, что подобные исследования проводит сам Хабр, но вряд ли дополнительная информация из других источников кому-то помешает.
Эта статья — с цифрами для разработчиков. Как до, так и после 21 сентября. Исследование по HR, менеджерам и дизайнерам выйдет позже, если этот пост вам понравится.
Как улучшить ваши A/B-тесты: лайфхаки аналитиков Авито. Часть 1
Всем привет! Я Дмитрий Лунин, работаю аналитиком в команде ценообразования Авито. Наш юнит отвечает за все платные услуги площадки. Наша основная задача — сделать цены на них оптимальными.
Мы не только пытаемся максимизировать выручку Авито, но и думаем про счастье пользователей. Если установить слишком большие цены, то пользователи возмутятся и начнут уходить с площадки, а если сделать цены слишком маленькими, то мы недополучим часть оптимальной выручки. Низкие цены также увеличивают количество «спамовых» объявлений, которые портят поисковую выдачу пользователям. Поэтому нам очень важно уметь принимать математически обоснованные решения — любая наша ошибка напрямую отразится на выручке и имидже компании.
Одним из инструментов для решения наших задач является A/B-тестирование.
Авторская методика количественной оценки сплоченности рабочих групп
Как количественно оценить степень сплоченности рабочей группы и выразить это в виде измеримого показателя?
Как сравнивать этот показатель с другими рабочими группами (В идеале — иметь возможность отсортировать рабочие группы по степени сплоченности)?
Как заранее спрогнозировать сплоченность для вновь создаваемых рабочих групп?
Как количественно оценить степень вовлеченности каждого сотрудника?
Как делать все это в любой момент времени дешево и быстро (т. е. без проведения специальных опросов, тестов, наблюдения, анкетирования, интервьюирования и т. п.)?
Информация
- В рейтинге
- 4 642-й
- Откуда
- Москва, Москва и Московская обл., Россия
- Зарегистрирован
- Активность