Data Blog
1.37K subscribers
100 photos
3 videos
4 files
167 links
Канал про интерпретируемость моделей и путь до phD, если автор не уйдет пасти овец.
Download Telegram
Upd2: на прошлой картинке была опечатка в исправлении. Здесь совсем исправленный вариант! Неловко вышло…
👍2
Привет, друзья! Как обещала, пишу про боксплоты.

Vilonplot и Boxplot — смыслы и отличия. #Датавизуализация, #датасловарь

Думаю, со старым добрым “ящиком с усами” или, как его называют boxplot’ом вы точно знакомы. Violin plot, как и boxplot, является методом визуализации и показывает он вероятностное распределение некоторой случайной величины (здесь под случайной величиной следует понимать распределение какого-либо непрерывного признака, а не дискретного).

Зачем вообще boxplot’ы и violinplt’ы?

Визуализируя переменную хочется, чтобы график сколь угодно точно отражал природу её распределения. Конечно, можно взять гистограмму. Но по моему субъективному мнению — боксплоты приятнее гистрограм просто потому что они визуально не нагружают зрители двумя осями (по второй в гистрограммах, в случае равного разбиения интервалов (bins), откладывается величина, пропорциональная количеству элементов выборки, попадающих в этот интервал).

Что показывает boxpltot?

В seaborn и plotly boxplot по умолчанию отрисовывает медиану. Границы коробки при этом показывают первый и третий квартили распределения (соответственно 25й и 75й перцентили). Границы усов отражают величину, равную разности и сумме соответственно IQR на коэффициент (коэффициент выбирается равным 1,5).
(Что такое IQR, квартили и перцентили см. в рубрике #Датасловарь)


И вроде бы полезный график. Джон Тьюки (именно он является создателем) предложил понятный, компактный и красивый метод визуализации. Для какой лирики нужен violin plot?

Violinplots с какой-то точки зрения более информативны.

Они похожи на носы ждунов, в то время как boxplots такой живописностью похвастаться не могут. “Ждуновость” обусловлена тем, что по бочкам у скрипичных графиков — плотность вероятностого распределения переменнои.

Это структура графика-скрипки позволяет рассмотреть распределение по границам или, иными словами увидеть, есть ли у него “талия”, узкое или широкое у него “горло”, а может оно вообще “пандообразно” и жизнью помято.

И, как приятный бонус, они менее популярны и от того более эффектны для предоставления отчетов.

Вот так!

Как мысль.

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

А в повседневной работе, при непосредственно анализе мне кажется информативнее будет всё-таки violinplot.

Посмотреть наглядную разницу, а также построение обоих графиков в Python с seaborn и plotly можно тут: ссылка на гугл-коллаб
👍1
Violin_and_box_plots.ipynb
127.6 KB
Юпитер-тетрадь файликом, если я однажды почищу диск
👍2
😁3
Линейное пространство. Многомерное пространство. Частный случай машинного обучения.

Привет, друзья!

Хочется начать этот пост строчкой из песни Макса Коржа “Время”, которая звучит так:
“...сегодня суббота, а значит время никто не догонит”.

Желание таково потому что, во-первых, сегодня реально суббота, во-вторых, потому что у меня линейные пространства прочно ассоциируются со временем на “позалипать”, а в-третьих — потому что я опоздала и публикую пост почти в ночи. Простите пожалуйста!

Усаживаемся поудобнее и поехали!

#Математика
Сегодня с нами линейное пространство. Что же это, и почему оно многомерное?

Если вы хоть раз проходили курс по математике для Data Science, или хотя бы думали о его покупке, то делаю ставку в 10 рублей, что там вместе с теорией вероятностей и статистикой был модуль “линейная алгебра”. Ставлю — потому что уверена, 10 — потому что я студент.

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

Так вот, зачем это всё?

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

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

Для строгого определения линейного пространства берутся 8 утверждений (о них позже) и 4 объекта — множество векторов, поле чисел, операция сложения и операция умножения.

Остановимся на первом понятии. Вектор — a.k.a. направленный отрезок, “rayon vecteur” (радиус-вектор, с французского), величина, имеющая направление и просто красавчик.

Что это?

Этимология.

Слово "вектор" происходит от причастия прошедшего времени "vectus" (латынь), означающего "нести” или “транспортировать”. В любой области он всегда отражал что-то, что находится дальше, чем статичная точка.

Нынешнее время.

Теория векторов, их применение и описание объектов ими развивалось с 18 веков. Сейчас мы исследуем векторы не только как величины, которые они могут “нести”, но и как точки в некотором пространстве, и на этом точечном отождествлении (вектор = точка) нам важно сосредоточиться нам, ведь для нас каждый вектор — это строка из набора данных. Или объект. Или точка.

Первый вывод — чтобы задать линейное пространство необходимо и достаточно начать описывать векторы. Ну или получить набор данных 🙂

Теперь пусть пространством будет ваша комната.

Чтобы задать вектор (элемент) в ней, с интуитивной точки зрения необходимо описать, где он. С математической же точки, необходимо и достаточно задать его координаты.

Координаты вектора — будем задавать числами и только числами. Почему? Потому что именно в таком виде в их изучении нам сможет помочь госпожа математика.

Заметим, что каждый вектор однозначно задается своим упорядоченным набором координат и наоборот — каждый упорядоченный набор координат задает свой единый вектор.

Но описывая вектор в комнате мы можем использовать в лучшем случае 4 координаты: длину (расстояние) от нас, ширину от стены, высоту от пола и момент времени. Однако реальная жизнь собирает куда больше числовых показателей по каждому объекту.

И здесь мы плавно подходим к понятию “многомерность”. Оно происходит лишь из нашей речи — в математике такого понятия, определенного аксиоматически или теоретически не существует. Это слово является определением для выделения особых пространств, размерность (или количество координат, которые определяют объект) для которых более, либо равна 5.

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

Да. Эти понятия определяют и описывают одно и то же. И это общепринятое соглашение.

И теперь
🔥4
Линейное, aka векторное пространство с точки зрения математики.

В упрощенном описании линейным пространством называется непустое множество V (наши векторы являются подмножеством, то есть частью этого множества), с элементами (это векторы), над которыми определены две операции и которое расположено над полем чисел.

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

Также для любых векторов x, y, z, принадлежащих множеству V, в линейном пространстве должны быть выполнены:

1. x + y = y + x — коммутативность сложения
2. x + (y + z) = (x + y) + z — ассоциативность сложения
3. 0 + x = x + 0 = x — существование нулевого (или нейтрального) элемента по сложению, 0 называется нулевым вектором
4. 1*x = x*1 = x — существование нулевого (или нейтрального) элемента по умножению на скаляр
5.для любого элемента x, принадлежащего V существует элемент (-х), такой что х + (-х) = 0
6. (αβ)x = α(βx) — ассоциативность умножения на число
7. (αx + αy) = α(x + y)
8. αx + βx = (α + β)x

и еще — результат каждого из пунктов должен снова априори принадлежать линейному пространству V.

Зачем нужны 8 аксиом?

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

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

Первое “во-первых” можно переформулировать так: линейное пространство, подмножество которого мы анализируем само состоит из всех возможных линейных комбинаций векторов.

Линейная комбинация объектов x,y, z – это сумма, вида : Y = αx + βy +γz, где α, β, γ — любые числа.

Это, в свою очередь, значит, что любой вектор линейного пространства может быть представлен как сумма или разность других векторов этого же пространства (векторов, умноженных на определенные коэффициенты).

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

Наименьший базис, может быть не один и на практике мы его не ищем, а, находя произвольный, пользуемся лишь ещё одни определением-метрикой размерность.

Размерностью пространства называется число базисных векторов.

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

И к нашему счастью линейное пространство определяют не только строки, но и столбцы. Поэтому в data science говорят о размерности пространства признаков. Да, да, она тоже растет из линейной алгебры =)

Зачем она?

С помощью машинного обучения мы хотим приблизить как можно больше зависимостей скрытых и, кроме того, получить решение наиболее быстро работающее, так?

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

Что значит линейная независимость?

Что никакой признак n не может быть выражен через признак m, выражением вида n = xm + b, где x, b — произвольные числа.

А чем плоха линейная зависимость?

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

И вот нередко линейно-зависимые признаки оказываются первыми в очереди на вылет, потому что выражение их через другие тривиально. Частично отсюда феномен “столбцов меньше, качество лучше”. (Но это не всегда так)

Вот. Тут, в целом, на сегодня всё. Чего-то переживаю, но надеюсь мне удалось аккуратно раскрыть вам понятие.
👍2🔥1
Главная мысль — отождествив множество наблюдений с ними мы лишаем себя многих проблем:

- седых волос от случая “выборка не может отражать генеральную совокупность” (линейные комбинации в пространстве описывают координаты любого вектора)
- какого-то нового, не ухваченного нами супер-наблюдения, вроде клиента в день рождения (по той же причине, что и выше)
- необходимости скурпулезно смотреть на каждый вектор вручную (потому что мы отождествляем их с точками и отсюда можем, например, группировать)
- необходимости изучать дубликаты (поскольку упорядоченный набор координат соответствует одному вектору и обратно)
- перебирать признаки на удачу (вместо этого сначала проверяйте признаки на линейную зависимость. Это можно сделать при помощи корреляции Пирсона (для непрерывных признаков), корреляций Спирмена и Кендалла (для признаков ранговых) и таблиц сопряженности (для признаков номинальных). А потом уже можно и удачу подключать...)

На этом конец поста.

Остаемся на связи, друзья! Пишите вопросы и всегда рада конструктивной обратной связи.

В следующую субботу вернусь с теорией вероятностей или интегралами — подумаю, как будет логичнее и легче 🙂

И вас уже так много!!! Радуюсь, и стараюсь для каждого!)🧡

Ваш дата-автор.
4👍1🔥1
UPD: Я прочитаю "Пиши, сокращай", друзья, если это действительно поможет...🙈

Простите) Просто математика — это очень литературно, а ещё я несколько лет в гуманитарном классе училась 😁😅
Привет, друзья!

#Математика Томас Байес.

Думаю, трудясь или отдыхая, вы часто встречали его фамилию. Байесовские модели, байесовская статистика, байесовский вывод и, если вы читатель портала lessWrong, даже “байесианство”.

Помню, когда только-только начала изучать машинное обучение, летом 20го года, мой хороший знакомый написал мне:

“Пока что оставь Байеса, надо изучить основы моделей. ..”

А потом, в диалоге, добавил:

“Но байесовская статистика самая крутая и могучая”

Вспоминая это сейчас, пока пишу вам пост, я улыбаюсь, шлю Жене, “привет” и весело объявляю:

Сегодня говорим о формуле Байеса.

Вперёд!

Для начала нам с вами нужно вспомнить правила сложения и умножения вероятностей, пару приемов из школьной математики, определения (не)совместности и (не)зависимости событий, условную вероятность, а также вооружиться набором слов — гипотеза, априори и апостериори.

Начнем с сложения и умножения.

Сложение.


Вероятность наступления одного из двух событий А, B, равна:

P(A) + P(B) - P(AB)

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

В случае, когда события несовместны — то есть не могу произойти одновременно (что в самом деле значит, что Р(АВ) = 0), она равна P(A) + P(B).

Это фундаментальное правило теории вероятностей известно как “правило сложения”.


Умножение.

Вероятность наступления обоих событий А, В одновременно, равна:

P(A)*P(B|A)

если события А и В независимы — то есть наступление одного не влияет на наступление другого, то формула обращается в Р(А)*Р(В) (потому что вероятность В, в зависимости от А, равна просто вероятности В).

Это фундаментальное правило теории вероятностей известно как “правило умножения” — мы берем вероятность одного события и умножаем на вероятность второго, при условии, что первое произошло.

Условную вероятность мы с вами ещё не разбирали. Однако всё о ней я уже загрузила в пост выше! : )

Дальше вооружимся словами — гипотеза, априори и апостериори.

Гипотеза — это предположение или допущение. В отличие от аксиом, гипотеза требует доказательства.

Априори — знание, полученное до эксперимента и независимо от него.

Апостериори — значение, полученное в результате проведения эксперимента.

Зачем нам вдруг этимология и перевод слов?

Ради моделирования эксперимента, конечно! Надеюсь, вам идея сколь угодно моделировать происходящее нравится также, как и мне, несмотря на её некоторую утопичность!)

Вернемся к делу. Пусть у нас есть событие А и с ним связана некоторая совокупность Hi — взаимоисключающих друг друга гипотез. Объект, который мы с вами определили этими строгими словами смотрите на картинке ниже:
1🔥1
👍1
Пусть также вероятности каждой из гипотез в голом виде мы знаем, потому что мы их априорно (до опыта) предположили.

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

какова вероятность того, что при исполнении именно гипотезы Hj (уж очень она нам понравилась, в шляпке), А произойдет?

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

Разбираемся как:

Поскольку определенные выше гипотезы Hi связаны с А, то есть образовывают его, то полная вероятность события А, на самом деле это вероятность наступления одного из множества-событий “гипотеза с H номером i и само А”. На языке теории вероятностей это есть правило сложения:

А = Р(АН1) + Р(АН2) + Р(АН3) + ….. +Р(АНn) =1

где P(АНi) — обозначение вероятности события “гипотеза с номером i и само А”. Единица справа потому что само А точно происходит.

Выделим, с событием А, интересующую нас гипотезу Hj, то есть слагаемое Р(АНj). По, так сказать, факту нас интересует вероятность того, что все другие гипотезы не произошли, или:


Р(АНj) = 1 - (неР(АН1) + неР(АН2) ….. +неР(АНn)).

Теперь вспомним наше чудесное правило умножения и посчитаем-таки, как выглядит событие Р(АНj). Не ошибемся, что так:

Р(АНj) = P(A)*P(Hj|A) =Р(Hj)*P(A|Hj)

Немножко перевода с математического.

P(Hj|A)
Вероятность исполнения гипотезы Hj при условии, что А произошло, то есть апостериорная вероятность.

P(A|Hj)
Вероятность исполнения события А при условии, что гипотеза Нj верна.

Сделав пару нехитрых математических приемов мы берем интересующую нас вероятность и получаем заключения на картинке:
👍2
Всё кажется супер-простым. И это так : ) А теперь…
Байес в машинном обучении. Наивный Байесовский классификатор.


Если вы чуть устали к этому моменту — не переживайте. Буквально 5 минут и совсем знакомые вам вещи.

На чём основан наивный Байес?

Пусть у нас есть целевая переменная С, и вектор признаков Fi. Дружной гурьбой они образовывают одно большое событие (CF1F2F3…Fn).

Какова вероятность С, при условии, что вектор признаков F1F2F3…Fn определился определенным образом?) (надеюсь здесь вы улыбаетесь)
В чём наивность наивного Байеса?

В предположении о независимости, не влиянии друг на друга признаков. Это в свою очередь, не учитывает вероятность каждой фичи, при условии, что другие выглядят каким-то образом и предполагает зависимости Fi для любой i только от класса С.

Так ли работают Байесовские модели?

Нет. Они в том числе, как минимум, учитывают и влияние признаков друг на друга, как максимум — иные параметры. Отсюда мы получаем приближения поразительно близкие к реальным.

А вот какие — как только буду компетентна, напишу обязательно!

Такой воскресный дата-пост, друзья! С опозданием, зато большущий и богатый на информацию (надеюсь)!

Точных вам классификаций,
Ваш дата-автор! : )
🔥6
Привет, друзья!

Поговорим о матрицах?
и я завела тэг #Математика

Задумавшись, с чем ассоциировать матрицы я почему-то вспомнила не фильм, а свою бабушку, которая в поезда часто берет судоку.

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

И улыбнул меня не просто факт привязанности судоку, таблицы чисел, к миру математиков. История матриц гласит, что по некоторым данным, первые из них упоминались ещё в древнем Китае и назывались квадратом волшебным.

Вот так. Латинский и волшебный квадраты.

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

Матрицей А размерности m строк на n столбцов называется таблица, в которой на пересечении каждой строки и каждого столбца стоят в частном случае числа, а в общем случае элементы (смотрите картинку 1).

Это определение никогда не приводило меня в восторг. Хоть и формально всё в нём верно, оно как будто обижает матрицы. Поэтому я сходу предлагаю вам другое. Как обезумевший математик, залетевший в аудиторию с ноги и со стопкой листов А4.

Линейным отображением векторного пространства V над полем чисел в векторное пространство W над тем же полем чисел называется отображение, f: V -> W.

Запись действия линейного отображения на объект векторного пространства W выражается матрицей линейного отображения (смотрите картинку 2).

Много линейности, правда? Но я-то знаю, что мы с вами хороши и мощны, ведь с одним из героев этого определения мы уже знакомы. Это вектор. И значат все эти “слова на математическом” ровно то, что:

1. У нас есть два векторных пространства;
2. Мы переходим из одного в другое или исследуем как это сделать;

На картинке это выглядит так (картинка 3).
4
3
Что ж. Я обещала сделать дата-пост с привязкой с машинному обучению и слово держу. Перейдем от абстракции к делу и представим, что у нас есть набор данных из 6 наблюдений, по каждому из которых известны 2 параметра и целевой признак.

Поставщик данных (пусть он будет нашим китайским товарищем) убежден, что признаки связаны с целевой переменной как-то линейно, но как — он не знает и предлагает нам решить задачу.

Представим также, что доступ к sklearn нам заблокирован (не дай Боже), а задачу надо решить здесь и сейчас.

Вздохнем, возьмем бумажку и перепишем ситуацию (картинка).
2