Telegram Web Link
Почему XGBoost в среднем показывает производительность лучше, чем Случайный лес (Random Forest)?

На самом деле оба алгоритма могут давать хорошие результаты, но XGBoost чаще используется в ML-соревнованиях для достижения наивысшего балла. У этого алгоритма есть несколько полезных свойств:

▫️XGBoost включает в себя механизмы регуляризации. Это помогает уменьшить переобучение и улучшить обобщающую способность модели.
▫️XGBoost строит деревья последовательно: каждое новое дерево исправляет ошибки, сделанные предыдущим.Random Forest же строит деревья параллельно с использованием метода усреднения. Последовательная коррекция ошибок в XGBoost часто приводит к лучшей производительности на многих задачах.
▫️У XGBoost более гибкие гиперпараметры, что улучшает его настройку под датасет.

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

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

Что вас ждет:

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

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

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

⚡️ Переходите и начинайте учиться уже сегодня – https://proglib.io/w/7889d59a
Please open Telegram to view this post
VIEW IN TELEGRAM
Расскажите про линейные модели: где используются и как обучаются?

Такие модели выявляют линейные зависимости в данных. Наиболее известны линейная и логистическая регрессии. Первая применяется для предсказания значения зависимой переменной, для задачи регрессии. Вторая — для задач классификации.

🎓 Обучение линейных моделей можно проводить с помощью градиентного спуска. Для линейной и логистической регрессии процесс обучения имеет схожие шаги, но различается используемой функцией потерь.
▪️Линейная регрессия.
Её обучение заключается в нахождении оптимальных коэффициентов, или весов, перед признаками в уравнении прямой. Чтобы найти веса с помощью градиентного спуска, сначала нужно инициализировать вектор весов случайными числами. Затем нужно вычислить градиент функции потерь (обычно MSE — среднеквадратичное отклонение) и обновить веса, вычитая из них произведение градиента с learning rate. Шаги повторяют, например, до тех пор, как функция потерь не стабилизируется.
▪️Логистическая регрессия.
Главное отличие от линейной регрессии заключается в функции потерь — здесь используется log-loss (логарифмическая функция потерь). Процедура обновления весов остается схожей.

#машинное_обучение
🐍 Задача про умножение матриц

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

Решение: Напишем решение на чистом Python
def matrix_multiply(A, B):
# Сначала проверим, можем ли мы вообще перемножить эти матрицы
if len(A[0]) != len(B):
raise ValueError("Number of A columns must equal number of B rows.")

# Инициализируем результирующую матрицу, заполненную нулями
result = [[0 for _ in range(len(B[0]))] for _ in range(len(A))]

# Перемножим матрицы
for i in range(len(A)):
for j in range(len(B[0])):
for k in range(len(B)):
result[i][j] += A[i][k] * B[k][j]

return result

# Проверим функцию на примере
A = [[1, 2, 3],
[4, 5, 6]]

B = [[7, 8],
[9, 10],
[11, 12]]

result = matrix_multiply(A, B)
for row in result:
print(row)


#программирование
#линейная_алгебра
Перечислите этапы разработки ML-приложения

1️⃣ Постановка задачи
На этом этапе также стоит определиться с метриками (бизнес-метриками и DS-метриками), чтобы в дальнейшем оценивать модель. Помимо этого, можно идентифицировать все свои ограничения.
2️⃣ Сбор и предобработка данных
Сюда же относится этап генерации новых признаков. Не исключено, что к этому этапу придётся неоднократно возвращаться.
3️⃣ Разведочный анализ данных
На этом этапе нужно тщательно изучить данные, сформулировать гипотезы.
4️⃣ Обучение модели
Сначала стоит строить бейзлайн — модель без параметров. После этого можно настраивать модели и тестировать их.
5️⃣ Развёртывание ML-модели
На этом этапе необходимо перевести код в промышленный вид. Возможно придётся добавить бэкенд, фронтенд и др. Тут же обычно проводится A/B-тестирование.
6️⃣ Поддержка модели
Стоит подключить dashboard для отслеживания метрик, механизмы для мониторинга работы ML-модели, чтобы вовремя отлавливать ошибки.

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

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

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

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

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

Разберём все этапы такого проекта.

✔️ Сбор данных
Необходимо найти датасет с изображениями капчи. Самый простой подходящий набор изображений можно найти, например, на Kaggle. Если нужна специфичная система, то следует заняться сбором картинок самостоятельно.
✔️ Предобработка изображений
Можно преобразовать изображения в подходящий для обработки формат, например, сделать их чёрно-белыми. Также можно расширить датасет, просто изменив уже имеющиеся картинки: повернуть, отразить, исказить и др.
✔️ Выбор и тренировка модели
Самый очевидный выбор — свёрточная нейронная сеть (CNN). Обученную сеть следует проверить на отдельном наборе данных.
✔️ Развёртывание модели
Нужно внедрить модель в приложение или систему, где она будет использоваться. Здесь следует отталкиваться от среды.

#машинное_обучение
Напишите линейную регрессию на Python с нуля

Это один из самых простых алгоритмов. Он включает следующие шаги:
1️⃣ Инициализация параметров.
2️⃣ Вычисление предсказаний.
3️⃣ Вычисление функции потерь.
4️⃣ Обновление параметров с помощью градиентного спуска.
5️⃣ Повторение до сходимости.
import numpy as np

class LinearRegression:
def __init__(self, learning_rate=0.01, n_iters=1000):
self.learning_rate = learning_rate
self.n_iters = n_iters

def fit(self, X, y):
n_samples, n_features = X.shape
self.weights = np.zeros(n_features)
self.bias = 0

for _ in range(self.n_iters):
model_preds = self.predict(X)
dw = (1 / n_samples) * np.dot(X.T, (model_preds - y))
db = (1 / n_samples) * np.sum(model_preds - y)

self.weights -= self.learning_rate * dw
self.bias -= self.learning_rate * db

def predict(self, X):
return np.dot(X, self.weights) + self.bias


#машинное_обучение
#программирование
Please open Telegram to view this post
VIEW IN TELEGRAM
Что делает метод Монте-Карло?

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

Можно также рассматривать метод Монте-Карло как вероятностную модель, которая способна включать в прогнозирование элемент неопределённости или случайности. Это даёт более чёткую картину, чем детерминированный прогноз. Например, для прогнозирования финансовых рисков нужен анализ десятков или сотен факторов. Финансовые аналитики используют моделирование методом Монте-Карло для определения вероятности каждого возможного исхода.

Процесс моделирования состоит из таких шагов:
▫️Создание математической модели.
▫️Определение входных значений.
▫️Создание большого набора случайных выборок на основе распределения выбранных данных.
▫️Проведение расчётов.
▫️Анализ результатов.

Нередко модели машинного обучения используются для тестирования и подтверждения результатов моделирования методом Монте-Карло.

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

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

🔥Для всех

Библиотека программиста — новости, статьи, досуг, фундаментальные темы
Книги для программистов
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 запрещена на территории РФ
Верно ли, что классический градиентный спуск всегда найдёт глобальный минимум функции потерь и выдаст оптимальные параметры?

Нет, неверно.

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

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

К вышеуказанным техникам относятся:
▫️выбор удачных начальных параметров;
▫️модификации градиентного спуска (стохастический градиентный спуск (SGD), градиентный спуск с моментом и др.).

#машинное_обучение
Напишите код, который будет иллюстрировать Закон больших чисел (ЗБЧ)

ЗБЧ утверждает, что при увеличении количества попыток случайная величина стремится к своему математическому ожиданию. Для иллюстрации возьмём подбрасывание честной монетки. Математическое ожидание выпадения орла равно 0.5. С увеличением числа подбрасываний среднее значение количества выпавших орлов должно приближаться к 0.5.
import random
import matplotlib.pyplot as plt

total_flips = 0
numerical_probability = []
H_count = 0

for i in range(0, 5000):
new_flip = random.choice(['H', 'T'])
total_flips += 1
if new_flip == 'H':
H_count += 1
numerical_probability.append(H_count / total_flips)

plt.figure(figsize=(10, 6))
plt.plot(numerical_probability, label='Численная вероятность орла')
plt.axhline(y=0.5, color='r', linestyle='-', label='Математическое ожидание (0.5)')
plt.xlabel("Количество бросков")
plt.ylabel("Численная вероятность орла")
plt.title("Закон больших чисел: Подбрасывание монеты")
plt.legend()

plt.show()


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

Допустим, у нас есть линейная регрессия с двумя независимыми переменными, у которых совершенно разный масштаб. Например, значения одного признака находятся в диапазоне от 0 до 100, а второго — от 0 до 1. Чтобы подстроиться под такие признаки, модель подберёт коэффициенты так, что первый будет небольшим, а второй — большим.

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

Есть несколько способов масштабирования:
▫️Нормализация.
В данном случае все значения будут находиться в диапазоне от 0 до 1.
▫️Стандартизация.
Масштабирует значения с учётом стандартного отклонения.

Для нормализации, например, можно использовать метод MinMaxScaler из scikit-learn. Для стандартизации в этой же библиотеке есть метод StandardScaler.

#машинное_обучение
🤖 Напоминаем, что у нас есть еженедельная email-рассылка, посвященная последним новостям и тенденциям в мире искусственного интеллекта.

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

👉Подписаться👈
Этот алгоритм используется для кластеризации. Он инициализируется с заранее определённым числом кластеров и работает, перемещая центроиды кластеров так, чтобы минимизировать суммарное квадратичное отклонение между точками данных и соответствующими центроидами.
Что такое VIF (variance inflation factor)?

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

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

Значение VIF больше 10 обычно считается признаком наличия мультиколлинеарности.

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

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

🔹Ошибки могут быть связаны с человеческим фактором, например, невнимательностью, или вызваны сбоями в работе оборудования, записывающего какие-либо показатели. Чтобы исправить ошибки, нам нужно выяснить, чем они были вызваны. После этого можно будет выбрать верную стратегию.

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

🔹Дубликаты в данных следует удалять. Найти их и удалить можно, например, с помощью Pandas, методов duplicated и drop_duplicates.

🔹Неверные типы значений могут испортить анализ и дальнейшую работу с данными. Например, некоторый показатель записан в виде строк, хотя нам было бы предпочтительнее работать с ним как с типом float. Нужно привести все типы к требуемым. Даты и время можно перевести в объекты datetime.

🔹Обработка пропущенных значений также требует понимания природы данных. В целом, тут есть несколько основных методов:
▫️удалить объекты с пропусками,
▫️заменить пропуски на среднее значение, медиану или моду,
▫️провести множественную импутацию данных (MICE).

🔹Также стоит провести поиск аномалий (выбросов) в данных. В зависимости от ситуации, аномалии можно отфильтровать, скорректировать или проанализировать отдельно.

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

Бесплатные вводных занятий к курсу по математике тут – https://proglib.io/w/3a1592a6

Вводные занятия содержат:

– 3 лекции по теории множеств от аспиранта кафедры общей математики факультета ВМК МГУ;
– 3 практических задания для закрепления материала и ссылки на дополнительные материалы
– лекция по комбинаторике от кандидата физико-математических наук, доцента факультета ВМК МГУ

👉 Переходите на страницу и активируйте доступ к вводным занятиям: https://proglib.io/w/3a1592a6
2024/09/30 10:21:30
Back to Top
HTML Embed Code: