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

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

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

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

Наши каналы: https://t.me/proglibrary/9197
Download Telegram
Как рассчитать вычислительную сложность модели машинного обучения?

Можно говорить как о временной сложности алгоритма, так и о пространственной. Первая описывает количество времени, необходимое для выполнения алгоритма. Вторая — количество необходимой памяти. В 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 для нормальных.

#машинное_обучение
🔥 100 упражнений по NumPy с решениями

Делимся с вами полезным GitHub-репозиторием, в котором собраны различные небольшие задачки по библиотеке. Упражнения взяты из NumPy mailing list, Stack Overflow и документации NumPy.

Задачи собраны как в версии с решениями, так и в версии без них. Можете проверить свои знания.

🔗 Ссылка на репозиторий
Если у вас есть числовые признаки, то как работает разбиение узла при бэггинге?

Основу этой ансамблевой модели (которую также можно назвать Случайный лес) составляют деревья решений. В них разбиение работает по следующему алгоритму:
▪️Сначала определяется, какой из признаков лучше всего использовать для разбиения на данном этапе построения дерева. Решение обычно основывается на критерии прироста информации.
▪️Для выбранного числового признака алгоритм ищет оптимальное значение, которое будет использоваться в качестве порога для разбиения. Например, если признак — это возраст, алгоритм может определить, что разбиение на группы меньше 30 лет и >30 лет максимизирует критерий выбора.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Для борьбы с переобучением существуют разные методы.

#машинное_обучение
🐼 Задача на знание Pandas

Условие: У вас есть датафрейм df, содержащий два столбца: A и B. Столбец A содержит даты, а столбец B — числовые значения. Как бы вы рассчитали скользящее среднее по столбцу B с окном в 3 дня, предполагая, что значения в столбце A идут подряд и без пропусков?

Решение:
import pandas as pd

data = {
'A': ['2023-01-01', '2023-01-02', '2023-01-03', '2023-01-04', '2023-01-05',
'2023-01-06', '2023-01-07', '2023-01-08', '2023-01-09'],
'B': [18, 71, 13, 57, 7, 8, 69, 83, 27]
}

df = pd.DataFrame(data)

# Убедимся, что столбец A распознан как дата
df['A'] = pd.to_datetime(df['A'])

# Установим столбец дат как индекс датафрейма
df = df.set_index('A')

# Рассчитаем скользящее среднее по столбцу B с окном в 3 дня
df['Moving_Average'] = df['B'].rolling(window=3).mean()

print(df)


#python
#pandas
#программирование
Please open Telegram to view this post
VIEW IN TELEGRAM
Что такое отношение шансов (odds ratio) в контексте логистической регрессии?

Отношением шансов называют отношение рассматриваемых исходов к нерассматриваемым. Рассмотрим это на примере:

▶️ Допустим, проводится изучение связи между курением и развитием рака лёгких. Есть две группы: курящие (100 человек, из которых 30 заболели раком лёгких) и некурящие (100 человек, из которых 10 заболели раком лёгких). Так, шансы заболеть раком лёгких для курящих составляют 30/70. Шансы заболеть раком лёгких для некурящих — 10/90. Чтобы получить odds ratio (OR), разделим шансы для курящих на шансы для некурящих. Получим приблизительно 3.86. Это можно интерпретировать так: шансы заболеть раком лёгких у курящих людей почти в 4 раза выше, чем у некурящих.

👉 Отношение шансов может использоваться для моделирования увеличения вероятности события по мере изменения зависимых переменных. Если odds ratio равно единице, это означает, что изменение признака не влияет на вероятность наступления события. Если OR > 1, то увеличение признака ассоциируется с увеличением вероятности события. Если OR < 1, увеличение признака связано с уменьшением вероятности события.

#машинное_обучение
#теория_вероятностей
Каковы различия между моделью, минимизирующей среднеквадратичную ошибку (MSE), и моделью, минимизирующей среднюю абсолютную ошибку (MAE)?

Можно перечислить несколько различий:

▫️MSE более чувствительна к выбросам по сравнению с MAE. Дело в том, что среднеквадратичная функция возводит ошибки в квадрат. Из-за этого большие ошибки оказывают на результат большее влияние.
▫️С MSE градиент вычисляется легче. Это может ускорить сходимость алгоритма.

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

#машинное_обучение
Что такое прямой и обратный проходы (forward и backward propagation) в нейросетях?

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

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

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

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

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

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

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

👉Подписаться👈