Библиотека собеса по 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
Что за алгоритм DBSCAN и как его использовать?

Density-Based Spatial Clustering of Applications with Noise (DBSCAN) — это алгоритм кластеризации данных. В его основе лежит понятие плотности; кластеры определяются как области высокой плотности, разделённые областями низкой плотности.

✔️Для использования DBSCAN нужно определить два ключевых параметра: eps (радиус поиска соседей для каждой точки) и min_samples (минимальное количество точек, необходимое для формирования плотного региона). Алгоритм находит некоторую центральную точку кластера. Таковой она считается, если содержит более min_samples в радиусе eps. После того как центральная точка кластера определена, алгоритм включает в список обхода все доступные для неё точки в пределах eps. Процесс повторяется. По сути, алгоритм пытается расширить кластер. Если точка не достигает порога min_samples, она помечается как шум.

DBSCAN эффективен для данных с кластерами неправильной формы и хорошо справляется с выбросами.

#junior
#middle
В чём разница между ошибкой первого рода и ошибкой второго рода?

Это два основных типа ошибок в статистических тестах, и они связаны с процессом проверки гипотез.

▪️Ошибка первого рода (α или ошибка типа I). Эта ошибка происходит, когда нулевая гипотеза отвергается, хотя на самом деле она верна. Например, когда медицинский тест ошибочно показывает наличие заболевания у здорового человека. Уровень значимости (α) — это вероятность совершения ошибки первого рода.

▪️Ошибка второго рода (β или ошибка типа II). Эта ошибка возникает, когда нулевая гипотеза принимается, хотя на самом деле она неверна. Например, когда медицинский тест не обнаруживает заболевание, которое на самом деле присутствует у пациента. Статистическая мощность (1-β) — это вероятность правильно отвергнуть неверную нулевую гипотезу.

Так, ошибка первого рода представляет собой ложноположительный результат, а ошибка второго рода — ложноотрицательный результат.


#статистика
Объясните разницу между AdaBoost и XGBoost

Оба метода объединяют слабые модели в одну сильную модель. И AdaBoost, и XGBoost в процессе обучения будут увеличивать ансамбль, добавляя в него новые слабые модели на каждой итерации. Разница между методами заключается в том, как расширяется ансамбль.


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

Иными словами, разница между алгоритмами в том, что XGBoost не присваивает неправильно классифицированным элементам больший вес.

#машинное_обучение
Как на коэффициенты логистической регрессии повлияет тот факт, что два предиктора сильно коррелируют?

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

▫️Нестабильность коэффициентов регрессии. Это означает, что небольшие изменения в данных могут привести к значительным изменениям в оценках.
▫️Коэффициенты становятся менее надёжными для интерпретации и предсказания.

Например, если обучить модель, используя сильно коррелированные признаки, не все знаки коэффициентов будут соответствовать бизнес-логике. Так, уменьшение значения признака «остаток долга / сумма выдачи» должно приводить к уменьшению вероятности дефолта. Но из-за мультиколлинеарности коэффициент сменил знак на противоположный, и признак стал говорить об обратном: чем меньше остаётся платить, тем больше вероятность дефолта.

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

Здесь можно подойти с двух сторон: преобразовать данные или особым образом построить модель.

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

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

#машинное_обучение
#статистика
Что такое ковариация и как она связана с корреляцией?

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

Корреляция тесно связана с ковариацией, но в отличие от ковариации, показывает не только направление связи между переменными, но и её силу. Корреляция варьируется от -1 до 1, где значения близкие к 1 или -1 указывают на сильную взаимосвязь.

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

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

🔥Для всех

Библиотека программиста — новости, статьи, досуг, фундаментальные темы
Книги для программистов
IT-мемы
Proglib Academy — тут мы рассказываем про обучение и курсы

#️⃣C#

Библиотека шарписта
Библиотека задач по C# — код, квизы и тесты
Библиотека собеса по C# — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Вакансии по C#, .NET, Unity Вакансии по PHP, Symfony, Laravel

☁️DevOps

Библиотека devops’а
Вакансии по DevOps & SRE
Библиотека задач по DevOps — код, квизы и тесты
Библиотека собеса по DevOps — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования

🐘PHP

Библиотека пхпшника
Вакансии по PHP, Symfony, Laravel
Библиотека PHP для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по PHP — код, квизы и тесты

🐍Python

Библиотека питониста
Вакансии по питону, Django, Flask
Библиотека Python для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Python — код, квизы и тесты

Java

Библиотека джависта — полезные статьи по Java, новости и обучающие материалы
Библиотека Java для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Java — код, квизы и тесты
Вакансии для java-разработчиков

👾Data Science

Библиотека Data Science — полезные статьи, новости и обучающие материалы
Библиотека Data Science для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Data Science — код, квизы и тесты
Вакансии по Data Science, анализу данных, аналитике, искусственному интеллекту

🦫Go

Библиотека Go разработчика — полезные статьи, новости и обучающие материалы по Go
Библиотека Go для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Go — код, квизы и тесты
Вакансии по Go

🧠C++

Библиотека C/C++ разработчика — полезные статьи, новости и обучающие материалы по C++
Библиотека C++ для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по C++ — код, квизы и тесты
Вакансии по C++

💻Другие профильные каналы

Библиотека фронтендера
Библиотека мобильного разработчика
Библиотека хакера
Библиотека тестировщика

💼Каналы с вакансиями

Вакансии по фронтенду, джаваскрипт, React, Angular, Vue
Вакансии для мобильных разработчиков
Вакансии по QA тестированию
InfoSec Jobs — вакансии по информационной безопасности

📁Чтобы добавить папку с нашими каналами, нажмите 👉сюда👈

🤖Также у нас есть боты:
Бот с IT-вакансиями
Бот с мероприятиями в сфере IT

Мы в других соцсетях:
🔸VK
🔸YouTube
🔸Дзен
🔸Facebook *
🔸Instagram *

* Организация Meta запрещена на территории РФ
Что вы знаете про наивный байесовский классификатор?

Наивный байесовский классификатор использует теорему Байеса для вычисления вероятности того, что какой-то элемент принадлежит определённому классу, исходя из вероятностей его признаков. Алгоритм называют «наивным», потому что он строится на предположении, что все признаки объектов каждого класса — независимые случайные величины.

Преимущества наивного байесовского классификатора включают простоту реализации и высокую скорость обучения.

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

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

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

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

👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
Что бы вы предпочли использовать при классификации текста с помощью метода «мешок слов»: модель градиентного бустинга на деревьях или логистическую регрессию?

Стоит учитывать, что при применении «мешка слов» представление данных может быть довольно разреженным и высокоразмерным: создаётся множество столбцов. В этой ситуации логистическая регрессия может быть лучшим выбором, особенно если нужна модель, которая быстро обучается и легко интерпретируется. Как минимум, её можно использовать в качестве базовой модели (baseline) — это будет неплохой отправной точкой.

#машинное_обучение
#NLP
🐍Решение задачи на Python «сумма двух» (Two sum)

Вам даны массив и число N. Нужно вернуть True, если в массиве есть такие два числа A и B, что их сумма A + B даёт N. В противном случае нужно вернуть False.
Примеры:
[1, 2, 3, 4], 5 ⇒ True
[3, 4, 6], 6 ⇒
False


✔️Можно, конечно, применить брутфорс, но есть решение получше. Его сложность составит O(n). Вот как оно выглядит:


def two_sum(numbers, target):
index = {num: i for (i, num) in enumerate(numbers)}

n = len(numbers)

for i in range(n):
a = numbers[i]
b = target - a

if b in index:
j = index[b]
if i != j:
return True

return False


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

#алгоритмы
#python
Please open Telegram to view this post
VIEW IN TELEGRAM
Какие существуют методы улучшения простого градиентного бустинга?

✔️Усечение деревьев.
Можно обрезать деревья до определённой глубины или ограничить количество листьев, чтобы контролировать сложность модели и уменьшить переобучение.
✔️Использование регуляризации.
Добавление регуляризации (например, L1 или L2) также помогает снизить риск переобучения.
✔️Введение темпа обучения (learning rate).
Присутствие этого параметра означает, что каждый базовый алгоритм вносит относительно небольшой вклад во всю композицию. Это тоже помогает бороться с переобучением.
✔️Применение стохастического градиентного бустинга.
Это, по сути, внесение рандомизации в процесс обучения базовых алгоритмов. Они обучаются не по всей выборке, а лишь по её случайному подмножеству.

#машинное_обучение
Что такое дистилляция модели (Knowledge Distillation)?

Это метод, который позволяет малой модели имитировать поведение большой модели. Чаще всего используется в NLP и компьютерном зрении. Позволяет снизить требования к вычислительным ресурсам при инференсе моделей без существенной потери качества.

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

Подробнее можно прочитать здесь

#NLP
#глубокое_обучение
Чем LSTM отличается от традиционной RNN?

▫️Рекуррентные нейронные сети (recurrent networks, RNN) были придуманы для работы с последовательностями данных, такими как текст или временные ряды. Чтобы сеть могла хранить информацию о предыдущих токенах, было введено понятие внутренней памяти или скрытого состояния (hidden state). В простейшем случае оно выражается одним вектором фиксированной размерности. На каждом шаге в сеть подаются данные, при этом происходит обновление скрытого состояния. После этого по скрытому состоянию предсказывается выходной сигнал.
✍️ Традиционные RNN страдают от проблемы исчезающего градиента, когда в процессе обратного распространения ошибки градиенты становятся настолько малыми, что обучение становится очень неэффективным для длинных последовательностей.
▫️Сети с долговременной и кратковременной памятью (Long short term memory, LSTM) были созданы для решения вышеозначенной проблемы. Все рекуррентные сети можно представить в виде цепочки из повторяющихся блоков. В RNN таким блоком обычно является один линейный слой с гиперболическим тангенсом в качестве функции активации. В LSTM повторяющийся блок имеет более сложную структуру, состоящую не из одного, а из четырёх компонентов. Кроме скрытого состояния, в LSTM появляется понятие состояния блока (cell state). Hidden state же теперь передаётся наружу (не только в следующий блок, но и на следующий слой или выход всей сети). Также LSTM может добавлять или удалять определённую информацию из cell state с помощью специальных механизмов, которые называются gates.

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

#глубокое_обучение
Как может переобучиться SVM?

Идея метода опорных векторов (support vector machine, SVM) заключается в построении гиперплоскости, разделяющей объекты выборки оптимальным способом. Модель строится в предположении, что чем больше расстояние (зазор) между разделяющей гиперплоскостью и объектами разделяемых классов, тем меньше будет средняя ошибка классификатора.

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

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

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

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

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

👉Подписаться👈
Что вы знаете о метрике perplexity (перплексия)?

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

Подробнее про перплексию можно прочесть здесь.

#NLP
#глубокое_обучение
Может ли быть такое, что модель даёт вероятность какого-то класса более 90%, но при этом всё равно ошибается?

Да, такое возможно. По сути, вероятность 90% или выше указывает на высокую уверенность модели в своём предсказании, но это не исключает возможности ошибки. Причиной может быть, например, дисбаланс классов. Из-за этого модель может склоняться просто к предсказанию более часто встречающегося класса.

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

#машинное_обучение
В каком случае вы будете наблюдать изменение метрики specificity?

Specificity отражает то, насколько часто классификатор правильно не относит объекты к классу.

Метрика будет изменяться, если:

▫️изменится количество правильно классифицированных отрицательных случаев.
▫️изменится количество ложноположительных (FP) результатов.
▫️изменится порог решения классификатора.

▶️ Например, у нас есть группа пациентов, проходящих тест на определённое заболевание. Specificity определяется как доля правильно идентифицированных здоровых пациентов (TN) от общего числа действительно здоровых пациентов (TN + FP). Предположим, что из 100 пациентов 20 действительно болеют, а 80 здоровы. Тест правильно определил 70 здоровых как здоровых (TN) и ошибочно определил 10 здоровых как больных (FP). В этом случае метрика будет равна 0.875. Затем тест улучшили, и он правильно идентифицирует 75 здоровых пациентов как здоровых (TN) и 5 здоровых пациентов как больных (FP). Specificity выросла до 0.9375.

#машинное_обучение
Что такое псевдо-разметка?

Это процесс автоматического добавления новых тестовых данных с разметкой к тренировочным данным. Включает 5 шагов:
▫️ Обучение модели на тренировочных данных.
▫️ Предсказание меток для тестового набора данных.
▫️ Предсказанные метки считаются «псевдо-метками», и данные, для которых они были сгенерированы, превращаются в «псевдо-размеченный» набор данных.
▫️ Построение новой модели с использованием как первоначального тренировочного набора данных, так и псевдо-размеченного.
▫️ Использование новой модели для дальнейших предсказаний.

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

#машинное_обучение
Почему может быть предпочтительнее использовать меньшее количество предикторов?

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

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

#машинное_обучение