Data Funk – Telegram
Data Funk
249 subscribers
195 photos
2 videos
1 file
73 links
Download Telegram
Тут много картинок, но коротко отличия между этими группами такие: начинающие только учат код, либо для них это хобби, опытные работают/работали разработчиками. Образование начинающих - школа, опытных - некоторая степень. Начинающие предпочитают учиться кодингу на онлайн курсах/буткемпах, опытные - у коллег, на работе или по книгам. Также среди разработчиков с опытом в ответах на вопросы об их роли чаще фигурируют Embedded/devices, R&D, Desktop/enterprise, Manager и Senior Executive, а среди начинающих - Student, Front-end, Data/business analyst, DS/ML, Mobile. Также из интересного: AI-tools почти все отрицательно коррелируют с количеством лет опыта кодинга.
1🔥1
P.S. Еще попробовал ROCAUC заменить на PRAUC, результат показался хуже, но может его стоило как-то иначе интерпретировать.
🔥1
Вот крутите вы свой датасет, тщательно выбираете топ-k самых-самых фичей, а возможно тратите время зря. Вышла статейка, где авторы подошли к вопросу отбора фичей с точки зрения проверки нулевой гипотезы: значимо ли "умный" выбор отличается от случайного подмножества k признаков?

Шок-контент: в 28 из 30 высокоразмерных наборов (геномика, изображения, масс-спектрометрия) священный рандом оказался сопоставим с обучением на всех фичах или на тех, что отобрали лучшими FS-методами. Конечно, возможно, так совпало и в выбранных датасетах "важность" просто размазывается по всем колонкам ровным слоем, но мне нравится думать что это перекликается с леммой Джонсона-Линденштрауса, которая показывает, что высокоразмерные данные сохраняют расстояния между точками даже при случайных проекциях. Вывод из работы такой: не паримся с отбором фичей, учим пачку моделей на случайных подпространствах и агрегируем.
🤔4👍2😁1
Не перестаю восхищаться JL леммой - случайная проекция из многомерного пространства в меньшее число измерений примерно сохраняет попарные расстояния между точками, это значит, ты можешь сжать данные, ускорить k-nn или получить примерный собственный спектр, если применить случайную проекцию сразу к колонкам и строчкам симметричной матрицы, что я и сделал.
В качестве примера взял 1.3 млн точек из множества Жюлиа (-0.123+0.745*j), каждую точку соединил с ближайшими 8 соседями - получился граф с симметричной матрицей смежности X, которую слева и справа умножил на случайную ортонормированную матрицу R размером 1.3M на 130 (R сначала заполняется гауссовским шумом, а затем пропускается через быструю QR декомпозицию для ортонормировки):

Y = (R^T)*X*R,

Так перешел от матрицы 1.3M х 1.3M к матрице 130 х 130. По теореме Пуанкаре собственные значения маленькой матрицы Y зажаты между собственными значениями большой X, примерно сохраняя их распределение. Значит можно взять несколько λ от Y (я взял первые 13 собственных значений) прогнать их итерациями через X и получить соответствующие им собственные вектора матрицы X, а дальше отправить в k-means или гауссовские смеси (выбрал этот вариант, потому-то k-means оказался более шумный). Получается такая кластеризация графа на случайных проекциях.
🔥3
Традиционно эмбеддинги получаем нейросетями. Если хотите "экологически чистые" эмбединги🌳, то ребята из Королёвского колледжа Лондона сделали "деревянный" автоэнкодер. В отличие от классического варианта, тут кодер и декодер учатся независимо.

Кодер работает как GAN: лес учится отличать реальные данные от синтетических, а из его листьев-ошибок семплируются всё более правдоподобные точки. После нескольких итераций лес перестает их различать. Так модель учит внутреннюю структуру данных. Затем для n точек строится матрица близости K (насколько часто пары точек попадают в один лист). В простом варианте первые d собственных векторов (V) и значений (Λ) этой матрицы формируют d-мерные эмбеддинги: Z = √n*V*Λ.

Декодер это просто k-nn в пространстве эмбеддингов: чтобы восстановить объект по эмбеддингу, берём k ближайших точек из обучающей выборки и усредняем их фичи (берём моду для категорий).

Что бы получить эмбеддинг новый точки из test набора ищем ее близость к тем же n точкам - K' и умножаем на собственные вектора: Z' = √n*K'*V.

Всё без градиентов, только 🌲🌳🪵!
🔥4🤯4
Если гоняете A/B-тесты, то AIPW (Augmented Inverse Probability Weighting) это популярный вариант их оценки с помощью ML. Моделируем целевую метрику (Y) пользователя X в группе A (флаг группы = 0/1) - f(X), вероятность попадания в группу - prob(X). И сырой Y меняем на скорректированный: Ynew = A*(Y - f(X))/prob(X) + f(X). Итоговый эффект теста это средняя разница между Ynew в тестовой и контрольной группах по всем пользователям. Такой подход делает оценку эффекта надежнее за счет дополнительных знаний ковариат X.
👍2
И вот лайфхак: ребята из Гарварда предлагают безопасно прикрутить сюда LLM, т.е. смешать реальные данные и синтетические. Самое главное - дают гарантию "это точно не навредит оценке теста" и доказывают, что дисперсия не станет хуже, чем при обычном AIPW. Суть подкупает простой: просим LLM предсказать поведение пользователей в эксперименте, и строим новую оценку эффекта по ее прогнозу. Для каждого пользователя в табличку с наблюдениями теста добавляется две колонки:
S - оценка эффекта, посчитанная через стандартную ML-модель.
L - оценка эффекта, посчитанная через LLM. Ищем их комбинацию Final = λ*S + (1-λ)*L, чтобы дисперсия была минимальная: λ = (Var(L) - Cov(S,L)) / (Var(S) + Var(L) - 2*Cov(S,L)).

По этой же схеме можно смешать сразу несколько LLM. Если ответы галлюцинируют, то алгоритм просто обнуляет их веса и возвращается к базовому AIPW. Главное выбрать что дешевле: прогонять тысячи юзеров через LLM API или набрать больше людей в тест.
3