Библиотека собеса по Data Science | вопросы с собеседований
4.32K subscribers
422 photos
10 videos
1 file
405 links
Вопросы с собеседований по Data Science и ответы на них.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/7dfb7235

Для обратной связи: @proglibrary_feeedback_bot

Наши каналы: https://t.me/proglibrary/9197
Download Telegram
Что такое прямой и обратный проходы (forward и backward propagation) в нейросетях?

В сущности, нейронная сеть представляет собой граф. А по графу информация может течь в двух направлениях.

🔹Прямым проходом (forward propagation) называют применение нейросети к данным, то есть вычисление выхода по заданному входу. Это прямое движение по графу.
🔹Обратным проходом (backward propagation) называют движение информации от финального представления к исходному через все преобразования. Так, механизм обратного распространения ошибки, применяемый при обучении, предполагает обратное движение по вычислительному графу сети для коррекции весов.

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

#глубокое_обучение
🧮📐 15 гениев, которые изменили мир математики навсегда

В нашей новой статье читайте о том, как 15 величайших математических умов в истории, от древнегреческого гения Фалеса до современного революционера Мандельброта, своими открытиями в алгебре, геометрии, теории чисел и других областях навсегда изменили облик математики и мира.

🔗 Читать статью
🔗 Зеркало
🤖 Напоминаем, что у нас есть еженедельная email-рассылка, посвященная последним новостям и тенденциям в мире искусственного интеллекта.

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

👉Подписаться👈
В чём разница между частотной вероятностью и байесовской вероятностью?

Это два разных подхода к интерпретации вероятности, которые часто противопоставляются.

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

🔹Байесовская вероятность
Байесовский подход рассматривает вероятность как меру уверенности или степени веры в наступление события. Для определения степени уверенности при получении новой информации в байесовской теории используется теорема Байеса.
Пример: допустим, что у вас есть редкая болезнь, которая встречается у 1 из 10000 человек. Тест на эту болезнь имеет чувствительность 99% (вероятность того, что тест окажется положительным у больного человека) и специфичность 99% (вероятность того, что тест окажется отрицательным у здорового человека). Если ваш тест на болезнь оказался положительным, байесовская вероятность того, что вы действительно больны, будет рассчитываться с учётом этих данных и априорной вероятности заболевания (1/10000), что даст вам другое и, возможно, менее интуитивное значение вероятности, чем простая интерпретация результата теста.

#теория_вероятностей
Что такое отчёт о классификации (classification report)? Как его интерпретировать?

По сути, отчёт о классификации — это сводка о производительности модели-классификатора, представляющая различные метрики. Вот эти метрики:

🔹Точность (Precision) — отношение истинно положительных предсказаний к общему числу предсказанных положительных.
Precision = TP/(TP+FP)
🔹Полнота (Recall) — отношение истинно положительных предсказаний к общему числу фактических положительных.
Recall = TP / (TP + FN)
🔹F1-мера — гармоническое среднее точности и полноты.
F1-мера = 2 * (Точность * Полнота) / (Точность + Полнота)

где,
TP = Истинно положительный
TN = Истинно отрицательный
FP = Ложноположительный
FN = Ложноотрицательный

Отчёт о классификации можно создать, например, с помощью библиотеки scikit-learn, используя функцию classification_report. В такой отчёт также включён показатель support, который указывает на количество фактических вхождений класса в наборе данных.

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

В PCA собственные значения и собственные векторы играют ключевую роль в преобразовании исходных данных в новую систему координат.

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

Связь между ними определяется как:

A*V = lambda*V, где
A = ковариационная матрица, полученная из исходной матрицы признаков
V = собственный вектор
lambda = собственное значение.

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

#машинное_обучение
#линейная_алгебра
🐍🗺️ Геокодирование для Data Scientists: вводное руководство с примерами

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

В новой статье разбираем три различных способа геокодирования с помощью Geopy.

🔗 Читать статью
🔗 Зеркало
Почему 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