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
#hardware #raspberry

"Дебютировал одноплатный компьютер Orange Pi 3B на аппаратной платформе Rockchip. Как сообщает ресурс CNX Software, новинка выполнена в форм-факторе Raspberry Pi 3B, но при этом предлагает более высокую производительность и расширенные возможности в плане хранения данных.

Изделие имеет габариты 85 × 56 мм и весит 49 г. Установлен процессор Rockchip RK3566, объединяющий четыре ядра Cortex-A55 с тактовой частотой до 1,8 ГГц и графический блок Arm Mali-G52 с поддержкой OpenGL ES 1.1/2.0/3.2, OpenCL 2.0, Vulkan 1.1. Есть NPU-модуль с быстродействием 0,8 TOPS для ускорения Caffe, TensorFlow, TFLite, ONNX, PyTorch, Keras, Darknet.

Мини-компьютер может нести на борту 2, 4 или 8 Гбайт оперативной памяти LPDDR4/4x. В оснащение входит eMMC-накопитель вместимостью от 16 до 256 Гбайт.

стройство оборудовано контроллером 1GbE (YT8531C; гнездо RJ-45), адаптерами Wi-Fi 5 (2,4/5 ГГц) и Bluetooth 5.0 (на базе CDTech 20U5622), интерфейсами HDMI 2.0 (до 4Kp60), MIPI DSI × 2 и eDP 1.3, одним портом USB 3.0 и тремя портами USB 2.0, аудиогнездом на 3,5 мм. Упомянуты также 40-контактная колодка, совместимая с Raspberry Pi (28× GPIO, UART, SPI, I2C, PWM), коннектор для вентилятора охлаждения (5 В) и порт USB Type-C для подачи питания (5 В / 3 A).

Говорится о поддержке Android 11, Ubuntu 22.04, Ubuntu 20.04, Debian 11, Debian 12, OpenHarmony 4.0 Beta1, Orange Pi OS (Arch), Orange Pi OS и пр. Цена варьируется от $35 до $68 в зависимости от размера памяти."

https://servernews.ru/1091098
👍1
#ml #classification #imblance #generation #synthetic #controlled #calibration

АНОНС

Работа с синтетическими данными - контролируемый эксперимент, позволяющий проникнуть мыслью в глубины DS процесса. У меня и раньше возникали подозрения, что общепринятые метрики оценки качества классификации в условиях дисбаланса классов нехороши. Сегодня я подкрепляю эти соображения численными экспериментами и предлагаю метрику классификации, хорошо дискриминирующую качественные модели от никчёмных, в том числе при несбалансированных классах и даже при слабой принципиальной прогнозируемости (например, когда львиная доля влияния на таргет осуществляется недоступными для наблюдения факторами из неизвестного домена).
2💅1
#ml #classification #imblance #generation #synthetic #controlled #calibration

In this article I’d like to share with you my findings about inconsistency of traditional ML metrics when it comes to imbalanced binary classification, and propose a superior metric from calibration domain that works well and possesses high discriminative power not only in cases of class imbalance, but also when the predictability itself is fundamentally weak (i.e., when factors most predictive to the target are unknown or not reachable, and everything we can hope is to explain at least some part of target’s variation with help of modelling).

https://medium.com/@fingoldo/why-rp-roc-auc-should-not-be-your-first-choice-metrics-for-classification-tasks-8ed516cec1ee
🔥1
Forwarded from Время Валеры
Однажды я работал директором по моделированию и анализу данных в одной из крупнейших корпораций РФ - X5 Retail Group. Одновременно с этим я работал вице-президентом по машинному обучению в одной из крупнейших корпораций мира - Alibaba.

Преисполнившись чувством собственной важности, я решил что пора купить себе очки и направился в салон оптики. В салоне меня поджидал продавец. Он с энтузиазмом начал показывать и нахваливать свой товар, переходя от одной полки к другой. В какой-то момент он остановился, окинул меня взглядом и сказал: ну эти лизны дорогие, около чирика (10 тысяч рублей), поэтому выбирай из тех что уже тебе показал.

