Как стать автором
Обновить
1
0

Пользователь

Отправить сообщение

А/Б тестирование: множественная проверка гипотез

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

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

Читать далее
Всего голосов 2: ↑2 и ↓0+2
Комментарии2

База: айсберг A/B-тестов

Уровень сложностиСредний
Время на прочтение11 мин
Количество просмотров10K

Если вы по кусочкам и фрагментарно изучаете разные аспекты и тонкости A/B-тестирования, но большое множество концепций и идей не ложатся в единую систему, то это статья для вас.

Предлагаю разобрать структуру A/B-тестов сверху вниз. Пройдем по основным этапам от наблюдаемой разницы в целевой метрике до матрицы ошибок. Формализуем, систематизируем и идейно свяжем те концепции, которые стоят за экспериментами. Постараемся сформировать цельное представление об этой процедуре, обозначим, что эксперименты делают, чего не делают, как делают, в каком представлении работают с данными и метриками.

Читать далее
Всего голосов 13: ↑12 и ↓1+11
Комментарии4

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

Уровень сложностиСредний
Время на прочтение15 мин
Количество просмотров11K

Одной из самых распространённых задач аналитики является формирование суждений о большой совокупности (например, о миллионах пользователей приложения), опираясь на данные лишь небольшой части этой совокупности - выборке. Можно ли сделать вывод о миллионной аудитории крупного мобильного приложения, собрав данные 100 пользователей? Или стоит собрать данные о 1000 пользователях? Какую вероятность ошибиться при анализе мы можем допустить: 5% или 1%? Относятся ли две выборки к одной совокупности, или между ними есть ощутимая значимая разница и они относятся к разным совокупностям? Точность прогноза и вероятность ошибки при ответе на эти и другие вопросы поддаются вполне конкретным расчётам и могут корректироваться в зависимости от потребностей продукта и бизнеса на этапе планирования и подготовки эксперимента. Рассмотрим подробнее, как параметры эксперимента и статистические критерии оказывают влияние на результаты анализа и выводы обо всей совокупности, а для этого смоделируем тысячу A/A, A/B и A/B/C/D тестов.

Читать далее
Всего голосов 22: ↑22 и ↓0+25
Комментарии13

Статистические тесты и проверка гипотез в R

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

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

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

Читать далее
Всего голосов 11: ↑11 и ↓0+11
Комментарии2

Как выбрать правильный стат тест для разных метрик

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров6.2K

Привет, Хабр!

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

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

Читать далее
Всего голосов 7: ↑6 и ↓1+7
Комментарии3

Как интерпретировать предсказания моделей в SHAP

Время на прочтение5 мин
Количество просмотров45K
Одной из важнейших задач в сфере data science является не только построение модели, способной делать качественные предсказания, но и умение интерпретировать такие предсказания.

Если мы не просто знаем, что клиент склонен купить товар, но так же понимаем, что влияет на его покупку, мы сможем в будущем выстраивать стратегию компанию, направленную на повышение эффективности продаж.
Читать дальше →
Всего голосов 9: ↑9 и ↓0+9
Комментарии0

Рашид. Создаем нейронную сеть (конспект стоящей книги)

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров7.2K

Делюсь своим конспектом одной из лучших книг для того, чтобы разобраться в принципах работы нейросетей: от понятно объяснённой математики до пошаговой практики разработки собственной сети на Python.

Читать далее
Всего голосов 6: ↑3 и ↓3+1
Комментарии0

Где посмотреть ретро-девайсы в Москве

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров2.5K

Ниже – список музеев и текущих выставок в Москве, где можно посмотреть на старые компьютеры, консоли и игровые автоматы. Что-то похожее последний раз составлялось 3-5 лет назад. C того времени многое изменилось. Кроме того, мы с соратниками обошли все эти площадки. Так что новый список может быть полезным.

Читать далее
Всего голосов 19: ↑19 и ↓0+19
Комментарии9

Теория игр за 15 минут

Уровень сложностиПростой
Время на прочтение15 мин
Количество просмотров63K

Многие из вас, я уверен, слышали о теории игр в какой-то момент своей жизни. Если вы хотите выглядеть умным и произвести впечатление на свою девушку — просто упомяните «игру с нулевой суммой» или «эволюционную стратегию», и ваши шансы отвести её домой сегодня вечером только что подскочили на 50%. Или вы можете использовать теорию игр, чтобы принимать решения в инвестировании своих денег (чтобы их полностью потерять и разориться) или, например решая, на какой девушке жениться (что также очень вероятно вас разорит). Как видите, это очень полезная теория.

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

Читать далее
Всего голосов 92: ↑89 и ↓3+103
Комментарии30

Векторизация изображений. Как создать алгоритм поиска похожих изображений на Python

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров13K

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

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

В мире есть много вещей, которые интуитивно понятны и очевидны для нас. Например, если перед нами два похожих цветка, мы можем определить их принадлежность одному виду, даже не зная названий этих растений. Этот навык позволяет нам распознавать объекты и определять их в группы. Разумеется, подобные алгоритмы уже давно существуют в современных поисковиках Google, Яндекс и прочих. Но что, если вы проектируете обособленную систему с собственной базой изображений одной или нескольких конкретных тематик и вам необходим функционал поиска похожих изображений?

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

Читать далее
Всего голосов 10: ↑10 и ↓0+10
Комментарии5

PyTest

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

Предисловие


По историческому призванию я SQL-щик. Однако судьба занесла меня на BigData и после этого понесла кривая — я освоил и Java, и Python, и функциональное программирование (изучение Scala стоит в списке). Собственно на одном из кусков проекта встала необходимость тестирования кода на Python. Ребята из QA посоветовали для этих целей PyTest, но даже они затруднились толком ответить чем этот зверь хорош. К сожалению, в русскоязычном сегменте информации по данному вопросу не так уж и много: как это используют в Yandex да и все по-хорошему. При этом описанное в этой статье выглядит достаточно сложно для человека начинающего путешествие по этой стезе. Не говоря уже об официальной документации — она приобрела для меня смысл лишь после того, как я разобрался с самим модулем по другим источникам. Не спорю, там написаны интересные вещи, но, к сожалению, совсем не для старта.

Юнит-тестирование Python


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

Вводная по необходимым знаниям


На описываемый момент знания Python у меня были достаточно поверхностны — я писал кое-какие несложные модули и знал стандартные вещи. Но при столкновении с PyTest мне пришлось пополнять багаж знаний декораторами тут и тут и конструкцией yield.

Преимущества и недостатки PyTest


1) Независимость от API (no boilerplate). Как код выглядит в том же unittest:

Код
import unittest

class TestUtilDate(unittest.TestCase):
    def setUp(self):
        #init_something()
        pass
        
    def tearDown(self):
        #teardown_something()
        pass
        
    def test_upper(self):
        self.assertEqual('foo'.upper(), 'FOO')
        
    def test_isupper(self):
        self.assertTrue('FOO'.isupper())
        
    def test_failed_upper(self):
        self.assertEqual('foo'.upper(), 'FOo')
        
if __name__ == '__main__':
    suite = unittest.TestLoader().loadTestsFromTestCase(TestUtilDate)
    unittest.TextTestRunner(verbosity=2).run(suite)


То же самое в PyTest:

Код
import pytest

def setup_module(module):
    #init_something()
    pass

def teardown_module(module):
    #teardown_something()
    pass

def test_upper():
    assert 'foo'.upper() == 'FOO'
    
def test_isupper():
    assert 'FOO'.isupper()
    
def test_failed_upper():
    assert 'foo'.upper() == 'FOo'


2) Подробный отчет. В том числе выгрузка в JUnitXML (для интеграции с Jenkins). Сам вид отчета может изменяться (включая цвета) дополнительными модулями (о них будет позднее отдельно). Ну и вообще цветной отчет в консоли выглядит удобнее — красные FAILED видны сразу.

image

3) Удобный assert (стандартный из Python). Не приходится держать в голове всю кучу различных assert'ов.

4) Динамические фикстуры всех уровней, которые могут вызываться как автоматически, так и для конкретных тестов.

5) Дополнительные возможности фикстур (возвращаемое значение, финализаторы, область видимости, объект request, автоиспользование, вложенные фикстуры)

6) Параметризация тестов, то есть запуск одного и того же теста с разными наборами параметров. Вообще это относится к пункту 5 «Дополнительные возможности фикстур», но возможность настолько хороша, что достойна отдельного пункта.

7) Метки (marks), позволяющие пропустить любой тест, пометить тест, как падающий (и это его ожидаемое поведение, что полезно при разработке) или просто именовать набор тестов, чтобы можно было запускать только его по имени.

8) Плагины. Данный модуль имеет достаточно большой список дополнительных модулей, которые можно установить отдельно.

9) Возможность запуска тестов написанных на unittest и nose, то есть полная обратная совместимость с ними.

Про недостатки, пусть их и не много, могу сказать следующее:

1) Отсутствие дополнительного уровня вложенности: Для модулей, классов, методов, функций в тестах есть соответствующий уровень. Но логика требует наличие дополнительного уровня testcase, когда та же одна функция может иметь несколько testcase'ов (например, проверка возращаемых значений и ошибок). Это частично компенсируется дополнительным модулем (плагином) pytest-describe, но там встает проблема отсутствия соответствующего уровня фикстуры (scope = “describe”). С этим конечно можно жить, но в некоторых ситуациях может нарушать главный принцип PyTest — «все для простоты и удобства».

2) Необходимость отдельной установки модуля, в том числе в продакшене. Все-таки unittest и doctest входят в базовый инструментарий Python и не требуют дополнительных телодвижений.

3) Для использования PyTest требуется немного больше знаний Python, чем для того же unittest (см. «Вводная по необходимым знаниям»).

Подробное описание модуля и его возможностей под катом.
Читать дальше →
Всего голосов 26: ↑23 и ↓3+20
Комментарии11

Полное практическое руководство по Docker: с нуля до кластера на AWS

Время на прочтение39 мин
Количество просмотров1.7M



Содержание



Вопросы и ответы


Что такое Докер?


Определение Докера в Википедии звучит так:


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



Ого! Как много информации.

Читать дальше →
Всего голосов 125: ↑124 и ↓1+123
Комментарии44

Делаем обучающие датасеты для больших языковых моделей

Уровень сложностиПростой
Время на прочтение12 мин
Количество просмотров8.4K

Дообучение больших языковых моделей на кастомных датасетах делает модели гораздо сообразительнее. Есть история успеха датасета alpaca. Он творит чудеса с моделями, которые сначала если и умели что-то делать, то делали это очень плохо. Мы решили понять, как это делается, а главное - какие проблемы есть на этом пути и могут ли новички вроде нас разобраться в этом. История взлетов и падений - под катом.

Читать далее
Всего голосов 13: ↑13 и ↓0+13
Комментарии0

Как добыть свечи по всем акциям Мосбиржи

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров4.9K

В конце прошлого года я писал о том, как с помощью Algopack можно вытащить справочную информацию о всех акциях Мосбиржи. Приводил пример моего первого скрипта на python, использующего библиотеку moexalgo для Algopack и обозначил планы дописать его с целью добычи всех исторических данных.

Читать далее
Всего голосов 6: ↑4 и ↓2+5
Комментарии1

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

Уровень сложностиСредний
Время на прочтение11 мин
Количество просмотров27K

Вам когда-нибудь приходилось задаваться вопросом, как работает компилятор, но так руки и не дошли разобраться? Тогда этот текст для вас. Мне тоже не доводилось заглядывать под капот, но тут так случилось, что мне нужно прочитать курс лекций о компиляторах местным третьекурсникам. Кто встречался с некомпетентными преподавателями? Здравствуйте, это я :)

Итак, чтобы самому разобраться в теме, я собираюсь написать транслятор с эзотерического языка программирования wend (сокращение от week-end), который я только что сам придумал, в обычный ассемблер. Задача уложиться в несколько сотен строк питоновского кода. Основной репозиторий живёт на гитхабе (не забудьте заглянуть в мой профиль и посмотреть другие tiny* репозитории).

Читать далее
Всего голосов 74: ↑74 и ↓0+74
Комментарии28

Юнит-тесты на Python: Быстрый старт

Время на прочтение4 мин
Количество просмотров119K
Перевод статьи подготовлен специально для студентов курса «Python QA Engineer».




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

В этой статье я продемонстрирую основную идею юнит-тестирования на одном классе. На практике вам придется писать множество тестовых случаев, добавлять их в тестовый набор и запускать все вместе. Управление тест-кейсами мы рассмотрим в следующей статье.
Читать дальше →
Всего голосов 11: ↑9 и ↓2+10
Комментарии5

Python Testing с pytest. Начало работы с pytest, Глава 1

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

Вернуться Дальше


Я обнаружил, что Python Testing с pytest является чрезвычайно полезным вводным руководством к среде тестирования pytest. Это уже приносит мне дивиденды в моей компании.

Chris Shaver
VP of Product, Uprising Technology


Читать дальше →
Всего голосов 31: ↑22 и ↓9+13
Комментарии2

Многопоточность в Python: очевидное и невероятное

Уровень сложностиСредний
Время на прочтение4 мин
Количество просмотров36K

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

Изначально я планировал что это будет простая и короткая заметка, но пока готовил и тестировал код нашел интересный неочевидный момент связанных с внутренностями CPython, так что не спешите закрывать вкладку, даже если вы уверены что вы знаете о потоках в Python всё :)

Читать далее
Всего голосов 37: ↑34 и ↓3+38
Комментарии16

Гайд: как создавать собственные активности для RPA-платформ

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

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

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

Статья написана при поддержке технического эксперта UiPath: Валентина Драздова.

Читать далее
Всего голосов 7: ↑7 и ↓0+7
Комментарии0

Алгоритмы в помощь: как делегировать рутину системам ИИ

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

Привет, Хабр! Я Виктор Соловьев, бизнес-аналитик продукта «Цифровой вагон» в Первой грузовой компании. Не так давно мы в блоге обсуждали, почему страх, что «ИИ отнимет у вас работу» — в первую очередь поп-культурный феномен. А сегодня я хочу перевести эту тему в практическую плоскость и рассказать о том, чем ИИ-системы, наоборот, помогут и какие рутинные задачи можно уже сейчас делегировать алгоритмам. Я отобрал несколько ИИ-инструментов (как популярных, так и не очень широко известных) и сгруппировал их по типам задач.

Читать далее
Всего голосов 7: ↑6 и ↓1+7
Комментарии5
1

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность

Специализация

Backend Developer, Application Developer
Intern
OOP
Python
Git