Telegram Web Link
Что такое перцептрон? Как он работает?

Перцептрон — это простейший вид нейрона, предложенный Фрэнком Розенблаттом в 1957 году. Используется для решения задач классификации

Вот принцип работы перцептрона:
▫️получает на вход набор признаков объекта;
▫️веса и смещение (bias) инициализируются случайными значениями;
▫️для каждого объекта вычисляется взвешенная сумма входных значений и добавляется смещение;
▫️значение взвешенной суммы подается на вход функции активации. Например, для бинарной классификации может использоваться пороговая функция, которая возвращает 1, если значение больше определённого порога, и 0 в противном случае.
▫️Полученное значение функции активации является выходом перцептрона, который обозначает принадлежность объекта к одному из классов.

#глубокое_обучение
#машинное_обучение
Что будет, если использовать сигмоиду в скрытом слое нейросети?

Выходные значения сигмоидной функции всегда находятся в диапазоне от 0 до 1. У этого есть неприятное последствие — затухание градиента. Это означает, что при использовании сигмоидной функции активации в глубоких нейронных сетях градиенты могут становиться очень маленькими.

Почему так происходит
Когда входные значения становятся очень большими или очень маленькими, сигмоида насыщается на этих крайностях, то есть выдаёт значения, близкие к 1 или 0. Как следствие, производная функции тоже становится близкой к нулю. А производные используются в процессе обратного распространения ошибки. Так, веса в начальных слоях обновляются очень медленно, что замедляет или даже полностью останавливает процесс обучения.

Вместо сигмоиды можно использовать другие функции активации, например ReLU.

#глубокое_обучение
Как решить проблему переобучения дерева решений без использования случайного леса?

Есть несколько методов.

☑️ Обрезка (pruning)
Здесь может быть два варианта:
Предварительная обрезка, при которой дерево перестаёт расти, прежде чем идеально классифицирует обучающий набор.
Пост-обрезка, которая позволяет дереву идеально классифицировать обучающий набор, а затем выполнять обрезку.
☑️ Искусственное ограничение параметров
Можно ограничить глубину или минимальное число объектов в листе.

#машинное_обучение
Что произойдёт, если использовать LabelEncoder с линейным алгоритмом?

▶️ Начнём с того, что такое LabelEncoder.
Это один из самых простых способов закодировать категории. Допустим, у вас есть три категории: «Лондон», «Париж» и «Москва». Тогда вы просто заменяете эти строковые значения на 0, 1 и 2.

В документации scikit-learn написано, что LabelEncoder кодирует целевые метки значениями из диапазона от 0 до n_classes-1 (где n_classes — количество классов). То есть алгоритм предлагается использовать в основном для кодирования целевых меток. Технически его, конечно, можно применять для кодирования нецелевых признаков. Но тут могут возникнуть проблемы.

✍️ Сама суть LabelEncoder способствует созданию избыточных зависимостей в данных. Например, после преобразования получилось, что по некоторому признаку значение объекта Volvo равно 6, а BMW — 1. Можно интерпретировать это как то, что Volvo в 6 раз в чём-то превосходит BMW. Однако в исходных данных таких зависимостей не было.

При работе с категориальными переменными для линейных моделей можно, например, использовать One-Hot Encoding.

#машинное_обучение
Что делать, если дисперсия некоторого признака почти нулевая? Как поступить с таким признаком?

▶️ Нулевая дисперсия означает отсутствие разброса в значениях этого признака. Он почти не изменяется для всех наблюдений. Такие признаки часто считаются малоинформативными.

✔️ Наиболее очевидное решение здесь — удалить такой признак. Его отсутствие вряд ли негативно скажется на производительности вашей модели. Если вы в этом не уверены, то можно попробовать оценить влияние данного предиктора на производительность, то есть создать модели с ним и без него и сравнить их.

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

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

#машинное_обучение
#статистика
🧑‍💻 Статьи для IT: как объяснять и распространять значимые идеи

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

Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.

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

👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
Как проверить, переобучен ли случайный лес?

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

Для предотвращения переобучения случайного леса можно попробовать настроить гиперпараметры. Вот параметры реализации из scikit-learn, на которые стоит обратить внимание: max_depth, n_estimators, criterion, min_samples_leaf, min_samples_split, max_leaf_nodes.

#машинное_обучение
Как предотвратить переобучение при использовании XGBoost?

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

▪️colsample_bytree — это доля признаков, используемых для обучения. Чем меньше, тем ниже вероятность переобучения.
▪️subsample — доля выборки, используемой для обучения. Значения меньше 1 помогают предотвратить переобучение.
▪️max_depth — глубина дерева. Слишком большая глубина может привести к переобучению.
▪️gamma — минимальное уменьшение потерь, необходимое для дальнейшего разбиения узла. Большие значения препятствуют созданию сложных деревьев.
▪️min_child_weight — минимальная сумма весов наблюдений, необходимая для создания нового узла в дереве. Большие значения помогают предотвратить переобучение.

#машинное_обучение
Самые полезные каналы для программистов в одной подборке!

Сохраняйте себе, чтобы не потерять 💾

🔥Для всех

Библиотека программиста — новости, статьи, досуг, фундаментальные темы
Книги для программистов
IT-мемы
Proglib Academy — тут мы рассказываем про обучение и курсы

#️⃣C#

Книги для шарпистов | C#, .NET, F#
Библиотека шарписта — полезные статьи, новости и обучающие материалы по C#
Библиотека задач по C# — код, квизы и тесты
Библиотека собеса по C# — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Вакансии по C#, .NET, Unity Вакансии по PHP, Symfony, Laravel

☁️DevOps

Библиотека devops’а — полезные статьи, новости и обучающие материалы по DevOps
Вакансии по DevOps & SRE
Библиотека задач по DevOps — код, квизы и тесты
Библиотека собеса по DevOps — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования

🐘PHP

Библиотека пхпшника — полезные статьи, новости и обучающие материалы по PHP
Вакансии по PHP, Symfony, Laravel
Библиотека PHP для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по PHP — код, квизы и тесты

🐍Python

Библиотека питониста — полезные статьи, новости и обучающие материалы по Python
Вакансии по питону, Django, Flask
Библиотека Python для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Python — код, квизы и тесты

Java

Библиотека джависта — полезные статьи по Java, новости и обучающие материалы
Библиотека Java для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Java — код, квизы и тесты
Вакансии для java-разработчиков

👾Data Science

Книги для дата сайентистов | Data Science
Библиотека Data Science — полезные статьи, новости и обучающие материалы по Data Science
Библиотека Data Science для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Data Science — код, квизы и тесты
Вакансии по Data Science, анализу данных, аналитике, искусственному интеллекту

🦫Go

Книги для Go разработчиков
Библиотека Go разработчика — полезные статьи, новости и обучающие материалы по Go
Библиотека Go для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Go — код, квизы и тесты
Вакансии по Go

🧠C++

Книги для C/C++ разработчиков
Библиотека C/C++ разработчика — полезные статьи, новости и обучающие материалы по C++
Библиотека C++ для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по C++ — код, квизы и тесты
Вакансии по C++

💻Другие профильные каналы

Библиотека фронтендера
Библиотека мобильного разработчика
Библиотека хакера
Библиотека тестировщика

💼Каналы с вакансиями

Вакансии по фронтенду, джаваскрипт, React, Angular, Vue
Вакансии для мобильных разработчиков
Вакансии по QA тестированию
InfoSec Jobs — вакансии по информационной безопасности

📁Чтобы добавить папку с нашими каналами, нажмите 👉сюда👈

🤖Также у нас есть боты:
Бот с IT-вакансиями
Бот с мероприятиями в сфере IT

Мы в других соцсетях:
🔸VK
🔸YouTube
🔸Дзен
🔸Facebook *
🔸Instagram *

* Организация Meta запрещена на территории РФ
Что такое Local Sensitive Hash (LSH) и где он используется?

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

У подходящих хеш-функций вероятность коллизии на близких объектах должна быть высокая, а на далёких — низкая. Иными словами, одинаковые хеш-значения должны с более высокой вероятностью присваиваться близким по некоторой метрике объектам.

При поиске ближайшего соседа для нового объекта сначала вычисляется его хеш-значение, а затем поиск ограничивается объектами в соответствующем бакете. Это позволяет значительно сократить объём данных, по которым необходимо провести поиск, а значит увеличить скорость обработки запросов.

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

#машинное_обучение
Хардкорный курс по математике для тех, кто правда любит математику!

Начать с вводных занятий можно здесь, ответив всего на 4 вопроса – https://proglib.io/w/61c44272

Что вас ждет:

– Вводный урок от CPO курса

– Лекции с преподавателями ВМК МГУ по темам: теория множеств, непрерывность функции, основные формулы комбинаторики, матрицы и операции над ними, градиентный спуск

– Практические задания для закрепления материала и ссылки на дополнительные материалы.

⚡️ Переходите и начинайте учиться уже сегодня – https://proglib.io/w/61c44272
Please open Telegram to view this post
VIEW IN TELEGRAM
Что такое SMOTE (англ. Synthetic Minority Oversampling Technique) и как он работает?

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

Алгоритм SMOTE примерно такой:
▪️Для каждого примера из меньшего класса находятся его k ближайших соседей (в пространстве признаков).
▪️Выбирается один из этих ближайших соседей случайным образом.
▪️Между выбранным примером и его соседом генерируется синтетический пример путём интерполяции. Если говорить подробнее, это выглядит так:
Находят разность d=Xb–Xa, где Xa и Xb — векторы признаков «соседних» примеров a и b. Далее из d путём умножения каждого его элемента на случайное число в интервале (0,1) получают d^. Вектор признаков нового примера вычисляется путём сложения Xa и d^.

#машинное_обучение
#статистика
Что вы знаете про алгоритм CART?

Алгоритм CART можно расшифровать как Classification And Regression Trees. Это метод построения деревьев решений, которые могут быть использованы как для задач классификации, так и для задач регрессии.

Вот его особенности:
🔹Всегда использует бинарное разбиение узлов.
🔹Может обрабатывать как числовые, так и категориальные данные.
🔹Оценочная функция, используемая алгоритмом CART, базируется на интуитивной идее уменьшения неопределённости в узле.
🔹 После построения дерева использует процесс обрезки для удаления частей, которые не приносят значительного улучшения предсказательной способности модели.
🔹 Имеет механизм перекрёстной проверки, который представляет собой путь выбора окончательного дерева.

#машинное_обучение
👀 Итоги недели в мире ИИ и обзоры новых сервисов

У нас вышла интересная статья на 📰 по мотивам еженедельной рассылки про последние новости и тенденции в мире ИИ.

Ниже — небольшая подборка, а целиком читайте здесь 👈

💬Новости

▫️ Исследователи Стэнфордского университета обнаружили, что чат-боты склонны делать выбор в пользу насилия и ядерных ударов в военных играх.
▫️Разработчики приложения для знакомств Bumble протестировали новую AI-функцию Deception Detector, которая автоматически заблокировала 95% мошеннических аккаунтов.
▫️Google создала MobileDiffusion — мини-модель для супербыстрой генерации изображений на смартфонах.

🛠 Инструменты

▫️UserSketch — создаёт чат-бота на основе единой базы знаний с данными, собранными из любых документов, почты, мессенджеров, приложений для управления проектами и организации бизнес-процессов.
▫️Ytube AI — превращает YouTube-видео в SEO-оптимизированные статьи.
▫️ThreadScribe.ai — превращает сообщения из Slack в структурированную базу знаний, которой можно задавать любые вопросы и получать инсайты.
▫️Fooocus — бесплатная опенсорсная альтернатива Midjourney. Устанавливается локально.

⚙️ Сделай сам

Google выпустила инструмент localllm для запуска LLM локально или в облаке, на CPU вместо GPU. Подробный туториал по установке и настройке localllm — в блоге разработчиков.

🎓 Исследования

Исследователи из Технологического института Джорджии представили PokéLLMon. Возможности этого ИИ-агента сопоставимы с человеческими — он уже выиграл 56% боев против людей. Авторы также нашли способ избавиться от галлюцинаций и решили проблему панического переключения, когда при столкновении с сильным противником агент начинал хаотично переключаться между покемонами.
Please open Telegram to view this post
VIEW IN TELEGRAM
🤖 Напоминаем, что у нас есть еженедельная email-рассылка, посвященная последним новостям и тенденциям в мире искусственного интеллекта.

В ней:
● Новости о прорывных исследованиях в области машинного обучения и нейросетей
● Материалы о применении ИИ в разных сферах
● Статьи об этических аспектах развития технологий
● Подборки лучших онлайн-курсов и лекций по машинному обучению
● Обзоры инструментов и библиотек для разработки нейронных сетей
● Ссылки на репозитории с открытым исходным кодом ИИ-проектов
● Фильмы, сериалы и книги

👉Подписаться👈
Как рассчитать вычислительную сложность модели машинного обучения?

Можно говорить как о временной сложности алгоритма, так и о пространственной. Первая описывает количество времени, необходимое для выполнения алгоритма. Вторая — количество необходимой памяти. В ML-моделях это всё зависит от входных данных.

Примем такие обозначения:
n = количество обучающих примеров,
d = количество измерений данных,

Тогда расчёты будут такими:
🔹 KNN
Временная сложность — O(knd) (k — количество соседей)
Пространственная сложность — O(nd)

🔹 Логистическая регрессия
Временная сложность — O(nd)
Пространственная сложность — O(d)

🔹 SVM
Временная сложность (при обучении) — O(n²)
Временная сложность (при запуске) — O(k*d) (k — количество опорных векторов)

🔹 Дерево решений
Временная сложность (при обучении) — O(n*log(n)*d)
Временная сложность (при запуске) — O(максимальная глубина дерева)

Отметим, что это лишь обобщённые оценки.

#машинное_обучение
#программирование
Что показывает t-тест?

T-тест, или t-критерий Стьюдента — общее название для статистических тестов, в которых статистика критерия имеет распределение Стьюдента. Чаще всего t-критерии применяются для проверки равенства средних значений в двух выборках. То есть T-тест помогает понять, являются ли наблюдаемые различия в выборочных средних случайными или отражают истинные различия в средних значениях генеральной совокупности.

Существуют разные виды T-тестов:

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

#статистика
Что такое стационарность в контексте анализа временных рядов, и почему она для нас желательна?

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

Предположение о стационарности ряда является базовым. Стационарность — это, в определённом смысле, неизменность ряда во времени. Это означает, что у его элементов есть некоторые общие постоянные характеристики.

В целом, временной ряд можно назвать стационарным, если:
🔹 у элементов ряда одинаковое математическое ожидание,
🔹 у элементов ряда постоянная дисперсия,
🔹 у элементов y1 и y2, например, та же ковариация, что у элементов y2 и y3, и т.д.

Если коротко, стационарность означает, что такие компоненты как тренд и сезонность отсутствуют. Понимание того, стационарные у нас данные или нет, важно для последующего моделирования. Для оценки стационарности можно применить тест Дики-Фуллера (Dickey-Fuller test).

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

#машинное_обучение
#статистика
Как оценить качество кластеризации у метода k-средних (k-means)?

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

🔹 Можно посмотреть на то, насколько хорошо разделены кластеры. Для этого используется индекс Данна (Dunn Index), который учитывает как расстояние между кластерами, так и расстояния внутри кластеров.
🔹 Можно оценить, насколько объект похож на свой кластер по сравнению с другими кластерами. На это укажет значение силуэта (Silhouette). Высокое значение означает, что объект хорошо подходит к своему кластеру и плохо подходит к соседним кластерам.

#машинное_обучение
Как использовать SVM для поиска аномалий (выбросов)?

Для такой задачи можно применять метод опорных векторов с одним классом, или One-Class SVM. Напомним, что основная идея алгоритма SVM — разделить классы гиперплоскостью так, чтобы максимизировать зазор между ними. В случае с One-Class цель состоит в том, чтобы найти гиперплоскость, которая лучше всего описывает один класс тренировочных данных. Такой алгоритм не пытается разделить два или более класса, а скорее стремится ограничить область, где присутствует большинство данных одного класса.

После использования One-Class SVM мы получаем границу, по одну сторону которой максимально плотно лежат наблюдения из тренировочной выборки, а по другую — аномальные значения. Вот основные шаги:
🔹Обучить модель One-Class SVM на данных без аномалий.
🔹Использовать обученную модель для предсказания, является ли новая точка данных аномальной. Алгоритм вернёт -1 для аномальных точек и 1 для нормальных.

#машинное_обучение
2024/09/30 14:29:44
Back to Top
HTML Embed Code: