Aspiring Data Science
327 subscribers
390 photos
10 videos
6 files
1.46K links
Заметки экономиста о программировании, прогнозировании и принятии решений, научном методе познания.
Контакт: @fingoldo

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

Imho "capital allocation, not primary signal generation" thing is a BS. It's just a different name for the same thing. Say, I have 3 strategies that normally get allocated $1 each. Then at some moment my ML model suggest to allocate $100 to model #2. I can, of course, call this "capital allocation", but it's in essence a signal generation as well, 'cause the rest of allocations are close to noise. But maybe I misunderstood Ernest and he meant allocations like 0.3, 0.3, 0.4? But hard to believe such high % can be given to strategies that are not expected to work well. Also predicting "whether certain trading parameters will perform well today' seems like, still, indirect prediction of market movement. It can't be other way round, 'cause every trading policy should be based on expected asset price movements. Having a 'certain parameters' filter works 2-ways: it reduces train dataset size for ML (which is bad), but it theoretically allows ML to focus more on particular search space (which is probably good, as the model transitions from jack of all trades, master of none, to master of some). Which force prevails, is a matter of experimentation and asset/TP subtleties.

https://www.youtube.com/watch?v=BhaJVZNpL4M
#gaussianprocess #optimization #global

Честно говоря, пока что кажется, что толку от "байесовости" гауссовых процессов в задаче глобальной оптимизации не так уж много. Да, рассчитывается неопределённость в каждой точке, ну так она:

1) зачастую крайне слабо отражает реальное положение относительно искомой функции
2) пропорциональна расстоянию до ближайших исследованных точек, так что её можно оценить и для "классических" ml алгосов.

Есть ещё аргумент, что функции приобретения в случае gp рассчитываются аналитически, но ведь их можно заменить эвристикой. Скоро узнаем.
#smbo #hpo #hpt #gaussianprocess #parzen #tpe #cmaes #constantliar

Algorithms for Hyper-Parameter Optimization

Статья о Sequential Model-Based Global Optimization (SMBO) в т.ч. от Yoshua Bengio, на которую ссылаются в доке hyperopt.

"EI functions are usually optimized with an exhaustive grid search over the input space, or a Latin Hypercube search in higher dimensions. However, some information on the landscape of the EI criterion can be derived from simple computations [16]:

1) it is always non-negative and zero at training
points from D,
2) it inherits the smoothness of the kernel k, which is in practice often at least once
differentiable, and noticeably,
3) the EI criterion is likely to be highly multi-modal, especially as the number of training points increases. The authors of [16] used the preceding remarks on the landscape of EI to design an evolutionary algorithm with mixture search, specifically aimed at optimizing EI, that is shown to outperform exhaustive search for a given budget in EI evaluations."
Как следует из статьи, пытаются даже само Ожидаемое Улучшение (EI) максимизировать генетиком, я просто не понимаю, для чего, ведь полный перебор по нему идёт очень быстро. UPD: хотя дальше есть указание на странное время работы алгоритма. Applying the GP to the problem of optimizing DBN performance, we allowed 3 random restarts to the CMA+ES algorithm per proposal x
∗, and up to 500 iterations of conjugate gradient method in
fitting the length scales of the GP. The squared exponential kernel [14] was used for every node. The CMA-ES part of GPs dealt with boundaries using a penalty method, the binomial sampling part dealt with it by nature. The GP algorithm was initialized with 30 randomly sampled points in H. After 200 trials, the prediction of a point x∗ using this GP took around 150 seconds.


"Finally, we remark that all hyper-parameters are not relevant for each point. For example, a DBN with only one hidden layer does not have parameters associated to a second or third layer. Thus it is not enough to place one GP over the entire space of hyper-parameters. We chose to group the hyper-parameters by common use in a tree-like fashion and place different independent GPs over each group. As an example, for DBNs, this means placing one GP over common hyper-parameters, including categorical parameters that indicate what are the conditional groups to consider, three GPs on the parameters corresponding to each of the three layers, and a few 1-dimensional GPs over individual conditional hyper-parameters, like ZCA energy (see Table 1 for DBN parameters)."
Акцентируются сложности сэмплирования параметров поодиночке.

"The tree-structured Parzen estimator (TPE) models p(x|y) by transforming that generative process, replacing the distributions of the configuration prior with non-parametric densities. In the experimental section, we will see that the configuation space is described using uniform, log-uniform, quantized log-uniform, and categorical variables. In these cases, the TPE algorithm makes the following replacements: uniform → truncated Gaussian mixture, log-uniform → exponentiated truncated Gaussian mixture, categorical → re-weighted categorical."
Кратко о работе парценовских оценщиков.

"For the GP approach, the so-called constant liar approach was used: each time a candidate point x∗ was proposed, a fake fitness evaluation equal to the mean of the y’s within the training set D was assigned temporarily, until the evaluation completed and reported the actual loss f(x
∗). For the TPE approach, we simply ignored recently proposed points and relied on the stochasticity of draws from `(x) to provide different candidates from one iteration to the next. The consequence of parallelization is that each proposal x∗ is based on less feedback. This makes search less efficient, though faster in terms of wall time." Фраза constant liar напоминает сразу о плешивом либо усатом )

https://proceedings.neurips.cc/paper_files/paper/2011/file/86e8f7ab32cfd12577bc2619bc635690-Paper.pdf
#google #ads

Удивительно, как подобная дрянь просачивается в рекламу ютуба. Явный фишинг же. Притом, начинаешь жаловаться на объявление, надо заполнить кучу форм, так и потом вылетае ошибка, и жалоба не отправляется. неужели гуглу настолько насрать, что у них за рекламу там размещают?
#gpt #grok

Ржака. Маск призывал повременить с обучением nextgen моделей типа GPT-5, мол, такие они опасные, жуть, а сам в это время пилил Grok?! ))

https://3dnews.ru/1095537/startap-xai-ilona-maska-predstavila-iibota-grok
#bicycles

Мне когда-то дали покататься на велике стоимостью 100+т.р. Я проехался, цены не понял. Тут хотя бы ясно, за что платишь.

"В отличие от других моделей Fiido, которые обычно отличаются компактностью, Titan представляет собой достаточно массивный велосипед с колёсами шириной 10 см, который подходит для езды по любой местности. Конструкция с низкой рамой делает его подходящим для широкого круга людей, а амортизирующая вилка повышает уровень комфорта в процессе езды.

Возможность поочерёдного использования трёх аккумуляторов увеличивает запас хода байка до 400 км. В конструкции предусмотрен электродвигатель мощностью 750 Вт, который позволяет разгоняться до 45 км/ч. Поддерживается пять режимов езды, переключаться между которыми можно с помощью сенсорного экрана. Грузоподъёмность байка составляет впечатляющие 200 кг, за счёт чего он может использоваться для перевозки не только людей, но и грузов.

Fiido Titan с тремя аккумуляторными батареями можно приобрести на сайте производителя по цене в $2397. Если же потребности в сменных батареях нет, то покупатели могут ограничиться версией байка с одним аккумулятором за $1699."

https://3dnews.ru/1095518/predstavlen-elektrovelosiped-fiido-titan-tri-batarei-zapas-hoda-400-km-i-tsena-v-2400
#astronomy #physics #darkmatter

"В радиодиапазоне стала видна неразличимая в оптике галактика, которая получила название Nube (облако или лёгкая накидка по-испански). При оценке массы галактики в 26 млрд солнечных масс, масса обнаруженных в ней звёзд была всего лишь 390 млн солнечных масс. Всё остальное в галактике — это невидимая тёмная материя. Галактика Nube оказалась очень разреженной (диффузной). Половина её массы распределена на 22 тыс. световых лет — это четверть диаметра Млечного Пути."

https://3dnews.ru/1095495/sluchayno-obnarugennaya-galaktika-pribligaet-nas-k-ponimaniyu-tyomnoy-materii
Forwarded from Д-р Соловей
Уроки истории (1)

Четыре века назад Московское царство столкнулось с тяжелейшим кризисом, вошедшим в историю под названием "Смутное время".

НАСТОЯЩИЙ МАТЕРИАЛ (ИНФОРМАЦИЯ) ПРОИЗВЕДЕН, РАСПРОСТРАНЕН И (ИЛИ) НАПРАВЛЕН ИНОСТРАННЫМ АГЕНТОМ СОЛОВЬЕМ ВАЛЕРИЕМ ДМИТРИЕВИЧЕМ. 18+

Одной из ключевых причин национальной катастрофы стала недальновидная политика Ивана Грозного, измучившего страну беспрецедентным даже по меркам Средних веков внутренним террором и подорвавшего ее потенциал бессмысленной многолетней Ливонской войной. Нанесенный ущерб стал миной замедленного действия, которая взорвалась 20 лет спустя под воздействием других объективных и субъективных факторов, поставив под вопрос само существование единого государства.

Одной из примечательных особенностей Смуты стал феномен самозванчества - в частности, три разных человека объявляли себя чудом выжившим царевичем Дмитрием и заявляли претензии на престол. При этом первый и второй Лжедмитрии были не лишены политических и полководческих талантов, добивались кратковременного успеха и вошли в национальную историю. Лжедмитрий I в течение года даже был единоличным главой государства и успел начать реформы, которые часть современных исследователей считает достойными внимания и перспективными. Однако закрепиться в новом статусе на длительный срок не удалось ни одному из самозванцев: Лжедмитрий I был казнен в результате восстания в столице. Его последователя, "Тушинского вора", несколько лет спустя убили собственные соратники.

Весьма интересна роль, которую сыграли в происходивших событиях ближайшие родственники "чудом воскресшего Дмитрия". Последняя жена Ивана Грозного Мария Фёдоровна была выведена Лжедмитрием I из опалы и признала в нем своего сына, официально погибшего в 1591 году. Однако год спустя она с той же уверенностью отреклась от самозванца, а позже торжественно встретила в Москве мощи святого царевича Дмитрия, привезенные из Углича.

Жена Лжедмитрия I, Марина Мнишек, успевшая побыть русской царицей в течение недели, пережила убийство мужа, а позже не только тайно обвенчалась с "Тушинским вором", но и родила от него ребенка. Младенец Иван Дмитриевич (прозванный недоброжелателями Иваном Воренком) даже рассматривался в 1613 году в качестве официального претендента на престол, однако уже год спустя был повешен, а его мать вскоре закончила свои дни в заточении. Таким образом, реальные и мнимые родственники самозванцев действовали в соответствии с конъюнктурными соображениями и вряд ли имели шансы изменить к лучшему печальную судьбу обоих Лжедмитриев и их наследников.

История циклична, а России, большинство лидеров которой не знают ее и принципиально не извлекают из нее уроков, это касается в особенности. Человек, возглавивший наше государство на рубеже XX - XXI веков, точно так же бездарно распорядился своим историческим шансом, растратив нефтедоллары на обогащение личных друзей, репрессии и внешнеполитические авантюры, а аналогию между СВО и Ливонской войной не провел только ленивый.

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

Ну а самозванцам, желающим выдать себя за ушедшего главу государства, стоит помнить о печальной судьбе их давних предшественников, которую никак не изменила временная лояльность "ближайших родственников".
#musk #selfdriving #gpt

Делать роботакси, чтобы считать на их сопроцессорах ответы ГПТ? Мне одному кажется, что это так себе идея?

Вот была же в 2000-х идея облачного гейминга: мощная облачная видяха отрисовывает кадры и транслирует тебе по вебу. Мне тогда казалось это тупостью из-за пингов. Но нет, в неё вложили миллиарды баксов. Ну и где это сейчас?

Насчёт роботакси, хоть туда не вложился сейчас только ленивый, я хоть убей не понимаю выгоды. Двуногие скоты вам быстро засрут, заблюют ваши новенькие Теслы, а маржи получите копейки. И так ведь уже современные мобильные приложения очень сильно уронили норму прибыли в таксобизнесе: раньше лондонские кэбы ломили поистине конские деньги за подвоз, так что когда на рынок зашёл Убер, и клиенты начали осознавать, что не обязательно переплачивать в 10 раз, это вызвало инфаркт у извозчиков. Неужели производители роботакси реально надеются отжать ещё что-то от этого пирога?
#featureselection #hpo #hpt #global #optimization #optuna #scipy

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

Мне надо знать, чем лучше всего искать лучшее количество фичей, хорошо ли с этим справляются существующие библиотеки, какие для них лучше использовать настройки, и надо ли пилить своё решение.

Общий сетап: есть 8 кривых зависимости CV метрики качества от nfeatures: выдуманные, синтетические по связям, синтетические по данным и связям, с шумом (как есть) и сглаженные. Количество фичей там посчитано от 150 до 570.

Замеряю вкупе по всем 8 задачам (в среднем):
1) найденный максимум на истинный максимум
2) среднее по верхнему 25% перцентилю найденных значений на истинный максимум
3) факт нахождения истинного максимум
4) итерацию нахождения истинного максимум к общему числу попыток
5) время поиска

С Оптуной уже есть интересные результаты. Почти всё богатство настроек там в т.н. сэмплерах, я насчитал 7, от случайного до генетиков и парценовского. У некоторых настроек просто тонна. Так как большинство сэмплеров в сравнении будут model-based (smbo), у них (в Оптуне) есть параметр n_startup_trials, т.е., сколько брать случайных точек для инициализации модели. Тут интуитивно не хочется отдавать случаю слишком много ценных попыток, кажется, пусть уж лучше ищет с умом.

Для 100 повторов с n_trials 50 (n_trials - это разрешённое число оценок целевой функции) выяснилось, к примеру, что уменьшение n_startup_trials с 10 до 5 увеличивает долю нахождения истинного максимума с 66.7% до 68%. А вот дальнейшее снижение до n_startup_trials=2 уже снижает долю до 66.87%. А ведь у оптуны этот параметр по дефолту 10! Так что не полагайтесь на дефолты, тестируйте.

Ясно, что 100 повторов для каждого конфига мало, надо тысяч 10 минимум, а лучше 100. Но даже для 1 парценовского сэмплера кол-во комбинаций конфигов под сотню. Придётся, видно, писать распредёлённый бенч под Dask (

А, и уже видно, что TPE сэмплер заруливает случайный: доля найденных истинных максимумов составляет 68% против 18%. Цена принятия решения вполне оправдана: вместо 0.01 секунды тратится 0.28, что несущественно по сравнению с переобучением даже одной терабайтной модели.

UPD. С дефолтными параметрами все сэмплеры Оптуны, кроме TPE, на моем тесте не могут обогнать RandomSampler, поэтому их тонкие настройки тестить даже не буду.
#translations

Я вижу!
#competitions #watersupply

Крис Мольнар упомянул крайне интересное соревнование Water Supply Forecast Rodeo. Кто хочет поучаствовать?! Йихаа, бэйби!! )

Решил влезть в эту сореву. Подкупает несколькими вещами:

1) общественно полезная работа. всегда мечтал сделать что-то полезное для общества в масштабе. это вам не сбербанковские конкурсы, которые только для пиара и где хорошие решения организаторам неинтересны

2) дают данные. notebooks-only соревы я не люблю: организаторы получаю от участников бесплатно идеи, а большинство участников получает хрен.
тут, кажется, можно сильно прокачаться в альтернативных данных. список источников курируется и довольно велик. странно, что пока спутниковые снимки не завезли, вроде пока только табличные данные.

3) это близко к моим научным и практическим интересам: временные ряды, но только в части фичей. таргеты скорее из классики ML Нужно предсказывать по каждому из 26 источников воды суммарный водяной поток за сезон в любую дату до завершения сезона. По сути, можно провести аналогию с 26 активами на бирже, только трейдеры/кванты хотят предсказывать за период не суммы, а экстремумы ряда. Причём наверняка между "сайтами" есть связи, как и между активами.

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

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

6) как раз, возможно, получится докрутить feature selection и hyperparameters tuning и заюзать здесь. а может, и на полноценный стэкинг хватит.

7) призовой фонд в полмиллиона баксов наверняка привлечёт мировых топов в соревновательном DS, и я смогу сравнить силу своих ML решений с лидерами отрасли. пока вижу 350+ команд.

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

Лично мне, кстати, противно смотреть рекомендации кэгглеров, посвящённые чисто эксплойтам дата ликов.
#featureselection #hpo #hpt #global #optimization #optuna

Ну вот, уже не зря делал исследование. Не все настройки парценовского сэмплера Оптуны одинаково полезны. Выходит, в задаче FS хитрейт можно легко поднять с 68% до 76%!
#anaconda #windows #bollocks

Лесорубы-создатели установщика анаконды до сих пор не узнали, как прописывать пути в реестре винды. Обновился до питона 3.11, прописываю пути вручную.
#microsoft #bollocks

Шёл 2023-й год. Это флагманский продукт от мирового лидера с капитализацией триллион долларов.
#watersupply #competitions

Чёт ещё не начал участвовать, а уже разочарование. Ребята уверенно заложили data leak бомбу прям под свой фундамент. Ещё и ресурсы на это оттянут. Ну и нахер надо на это своё время тратить?

"Hi, wanted to participate in this competition and create value for the society. However, I feel that artificial data limitations introduced by the organizers to be able to run the Hindcast stage will influence Forecast stage (where help of DS folks is REALLY need) in a negative way:

spirit of the competition requires that at forecast issue dates ALL present information should be accounted for (for features only, not for targets). However, your current data withholding (for the Hindcast stage) creates artificial gaps in features for no reason. For example, at the day of forecast issue I want to know running water inflow for every 12 preceding months. Or 24. It’s very natural for TS feature creation. But you simply don’t allow this currently. Contestants need to fight to overcome such gaps. Why should we spend extra efforts developing worse models?

I understand the desire of keeping Hindcast data private to be able to estimate true predictive power of the models early. However, ground truth data is in public open APIs and easily downloadable. And there are ways to overfit on ground truth data indirectly. Do you want to make the Hindcast stage a “data leakage” stage? Then at least do that without artificial features/data limiting, so that people don’t spend time and carbon footprint on solutions that go nowhere.

My suggestions:

1) allowing all data up to forecast issue dates without gaps and length limitations, to not waste contestants time on fighting windmills
2) using known in advance TimeSeriesSplit cross-validation schema with big enough folds number, to decrease data leakage impact and judge submissions more fairly. Do not allow hardcoded hyperparameters. Do the training inside of submitted scripts, not only the inference.
3) lowering prices for the Hindcast stage in favor of Forecast stage"

https://community.drivendata.org/t/nagative-influence-of-the-hindcast-stage-possible-fixes/9249
#apple #marketingbs

Надо бы Бобу Борчерсу предложить зафиттить модельку на 15Гб данных на маке с 8Гб RAM. Со ставкой в его годовую зарплату, если сможет/не сможет без свопа и просадок.

"Компанию подвергли критике, потому что 8 Гбайт оперативной памяти в 2023 году — недостаточно для работы, и модель серии Pro должна иметь на борту хотя бы 16 Гбайт.

На эту критику недавно ответил вице-президент Apple по международному маркетингу Боб Борчерс (Bob Borchers) в ходе интервью китайскому видеоблогеру Линь Ил И (Lin YilYi). «Сравнение нашей памяти с памятью другой системы на самом деле не эквивалентно, потому что мы используем память очень эффективно, используем сжатие памяти, и у нас унифицированная архитектура памяти. На самом деле 8 Гбайт на MacBook Pro M3, вероятно, аналогичны 16 Гбайт на других системах. Мы просто сумели использовать её более эффективно. Так что я бы сказал, что людям лучше попробовать то, что они хотели бы сделать на своих системах, и думаю, что они увидят невероятную производительность"

https://3dnews.ru/1095663/apple-zayavila-chto-8-gbayt-pamyati-na-macbook-pro-analogichni-16-gbayt-na-pk
#categoricals #trading

Удивительные результаты получил. Оказывается, лучше тренировать модельку на 1 актив, чем на несколько (даже с нормализацией всех фичей)+категориальная переменная "код актива". Это совпадает с информацией Эрни Чана, но противоречит статье Deep LOB, да и моему опыту в бизнес-проекте, где с заказчиком специально проверяли, будут ли региональные модели перформить лучше чем 1 большая глобальная. Тогда оказалось, что нет, а сейчас что да, и довольно значимо. Так что если у Вас есть категорийки, оказывается, нет серебряной пули, в каждом проекте проверяйте буст от покатегорийных моделей отдельно.

Тут получаются "сапожники без сапог": мы всегда советуем клиентам проводить А/Б тесты, но при этом сами используем в своей работе только то, что хорошо себя зарекомендовало в наших прошлых работах. А это же смещение, и надо с этим бороться. Резонно с "лучших по своему опыту" решений начинать, но по мере развития каждого проекта тестировать на нем надо все опции, более того, регулярно перепроверять (см data drift).

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