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())?
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
"Сотрудник 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
3DNews - Daily Digital Digest
У чипов Intel обнаружена уязвимость Downfall — она позволяет воровать пароли через инструкции AVX2 и AVX-512
Сотрудник Google Дэниел Могими (Daniel Moghimi) обнаружил уязвимость процессоров Intel, которая позволяет похищать ключи шифрования, пароли, электронные письма и сообщения, а также банковские данные.
#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
"Чипмейкер 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
3DNews - Daily Digital Digest
Сотрудничество NVIDIA и ИИ-стартапа Hugging Face поможет упростить облачное обучение ИИ-моделей
Чипмейкер NVIDIA объявил на ежегодной конференции SIGGRAPH 2023 о партнёрстве со стартапом в области ИИ Hugging Face.
#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
"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
3DNews - Daily Digital Digest
В процессорах AMD Zen 3 и Zen 4 обнаружена уязвимость Inception — она позволяет медленно воровать конфиденциальные данные
AMD раскрыла информацию об уязвимости под кодовым именем Inception (CVE-2023-20569, AMD-SB-7005), которую обнаружили исследователи Швейцарской высшей технической школы Цюриха (ETH Zurich).
#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."
"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."
#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 переменных и таргета.
Кто же лучше справится с поиском действительно важных предикторов? Скандалы, интриги, расследования. Не переключайтесь.
АНОНС
Когда-то в 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 переменных и таргета.
Кто же лучше справится с поиском действительно важных предикторов? Скандалы, интриги, расследования. Не переключайтесь.
Wikipedia
Mutual information
measure of dependence between two variables
#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.
"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), только для таких пар пробовать создавать эти "уровневые статистики".
У меня давно есть идея сделать свою версию 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), только для таких пар пробовать создавать эти "уровневые статистики".
#politics #patriots #war
Илья Яшин 2 дня назад
"Наверняка среди ваших знакомых есть люди, которые не в восторге от войны с Украиной, но предпочитают молчать или даже поддерживают агрессию. Логика их в том, что патриот не может допускать критику власти во время войны – ведь это по сути предательство. Людей, рассуждающих таким образом, много. Это основа общественной поддержки Путина.
На самом же деле, патриот вовсе не должен оправдывать любую глупость своего правительства, даже если эта глупость связана с использованием вооружённых сил. Патриот обязан защищать национальные интересы своей Родины.
Соответствует ли интересам России эта война? Нет, она им противоречит. Доказать этот тезис легко, и доказывать его необходимо. Я набросал простой мануал, способный помочь вам в спорах со знакомыми, которых вы хотите переубедить и в чьих головах вы пытаетесь посеять зерно сомнений. Всего пять пунктов.
1. До 24 февраля жизнь в России оставалась вполне спокойной, а риски, связанные с боевыми действиями, стремились к нулю. Сегодня артиллерийские обстрелы наших городов стали обычным явлением, беспилотники долетают до центра Москвы, ряд населенных пунктов на границе полностью разрушен, а Ростов пережил оккупацию мятежниками. Вывод: война нанесла удар по безопасности России.
2. Цена вторжения в Украину – сотни тысяч россиян, погибших и ставших на фронте калеками. В основном работоспособные мужчины репродуктивного возраста. Это уже создало дефицит кадров на рынке труда, а в перспективе приведёт и к спаду рождаемости. Вывод: война нанесла удар по демографии России.
3. Нападение на Украину «активизировало» НАТО и резко повысило враждебность этого блока по отношению к России. Альянс отказался от нейтральных формулировок и теперь прямо называет нашу страну угрозой, принимает в свой состав граничащие с ним государства и стягивает к нашим рубежам всё больше войск. Вывод: война угрожает глобальной безопасности России.
4. Агрессия против Украины привела к тому, что наша страна почти полностью потеряла газовый рынок в ЕС, уступив его американскому СПГ и не получив сопоставимый по объемам альтернативный рынок сбыта. Доходы государства снизились, дефицит бюджета вырос, а резервы скукоживаются. Вывод: война ударила по экономике России.
5. Русским стало сложнее адаптироваться за границей и даже просто путешествовать по миру. Наши эмигранты и туристы повсеместно жалуются на оскорбления и унижения, их называют оккупантами и фашистами. Помимо этого, наши спортсмены забанены почти во всех международных соревнованиях, включая олимпийские игры и футбольные еврокубки. Вывод: война бьет по репутации России и её граждан.
***
Итог очевиден: война против Украины по сути своей является антироссийским действием. Человек, который её поддерживает, не имеет морального права называть себя патриотом России."
Илья Яшин 2 дня назад
"Наверняка среди ваших знакомых есть люди, которые не в восторге от войны с Украиной, но предпочитают молчать или даже поддерживают агрессию. Логика их в том, что патриот не может допускать критику власти во время войны – ведь это по сути предательство. Людей, рассуждающих таким образом, много. Это основа общественной поддержки Путина.
На самом же деле, патриот вовсе не должен оправдывать любую глупость своего правительства, даже если эта глупость связана с использованием вооружённых сил. Патриот обязан защищать национальные интересы своей Родины.
Соответствует ли интересам России эта война? Нет, она им противоречит. Доказать этот тезис легко, и доказывать его необходимо. Я набросал простой мануал, способный помочь вам в спорах со знакомыми, которых вы хотите переубедить и в чьих головах вы пытаетесь посеять зерно сомнений. Всего пять пунктов.
1. До 24 февраля жизнь в России оставалась вполне спокойной, а риски, связанные с боевыми действиями, стремились к нулю. Сегодня артиллерийские обстрелы наших городов стали обычным явлением, беспилотники долетают до центра Москвы, ряд населенных пунктов на границе полностью разрушен, а Ростов пережил оккупацию мятежниками. Вывод: война нанесла удар по безопасности России.
2. Цена вторжения в Украину – сотни тысяч россиян, погибших и ставших на фронте калеками. В основном работоспособные мужчины репродуктивного возраста. Это уже создало дефицит кадров на рынке труда, а в перспективе приведёт и к спаду рождаемости. Вывод: война нанесла удар по демографии России.
3. Нападение на Украину «активизировало» НАТО и резко повысило враждебность этого блока по отношению к России. Альянс отказался от нейтральных формулировок и теперь прямо называет нашу страну угрозой, принимает в свой состав граничащие с ним государства и стягивает к нашим рубежам всё больше войск. Вывод: война угрожает глобальной безопасности России.
4. Агрессия против Украины привела к тому, что наша страна почти полностью потеряла газовый рынок в ЕС, уступив его американскому СПГ и не получив сопоставимый по объемам альтернативный рынок сбыта. Доходы государства снизились, дефицит бюджета вырос, а резервы скукоживаются. Вывод: война ударила по экономике России.
5. Русским стало сложнее адаптироваться за границей и даже просто путешествовать по миру. Наши эмигранты и туристы повсеместно жалуются на оскорбления и унижения, их называют оккупантами и фашистами. Помимо этого, наши спортсмены забанены почти во всех международных соревнованиях, включая олимпийские игры и футбольные еврокубки. Вывод: война бьет по репутации России и её граждан.
***
Итог очевиден: война против Украины по сути своей является антироссийским действием. Человек, который её поддерживает, не имеет морального права называть себя патриотом России."
#numba #opensource
Уже 8 лет быстрые разработчики numba раздумывают, как бы им добавить поддержку параметра axis в numpy-функциях min,max, etc.
https://github.com/numba/numba/issues/1269
Уже 8 лет быстрые разработчики numba раздумывают, как бы им добавить поддержку параметра axis в numpy-функциях min,max, etc.
https://github.com/numba/numba/issues/1269
GitHub
Support for axis arguments on reduction functions · Issue #1269 · numba/numba
Now that we support array expressions, I'm finding that I really want to be able to pass the axis argument to reduction functions like np.sum(), np.mean(), etc. This raises the issue again of h...
#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) :
Также я расширил алгос рассмотрением не только индивидуальных кандидатов, но и сочетаний (2-way, 3-way etc). Если пары отрабатывают ещё быстро, то для 250 фичей троек будет уже 2.5 миллионов, что на 1 ядре работает 3 часа.
Да, кстати, я встроил расчёт надёжности с помощью случайных перестановок. Если на 40k примеров шаффлить расчёты MI 10k раз, это отсеивает 99% ложных срабатываний (когда связи на самом деле нет).
Но большая проблема в том, что начало списка могут забить мусорные факторы, которые сами по себе новой инфы о таргете не несут, но зато коррелированы с многими настоящими предикторами. Почему это происходит: хотя любой Z снижает MI такого кандидата, всё же он связан с таким большим количеством других предикторов, что всё равно побеждает всех остальных. Там более что на ранних этапах других факторов ещё не добавлено в список.
Сначала я думал, как бороться с попаданием такого мусора в список, потом понял, что это имеет свои плюсы: истинные предикторы в список всё равно попадут, просто позже, а такие "универсальные солдаты", объединяющие много истинных предикторов, можно использовать для построения самых экономных и быстрых моделей с приемлемым качеством.
Другое дело, что они не дадут добиться наивысшего качества самым мощным моделям, т.к. будут их отвлекать на шум в этих мусорных факторах.
Несколько дней плотно занимаюсь написанием своего 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 такого кандидата, всё же он связан с таким большим количеством других предикторов, что всё равно побеждает всех остальных. Там более что на ранних этапах других факторов ещё не добавлено в список.
Сначала я думал, как бороться с попаданием такого мусора в список, потом понял, что это имеет свои плюсы: истинные предикторы в список всё равно попадут, просто позже, а такие "универсальные солдаты", объединяющие много истинных предикторов, можно использовать для построения самых экономных и быстрых моделей с приемлемым качеством.
Другое дело, что они не дадут добиться наивысшего качества самым мощным моделям, т.к. будут их отвлекать на шум в этих мусорных факторах.
#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 для учёта избыточности просто считает среднюю взаимную информацию уже отобранных факторов с кандидатом. Но это тоже не идеальное решение, т.к. если кандидат А связан с факторами Б и В, усреднение (или суммирование) сработает только если Б и В независимы.
Для проблемы мусорных факторов вижу 2 решения:
1) модифицировать критерий приёмки, чтобы он смотрел условные MI не по одиночным факторам, а по 2-way сочетаниям. Это уже отсеет значительный % мусорных факторов, которые коррелируют с 1 или 2 другими предикторами. Обязательно повторить эти расчёты по завершении отбора, когда сформирован полный набор факторов. Это наверняка отсеет некоторых кандидатов. Главное, учитывать, кто стал причиной отсева, чтобы не удалить причину и следствие одновременно )
2) делать пост-анализ по всем попавшим в финал кандидатам: кто связан с каким количеством других факторов, какое количество информации с ними разделяет, в % к своей собственной энтропии. Можно даже спуститься вниз по уровню и посчитать взвешенные суммы тех же метрик для его партнёров. Тем самым можно косвенно определить, какие фичи скорее всего просто сливные бачки, и попробовать их выбросить. В итоге мы получим:
ценные фичи, которые ни с кем другим не связаны, кроме мусорных и таргета. они содержат уникальное знание;
потенциально мусорные X, которые связаны с множеством других, и шарят очень много общей инфы с другими факторами Z, при том, что эти другие факторы имеют много уникального знания о таргете помимо X: sum(I(Y;Z|X))>e;
все остальные "середнячки".
Лучше идеи у меня пока нет, т.к. если это будет задача на временные ряды, где есть зависимость по 100+ лагам, я не знаю способа, как высчитать именно уникальную информацию фичи. Ладно бы 2-3, для этой мерности MI и CMI я посчитать ещё могу, но что-то мне подсказывает, в реальности будет сотни и тысячи. Буду рад советам.
Ах да, упомянутый недавно алгоритм PLD/MIFS для учёта избыточности просто считает среднюю взаимную информацию уже отобранных факторов с кандидатом. Но это тоже не идеальное решение, т.к. если кандидат А связан с факторами Б и В, усреднение (или суммирование) сработает только если Б и В независимы.
#featureselection
Работаю над пост-анализом кандидатов в предикторы, отобранных FS алгосом. Решил представить их как граф друзей )
Размер узла=энтропии фактора. Толщина и цвет ребра=взаимной инфе 2 факторов.
Направление стрелки зависит от ADC.
Зелёные узлы - уникальные факторы, красные - предположительно "мусорки".
Работаю над пост-анализом кандидатов в предикторы, отобранных FS алгосом. Решил представить их как граф друзей )
Размер узла=энтропии фактора. Толщина и цвет ребра=взаимной инфе 2 факторов.
Направление стрелки зависит от ADC.
Зелёные узлы - уникальные факторы, красные - предположительно "мусорки".
#trading #backtesting #masters
"Thank you Dr. Masters for an outstanding sharing of your insight and experience and for agreeing to be interviewed! The clear descriptions of Monte Carlo Permutation Tests (MCPT-3 variants) and application BEFORE looking at precious out-of-sample data, Parameter Sensitivity, Stationarity, Entropy, Predictive Indicators and Bootstrapping are tremendously helpful to me as a strategy developer. I realize now that MCPT needs to be added to my strategy development process as well as the other elements you've articulated. Thank you, Andrew, for continually bringing gifted trading professionals to Better System Trader here on Youtube!"
https://www.youtube.com/watch?v=1RKz9v_0WDo
"Thank you Dr. Masters for an outstanding sharing of your insight and experience and for agreeing to be interviewed! The clear descriptions of Monte Carlo Permutation Tests (MCPT-3 variants) and application BEFORE looking at precious out-of-sample data, Parameter Sensitivity, Stationarity, Entropy, Predictive Indicators and Bootstrapping are tremendously helpful to me as a strategy developer. I realize now that MCPT needs to be added to my strategy development process as well as the other elements you've articulated. Thank you, Andrew, for continually bringing gifted trading professionals to Better System Trader here on Youtube!"
https://www.youtube.com/watch?v=1RKz9v_0WDo
YouTube
"How to avoid trading strategies that degrade quickly" - Timothy Masters
Numerical Computing specialist and author Timothy Masters joins us (in his only ever interview) to discuss trading strategy development and validation techniques, including:
• Why trading strategies fall apart in live trading,
• How luck impacts trading…
• Why trading strategies fall apart in live trading,
• How luck impacts trading…
Есть большой массив Numpy с результатами вычислений. На очередной итерации вам надо его обнулить. Что сработает гораздо быстрее:
Anonymous Quiz
47%
a = np.zeros(shape)
17%
a[:,:] = 0
36%
a.fill( 0)
#featureselection #diogenes
Кипит работа над отборщиком признаков. Вчера провел много тестов, профилирования, оптимизаций. План на сегодня:
1) модуляризировать, разбив на мелкие хорошо читаемые функции. а то пока что это огромное полотно кода.
2) подключить многоядерность (numba или joblib/dask)
3) добить постанализ: больше мерности, добавить показатели иерархии, сделать доп. вывод деревом.
4) сделать этот FS совместимым с sklearn
Ну ладно, будем реалистами, это не на сегодня, а скорее на несколько ближайших дней. Кстати, после консультаций с AI определилось имя проекта: Диоген )
Diogenes of Sinope (c. 412-323 BCE) was a Cynic philosopher known for his extreme simplicity, ascetic lifestyle, and highly selective approach to life. He rejected societal norms, material possessions, and conventional values, living in minimalistic conditions.
One of the most famous anecdotes about Diogenes highlights his selectiveness and disregard for social conventions. He was known to carry a lantern during the day, claiming to be searching for an honest person but never finding one. This act symbolized his highly critical and selective stance toward human behavior and moral integrity.
Diogenes also practiced what he called "autarky," which meant self-sufficiency. He believed in rejecting desires and wants, demonstrating a selective attitude towards material possessions and comforts. He was known for living in a large ceramic jar, or "diogenes," which further emphasized his rejection of societal norms and his selectiveness in embracing only what was essential.
Through these behaviors and attitudes, Diogenes exemplified a highly selective and discerning approach to life, values, and human interaction. His actions challenged conventional ideas and highlighted his commitment to living in accordance with his own principles, even if they were unconventional or extreme.
Кипит работа над отборщиком признаков. Вчера провел много тестов, профилирования, оптимизаций. План на сегодня:
1) модуляризировать, разбив на мелкие хорошо читаемые функции. а то пока что это огромное полотно кода.
2) подключить многоядерность (numba или joblib/dask)
3) добить постанализ: больше мерности, добавить показатели иерархии, сделать доп. вывод деревом.
4) сделать этот FS совместимым с sklearn
Ну ладно, будем реалистами, это не на сегодня, а скорее на несколько ближайших дней. Кстати, после консультаций с AI определилось имя проекта: Диоген )
Diogenes of Sinope (c. 412-323 BCE) was a Cynic philosopher known for his extreme simplicity, ascetic lifestyle, and highly selective approach to life. He rejected societal norms, material possessions, and conventional values, living in minimalistic conditions.
One of the most famous anecdotes about Diogenes highlights his selectiveness and disregard for social conventions. He was known to carry a lantern during the day, claiming to be searching for an honest person but never finding one. This act symbolized his highly critical and selective stance toward human behavior and moral integrity.
Diogenes also practiced what he called "autarky," which meant self-sufficiency. He believed in rejecting desires and wants, demonstrating a selective attitude towards material possessions and comforts. He was known for living in a large ceramic jar, or "diogenes," which further emphasized his rejection of societal norms and his selectiveness in embracing only what was essential.
Through these behaviors and attitudes, Diogenes exemplified a highly selective and discerning approach to life, values, and human interaction. His actions challenged conventional ideas and highlighted his commitment to living in accordance with his own principles, even if they were unconventional or extreme.
#numpy #numba #codegems #calloc
Итак, выяснилось, что numpy.zeros делегирует вызов сишной calloc, и на самом деле читит. Если тестировать инициализацию массива с реальной записью хотя бы 1 элемента, всё стаёт на свои места. .zeros() чуть медленнее остальных, .fill(0) несущественно быстрее двоеточий. Но удивительно, что нумба медленнее в 2-8 раз.
Итак, выяснилось, что numpy.zeros делегирует вызов сишной calloc, и на самом деле читит. Если тестировать инициализацию массива с реальной записью хотя бы 1 элемента, всё стаёт на свои места. .zeros() чуть медленнее остальных, .fill(0) несущественно быстрее двоеточий. Но удивительно, что нумба медленнее в 2-8 раз.
shape = (10000, 10000)
a = np.zeros(shape, dtype=np.int64)
def alloc_new(a):
a = np.zeros(shape, dtype=np.int64)
a[500, 500] = 1
return a
def numpy_fancy_assign(a):
a[:, :] = 0
a[500, 500] = 1
return a
def numpy_fill(a):
a.fill(0)
a[500, 500] = 1
return a
def cyclces_assign(a):
for i in range(a.shape[0]):
for j in range(a.shape[1]):
a[i, j] = 0
a[500, 500] = 1
return a
njitted_funcs = []
funcs = (alloc_new, numpy_fancy_assign, numpy_fill, cyclces_assign)
for func in funcs:
njitted_func = njit(func)
njitted_func(a) # test call
njitted_funcs.append(njitted_func)
#numpy #numba #codegems #zeros
История с zeros не закончилась )) Открылись новые факты. Я подумал, нумба показалась медленной из-за переключения контекста, поэтому внутри каждой функции выше просто сделал цикл до 10, чтобы основную работ вести внутри контекста. К примеру,
Выводы из прошлого поста подтвердились: numba-версии действительно медленнее numpy-евских, КРОМЕ
Оптимальная тактика на сегодня: массив создавать надо вне numba с помощью .zeros(), а обнулять его вызовом
История с zeros не закончилась )) Открылись новые факты. Я подумал, нумба показалась медленной из-за переключения контекста, поэтому внутри каждой функции выше просто сделал цикл до 10, чтобы основную работ вести внутри контекста. К примеру,
def numpy_fancy_assign(a):
for _ in range(10):
a[:, :] = 0
a[500, 500] = 1
return a
и т.д.Выводы из прошлого поста подтвердились: numba-версии действительно медленнее numpy-евских, КРОМЕ
a[:, :] = 0
, которая одна-единственная при выполнении в контексте numba в 5 раз быстрее зануляет numpy-массив, чем сам numpy. Оптимальная тактика на сегодня: массив создавать надо вне numba с помощью .zeros(), а обнулять его вызовом
a[:, :] = 0
внутри numba (если, конечно, это надо делать много раз). Feature request чтобы нумба редиректила на np.zeros.