Так я и сделал лазерную коррецию зрения
😁1
tmp = pd.DataFrame({"num_legs": [2, 4, 8, 0], "num_wings": [2, 0, 0, 0], index=["falcon", "dog", "spider", "fish"])
tmp["num_legs_shuffled"] = tmp.num_legs.sample(frac=1.0)
Что выдаст print((tmp["num_legs_shuffled"] == tmp["num_legs"]).all())?
Anonymous Quiz
31%
True
38%
False
31%
Error
#hardware #cpu #security

"Сотрудник Google Дэниел Могими (Daniel Moghimi) обнаружил уязвимость процессоров Intel, которая позволяет похищать ключи шифрования, пароли, электронные письма и сообщения, а также банковские данные. Проблема затрагивает чипы от Skylake до настольных Alder Lake и серверных Ice Lake, то есть до решений предпоследнего поколения. Уязвимость Downfall (INTEL-SA-00828) эксплуатируется через инструкции AVX2 и AVX-512 посредством атаки, которую Intel назвала Gather Data Sampling (GDS).

Downfall будет частично нейтрализована программным методом — сейчас Intel координирует выпуск микрокода с партнёрами по прошивкам и ОС. Уязвимость имеет высокий приоритет, поэтому по умолчанию исправляющий её фрагмент будет активен, но администраторы систем при необходимости смогут его деактивировать — эта опция будет доступна в Windows, Linux и VMM. В облачных инфраструктурах вопрос придётся решать через поставщика услуг.

В большинстве рабочих нагрузок обновленный микрокод на производительность процессора влияния не оказывает, но если речь идёт о нагрузках, связанных с уязвимыми инструкциями AVX2 и AVX-512, то оно может быть ощутимым, признали в Intel — эти инструкции наиболее востребованы в сфере высокопроизводительных вычислений (HPC). Примечательно, что Intel позиционирует набор AVX-512 как важнейшее конкурентное преимущество, но теперь ей пришлось заявить, что в большинстве рабочих нагрузок эта функция интенсивно не используется, и значительной потери производительности не ожидается."

https://3dnews.ru/1091230/u-protsessorov-intel-obnarugena-uyazvimost-downfall-ona-ekspluatiruetsya-cherez-instruktsii-avx2-i-avx512
#ai #huggingface #nvidia

"Чипмейкер NVIDIA объявил на ежегодной конференции SIGGRAPH 2023 о партнёрстве со стартапом в области ИИ Hugging Face. В рамках партнёрства NVIDIA обеспечит поддержку новой услуги Hugging Face под названием Training Cluster as a Service (Кластер обучения как услуга), которая упростит создание и настройку новых пользовательских генеративных моделей ИИ для корпоративных клиентов, использующих собственную платформу и NVIDIA DGX Cloud для инфраструктуры, делая это одним щелчком мыши.

Запуск сервиса Training Cluster as a Service намечен на ближайшие месяцы. Он будет базироваться на DGX Cloud, облачном ИИ-суперкомпьютере NVIDIA, предлагающем выделенные ИИ-кластеры NVIDIA DGX с ПО NVIDIA.

DGX Cloud предоставляет доступ к инстансу с восемью ускорителями NVIDIA H100 или A100 и 640 Гбайт памяти, а также ПО NVIDIA AI Enterprise для разработки приложений ИИ и больших языковых моделей (LLM). Также предоставляется возможность консультирования у экспертов NVIDIA.

Разработчики также получат доступ к новой рабочей среде NVIDIA AI Workbench, которая позволит им быстро создавать, тестировать и настраивать предварительно обученные модели генеративного ИИ и LLM.

Компании могут подписаться на сервис DGX Cloud самостоятельно — стоимость инстансов DGX Cloud начинается от $36 999/мес."

https://3dnews.ru/1091220/sotrudnichestvo-nvidia-i-iistartapa-hugging-face-pomoget-uprostit-oblachnoe-obuchenie-iimodeley
#hardware #cpu #security

"AMD раскрыла информацию об уязвимости под кодовым именем Inception (CVE-2023-20569, AMD-SB-7005), которую обнаружили исследователи Швейцарской высшей технической школы Цюриха (ETH Zurich). Она позволяет атакующему похищать конфиденциальные данные.

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

Уязвимость актуальна для процессоров на архитектурах Zen 3 и Zen 4 для настольных и серверных платформ, а также встраиваемых систем. Это подавляющее большинство процессоров Ryzen 5000 и Ryzen 7000, Ryzen Threadripper 5000, EPYC 7003 и EPYC 9004.

Схема Inception аналогична выявленным ранее уязвимостям на основе прогнозирования ветвлений вроде Spectre v2 и Branch Type Confusion (BTC)/RetBleed, рассказали в AMD. Она ограничена текущим адресным пространством, и для эксплуатации злоумышленник должен его знать. Это значит, что её эксплуатация возможна только при локальной атаке, например, через вредоносное ПО, поэтому защита реализуется в том числе при помощи антивирусов. Более того, в AMD пока нет сведений о существовании эксплойтов Inception вне исследовательской среды. Владельцам систем на процессорах Zen 3 и Zen 4 рекомендовано обновить прошивки в своих системах на версии с исправлениями или обновить BIOS — AMD сейчас прорабатывает этот вопрос с производителями материнских плат и компьютеров. Соответствующий патч для Windows вышел в июле.

https://3dnews.ru/1091232/amd-soobshchila-ob-uyazvimosti-inception-kotoraya-zatronula-protsessori-zen-3-i-zen-4
#towardsdatascience #bollocks

"Hi Anatoly,

Thank you for considering Towards Data Science. Our team has decided not to publish the post you shared with us, but we appreciate the chance to read your work."

Это уже не может быть совпадением. Наверное, авторов из России не публикуют. Ну или мои 2 статьи, в которых я вообще-то получаю оригинальные и ценные для практики DS результаты, на голову хуже любой из десятков тысяч статей, которые они к публикации приняли.

"Dear TDS editorial team,
After trying to publish with you my 2 original articles, where I receive novel, original and valuable from a practical DS standpoint results, I came to conclusion that my work does not adhere to high quality standards of towardsdatascience. Since my work is obviously much worse than that of other authors, tens of thousands articles of whom have been accepted by you, I solemnly promise not to bother you with my submittals anymore.

Best regards, Anatoly."
👍1👎1
#fun #poetry

беру русалочку за руку
русалочка русалочка
она мне што а я вздыхаю
она да што а я молчу
😁1
#informatontheory #enrtopy #mutualinfo #adc #featureselection

АНОНС

Когда-то в 2000-м на экономфаке мы проходили на курсе математики коэффициент корреляции Пирсона. На мой вопрос, есть ли какие-то способы обнаружить нелинейную связь, преподаватель загадочно улыбнулась и спросила: "А зачем Вам?".

Через 12 лет я к этому вопросу вернулся, прочитав в ScienceDirect статью "An information theoretic approach for combining neural network process models" by D.V. Sridhar, E.B. Bartlett, R.C. Seagrave. В ней рассказывалось об информационно-теоретических методах обнаружения как раз таких связей. Статья меня настолько захватила, что я даже написал тогда на Visual Basic 6 библиотеку для расчёта ADC (asymmetric dependency coefficient, сейчас, как понимаю, его общепринятое название это просто взаимная информация 2 векторов, нормированная на энтропию одного из векторов).

Меня поразило, что библа действительно выполняла свою задачу - распознавала, какие переменные вносили вклад в результат. Я уже не помню, сам ли придумал, или где-то вычитал, но я тогда даже ухитрился считать ADC(X,Y) от многомерных векторов. Это был сомнительный с ТЗ математики трюк по последовательному слиянию размерностей вектора и отбрасыванию пустых ячеек (да, у меня все входы переводились в дискретные униформным разбиением), но трюк работал. Я тогда ничего не знал про ML, но чувствовал, что это мне как-то может быть полезно в работе с данными и прогнозировании.

Потом, когда в 2017м я впервые услышал про соревы, где требовалось что-то предсказать (кажется, это был сорев Сбербанка по тратам клиентов с пластика), узнал про пандас и ML как дисциплину, стал изучать базовое решение, читать книги, учить питон. И вот, дойдя до темы "деревья решений", я воскликнул: "ага! вот где эти энтропийные разбиения, которые я уже знаю, применяются!", но детально сравнивать подходы не стал, а зря. Теперь, задумавшись, вижу, что в деревьях эта тема не докручена, иначе не возникало бы такого количества проблем с отбором признаков.

В общем, хорошие новости! ) Вдумчивое чтение книг Тима Мастерса укрепило моё намерение провести масштабное тестирование методов FS, в том числе основанных на теории информации, на синтетическом датасете. Сет будет содержать микс непрерывных, ординальных, номинальных признаков, разные распределения, разные виды связей ( от детерминированных до вероятностных) от разных групп фичей, потестирую разные виды ML-задач (регрессия, классификация), разный баланс классов, будут специально добавлены избыточные и шумовые фичи. И я протестирую все распространённые методы FS из sklearn+Boruta+BorutaShap+обязательно mRMR (последний в нескольких вариациях).

Будет затронута многомерная проблема XOR, когда сами по себе входы не влияют на таргет (и это невозможно обнаружить), а в совокупности - очень даже. Попробую потестить XgbFir для таких интеракций.

Будет предложен свой параллельный и (надеюсь) очень эффективный алгоритм FS, основанный на теории информации для многомерных векторов, включающий анализ доверительных интервалов (спасибо Мастерсу, у него эта тема хорошо разобрана, даже есть учет поправки Бонферрони. Я только мечтаю помимо статтестов прикрутить туда Байес. С другой стороны, это замедлит расчёты). Я уже частично перенёс свой барсиковский код на питон, и он прекрасно сработал для проблемы XOR 3 переменных и таргета.

Кто же лучше справится с поиском действительно важных предикторов? Скандалы, интриги, расследования. Не переключайтесь.
👍4🔥1
#masters #featureselection #redundancy #multicollinearity

"In any application involving a large number of variables, it’s nice to be able to identify sets of variables that have significant redundancy. Of course, we may be unlucky and have a situation in which the small differences between largely redundant variables contain the useful information. However, this is the exception. In most applications,it is the redundant information that is most important; if some type of effect impacts multiple variables, it’s probably important. Because dealing with fewer variables is always better, if we can identify groups of variables that have great intra-group redundancy, we may be able to eliminate many variables from consideration, focusing on a weighted average of representatives from each group, or perhaps focusing on a single factor that is highly correlated with a redundant group. Or we might just be interested in the fact of redundancy, garnering useful insight from it."

О таком же подходе, когда несколько коллинеарных факторов заменяются одним, говорил и Эрни Чан. Тим для поиска групп связанных факторов использует PCA.
#category_encoders #advicewanted

У меня давно есть идея сделать свою версию category_encoders, которая
1) в TargetEncoder вдобавок к mean будет вычислять кучу других полезных статистик
2) расширит концепцию на OtherVarEncoding, т.е. будет заменять уровни категориальной переменной на статистики (mean, std, etc) другой непрерывной или ординальной переменной (не таргета)
3) вместо примитивной формулы априорной вероятности заюзает Bayes и mcmc
4) будет иметь нормальную объясняющую человеческим языком документацию

и вот в свете недавних энтропийных размышлений хочется понять, как получить хоть какие-то подсказки к пунктам 1 и 2. Особенно 2, ведь статистик можно придумать десятки, а комбинаций с другими переменными будет десятки тысяч. Как решить, какие статистики считать и по каким кандидатам-"напарникам"?

Пока для 2) есть только такая весьма поверхностная идея: если MI(target; cat_var,num_var)>MI(target; cat_var)+MI(target; num_var), только для таких пар пробовать создавать эти "уровневые статистики".
🔥1
#politics #patriots #war


Илья Яшин 2 дня назад

"Наверняка среди ваших знакомых есть люди, которые не в восторге от войны с Украиной, но предпочитают молчать или даже поддерживают агрессию. Логика их в том, что патриот не может допускать критику власти во время войны – ведь это по сути предательство. Людей, рассуждающих таким образом, много. Это основа общественной поддержки Путина.

На самом же деле, патриот вовсе не должен оправдывать любую глупость своего правительства, даже если эта глупость связана с использованием вооружённых сил. Патриот обязан защищать национальные интересы своей Родины.

Соответствует ли интересам России эта война? Нет, она им противоречит. Доказать этот тезис легко, и доказывать его необходимо. Я набросал простой мануал, способный помочь вам в спорах со знакомыми, которых вы хотите переубедить и в чьих головах вы пытаетесь посеять зерно сомнений. Всего пять пунктов.

1. До 24 февраля жизнь в России оставалась вполне спокойной, а риски, связанные с боевыми действиями, стремились к нулю. Сегодня артиллерийские обстрелы наших городов стали обычным явлением, беспилотники долетают до центра Москвы, ряд населенных пунктов на границе полностью разрушен, а Ростов пережил оккупацию мятежниками. Вывод: война нанесла удар по безопасности России.

2. Цена вторжения в Украину – сотни тысяч россиян, погибших и ставших на фронте калеками. В основном работоспособные мужчины репродуктивного возраста. Это уже создало дефицит кадров на рынке труда, а в перспективе приведёт и к спаду рождаемости. Вывод: война нанесла удар по демографии России.

3. Нападение на Украину «активизировало» НАТО и резко повысило враждебность этого блока по отношению к России. Альянс отказался от нейтральных формулировок и теперь прямо называет нашу страну угрозой, принимает в свой состав граничащие с ним государства и стягивает к нашим рубежам всё больше войск. Вывод: война угрожает глобальной безопасности России.

4. Агрессия против Украины привела к тому, что наша страна почти полностью потеряла газовый рынок в ЕС, уступив его американскому СПГ и не получив сопоставимый по объемам альтернативный рынок сбыта. Доходы государства снизились, дефицит бюджета вырос, а резервы скукоживаются. Вывод: война ударила по экономике России.

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

***

Итог очевиден: война против Украины по сути своей является антироссийским действием. Человек, который её поддерживает, не имеет морального права называть себя патриотом России."
#featureselection

Несколько дней плотно занимаюсь написанием своего mRMR блока отбора признаков. Огромный прогресс. Полностью перенёс старую реализацию в Питон. Исправил много ошибок. Сделал много оптимизаций. Основой я выбрал упомянутый Мастерсом алгоритм Fleuret: "Fast Binary Feature Selection with Conditional Mutual Information".

"We propose in this paper a very fast feature selection technique based on conditional mutual in formation. By picking features which maximize their mutual information with the class to predict conditional to any feature already picked, it ensures the selection of features which are both individually informative and two-by-two weakly dependant. We show that this feature selection method outperforms other classical algorithms".

Этот фильтр-блок, основанный на прямом последовательном отборе. На каждой итерации к списку S добавляется кандидат X, имеющий самый высокий критерий min I (X ;Y | Z ) по всем Z уже находящимся в S, где I (X ;Y | Z ) - условная взаимная информация между таргетом Y и кандидатом X при данном уже принятом кандидате Z. Вроде логично, если X не будет влиять на таргет, все его I будут нулевыми и он не будет принят. Если на таргет влиять он будет, но другой фактор уже объясняет это влияние, случится то же самое.

Но всё же при реализации мне несколько раз казалось, что здесь какая-то ошибка. И вот я понял, в чём она. Что если некоторый Z и X совместно влияют на таргет, а с остальными факторами кандидат X вообще никак не взаимодействует? I (X ;Y | Z ) будет очень высоким, но т.к. критерий берёт минимум по всем факторам, этот высокий вклад будет отброшен и затёрт одним из нулей, и кандидат X, очень ценный совместно с Z, алгоритм не примет.

К счастью, это легко исправить. Критерий должен выглядеть по-старому только если нет фактора, который увеличивает его знание о таргете по сравнению со средним знанием I (X ;Y) :

min I (X ;Y | Z ) if max I (X ;Y | Z )<=I (X ;Y) else  max I (X ;Y | Z )

Напишу об этом профессору, интересно, что скажет )

Также я расширил алгос рассмотрением не только индивидуальных кандидатов, но и сочетаний (2-way, 3-way etc). Если пары отрабатывают ещё быстро, то для 250 фичей троек будет уже 2.5 миллионов, что на 1 ядре работает 3 часа.

Да, кстати, я встроил расчёт надёжности с помощью случайных перестановок. Если на 40k примеров шаффлить расчёты MI 10k раз, это отсеивает 99% ложных срабатываний (когда связи на самом деле нет).

Но большая проблема в том, что начало списка могут забить мусорные факторы, которые сами по себе новой инфы о таргете не несут, но зато коррелированы с многими настоящими предикторами. Почему это происходит: хотя любой Z снижает MI такого кандидата, всё же он связан с таким большим количеством других предикторов, что всё равно побеждает всех остальных. Там более что на ранних этапах других факторов ещё не добавлено в список.

Сначала я думал, как бороться с попаданием такого мусора в список, потом понял, что это имеет свои плюсы: истинные предикторы в список всё равно попадут, просто позже, а такие "универсальные солдаты", объединяющие много истинных предикторов, можно использовать для построения самых экономных и быстрых моделей с приемлемым качеством.

Другое дело, что они не дадут добиться наивысшего качества самым мощным моделям, т.к. будут их отвлекать на шум в этих мусорных факторах.
🔥4
#featureselection

Для проблемы мусорных факторов вижу 2 решения:

1) модифицировать критерий приёмки, чтобы он смотрел условные MI не по одиночным факторам, а по 2-way сочетаниям. Это уже отсеет значительный % мусорных факторов, которые коррелируют с 1 или 2 другими предикторами. Обязательно повторить эти расчёты по завершении отбора, когда сформирован полный набор факторов. Это наверняка отсеет некоторых кандидатов. Главное, учитывать, кто стал причиной отсева, чтобы не удалить причину и следствие одновременно )

2) делать пост-анализ по всем попавшим в финал кандидатам: кто связан с каким количеством других факторов, какое количество информации с ними разделяет, в % к своей собственной энтропии. Можно даже спуститься вниз по уровню и посчитать взвешенные суммы тех же метрик для его партнёров. Тем самым можно косвенно определить, какие фичи скорее всего просто сливные бачки, и попробовать их выбросить. В итоге мы получим:

ценные фичи, которые ни с кем другим не связаны, кроме мусорных и таргета. они содержат уникальное знание;

потенциально мусорные X, которые связаны с множеством других, и шарят очень много общей инфы с другими факторами Z, при том, что эти другие факторы имеют много уникального знания о таргете помимо X: sum(I(Y;Z|X))>e;

все остальные "середнячки"
.

Лучше идеи у меня пока нет, т.к. если это будет задача на временные ряды, где есть зависимость по 100+ лагам, я не знаю способа, как высчитать именно уникальную информацию фичи. Ладно бы 2-3, для этой мерности MI и CMI я посчитать ещё могу, но что-то мне подсказывает, в реальности будет сотни и тысячи. Буду рад советам.

Ах да, упомянутый недавно алгоритм PLD/MIFS для учёта избыточности просто считает среднюю взаимную информацию уже отобранных факторов с кандидатом. Но это тоже не идеальное решение, т.к. если кандидат А связан с факторами Б и В, усреднение (или суммирование) сработает только если Б и В независимы.