2. Случайность в выборе признаков: на каждом узле дерева выбирается случайное подмножество признаков для поиска лучшего разбиения.
Эти случайности способствуют снижению переобучения и повышению обобщающей способности модели.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1💊1
Рекомендательная модель стремится предоставить персонализированные рекомендации пользователям на основе их предыдущих интересов, взаимодействий и предпочтений. Цель этих моделей — улучшить пользовательский опыт, предлагая контент или товары, которые максимально соответствуют индивидуальным запросам и вкусам каждого пользователя.
Рекомендательные системы помогают пользователям находить интересующие их продукты или услуги без долгих поисков, что повышает их удовлетворенность и вероятность дополнительных покупок.
Предоставление релевантных рекомендаций может стимулировать дополнительные покупки или просмотры, так как пользователи могут узнать о товарах или услугах, которые они могли не рассмотреть самостоятельно.
Рекомендательные системы могут анализировать большие объемы данных для выявления тенденций и предпочтений, что помогает компаниям оптимизировать свой ассортимент и управлять запасами.
В эпоху цифровизации персонализация становится ключевым фактором в привлечении и удержании клиентов. Рекомендательные системы предоставляют уникальные предложения и контент, который отвечает личным интересам каждого пользователя.
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Это алгоритм обновления весов в нейросети путем распространения ошибки от выхода к входу:
1. Прямой проход – данные проходят через сеть, вычисляя предсказания.
2. Вычисление ошибки – разница между предсказанием и истинным значением.
3. Обратное распространение ошибки – градиенты ошибки передаются назад через слои с помощью правила цепочки (chain rule).
4. Обновление весов – веса корректируются методом градиентного спуска.
Бэкпропагейшен – ключевой алгоритм, позволяющий обучать глубокие нейронные сети.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
При свёртке изображения размером \( H \times W \) ядром \( 3 \times 3 \) итоговый размер зависит от наличия паддинга (padding) и шага (stride).
При стандартной свёртке без паддинга каждый пиксель на краях теряется.
Размер выходного изображения:
(H - 3 + 1) \times (W - 3 + 1) = (H-2) \times (W-2)
Если было \( 5 \times 5 \), то станет \( (5-2) \times (5-2) = 3 \times 3 \).
Паддинг (обычно \( p=1 \)) добавляет границы, чтобы размер не менялся:
H_{\text{new}} = H, \quad W_{\text{new}} = W
Если было \( 5 \times 5 \), то с паддингом 1 размер останется \( 5 \times 5 \).
Если stride = \( s \), то размер вычисляется так:
H_{\text{out}} = \frac{H - 3 + 2p}{s} + 1, \quad W_{\text{out}} = \frac{W - 3 + 2p}{s} + 1
Если было \( 5 \times 5 \), то
H_{\text{out}} = \frac{5 - 3}{2} + 1 = 2, \quad W_{\text{out}} = 2
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
Это ситуация, когда признаки сильно коррелируют друг с другом.
- Это вызывает нестабильность линейных моделей, так как коэффициенты могут становиться большими и неинтерпретируемыми.
- Решения: удаление зависимых признаков, PCA, L1-регуляризация (Lasso).
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1
Это ситуации, когда два ключа имеют один и тот же хеш-код и, следовательно, претендуют на одно и то же место в структуре данных. Управление коллизиями — важная часть дизайна хеш-таблиц, поскольку эффективность хеш-таблицы сильно зависит от того, насколько эффективно решается проблема коллизий.
Открытая адресация решает проблемы коллизий путем поиска другого места в хеш-таблице для элемента, вызвавшего коллизию. Существуют различные методы открытой адресации:
При коллизии проверяется следующая ячейка таблицы. Если она занята, проверяется следующая и т.д., пока не будет найдена свободная ячейка.
Используется квадратичная функция для вычисления смещения от исходной позиции при каждом шаге пробирования (например, 1, 4, 9, 16 и т.д.).
Используются две хеш-функции для вычисления начального индекса и шага пробирования, чтобы найти свободную ячейку.
Это метод, при котором каждая ячейка хеш-таблицы содержит указатель на связный список (или другую структуру данных, такую как дерево), содержащий все элементы, которые были отображены в эту ячейку. При коллизии новый элемент просто добавляется в конец списка. Сцепление может обрабатывать неограниченное количество коллизий, хотя производительность может снизиться, если списки становятся слишком длинными.
Рехеширование предполагает использование дополнительных хеш-функций при коллизиях. Если первичная хеш-функция приводит к коллизии, применяется вторая хеш-функция, и так далее, пока не будет найдена свободная ячейка или не будут использованы все доступные хеш-функции.
class HashTable:
def __init__(self, size=10):
self.size = size
self.table = [[] for _ in range(size)]
def hash_function(self, key):
return hash(key) % self.size
def insert(self, key, value):
index = self.hash_function(key)
for item in self.table[index]:
if item[0] == key:
item[1] = value
return
self.table[index].append([key, value])
def get(self, key):
index = self.hash_function(key)
for item in self.table[index]:
if item[0] == key:
return item[1]
raise KeyError('Key not found')
def remove(self, key):
index = self.hash_function(key)
for i, item in enumerate(self.table[index]):
if item[0] == key:
del self.table[index][i]
return
raise KeyError('Key not found')
# Пример использования
ht = HashTable()
ht.insert("key1", "value1")
ht.insert("key2", "value2")
print(ht.get("key1")) #
выводит "value1"
ht.remove("key1")
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
Это процесс, в котором модель учится предсказывать результаты на основе данных. Давайте рассмотрим основные шаги, методы и механизмы, задействованные в этом процессе.
Перед началом обучения данные должны быть тщательно подготовлены. Это включает в себя:
Сбор данных: Собирать данные из различных источников, таких как базы данных, файлы, сенсоры и др.
Очистка данных: Удаление ошибок, пропущенных значений и аномалий.
Разделение данных: Разделение набора данных на обучающий, валидационный и тестовый наборы.
Нормализация или стандартизация: Приведение всех признаков к одной шкале облегчает обучение и улучшает производительность.
Выбор модели зависит от типа задачи (классификация, регрессия, кластеризация и т.д.) и от характеристик данных. Это может быть все, от простой линейной регрессии до сложных нейронных сетей.
Инициализация параметров: Начальное случайное или заданное присваивание весов.
Прямое распространение: Вычисление предсказаний модели на основе текущих значений параметров и входных данных.
Расчет потерь: Использование функции потерь для определения ошибки между предсказанными и фактическими значениями.
Обратное распространение: Вычисление градиентов функции потерь по отношению к каждому параметру. Это показывает, как нужно изменить параметры, чтобы уменьшить ошибку.
Оптимизация: Обновление параметров модели с использованием алгоритмов оптимизации (например, градиентный спуск), чтобы минимизировать функцию потерь.
Валидация: Оценка модели на валидационном наборе данных для проверки её обобщающей способности и предотвращения переобучения.
Настройка гиперпараметров: Экспериментирование с различными настройками гиперпараметров (скорость обучения, количество слоев, размеры пакетов и др.) для улучшения производительности модели.
Кросс-валидация: Использование различных подмножеств данных для обучения и тестирования модели, чтобы улучшить надежность оценки её качества.
После того как модель хорошо себя показывает на валидационном наборе, её можно протестировать на тестовом наборе данных, который не использовался во время обучения. Это окончательная проверка, как хорошо модель может работать с новыми данными.
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score
# Загрузка данных
data = load_iris()
X = data.data
y = data.target
# Разделение данных
X_train, X_test, y_train
, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Нормализация данных
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)
# Обучение модели
model = LogisticRegression()
model.fit(X_train_scaled, y_train)
# Предсказание и оценка модели
y_pred = model.predict(X_test_scaled)
print("Accuracy:", accuracy_score(y_test, y_pred))
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM