Forwarded from easyoffer
Ура, друзья! Изиоффер переходит в публичное бета-тестирование!
🎉 Что нового:
🟢 Анализ IT собеседований на основе 4500+ реальных интервью
🟢 Вопросы из собеседований с вероятностью встречи
🟢 Видео-примеры ответов на вопросы от Senior, Middle, Junior грейдов
🟢 Пример лучшего ответа
🟢 Задачи из собеседований
🟢 Тестовые задания
🟢 Примеры собеседований
🟢 Фильтрация всего контента по грейдам, компаниям
🟢 Тренажер подготовки к собеседованию на основе интервальных повторений и флеш карточек
🟡 Тренажер "Реальное собеседование" с сценарием вопросов из реальных собеседований (скоро)
🟢 Автоотклики на HeadHunter
🟢 Закрытое сообщество easyoffer
💎 Акция в честь открытия для первых 500 покупателей:
🚀 Скидка 50% на PRO тариф на 1 год (15000₽ → 7500₽)
🔥 Акция уже стартовала! 👉 https://easyoffer.ru/pro
🎉 Что нового:
💎 Акция в честь открытия для первых 500 покупателей:
🚀 Скидка 50% на PRO тариф на 1 год (
🔥 Акция уже стартовала! 👉 https://easyoffer.ru/pro
Please open Telegram to view this post
VIEW IN TELEGRAM
💊1
Это оптимизационный алгоритм, который используется для минимизации функции потерь в задачах машинного обучения. Основная идея заключается в поиске минимального значения функции потерь путём итеративного движения в направлении наискорейшего убывания этой функции, что определяется градиентом (или производной) функции.
В контексте машинного обучения функция потерь оценивает, насколько хорошо модель предсказывает данные. Чем меньше значение функции потерь, тем лучше подгонка модели к данным.
Градиент функции потерь — это вектор частных производных, который показывает направление наискорейшего роста функции. Для минимизации функции потерь нужно двигаться в противоположном направлении, т.е. по направлению наискорейшего убывания.
На каждом шаге параметры модели (например, веса в линейной регрессии) корректируются в направлении, противоположном градиенту, что осуществляется по формуле:
Шаги 2 и 3 повторяются до тех пор, пока не будет достигнут критерий остановки, например, до достижения заданного числа итераций, минимального изменения функции потерь или минимального значения градиента.
Градиент вычисляется на основе всех обучающих данных на каждом шаге, что обеспечивает точное направление к минимуму, но может быть вычислительно дорогостоящим на больших данных.
Градиент вычисляется на основе одного случайно выбранного примера данных на каждом шаге, что делает процесс более быстрым, но увеличивает стохастичность движения к минимуму.
Компромисс между двумя предыдущими подходами, градиент вычисляется для небольшого подмножества данных (мини-пакета).
import numpy as np
def gradient_descent(x, y, lr=0.01, epochs=100):
m, b = 0.1, 0.1 # начальная инициализация параметров
n = len(x) # количество данных
for _ in range(epochs):
f = y - (m*x + b)
# Обновление m и b
m -= lr * (-2 * x.dot(f).sum() / n)
b -= lr * (-2 * f.sum() / n)
return m, b
# Демонстрация на простых данных
x = np.array([1,
2, 3, 4, 5])
y = np.array([5, 7, 9, 11, 13])
m, b = gradient_descent(x, y)
print("Наклон m:", m, "Пересечение b:", b)
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1🔥1
Это статистическая мера вариативности, которая описывает диапазон центральных 50% данных в наборе. IQR используется для оценки разброса данных и для выявления выбросов.
Первый квартиль (Q1): Значение, ниже которого находится 25% данных.
Второй квартиль (Q2): Это медиана, значение, ниже которого находится 50% данных.
Третий квартиль (Q3): Значение, ниже которого находится 75% данных.
Разница между третьим и первым квартилями. Интерпретация: IQR показывает диапазон, в котором находится центральная половина данных, и помогает понять разброс данных вокруг медианы.
IQR = Q3 - Q1
[1, 3, 3, 6, 7, 8, 9, 15, 18, 19]
Первый квартиль (Q1): Среднее значение между вторым и третьим элементом (3 и 6), то есть 4.5.
Медиана (Q2): Среднее значение между пятым и шестым элементом (7 и 8), то есть 7.5.
Третий квартиль (Q3): Среднее значение между восьмым и девятым элементом (15 и 18), то есть 16.5.
Вычисление IQR:
IQR = Q3 - Q1 = 16.5 - 4.5 = 12
Значения, которые находятся ниже \(Q1 - 1.5 \times IQR\) или выше \(Q3 + 1.5 \times IQR\), считаются выбросами.
IQR может использоваться для сравнения разброса данных в разных наборах или группах.
Пример
import numpy as np
# Данные
data = [1, 3, 3, 6, 7, 8, 9, 15, 18, 19]
# Вычисление квартилей
Q1 = np.percentile(data, 25)
Q2 = np.percentile(data, 50)
Q3 = np.percentile(data, 75)
# Вычисление IQR
IQR = Q3 - Q1
print(f"Первый квартиль (Q1): {Q1}")
print(f"Медиана (Q2): {Q2}")
print(f"Третий квартиль (Q3): {Q3}")
print(f"Интерквартильный размах (IQR): {IQR}")
# Выявление выбросов
lower_bound = Q1 - 1.5 * IQR
upper_bound = Q3 + 1.5 * IQR
print(f"Границы для выбросов: {lower_bound} и {upper_bound}")
outliers = [x for x in data if x < lower_bound or x > upper_bound]
print(f"Выбросы: {outliers}")
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥1
Многослойный перцептрон (MLP) с линейными функциями активации, независимо от числа слоев, не способен аппроксимировать полином третьей степени или любую другую нелинейную функцию.
Имеет вид
f(x) = x
Когда используется линейная функция активации в многослойном перцептроне, каждая следующая линейная комбинация входных данных остается линейной. Независимо от количества слоев, итоговая функция будет просто линейной комбинацией входных данных. Если рассматривать MLP с линейной активацией, то каждый слой \( l \) вычисляется как
\mathbf{z}^{(l)} = \mathbf{W}^{(l)} \mathbf{a}^{(l-1)} + \mathbf{b}^{(l)}
Полином третьей степени имеет вид
f(x) = a_3 x^3 + a_2 x^2 + a_1 x + a_0
Для аппроксимации полинома третьей степени необходимо использовать нелинейные функции активации, такие как:
Сигмоида (\(\sigma(x) = \frac{1}{1 + e^{-x}}\))
ReLU (Rectified Linear Unit, \( \text{ReLU}(x) = \max(0, x) \))
Тангенс гиперболический (\(\tanh(x)\))
Использование нелинейных функций активации позволяет многослойному перцептрону моделировать сложные функции, включая полиномы более высокой степени.
import numpy as np
import matplotlib.pyplot as plt
from sklearn.neural_network import MLPRegressor
# Генерация данных
np.random.seed(42)
X = np.linspace(-2, 2, 100).reshape(-1, 1)
y = 3*X**3 - 2*X**2 + X + 1 + np.random.normal(0, 0.2, X.shape)
# Обучение MLP
mlp = MLPRegressor(hidden_layer_sizes=(100, 100), activation='relu', max_iter=10000, random_state=42)
mlp.fit(X, y.ravel())
# Предсказания
y_pred = mlp.predict(X)
# Визуализация
plt.scatter(X, y, color='blue', label='Original data')
plt.plot(X, y_pred, color='red', label='MLP prediction')
plt.legend()
plt.show()
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Бинарную кросс-энтропию можно улучшать в зависимости от задачи:
- С взвешиванием классов — если классы несбалансированы.
- Focal Loss — фокусируется на трудных примерах, уменьшая вклад лёгких.
- Label smoothing — снижает переуверенность модели, заменяя метки вроде 1/0 на 0.9/0.1.
- Dice Loss / Jaccard Loss — используются в задачах сегментации, где важна форма, а не только точность пикселя.
- Combo Loss — сочетание BCE с другими функциями (например, с Dice), чтобы уравновесить разные аспекты задачи.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Являются важными концепциями в статистике и тестировании гипотез, и их понимание критично для принятия обоснованных бизнес-решений. Эти ошибки могут быть особенно значимы при оценке рисков, управлении качеством, маркетинговых кампаниях и многих других областях.
Возникает, когда мы отвергаем нулевую гипотезу, хотя она на самом деле верна. Представьте, что у вас есть система детекции мошенничества для онлайн-платежей. Ошибка I рода в этом контексте будет означать, что система пометила законную транзакцию как мошенническую. Клиенты могут быть недовольны блокировкой их законных транзакций, что может привести к потере доверия и уменьшению числа пользователей.
Происходит, когда мы не отвергаем нулевую гипотезу, хотя она на самом деле ложна. В системе детекции мошенничества, ошибка II рода будет означать, что система не распознала мошенническую транзакцию и пропустила её. Пропуск мошеннических транзакций может привести к финансовым потерям и возможным проблемам с репутацией.
Представьте, что у вас есть сигнализация в доме, которая должна срабатывать только в случае кражи. Ошибка I рода - это когда сигнализация срабатывает, даже если кражи нет, например, от шума ветра.
Последствия: Частые ложные срабатывания сигнализации могут вызвать недовольство и раздражение, возможно, вы даже решите отключить систему.
Теперь представьте, что сигнализация в вашем доме не срабатывает, когда происходит кража. Это и есть ошибка II рода.
Последствия: Вор может свободно украсть ваше имущество, и вы останетесь без защиты.
Маркетинговая кампания, направленная на привлечение новых клиентов, ошибочно определяет некоторых текущих клиентов как новых и отправляет им специальные предложения, что увеличивает расходы без получения новых клиентов.
Риски: Дополнительные расходы, снижение эффективности кампаний, ухудшение клиентского опыта.
Кампания по удержанию клиентов не распознает реальных клиентов, склонных к уходу, и не предпринимает мер для их удержания.
Риски: Потеря клиентов, снижение доходов, ухудшение клиентской базы.
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
- Accuracy: доля верных предсказаний.
- Precision: точность предсказаний класса.
- Recall: полнота предсказаний класса.
- F1-score: сбалансированная метрика точности и полноты.
- ROC-AUC: качество модели при разных порогах.
2. Для регрессии:
- MSE: среднеквадратичная ошибка.
- MAE: средняя абсолютная ошибка.
- R²: объясненная доля дисперсии.
3. Для кластеризации:
- Silhouette Score: качество разделения кластеров.
- Dunn Index: компактность и разделенность кластеров.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
AUC (Area Under the Curve) — это площадь под ROC-кривой, которая измеряет, насколько хорошо модель классифицирует объекты.
AUC = 1.0 → идеальная модель (отлично различает классы).
AUC = 0.5 → модель не лучше случайного угадывания.
AUC < 0.5 → модель предсказывает хуже, чем случайное угадывание.
Если AUC < 0.5, это означает, что модель инвертирует классы: когда она уверена, что объект относится к положительному классу, на самом деле он отрицательный, и наоборот.
Иногда в данных метки классов (
0
и 1
) могут быть инверсированы. Попробуйте изменить 0
на 1
и наоборот, а затем пересчитать AUC. Если модель действительно "перепутала" предсказания, можно просто изменить знак вероятностей:
y_pred_inverted = 1 - y_pred
Возможно, есть ошибки в признаках, модель обучается на шуме или неправильных данных.
Попробуйте изменить гиперпараметры или использовать другую модель.
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2👍1
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3
Оконные функции предоставляют мощные возможности для выполнения различных расчётных операций с использованием данных, охватывающих определённый диапазон строк, которые связаны с текущей строкой. Эти функции называются "оконными", потому что оперируют "окном" строк, ограниченным в соответствии с определёнными условиями. Оконные функции особенно полезны при выполнении агрегаций, при которых нужно сохранить детализацию данных, что обычно недостижимо с помощью обычных агрегатных функций (
SUM
, COUNT
, AVG
и т.д.), применяемых в группировках.Окно определяется с помощью конструкции
OVER
, которая может включать в себя:Порядок следования строк (
ORDER BY
).Разбиение на группы или партиции (
PARTITION BY
).Ограничения окна (
ROWS
или RANGE
), определяющие начальную и конечную точки окна относительно текущей строки.Агрегатные функции: SUM, AVG, MIN, MAX, COUNT и т.д., которые обычно используются для агрегации данных в рамках окна.
Функции ранжирования: ROW_NUMBER, RANK, DENSE_RANK, эти функции присваивают уникальные или повторяющиеся номера строкам в зависимости от их значений по определённым полям.
Функции смещения: LEAD, LAG, позволяют получить значение из строки, расположенной на определённое количество позиций до или после текущей строки в рамках окна.
Статистические и аналитические функции: например, PERCENT_RANK, CUME_DIST.
SELECT
date,
sales,
AVG(sales) OVER (ORDER BY date ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING) AS moving_average
FROM
sales_data;
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
В задаче линейной регрессии цель состоит в том, чтобы найти такие параметры модели (веса и смещение), которые минимизируют ошибку предсказаний. Наиболее часто используемая функция ошибки для линейной регрессии — это среднеквадратичная ошибка (MSE, Mean Squared Error).
Для набора данных \((X, y)\), где \(X\) — это матрица признаков, а \(y\) — вектор целевых значений, модель линейной регрессии делает предсказания \(\hat{y}\), используя следующие параметры:
\(\mathbf{w}\) — вектор весов (коэффициентов).
\(b\) — смещение (bias).
Предсказания модели можно записать в векторной форме как:
\hat{y} = X \mathbf{w} + b
Измеряет средний квадрат разницы между истинными значениями и предсказанными значениями. Функционал, который оптимизируется в линейной регрессии, записывается следующим образом:
J(\mathbf{w}, b) = \frac{1}{m} \sum_{i=1}^m (\hat{y}^{(i)} - y^{(i)})^2
В векторной форме, если мы обозначим:
\( \mathbf{y} \) — вектор истинных значений размерности \( m \times 1 \).
\( \hat{\mathbf{y}} = X \mathbf{w} + b \) — вектор предсказанных значений размерности \( m \times 1 \).
Тогда можно записать MSE в векторной форме следующим образом:
J(\mathbf{w}, b) = \frac{1}{m} (\hat{\mathbf{y}} - \mathbf{y})^T (\hat{\mathbf{y}} - \mathbf{y})
Если записать более компактно, с учетом того, что \( \mathbf{b} \) может быть представлен как \( b \mathbf{1} \) (вектор, заполненный значениями \( b \)):
\hat{\mathbf{y}} = X \mathbf{w} + b \mathbf{1}
Тогда функционал MSE можно записать как:
J(\mathbf{w}, b) = \frac{1}{m} (X \mathbf{w} + b \mathbf{1} - \mathbf{y})^T (X \mathbf{w} + b \mathbf{1} - \mathbf{y})
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1💊1
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
В последние годы разработка языковых моделей на основе искусственного интеллекта значительно продвинулась благодаря внедрению архитектур на основе трансформеров. Эти модели показали выдающиеся результаты во многих задачах обработки естественного языка (NLP).
Разработан компанией Google в 2018 году. Использует механизм внимания (attention), который позволяет модели одновременно учитывать контекст с обеих сторон входной последовательности (левой и правой). Эта модель предобучается на задачах предсказания слов по контексту и определения следующего предложения. Значительно улучшил результаты по сравнению с предыдущими моделями на широкий спектр задач NLP, включая вопросно-ответные системы, классификацию текстов и маркировку сущностей.
Разработана OpenAI, GPT и её последующие версии (GPT-2, GPT-3, GPT-4) стали известны благодаря своей способности генерировать текст, который трудно отличить от текста, написанного человеком. Представляет собой модель с однонаправленным вниманием, что позволяет ей эффективно предсказывать следующее слово в последовательности, делая её особенно мощной для задач генерации текста. Модели GPT обучаются на огромных объёмах текстовых данных и способны выполнять широкий спектр задач без специализированного обучения, используя технику под названием "zero-shot learning".
Разработан для улучшения производительности моделей трансформеров на задачах, требующих более длительного контекста, например, для обработки очень больших документов или для понимания связей в длинных текстах. Вводит механизмы для сохранения состояния предыдущих сегментов текста, что позволяет модели использовать гораздо более длинный контекст, чем это возможно в стандартных трансформерах.
Разработана Facebook, представляет собой итерацию и улучшение BERT. Модифицирует ключевые аспекты BERT, такие как увеличение размера мини-пакетов, удлинение тренировочных данных и удаление этапа предобучения с предсказанием следующего предложения. Эти изменения позволили RoBERTa достичь новых рекордных результатов на стандартных тестовых наборах NLP.
Это ещё одна вариация BERT, созданная с целью уменьшения потребления памяти и ускорения обучения. Использует разделяемые между слоями параметры и факторизует матрицу внимания для уменьшения количества требуемых параметров, что делает его более эффективным с точки зрения использования ресурсов.
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2👍1
Т-критерий Стьюдента и критерий Манна-Уитни (U-тест) используются для сравнения двух групп, но применяются в разных случаях.
Данные имеют нормальное распределение.
Данные количественные (например, рост, вес, температура).
Дисперсии групп равны (для непарного t-теста).
Группы независимы (для независимого t-теста) или зависят (для парного t-теста).
Хочу проверить, отличается ли средний рост мужчин и женщин.
Если данные нормальны → t-критерий.
Данные не обязаны быть нормально распределёнными.
Данные могут быть порядковыми (например, оценки: «нравится – не нравится»).
Группы независимы (аналог непарного t-критерия).
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM