Aspiring Data Science – Telegram
Aspiring Data Science
386 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
#medicine #neuralink

"При подготовке к операции хирурги с помощью фМРТ провели многочисленные оценки зон головного мозга пациента, чтобы с максимальной точностью определить место размещения имплантатов — чипов, распознающих активность головного мозга в его отдельных областях. Но даже после этого в процессе 15-часовой операции на открытом мозге они консультировались с пациентом для уточнения мест установки датчиков.

Два имплантата считывали «мысли» пациента о желании двигать рукой, а три других принимали сигналы от датчиков на руке и запястье. Фактически врачи запустили два обходных пути для нейросигналов, барьером на пути которых стала травма позвоночника (спинного мозга). Один шунт заставлял руку совершать движения через систему накладных электродов (на позвоночник и предплечье), а другой возвращал в мозг сигналы от датчиков тактильных ощущений. Дальше мозг справлялся сам — связывал одно и другое и выстраивал новые нейронные цепи в головном мозге таким образом, чтобы человек воспринимал движение руки и тактильный отзыв в едином пакете."

https://3dnews.ru/1090925/mozgovie-implantati-i-ii-chastichno-vernuli-chuvstvitelnost-i-podvignost-paralizovannomu-patsientu
Attention, tabular data!
TabR is coming

Что ж, вот наконец модели на базе attention стали показывать годные результаты на табличных данных!) Если хотите детальнее посмотреть, как, то есть прекрасный обзор новой архитектуры TabR
от Андрея Лукьяненко

Метод выглядит многообещающим, но я бы пока к нему пригляделся в реальных приложениях. Как я понял из статьи (поправьте, если не так), для бустингов и TabR не делали почти никакого feature engineering. Но это очень сильно бустит перформанс бустингов в реальных задачах

Так что будет очень интересно сравнить эти 2 модели, когда в обеих будут мощные фичи 🔥
#ml #modelling #evaluation #masters

Как оценить вероятность, что обученная модель достигла своих результатов не благодаря случайному совпадению?

Мастерс предлагает N раз переобучить модель, каждый раз перемешивая таргет, и подсчитать процент случаев, когда метрика "перемешанной" модели лучше, чем оригинальной. Что-то вроде Boruta, но не для предикторов, а для таргета.

Более того, он раскладывает преимущества от использования модели на 3 фактора: обобщающую способность, смещение данных, и смещение модели:

TrainingGain = Ability + InherentBias +TrainingBias

Так как "перемешанные" модельки не получают аутентичных связей предикторов с таргетом, в них первый компонент отсутствует:

PermutedGain = InherentBias +TrainingBias

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

Зачастую inherent bias можно получить аналитически, например, в финансовых задачах это может быть результат от buy & hold на растущем рынке. Тогда можно оценить

 TrainingBias = PermutedGain - InherentBias

"It tells us how much the process of training optimistically inflates the gain. If the TrainingBias is large, this constitutes evidence that the model may be too powerful relative to the amount of noise in the data. This information can be particularly handy early in model development, when it is used to compare some competing modeling methodologies to judge whether additional data is required.

Remember that permutation can also be used with cross validation, walk-forward testing, and most other out-of-sample evaluation methods in order to compute the probability that good observed out-of-sample results could have arisen from a worthless model. The principle is exactly the same, although of course it makes no sense to eliminate training bias from out-of-sample results."

Пример вычислений со слабым классификатором:

"Called fraud 141 of 100000 (0.14 percent)
Actual fraud 0.94 percent
p = 0.57600
Original gain = 0.55370 with original inherent bias = 0.52818
Mean permuted gain = 0.56517
Mean permuted inherent bias = 0.50323
Training bias = 0.06194 (0.56517 minus 0.50323)
Unbiased actual gain = 0.49176 (0.55370 minus 0.06194)
Unbiased gain above inherent bias = -0.01147 (0.49176 minus 0.50323)

In this no-power example, the number of cases called fraud (0.14 percent) is quite different from the actual number (0.94 percent). Such variation is common when there is little predictive power. The most important number in this table is the p-value, the probability that a worthless model could have performed as well or better just by luck. This p-value is 0.576, a strong indication that the model could be worthless. You really want to see a tiny p-value, ideally 0.01 or less, in order to have solid confidence in the model.

The per-case gain of the unpermuted model is 0.55370, which may seem decent until you notice that 0.52818 of it is inherent bias. So even after optimization of performance, it barely beats what a coin-toss model would achieve. Things get even worse when you see that the mean gain for permuted data is 0.56517, better than the original model!"
#nature #biology #evolution #genitals #fun

В почту свалилось письмо от Alpina с рекламой новой захватывающей книги. )

«Парадокс пениса. Уроки жизни из мира животных» Эмили Уиллингем

"Герои этой книги: черви, которые самооплодотворяют себя; пауки для которых пенис не только средство для эротических приключений, но и орган осязания (а еще они пользуются им при захвате жертв на охоте); некоторые усоногие отращивают пенис к сезону спаривания, а затем сбрасывают его, другие удлиняют, наращивая дополнительные сегменты (не очень реализуемый лайфхак); бабочки парусники могут видеть и вульвой и пенисом, они у них оснащены фоторецепторами; у многих паучих две вагины, а у голожаберного моллюска три пениса; пенис крокодила всегда находится в жестком состоянии и выскакивает наружу, как подушка безопасности; сумчатые мыши в определенный момент жизни начинают многочасовые тантрические упражнения, после этого умирают от истощения; самцы медоносной пчелы также умирают после секса, эякуляция отрывает им пенис; у 97% видов птиц нет пениса, они передают гаметы партнеру через клоакальный поцелуй; у самки гиены не просто огромный клитор, она через него же и рожает; многие самки приматов сообщают самцам о готовности к зачатию изменением цвета половых органов; киты иногда совокупляются втроем (читайте книгу). И все это не просто перечисление удивительных фактов. Это рассказ о том, почему пенисы именно такие, почему и как выигрывают те или иные эволюционные стратегии.

И о размерах. Самый большой у синего кита, средняя длина его пениса составляет 3,7 м. У одного из японских китов пенис всего 2,7 м, но огромные яички весом около тонны. Среди наземных млекопитающих побеждают африканские лесные слоны со своими скоромными 90 см. Самый большой относительно размера тела у усоногих, их пенис в восемь раз превышает длину тела, если бы они были размером с синего кита, у них были бы члены 200-метровой длины. Они, кстати, еще и гермафродиты, так что партнёром может стать и сосед слева, и сосед справа. Согласитесь, удобно."

https://alpinabook.ru/catalog/book-paradoks-penisa/
1
#python #codegems #fs #expandvars

Пошёл тестировать BAMT. Пример из руководства выпал с ошибкой, смотрю, он пытается создать файл

C:\Users\Roman\BAMT\Nodes_data

Посмеялся, думаю, щас заведу им issue чтоб по дефолту заменили на какое-нить

%%LOCALAPPDATA%%\aimclub\BAMT\Nodes_data

Но сначала сам заменил локально, потестить:


PermissionError Traceback (most recent call last)
~\AppData\Local\Temp\ipykernel_3236\1667079916.py in <module>
----> 1 bn.fit_parameters(data)

C:\ProgramData\Anaconda3\lib\site-packages\bamt\networks\base.py in fit_parameters(self, data, dropna, n_jobs)
489
490 if not os.path.isdir(STORAGE):
--> 491 os.makedirs(STORAGE)
492
493 # init folder

C:\ProgramData\Anaconda3\lib\os.py in makedirs(name, mode, exist_ok)
213 if head and tail and not path.exists(head):
214 try:
--> 215 makedirs(head, exist_ok=exist_ok)
216 except FileExistsError:
217 # Defeats race condition when another thread created the path

C:\ProgramData\Anaconda3\lib\os.py in makedirs(name, mode, exist_ok)
213 if head and tail and not path.exists(head):
214 try:
--> 215 makedirs(head, exist_ok=exist_ok)
216 except FileExistsError:
217 # Defeats race condition when another thread created the path

C:\ProgramData\Anaconda3\lib\os.py in makedirs(name, mode, exist_ok)
213 if head and tail and not path.exists(head):
214 try:
--> 215 makedirs(head, exist_ok=exist_ok)
216 except FileExistsError:
217 # Defeats race condition when another thread created the path

C:\ProgramData\Anaconda3\lib\os.py in makedirs(name, mode, exist_ok)
223 return
224 try:
--> 225 mkdir(name, mode)
226 except OSError:
227 # Cannot rely on checking for EEXIST, since the operating system

PermissionError: [WinError 5] Access is denied: '%LOCALAPPDATA%'

Оказалось, питон на винде, в отличие от Проводника, не поддерживает сокращения типа %LOCALAPPDATA%. Получается, перед работой с файловой системой надо сначала любой путь пропускать через os.path.expandvars в качестве лучшей практики.

А лучше всего место для хранения настроек, раз уж локальная директория не подходит, получить с помошью platformdirs :

>>> from platformdirs import *
>>> appname = "SuperApp"
>>> appauthor = "Acme"
>>> user_data_dir(appname, appauthor)
'C:\\Users\\trentm\\AppData\\Local\\Acme\\SuperApp'
>>> user_data_dir(appname, appauthor, roaming=True)
'C:\\Users\\trentm\\AppData\\Roaming\\Acme\\SuperApp'
>>> user_cache_dir(appname, appauthor)
'C:\\Users\\trentm\\AppData\\Local\\Acme\\SuperApp\\Cache'
>>> user_log_dir(appname, appauthor)
'C:\\Users\\trentm\\AppData\\Local\\Acme\\SuperApp\\Logs'
>>> user_documents_dir()
'C:\\Users\\trentm\\Documents'
>>> user_downloads_dir()
'C:\\Users\\trentm\\Downloads'
>>> user_pictures_dir()
'C:\\Users\\trentm\\Pictures'
>>> user_videos_dir()
'C:\\Users\\trentm\\Videos'
>>> user_music_dir()
'C:\\Users\\trentm\\Music'
>>> user_desktop_dir()
'C:\\Users\\trentm\\Desktop'
>>> user_runtime_dir(appname, appauthor)
'C:\\Users\\trentm\\AppData\\Local\\Temp\\Acme\\SuperApp'
1
#ml #ensembling #regression #masters

У Тима есть любопытное сравнение RMSE методов ансамблирования для задачи регрессии.

"Model Quality:
• Three moderately good models
• These, plus a fourth completely worthless model
• These, plus a fifth good but strongly biased model
Number of training cases:
• A small dataset consisting of 20 cases
• A large dataset consisting of 200 cases
Noise contamination:
• A clean dataset, in which the true values are totally uncontaminated
• A noisy dataset, in which the true values are heavily contaminated with random noise

The columns in the summary table are labeled as follows:
Raw: Mean squared error of a single model
Avg: The predictions are simply averaged
Uncons: Unconstrained linear regression
Unbias: Constrained linear regression with no bias offset term
Bias: Constrained linear regression including a bias offset term
VarWt: Variance weighting
Bag: Bagging, as discussed in Chapter 5
GRNN: General regression neural network smoothing"
👍1
#ml #nadarayawatson #oil #ensembling #gazprom

Виктор Котежеков -Использование ИИ в процессах гидродинамического моделирования нефтегазовых месторождений

Понравилась идея ансамблировать с помощью Байесовской линейной регрессии. Консенсус моделируется как HalfNormal распределение (отрицательные веса запрещены) с растущим со временем стандартным отклонением.

Очень интересно применение регрессии Надараи-Ватсон с ядром, дающим разные веса разным группам входов (ГДИС, ГИС, сейсмо). Про этот вид регрессии слышал у Дьяконова, сам не пробовал ещё.

https://www.youtube.com/watch?v=tODbO5eH3vw
#ml #regression #astroml #cylowess #locfit #gaussianprocess

Как сделать Linear, Ridge, Lasso нелинейными переводом входов в гауссов базис.

https://notebook.community/DanielAndreasen/Programmers-Club/notebook/Regression%20-%20an%20example%20notebook
Forwarded from Artem Ryblov’s Data Science Weekly (Artem Ryblov)
Mindful Modeler by Christoph Molnar

The newsletter combines the best of two worlds: the performance mindset of machine learning and the mindfulness of statistical thinking.

Machine learning has become mainstream while falling short in the silliest ways: lack of interpretability, biased and missing data, wrong conclusions, … To statisticians, these shortcomings are often unsurprising. Statisticians are relentless in their quest to understand how the data came about. They make sure that their models reflect the data-generating process and interpret models accordingly.
In a sea of people who basically know how to model.fit() and model.predict() you can stand out by bringing statistical thinking to the arena.
Sign up for this newsletter to combine performance-driven machine learning with statistical thinking. Become a mindful modeller.

You'll learn about:
- Thinking like a statistician while performing like a machine learner
- Spotting non-obvious data problems
- Interpretable machine learning
- Other modelling mindsets such as causal inference and prompt engineering

Link
https://mindfulmodeler.substack.com/

Navigational hashtags: #armknowledgesharing #armnewsletters
General hashtags: #modelling #modeling #ml #machinelearning #statistics #modelinterpretation #data #interpretability #casualinference

@accelerated_learning
👍1
#ads #marketing #ai

"Система следит за тем, как посетители магазина задерживаются у витрин, наклоняются к ним, берут в руки товары, сравнивают их и совершают прочие действия. Данные с камер транслируются на платформу генеративного ИИ, которая в виде «консьержа-аватара» делает им персональные предложения. В Fujitsu считают, что эта технология способствует возвращению покупателей к прилавкам с намерением приобрести конкретный товар.

Компания разработала эту платформу при содействии группы учёных под руководством Наото Ондзо (Naoto Onzo), директора Института маркетинга и коммуникаций при университете Васэда. Исследователи выдвинули гипотезу, что «на решения потребителей о покупке влияют теплота и компетентность, индикаторы осведомлённости поставщика услуг о личности и знаниях потребителя, а также дизайн и функциональность продукта». На основе этой гипотезы была разработана модель, которая «оценивает вероятность перемен в поведении при обслуживании клиента и [показе ему] рекламного контента на основе данных о поведении и атрибутах отдельных потребителей, проанализированных технологией распознавания человека».

В Fujitsu согласились, что эта идея имеет перспективы, поскольку клиенты хотят «увлекательного клиентоориентированного опыта», но разработка соответствующего контента требует времени, денег и кадровых ресурсов. ИИ делает то же быстрее и дешевле. Технология будет тестироваться в супермаркете до 15 октября, и основанное на этом пилотном проекте решение будет подготовлено уже до конца 2023 финансового года — он завершится 31 марта 2024 календарного года."

https://3dnews.ru/1091057/kameri-v-yaponskom-supermarkete-stali-nablyudat-za-pokupatelyami-chtobi-pokazivat-im-tselevuyu-reklamu
#ml #bayesnetworks #bamt

Попытка потестировать Bamt провалилась. В руководстве они выкатили пример предсказания байесовской сетью наличия питомца по профилю vk юзера. Получили точность 94% и на том посчитали пример завершённым. При более детальном рассмотрении оказалось:
1) питомец был всего у 5% пользователей, и bamt ВСЕГДА предсказывала класс 0 (те ничему не училась)
2) из 80+ фичей авторы библы взяли лишь 8. я ещё удивлялся, почему. она работает ОЧЕНЬ МЕДЛЕННО. 30k примеров, 8 фичей обучается примерно секунд 50. с мультипроцессингом.
3) в примере они обучались на train set и потом предсказывали на ... sample(100) от того же train set.
4) катбуст и особенно xgboost обучались за доли секунды. но даже они не смогли ничему научиться, что было видно на CV, потому что.. отобранные авторами 8 фичей были нерелевантными.
5) предсказывать наличие питомца всё же было можно, и с хорошей точностью, надо было просто взять все фичи. доказано бустингами. но bamt над всеми фичами сожрал всю память на ноуте. а на компе питон младше 3.9, bamt не поставился. Махнул я на всё рукой, у кого много памяти (от 32gb) и новый питон, можете попробовать мой блокнотик в аттаче.
6) гауссовы смеси в bamt постоянно вылетали с fitting the mixture model failed because some components have ill-defined empirical covariance (for instance caused by singleton or collapsed samples). Try to decrease the number of components, or increase reg_covar. В MathUtils.py к вызовам GaussianMixture(n_components=i, random_state=0) пришлось добавить с потолка reg_covar=1e-1, чтобы оно просто запускалось. Хотя как это влияет на качество решения - вопрос.

Ну и зарепортил недочёты. Вдруг что-то исправят.
👍4
#masters #ensembling #localaccuracy

Ещё одна оригинальная техника ансамблирования, с названием "по локальной точности". Для каждого экземпляра при выдаче прогноза участвует только одна из моделей ансамбля - "наиболее компетентная локально". в обучающем наборе ищется N (например, 10) примеров, наиболее похожих на прогнозный (по расстоянию в метрическом пространстве - например, евклидовом). Точность каждой модели ансамбля рассчитывается "локально" на этих N примерах, ответ позволяется дать победившей модели.
#dask #coiled

Так смешно. Мэтт Роклин, глава Coiled (и создатель Dask), прислал мне емэйл, что, мол, я престал пользоваться их продуктом, не предоставлю ли обратную связь, почему так вышло? Не знаю, часть ли это стандартной практики контроля качества, или связано с нашей беседой по поводу отсутствия в койлед функциональности мультипотоков, которая есть в опенсорсном dask-distributed, на что я указал им в issue и они пытались мне помочь (но их советы не сработали). Я ответил на письмо, что детальный feedback предоставлю, но мне только нужно понять, насколько развитие dask-distributed создаёт конфликт интересов с развитием коммерческого Койлед, к примеру, что будет, если я предложу PR по добавлению в AWS dask-cloudporvider спотовых инстансов, которых там по странному стечению обстоятельств не завезли. В течение часа Мэтт ответил, что это не проблема, и парни из nvidia, которые тоже поддерживают dask, будут рады это принять. Ну хорошо, подумал я, люди открыты меняться в лучшую сторону, и честно изложил во втором письме свои мысли по поводу того, что Койлед берёт слишком много денег за весьма скромную функциональность, и не пытается даже решить актуальные проблемы: выбор серверов где нагрузка юзера будет считаться быстрее и дешевле, гетерогенные кластера в разных облаках, прогноз interruption rates, prices, perf scores с помощью ML и предоставление пользователю этих оценок. Я как-то думал, это приведёт к плодотворной дискуссии, но прошло уже несколько дней, а мой визави просто пропал )

В связи с этим вспомнился анекдот:

- Вы указали в резюме, что Вашим основным недостатком является привычка всегда говорить напрямик и только правду, верно?
- Да.
- Но, знаете, я думаю, это вовсе не недостаток, а даже преимущество.
- Да мне по*уй, что ты там думаешь.
😁2
#selfdriving #yandex #taxi

"Компания «Яндекс» запустила в тестовом режиме сервис беспилотного такси в московском районе Ясенево в июне 2023 года. Стоимость любой поездки в роботакси составляет 100 рублей. В компании отмечали, что в тестировании могут поучаствовать пользователи от 18 лет. Заказать поездку можно в приложении «Яндекс Go».

Первые испытания роботакси «Яндекс» провёл в 2018 году в Иннополисе, после чего они были перенесены в Москву. К июню 2023 года беспилотные машины «Яндекса» наездили 24 млн км, а жители Иннополиса заказали более 60 тыс. поездок."

https://3dnews.ru/1091071/yandeks-pristupil-v-moskve-k-testirovaniyu-bespilotnih-avtomobiley-bez-voditelya-za-rulyom
#masters #ml #entropy #mutualinformation #featureselection #pld #fleuret

Читаю последние главы книги "Assessing and Improving Prediction and Classification" Тима Мастерса, и прямо хочется взять и самому реализовать расписанные там алгоритмы отбора предикторов на основе прямого последовательного включения (forward stepwise selection) и теории информации. Тем более что у меня же есть в планах большое сводное тестирование методов FS. Почему прямого - он самый быстрый, следовательно, в современных реалиях, когда предикторов десятки тысяч, самый практичный.

Самый простой вариант называется PLD, когда на каждом шаге в набор активных предикторов S выбирается фича, имеющая самую высокую взаимную информацию (ВИ/MI) с таргетом минус среднюю ВИ с уже зафиксированными переменными S.

Улучшенная версия Fleuret ещё более интеллектуальна, она смотрит на условную ВИ зафиксированных переменных и таргета при данном кандидате:

Suppose X is a candidate for inclusion and Z is a variable that is already in S, the set of predictors chosen so far. The conditional mutual information of X and Y given Z measures how much the candidate X contributes to predicting Y above and beyond what we already get from Z. A good candidate will have a large value of I(X;Y|Z) for every Z in S. If there is even one variable Z in S for which I(X;Y|Z) is small, there is little point in including this candidate X, because it contributes little beyond what is already contributed by that Z.
#ml #featureselection #mrmr #uber

Оказывается, сотрудники Uber уже проводили сравнение методов FS на синтетике (70 фичей, смешно) и 3 реальных датасетах (upsell/crosssell, ~ тысяча фичей) в парадигме mRMR. Работа мне не понравилась:
1) хотелось бы видеть сравнение с другими парадигмами FS
2) что за странный выбор моделей? самой сильной из выбранных был случайный лес. в 2019м бустинги уже были.
3) не было HPT
4) не было ES
5) для синтетики не показали, угадал ли блок FS истинные предикторы
6) непонятно, как обработали категорийку

Самое главное: судя про графикам, отбором признаков вообще заниматься не надо, если модель достаточно мощная. Случайный лес на всех признаках практически всегда не уступал конвейеру с FS. А зачем тогда тратить время на FS?

Но скажу из своего опыта: когда фичей десятки тысяч, и одна из них чуть ли не прямо определяет таргет, + есть изрядно избыточных, сдыхают даже бустинги (а именно, катбуст) - показывают слабую зависимость, хотя по идее должны 100% выучить связь.
Aspiring Data Science
#ml #featureselection #mrmr #uber Оказывается, сотрудники Uber уже проводили сравнение методов FS на синтетике (70 фичей, смешно) и 3 реальных датасетах (upsell/crosssell, ~ тысяча фичей) в парадигме mRMR. Работа мне не понравилась: 1) хотелось бы видеть…
#aws #amazon #cloud

"Компания Amazon отчиталась о работе во II четверти 2023 финансового года, которая была закрыта 30 июня. По ключевым показателям зафиксирован рост. В частности, общая выручка увеличилась в годовом исчислении на 11 % — со $121,2 млрд до $134,4 млрд. По итогам II квартала Amazon продемонстрировала чистую прибыль в размере $6,7 млрд, или $0,65 в пересчёте на одну ценную бумагу. Годом ранее компания понесла чистые убытки около $2,0 млрд, что эквивалентно $0,20 на одну акцию."

https://servernews.ru/1091078