Aspiring Data Science – Telegram
Aspiring Data Science
385 subscribers
465 photos
12 videos
12 files
2.15K links
Заметки экономиста о программировании, прогнозировании и принятии решений, научном методе познания.
Контакт: @fingoldo

I call myself a data scientist because I know just enough math, economics & programming to be dangerous.
Download Telegram
#toboml #missing

Donald Rubin created a taxonomy for different types of missing data, depending on how the data came to be missing in the first place.
• MCAR (missing completely at random) whether the data is missing or not has
nothing to do with the data itself.
• MAR (missing at random)
• MNAR (missing not at random) the p
#toboml #missing

Вот есть такая библиотечка missingno, похоже, стоит включить её в свой арсенал.
#toboml #stats #ecdf

The main thing we are looking out for are plateaux on the eCDF.

import numpy as np
x_eCDF = np.sort(data)
y_eCDF = np.arange(1, len(data)+1 ) / len(data)

and to plot both the histogram and the eCDF together

import matplotlib.pyplot as plt
fig, ax1 = plt.subplots(figsize=(15, 7))
twin = ax1.twinx()
ax1.hist(data, bins=12, density=False)
twin.plot(x_eCDF, y_eCDF, linewidth=5, color="red")
twin.set_ylim(bottom=0, top=None)
plt.show();
#toboml #stats #ecdf #kstest

Kolmogorov-Smirnov test is based on finding the largest vertical distance between the two eCDF.
#toboml #interpolation

Broadly speaking interpolation is when we make predictions within the convex hull of our training data, and extrapolation occurs when we make predictions outside of the convex hull of our training data.

Thus in order to avoid having to extrapolate it is desirable that the convex hull of the training data at least spans the very same volume as the convex hull of the test data. For this reason it is convenient in machine learning to keep infrequent extreme values in the training dataset as they serve to expand the convex hull. This space will be very sparse, but this is still preferable to letting the estimator extrapolate if it encounters extreme values in the test data.
#toboml #errors

Another interesting plot is a histogram of the prediction errors. Ideally the histogram should be symmetric, narrow and centered on our prediction (expectation value). The broader the histogram the greater the errors, and if it is strongly skewed this could indicate underfitting.
#wisdom

Every discovery contains an irrational element or a creative intuition.

Karl Popper
#wisdom

The only useful function of a statistician is to make predictions, and thus to provide a basis for action.

W. Edwards Deming
🤔1
#toboml #imbalanced #smote #articles


Whatever you do, do not use SMOTE or variants thereof to create synthetic data (see the excellent paper: “To SMOTE, or not to SMOTE?").

ABSTRACT
Balancing the data before training a classifier is a popular technique to address the challenges of imbalanced binary classification in tabular data. Balancing is commonly achieved by duplication of minority samples or by generation of synthetic minority samples. While it is well known that balancing affects each classifier differently, most prior empirical studies did not include strong state-of-the-art (SOTA) classifiers as baselines. In this work, we are interested in understanding whether balancing is beneficial, particularly in the context of SOTA classifiers. Thus, we conduct extensive experiments considering three SOTA classifiers along the weaker learners used in previous investigations. Additionally, we carefully discern proper metrics, consistent and non-consistent algorithms and hyper-parameter selection methods and show that these have a significant impact on prediction quality and on the effectiveness of balancing. Our results support the known utility of balancing for weak classifiers. However, we find that balancing does not improve prediction performance for the strong ones. We further identify several other scenarios for which balancing is effective and observe that prior studies demonstrated the utility of balancing by focusing on these settings.


Вообще данная статья оставляет двойственные впечатления. С одной стороны, много датасетов, разумность при отбрасывании "слишком простых" датасетов, выбраны сильные модели, обещан учёт метрик калибрации, вроде даже HPT, так что собирался её похвалить и привести в пример.

Потом выясняется, что смотрели в основном по ROC AUC (а нахрена, если основная претензия к выравнивателям баланса в том, что они разрушаю калибрацию?), HPT непонятно, делали ли вообще, зачем-то ввели какие-то "apriori хорошие" настройки - это что, прямая утечка? нафиг такое надо?

Если то, что у них названо validation HPs, это и есть HPT на validation set в общепринятом понимании, то какого фига перформанс для них всегда хуже, чем для a-priory HPs? как они вообще получили эти чудесные apriory HPs для всей сотни своих датасетов? Как они делали HPT, сколько комбинаций перебирали, может, 2-3? Ни слова в статье.

Ну и самое интересное: как, глядя на свои же графики, можно сделать неправильный вывод??
"With a-priori HPs, presented in Figure 1(a), all four SMOTE variants achieved considerably better prediction quality than their respective baselines. They were also better than the simple random oversampler. " Тут график интерпретирован верно.


Но вот дальше.. "Considering validation HPs, presented in Figure 1(b), balancing significantly improved prediction for the weak classifiers: MLP, SVM, decision tree, Adaboost and LGBM. However, for the stronger classifiers, XGBoost and Catboost, it did not." Чуваки, с каких пор LGBM является слабой моделью, и опять же, посмотрите на свои графики, всегда есть SMOTE-модель, которая как минимум не хуже бейзлайна. Так зачем обсирать метод, который для 7 из 9 моделей улучшает результаты, а для 2 остальных по крайней мере не ухудшает?


Я просто офигеваю с авторов. Они не проверили ни одной калибровочной метрики. только ROC AUC и F1. И этот автор оранжевого курса как попка за ними повторил "Whatever you do, do not use SMOTE or variants thereof to create synthetic data". Интересно, он сам вообще читал "превосходную статью", на которую ссылается?
#toboml #ccmp

Забавно, в оранжевой книге ML нашел главу на тему, по которой я, собственно, написал статью и сделал небольшое исследование, Convex combination of model predictions (CCMP).
У меня, однако, не прямое комбинирование, а несколько более хитрое.
Статья пока не опубликована, т.к. хотелось показать лучшие практики кодинга, и перфекционизм завёл в паралич )

У Карла есть целый блокнот на эту тему.
2
#wisdom

The greatest value of a picture is when it forces us to notice what we never expected to see.

John Tukey
#wisdom

There are two kinds of fools: one says, “This is old, therefore it is good”; the other says, “This is new, therefore it is better.”

William Ralph Inge (1931)
#toboml #boosting #anns #deepgbm

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

When it comes to tabular data it has been found that artificial neural networks (ANN) are, quite literally, a waste of time.
In Figure 11.1, which plots performance against time (on a logarithmic scale), to the left we can see our linear and decision tree models and on the RHS are neural network estimators which at best on par with the Random Forest, and none achieving the SoTA performance of XGBoost or CatBoost seen at the very top of the plot. This is potentially because tabular data does not form a smooth continuous hypersurface, due to noisy data, missing values, categorical features, features with disparate ranges (for example salary and age, etc.) all working against the manifold hypothesis which neural networks make use of. In view of these performance and computational cost issues, unless one has a very good reason for wanting to use neural networks for tabular data I would be very much inclined to suggest sticking to the classical techniques we have seen earlier.

Карл, кажется, смешивает всё в одну кучу, коней, людей. Указывать как причину features with disparate ranges - это уже днище полное. Самое главное - нет ведь ограничений на "базовых учеников" в градиентном бустинге, ими вполне могут быть нейронки. Просто это почему-то не получило распространения.
Хотя, если погуглить, находится deepgbm, авторы которого в сравнении прямо побивают всех и вся. Надо бы самому его попробовать ) Хотя нет, там не бустинг над нейронками, там гибрид.

Короче, с таким деревянным шовинизмом я не согласен, Карл! ) Ты же сам рассказывал в предыдущих главах о No Free Lunch theorem.
Можно ли за 10 минут заполнить бэклог свободного рисерча на месяц?
Изи подумал я, засек время и начал это писать:

1) натренировать графовую нейронку на данных логов пользователей с таргетом - бизнес-метриках, чтобы использовать ускорения AB (типо matching с использованием сессий, но без нарушения sutva)

2) ту же нейронку проверить в сегментации (эмбединги + кластеризация)

3) её же использовать для поиска aha момента (ищем подграф с наибольшим приростом в метрике, чем-то типо имитаций shap)

4) кластеризовать товары потребительские корзины по БЖУ, времени сборки и составу (не состав = продукты в корзине, а состав = то из чего продукты состоят)

5) Научиться предиктить LTV по первым сессиям и вывести отсюда ключевые факторы успешного удержания в продукте

6) Вывести в отчетик "авто-факторный анализ" - тупо перегруппировать метрику по всем разумным атрибутам и отсортировать по приросту значимости изменений (DSensei это и делали на старте)

7) Исследовать есть ли сетевые эффекты в приложениях для заказа еды

8) Научиться считать стат. значимость shapley значений и ускорить любой ручной анализ "факторов успеха" в 10-100 раз

9-10) за 10 минут не успел зато честно 🗿

за 10 минут после написания нагуглил проекты только для 3 из 8 идей (aha моменты, прогноз ltv, автооанализ KPI), так что 5 - свободны, можно тестить.
Please open Telegram to view this post
VIEW IN TELEGRAM
12 выводов за 12 недель работы с GPT моделями:

1) на малых проектах 3-4 своих кастомных функции-обертки api сделать лучше, чем ковыряться в массивном langchain с 100 уровнями абстракций.

2) прокси для аналитики запросов лучше чем логирование в функциях и методах

3) модель пишет промпты для себя кратно лучше человека

4) базу знаний для RAG модель тоже лучше составит сама для себя из сырых данных

5) RAG с 4-20 примерами пока что сильно кост эффективнее запроса с огромным контекстом

6) для поиска по контексту в RAG может залететь попросить GPT сформулировать из сообщений и истории вопрос в базу знаний и искать новый контекст по этому вопросу.

7) RAG с цепочкой валидации в 2-3 шага улучшает ответы в 2-3 раза.

8) увеличение глубины шагов валидации дальше 3 не улучшает ответы в большинстве задач общения с клиентами

9) модели плохо понимают контекст отрицания, пишем только в прямолинейной логике.

10) подзадачи обработки лучше выносить в цепочку диалога, например, сначала просим ответить, потом проверить ответ на валидность, потом улучшить, потом отформатировать.

11) RAG + fine-tuning в свой GPTs работает сильно лучше просто RAG

12) в fine-tuning своего GPTs лучше передавать базовую инфу и руководства к стилю ответа, а не пытаться запихнуть часть инфы для QA

NB все субъективно, выводы из небольшого количества продовых продуктов (<20 Шт) и вообще все вокруг - галлюцинация SORA 😮‍💨
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Впечатлили меня истории про то, как фаундеры добыли денег для старта компаний, мои любимые:

Apple - Джобс продал машину, Возняк калькулятор (тык)
Airbnb (W09) - продавали хлопья с прикольным дизайном за 40$ (тык)
Palta - написали книжки про фотошоп (тык)

Теперь к практике:
stdin:
аналитик-разработчик - 1 шт
страсть к аналитическим темкам - ∞

stdout:
пишу книгу по стат. проверке гипотез
каждый день создаю по теме не менее 1 единицы контента на любую платформу
в конце недели подвожу traction
This media is not supported in your browser
VIEW IN TELEGRAM
"Познавая море — познаешь себя"
Автора не нашел, но звучит красиво

Немного выпал из-за переезда, зато собрал бинго проверенных способов как продуктивно сменить обстановку (брал из YC интервью и проверял):

1) поменять место пребывания. От лайтового - снять квартиру в другом районе, до переезда на другой континент

2) поменять сферу доп. исследований. Просто читать/слушать/смотреть несколько дней про новую для себя сферу. NB - кажется, что это может размывать фокус, но можно за час найти 100+ историй, как люди получали пользу от кросс-информационных исследований.

3) вносить изменения в привычные дела. Тут все, на что только хватит фантазии, посыл в том, чтобы расшатать привычные установки, e.g. идти домой новой дорогой, купить необычные продукты, чистить зубы другой рукой. Звучит странно, но если делать регулярно и разнообразно, то заговор рептилоидов (aka день сурка) рушится и кажется, что жизнь дает больше шансов.

Зачем все это?
Как минимум - чтобы пернатый зверь не покинул границы кальциевую коробочку от однообразия жизни
Как максимум - задействовать спрятанные силы своего жизненного strategic vision
#100дневка
29.1

stdin: найти телефон Сэма Альтмана, позвонить
stdout: + 1 - (650) - 906 - 6810, запись действа

Ощущения:
У меня сейчас нет конкретного вопроса к Sam Altman, поэтому опишу ощущения за время выполнения:
1) как блин найти его вообще, это топ-1 человек в AI мире (первые 10 минут)
2) штош, попробуем стандартный путь поиск в google и smm
3) такс, кажется что-то есть, а если углубиться, пошарить по сайтикам позаходить с разных сторон (тут tempmail, tempnumber и vpn в помощь)
4) как же я хорош, как мощны мои поисковые лапища, я теперь вообще любого могу найти и связаться
5) немного успокоился, это скорее всего не 100/10 по качеству, т.к. На телефона автоответчик (хоть и представляется сэмом), наверняка есть и личный телефон и в будущих коммуникациях может быть полезно целиться в него.
#music #smokie

A summer evening on Les Champs-Élysées
A secret rendezvous they planned for days
A sea of faces in a crowded café
A sound of laughter as the music plays

Jean-Claude was a student at the University
Louise-Marie is just a world away
He recall the night they met was warm with laughter
The words were music as she turned away

I′ll meet you at midnight,
Under the moonlight
I'll meet you at midnight
But Jean-Claude, Louise-Marie will never be

Each cigarette would light a thousand faces
Each hour that pass seem like a thousand years
Midnight was turning into empty spaces
The sound of laughter disappeared

I′ll meet you at midnight
Under the moonlight
I'll meet you at midnight
Oh, but Jean-Claude, Louise-Marie will never be

A summer morning on Les Champs-Élysées
The empty table in the street café
The sunlight melting through an open doorway
Jean-Claude has left to face another day

I'll meet you at midnight
Under the moonlight...

https://www.youtube.com/watch?v=WoTLnaI1NEY