Я упоролся и решил изобрести новый статистический метод, но кажется у меня не получилось.
Типичная ситуация: у нас есть две колонки X и Y. Мы хотим знать есть ли истиная зависимость между Y от X. Однако в нашем распоряжении только выборка пар (x, y), которая может не отражать истиной зависимости.
Типичная ситуация: у нас есть две колонки X и Y. Мы хотим знать есть ли истиная зависимость между Y от X. Однако в нашем распоряжении только выборка пар (x, y), которая может не отражать истиной зависимости.
При этом зависимости может вообще не быть. А ещё может быть такое, что зависимости на самом деле нет, но нам попалась такая "удачный" выборка, что кажется, будто зависимость есть.
Чтобы принять какое-то решение, есть зависимость или нет, мы считаем корреляцию Пирсона между X и Y. Это число от -1 до 1, и чем оно ближе к 1 или -1, тем больше линейная зависимость. Корреляция около 1 примерно значит "всегда, когда X больше своего среднего на eps стандартных отклонений, соответствующий Y тоже больше своего среднего на eps стандартных отклонений". Однако для "удачной" выборки мы всё ещё можем получить большую корреляцию, просто потому что нам не повезло.
Поэтому мы так же считаем p-value: вероятность, с которой наблюдаемая корреляция могла возникнуть случайно. Мы наобум задаемся каким-то уровнем значимости alpha таким, что если p-value меньше этого уровня, мы принимаем, что наблюдаемая зависимость неслучайна. Часто используют alpha=0.05. Это примерно означает, что 5% раз мы будем принимать ложную зависимость за настоящую, и нам это ок.
Чтобы принять какое-то решение, есть зависимость или нет, мы считаем корреляцию Пирсона между X и Y. Это число от -1 до 1, и чем оно ближе к 1 или -1, тем больше линейная зависимость. Корреляция около 1 примерно значит "всегда, когда X больше своего среднего на eps стандартных отклонений, соответствующий Y тоже больше своего среднего на eps стандартных отклонений". Однако для "удачной" выборки мы всё ещё можем получить большую корреляцию, просто потому что нам не повезло.
Поэтому мы так же считаем p-value: вероятность, с которой наблюдаемая корреляция могла возникнуть случайно. Мы наобум задаемся каким-то уровнем значимости alpha таким, что если p-value меньше этого уровня, мы принимаем, что наблюдаемая зависимость неслучайна. Часто используют alpha=0.05. Это примерно означает, что 5% раз мы будем принимать ложную зависимость за настоящую, и нам это ок.
Я подумал: пусть у нас есть датасет, мы посчитали на нём корреляцию и p-value, и прилетает новая точка (x, y).
Пересчитываем p-value и тогда:
* Если реальная зависимость есть, то новая точка скорее всего должна уменьшить p-value. Т.е. более вероятно, что новая точка будет указывать на имеющуюся зависимость.
* Если реальной зависимости нет, то скорее всего новая точка по крайней мере не уменьшит p-value.
Конечно нам может снова неповезти с конкретными точками, поэтому "скорее всего" тут означает "в среднем".
То есть для выборки с настоящей зависимостью добавление новых данных должно чаще подвтерждать эту зависимоть, а не размывать её.
Пересчитываем p-value и тогда:
* Если реальная зависимость есть, то новая точка скорее всего должна уменьшить p-value. Т.е. более вероятно, что новая точка будет указывать на имеющуюся зависимость.
* Если реальной зависимости нет, то скорее всего новая точка по крайней мере не уменьшит p-value.
Конечно нам может снова неповезти с конкретными точками, поэтому "скорее всего" тут означает "в среднем".
То есть для выборки с настоящей зависимостью добавление новых данных должно чаще подвтерждать эту зависимоть, а не размывать её.
На основе этого придумал такой метод:
1. Берем половину выборки, считаем на ней p-value для корреляции
2. Докидываем по 10 точек из второй половины, пересчитываем p-value
3. Получаем завивисомть p-value от количества данных в выборке
4. ???
Вот чё с этим делать я пока не придумал, но первая идея такая: если p-value в среднем уменьшается, то всё круто и делаем вывод о значимости. Чтобы понять уменьшается она или нет, возьмем производную в каждой точке, и посчитаем среднюю производную. Получается что-то типа среднего наклона зависимости p-value от количества данных
1. Берем половину выборки, считаем на ней p-value для корреляции
2. Докидываем по 10 точек из второй половины, пересчитываем p-value
3. Получаем завивисомть p-value от количества данных в выборке
4. ???
Вот чё с этим делать я пока не придумал, но первая идея такая: если p-value в среднем уменьшается, то всё круто и делаем вывод о значимости. Чтобы понять уменьшается она или нет, возьмем производную в каждой точке, и посчитаем среднюю производную. Получается что-то типа среднего наклона зависимости p-value от количества данных
Переформулировал эту штуку как задачу классификации: пусть нам на вход поступает семпл, а нам надо по нему ответить: он из датасета с реальной зависимостью (1) или из шума (0). Далее считаем точность
Запустил кросс-валидацию
Запустил кросс-валидацию
В случае с методом "не выделываться" я предсказывал, что зависимость есть (1), просто если p-value меньше alpha.
В случае с новым методом, я предсказывал 1 если среднее/медианная производная p-value при добавлении данных меньше нуля (p-value умеьшается) и p-value меьнше alpha
В случае с новым методом, я предсказывал 1 если среднее/медианная производная p-value при добавлении данных меньше нуля (p-value умеьшается) и p-value меьнше alpha
Короче говоря, не сработало, но меня не оставляет ощущение, что что-то в этом есть, и что мне не хватает мозгов понять, что именно. Другой вариант в том, что возможно нет никакой информации в добавлении новых данных, потому что все точки независимы между собой. Или корреляция пирсона уже внутри себя учитывает эффект, который я пытаюсь найти.
Можете поиграться: https://colab.research.google.com/drive/1AhAoTAzhvpXyLkk-7xmkzdF7RW29HgyA?usp=sharing
Вопросы в зал:
* Что за велосипед я изобрел? Может кто-то более погруженный в статистику узнает в нём что-то давно изобретенное?
* Как можно это докрутить?
* Как можно это опровергнуть? Моё предположение, что с добавлением новых данных мы ожидаем уменьшения p-value только если зависимость есть, неверное?
Можете поиграться: https://colab.research.google.com/drive/1AhAoTAzhvpXyLkk-7xmkzdF7RW29HgyA?usp=sharing
Вопросы в зал:
* Что за велосипед я изобрел? Может кто-то более погруженный в статистику узнает в нём что-то давно изобретенное?
* Как можно это докрутить?
* Как можно это опровергнуть? Моё предположение, что с добавлением новых данных мы ожидаем уменьшения p-value только если зависимость есть, неверное?
Google
new_method.ipynb
Colaboratory notebook
👍1
Интересно, как всё в науке работает задом-наперед.
Обычно: заказчик ставит задачу, согласует её с исполнителем, исполнитель делает, сдает работу.
В науке: несколько месяцев делаешь что-то, потом пытаешься найти журнал, куда это примут, подгоняешь структуру/результат под требования журнала.
Ещё пример: публикация в журнале стоит $500 - $2000. Если ты афилирован с университетом, то он платит за тебя. Однако процесс тоже задом-наперед: ты сначала платишь из своих денег, а потом подаешь запрос на возмещение. И тебе вполне могут не возместить.
Обычно: заказчик ставит задачу, согласует её с исполнителем, исполнитель делает, сдает работу.
В науке: несколько месяцев делаешь что-то, потом пытаешься найти журнал, куда это примут, подгоняешь структуру/результат под требования журнала.
Ещё пример: публикация в журнале стоит $500 - $2000. Если ты афилирован с университетом, то он платит за тебя. Однако процесс тоже задом-наперед: ты сначала платишь из своих денег, а потом подаешь запрос на возмещение. И тебе вполне могут не возместить.
Forwarded from Small Data Science for Russian Adventurers
Анализ малых данных
Работа DS: зарплаты, занятость и желания
Подводим итоги опроса по работе аналитиков данных, который ранее запускали на телеграм-канале. Спасибо всем, кто принял участие! Было желание опросить 1000 человек, к тому же в предварительном опро…
Обзор на научную статью, попробуем этот формат.
# The Benchmark Lottery, NeurIPS 2021
Минутка meta-science. Прогресс в ML делается во многом за счет бенчмарков. Это датасеты, на которых сообщество оценивает качество новых моделей. Самый известный это ImageNet. Ученые делают новые методы, проверяют их на одной и той же задаче, пытаются превзойти предыдущий лучший результат. Это работает, но авторы статьи утверждают, что текущий процесс не гаранитрует, что если новый метод показал себя лучше на бенчмарке, то он значительно лучше альтернатив. На результативность на бенчмарке влияет очень много параметров помимо качества модели, поэтому выбор новой SOTA напоминает лотерею.
На примере бенчмарка с 8 датасетами SuperGLUE, авторы показывают, что на разных датасетах схожие модели показывают себя как самые лучшие. Грубо говоря всегда можно найти такой датасет, на котором твоя модель будет самой лучшей. Авторы так же приводят примеры, когда при изменении метрик оценки качества, при тех же самых датасетах, ранкинг моделей целиком меняется. Помимо этого, если поправить ошибки разметки в известных бенчмарках, турнирная таблица моделей так же меняется. Эти примеры показывают, что победа модели на текущих бенчмарках не гарантирует, что она будет лучше на новых задачах.
Авторы приводят чрезвычайно интересную мысль: если ученые долгое время работают над одним бенчмарком, то они начинают подгонять новые модели под тестовые данные бенчмарка. Фишка в том, что делая новую модель ученый смотрит на результативность предыдущих подходов на тестовых данных. Таким образом он получает немного обратной связи от тестового сета и делает свою модель с учетом этой связи. Эффект незаметен на коротких промежутках времени, но накапливается если все работают над одним датасетом годами (привет ImageNet-у). Это можно наблюдать по появлению датасет-специфичных трюков, которые кочуют из статьи в статью после того, как они сработали, но не улучшают модель в целом. Я лично наблюдал такое в статьях по Deep Metric Learning: очередная SOTA состоит на 10% из модели 2007 года и на 90% из сотни хаков.
# The Benchmark Lottery, NeurIPS 2021
Минутка meta-science. Прогресс в ML делается во многом за счет бенчмарков. Это датасеты, на которых сообщество оценивает качество новых моделей. Самый известный это ImageNet. Ученые делают новые методы, проверяют их на одной и той же задаче, пытаются превзойти предыдущий лучший результат. Это работает, но авторы статьи утверждают, что текущий процесс не гаранитрует, что если новый метод показал себя лучше на бенчмарке, то он значительно лучше альтернатив. На результативность на бенчмарке влияет очень много параметров помимо качества модели, поэтому выбор новой SOTA напоминает лотерею.
На примере бенчмарка с 8 датасетами SuperGLUE, авторы показывают, что на разных датасетах схожие модели показывают себя как самые лучшие. Грубо говоря всегда можно найти такой датасет, на котором твоя модель будет самой лучшей. Авторы так же приводят примеры, когда при изменении метрик оценки качества, при тех же самых датасетах, ранкинг моделей целиком меняется. Помимо этого, если поправить ошибки разметки в известных бенчмарках, турнирная таблица моделей так же меняется. Эти примеры показывают, что победа модели на текущих бенчмарках не гарантирует, что она будет лучше на новых задачах.
Авторы приводят чрезвычайно интересную мысль: если ученые долгое время работают над одним бенчмарком, то они начинают подгонять новые модели под тестовые данные бенчмарка. Фишка в том, что делая новую модель ученый смотрит на результативность предыдущих подходов на тестовых данных. Таким образом он получает немного обратной связи от тестового сета и делает свою модель с учетом этой связи. Эффект незаметен на коротких промежутках времени, но накапливается если все работают над одним датасетом годами (привет ImageNet-у). Это можно наблюдать по появлению датасет-специфичных трюков, которые кочуют из статьи в статью после того, как они сработали, но не улучшают модель в целом. Я лично наблюдал такое в статьях по Deep Metric Learning: очередная SOTA состоит на 10% из модели 2007 года и на 90% из сотни хаков.
👍1
Самый хот тейк статьи: почему в ML не используют статистические тесты?
Кто-то обучил модель один раз и получил accuracy 95%. Ты обучил новую модель один раз и получил accuracy 96%. Откуда ты знаешь, что улучшение твоей модели статистически значимо и не является случайной ошибкой?
Авторы предлагают рассматривать оценки качества как случайные семплы и использовать статистические тесты.
Смейтесь над DS-ами: они делают статистические модели, но не используют статистику для их проверки. Лично я сейчас испытываю испанский стыд.
Кто-то обучил модель один раз и получил accuracy 95%. Ты обучил новую модель один раз и получил accuracy 96%. Откуда ты знаешь, что улучшение твоей модели статистически значимо и не является случайной ошибкой?
Авторы предлагают рассматривать оценки качества как случайные семплы и использовать статистические тесты.
Смейтесь над DS-ами: они делают статистические модели, но не используют статистику для их проверки. Лично я сейчас испытываю испанский стыд.
👍1
Что с этим делать?
Предложения авторов:
1. Договориться между собой и установить гайдлайны, как делать бенчмарки, как их использовать, как ревьюить статьи (а может не надо отклонять статьи по причине "не SOTA на одном датасете"?)
2. Не делать один трейн-тест сплит в банчмарках, а делать кросс-валидацию. Ну камон ребят, это же очевидно.
3. Делать бенчмарки со статистическими тестами значимости.
4. Тестировать на нескольких датасетах.
5. Вместо того, чтобы годами оверфититься под один датасет, можно использовать контесты, где задача остается одной и той же, но датасет меняется. В качестве примера приводится конференция WMT, где каждый год проводится соревнование по машинному переводу.
Предложения авторов:
1. Договориться между собой и установить гайдлайны, как делать бенчмарки, как их использовать, как ревьюить статьи (а может не надо отклонять статьи по причине "не SOTA на одном датасете"?)
2. Не делать один трейн-тест сплит в банчмарках, а делать кросс-валидацию. Ну камон ребят, это же очевидно.
3. Делать бенчмарки со статистическими тестами значимости.
4. Тестировать на нескольких датасетах.
5. Вместо того, чтобы годами оверфититься под один датасет, можно использовать контесты, где задача остается одной и той же, но датасет меняется. В качестве примера приводится конференция WMT, где каждый год проводится соревнование по машинному переводу.