Выбросы — это точки, которые не следуют общей тенденции, какой бы она ни была. Что считать тенденцией зависит от задачи, но поиск таких точек в многомерном пространстве часто сводится к применению Isolation Forest, Local Outlier Factor, KNN или DBSCAN. Сюда же можно добавить дешевый и эффективный PCA, смысл использования которого, в том, что чем больше требуется компонент для восстановления точки из сжатого представления в исходное с заданной точностью, тем более аномальной является точка (классический PCA чувствителен к выбросам, поэтому лучше взять его устойчивые аналоги - robust PCA). В предыдущем посте я брал датасет англоязычных песен на Spotify за 5 лет, тут воспользовался им снова. По музыкальным характеристикам треков оценил минимально количество компонент PCA для реконструкции фичей каждого трека с фиксированной погрешностью, и усреднил их количество по каждому исполнителю. Также усреднил популярность.
🔥4
На вершине популярности Adele, Black Eyed Peas (хотя последние пару лет про них не слышно) и конечно Taylor Swift. Композиции Adele по своим музыкальным характеристикам гораздо аномальнее и заметнее чем у Black Eyed Peas или Taylor Swift, которые расположены левее. В правой части графика диджеи и композиторы (например Ramin Djawadi: «Железный человек», «Игра престолов», «Проблема трёх тел» и т.д.), чьи треки заметно отличаются от популярной музыки. Среди известных артистов заметна небольшая тенденция - чем популярнее исполнитель, тем сложнее отличить его треки от всех остальных (что из этого причина, а что следствие не известно).
👍2
Если нужна корреляция между бинарной и непрерывной переменными, часто используют Point Biserial коэффициент (то же, что корреляция Пирсона), но на stackexchange кто-то предложил попробовать для этого ROCAUC, я попробовал и это выглядит круто. Суть: последовательно перебираем пороговые значения непрерывной переменной (размечая 0/1 для меньше/больше порога), сравниваем бинарную переменную с полученными выше 0/1, строим ROC и считаем AUC. В качестве наглядного примера для этого метода я взял ответы из опроса stackoverflow для бинарной переменной, и количество лет опыта кодинга для непрерывной. При этом, если ROCAUC > 0.5, то опыт положительно коррелирует с выбранным пунктом, и преимущественно относится к опытным/возрастным разработчикам. Если ROCAUC < 0.5, то опыт отрицательно коррелирует с выбранным пунктом, и чаще замечен среди начинающих/молодых разработчиков.
✍2🔥1
Тут много картинок, но коротко отличия между этими группами такие: начинающие только учат код, либо для них это хобби, опытные работают/работали разработчиками. Образование начинающих - школа, опытных - некоторая степень. Начинающие предпочитают учиться кодингу на онлайн курсах/буткемпах, опытные - у коллег, на работе или по книгам. Также среди разработчиков с опытом в ответах на вопросы об их роли чаще фигурируют Embedded/devices, R&D, Desktop/enterprise, Manager и Senior Executive, а среди начинающих - Student, Front-end, Data/business analyst, DS/ML, Mobile. Также из интересного: AI-tools почти все отрицательно коррелируют с количеством лет опыта кодинга.
🔥1
P.S. Еще попробовал ROCAUC заменить на PRAUC, результат показался хуже, но может его стоило как-то иначе интерпретировать.
🔥1