Data&Knowledge
130 subscribers
25 photos
21 files
160 links
Работаем с данными
Download Telegram
Я всё дальше погружаюсь в нору t-test. Нашел интересное видео 13-летней давности: https://www.youtube.com/watch?v=3OrCvZLMEek

Человек коротко описывает четыре распределения. Мне интересно, исходит ли требование к нормальному распределению средних из самой формулы т-статистики. Так же как раз в числителе среднее, которое и должно быть распределено нормально. Надо будет опять почитать работу Стьюдента (Госсета), ЦПТ и доказательства сходимости t-распределения к нормальному.
Статья на википедии про распределение выборочного среднего:
https://en.wikipedia.org/wiki/Sampling_distribution

Распределение выборочного среднего зависит от:
- распределения в генеральной совокупности,
- процедуры выборки,
- размера выборки.

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

Для примерного установления распределения выборки можно использовать бутстрэп, метод Монте-Карло или положиться на асимптотическое распределение (https://en.wikipedia.org/wiki/Asymptotic_distribution).
Иными словами, на мой взгляд, мы можем использовать t-test, когда более менее уверены, что распределение генеральной совокупности близко к нормальному. Я думаю, что это можно установить несколькими способами:
1. Убедиться, что не было ошибок при формировании выборок. Эти ошибки могут убрать нормальность.
2. Проверить для начала, а не нормальна ли сама выборка. Посмотреть на коэффициенты ассиметрии (skewness) и эксцесса (kurtosis). Думаю, можно и проверить тестами Шапиро-Уилка или Колмогорова-Смирнова.
3. Проверить методом бутстрэпа на нормальность распределения выборочных средних.

Не очень-то густые инсайты. Теперь осталось понять требование к гомогенности дисперсий.
Итак, теперь про равенство дисперсий. Одно из предположений т-критерия Стьюдента состоит в том, что выборочные дисперсии равны. Кажется очевидным, что перед использование теста, необходимо проверить выборки на это самое равенство. Если же дисперсии не равны, то можно отказаться от т-теста Стьюдента в пользу т-теста Уэльча для выборок с разными дисперсиями. Почему же это нужно?

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

Получается, что необходимо использовать тест Левене, а потом выбирать подходящий т-критерий? И тут всё становится слегка запутанным. Как и многие статистические тесты, тест Левене имеет свою мощность. Получается, он тоже с некоторой долей вероятности может допускать ошибки первого и второго рода. И в этот момент оказывается, что выигрыш от использования теста Левене и выбора более подходящего варианта из тестов Стьюдента и Уэлча не перекрывает выигрыш от просто постоянного использования т-критерия Уэлча (который работает слегка хуже на выборках одинакового размера с одинаковой дисперсией).

Практические выводы:
1. Т-критерий Стьюдента можно более-менее безопасно использовать при равных выборках или когда бОльшая выборка имеет пропорционально бОльшую дисперсию.
2. Можно просто постоянно использовать т-критерий Уэлча, особенно если выборки разного размера.

#t_test #т_критерий
Может кому-то это будет интересно и здесь. Для меня удивительно, что вычислительная сложность, которую мы обычно ассоциируем с алгоритмами, играет важную роль и в представлении знаний. К примеру, не так много людей знают, что кроме P и NP классов сложности, есть еще и PSPACE, EXPTIME, NEXPTIME, EXPSPACE. И разрешимость многих логик (дескриптивных, модальных), о которых я буду писать позже, лежит как раз за пределами NP.
В книге же по алгоритмам Бхаргавы таких сложностей нет. Там разбираются самые основы простым языком. Поэтому, если вы хотите погрузиться в мир алгоритмов, эта книга станет хорошим началом пути.
Forwarded from Учим Питон
А не начать ли нам книжный клуб? :D

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

И начнем мы с книги для начинающих:
Бхаргава А. - Грокаем алгоритмы. Иллюстрированное пособие для программистов и любопытствующих
План таков:
1. Заполучить книгу (купить, скачать из файлов ВК и т.д.)
2. Каждую неделю читать одну главу.

Итак, начинаем сегодня с главы "1. Знакомство с алгоритмами". Читаем её до следующих выходных. В конце следующей недели я сделаю небольшую выжимку по главе и подготовлю опрос.
Вопросы можно задавать в нашем чате в телеграмме: https://t.me/learnpythonforfun_chat.

#книжный_клуб #алгоритмы
Кстати, а кто-нибудь помнит, что мы начинали проходить курс по статистике? Ну ладно, я начинал. Вот он: https://stepik.org/course/76
В общем, прошлая тема была t-test. В какой-то мере мы с ней разобрались, следующая тема qq-плот. Как мне кажется, я нашел шикарный материал по этой теме.
Еще один источник для тех, кто хочет погрузиться в обработку языка:
https://web.stanford.edu/~jurafsky/slp3/
Еще два материала, которые рекомендуют для подготовки к собеседованиям:
https://www.statlearning.com/ - книги по машинному обучению
https://www.youtube.com/watch?v=5N9V07EIfIg&list=PLOg0ngHtcqbPTlZzRHA2ocQZqB1D_qZ5V&index=1 - youtube-плэйлист по нему же.
Мне тут в личку группы Учим Питон сам автор прислал статью, и я решил поделиться ею здесь: https://habr.com/p/802773/
Тема интересная, потому что, как мне кажется, визуализация данных - это 90% процентов успеха в анализе. Сначала проводишь разведочный анализ по графикам, а потом результаты анализа надо презентовать.
В статье мне понравился общий ход мыслей: думать о том, чтобы человеку было легко. Если бы мне надо было делать похожие графики, то я бы, как и автор, использовал разные цвета, визуально группировал бы одинаковые сущности, добавлял размерность через толщину/цвет точек.
С чем я не согласен. Я бы практически не трогал прозрачность элементов. В комнате плохой проектор? Часть данных будет не видна. Плохо печатает принтер? Часть данных сольется в одном цвете. В общем, я бы старался разные группы данных различать градиентом. Дополнительно, я бы побоялся включать более четырех линий в один график - мне такие воспринимать сложно. Ну и напоследок, я бы увеличил шрифты, а линию предсказания сделал бы прерывистой/пунктирной.
Если у кого есть вопросы/предложения, можете писать их в комментариях тут - автор обещал заглянуть и ответить :)
👍2
Я тут недавно поучаствовал в локальном онлайн-хакатоне от своего университета (https://bbdc.csl.uni-bremen.de/en/2024-2/professional-track/). Занял 14 место из 17, в своё оправдание могу сказать, что времени у меня было не очень много и я не использовал нейронные сети. Хакатон длился около месяца.
Задание.
В рамках задания были представлены данные акселерометра и фотоплетизмографа (штука, которая "меряет" пульс) + данные о пульсе, поле, возрасте, номере устройства. Участникам предлагалось классифицировать по этим данным настроение (['HAPPY', 'RELAXED', 'SAD', 'ANGRY']) и контекст (['WALKING', 'CONVERSATION', 'VIEW_BOOTH', 'OTHER']).
Что я сделал.
Мне показался скучным путь решения через натравливание нейронки, поэтому я пошел другим путем. В дополнение к трем осям, я вычислил общий вектор амплитуды через корень суммы квадратов. Сначала я прогнал данные через никзочастотный фильтр, чтобы убрать шумы. Потом применил RobustScaler, чтобы убрать выбросы и отмасштабировать данные. Затем я обнаружил пики для каждой оси. Дополнительно я вычислил метрики по этим пикам: ритм, среднее время шага, ско времени шага, регулярность шагов и т.д. Метрики были вычислены для интервалов, предшествующих событию измерения. Я использовал библиотеку sensormotion. Потом все эти фичи были скормлены в HistGradientBoostingClassifier из sklearn. Для классификации настроения и контекста я использовал окна разной длины.
Что я бы сделал по-другому.
Мне кажется, что главная ошибка, которую я допустил - мало времени провел над инжинирингом фич. По сути, получилось, что я скормил много мусора в классификатор, а он там что-то извлёк. Стоило лучше разобраться с тем, как работают алгоритмы детектирования пиков с самого начала, подумать о лучшем фильтре, посмотреть, какие ещё метрики могут быть использованы.
Ещё я хотел подумать, как решить проблему сопоставления осей. К примеру, что если одни часы имеют отличную ориентацию от других часов. В общем, надо было больше потратить времени на приведение входных данных в порядок.
Итог.
Я поучаствовал в хакатоне, мне было интересно поработать с данными, выучить новые уроки, немного набить руку. После окончания диссертации собираюсь засесть за ML+DL, надеюсь, после этого в хакатонах у меня дело пойдет пободрее 🙂
👍3
Всё ещё пишу свою диссертацию, но осталось уже буквально пара недель и затем, вероятно, я смогу вернуться к изучению статистики, NLP, нейронок и прочих вещей.

Из обновлений: в мае я собираюсь поучаствовать в стартап кэмпе с одной NLP-темой. Попробую предложить сервис извлечения основной информации из научных статей для борьбы с галлюцинациями у LLM моделей.
Еще нашел недавно интересную книжку:
Rodrigues, Miguel RD, and Yonina C. Eldar, eds. Information-theoretic methods in data science. Cambridge University Press, 2021.
В ней рассказывается о теории информации и дата сайнс - давно мечтал почитать что-то подобное.

В общем, пока что всё. И небольшой опрос напоследок :)
Вы что-нибудь слышали про bias-variance tradeoff?
Anonymous Poll
29%
Да
47%
Нет
24%
Посмотреть ответы
Нашел ещё один учебник по машинному обучению: https://education.yandex.ru/handbook/ml. В некоторых местах (про Байесовский подход), он мне показался довольно сложным и спутанным. Но, думаю, сойдет как альтернативный источник знаний.

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