Machine learning Interview
24.8K subscribers
1.07K photos
78 videos
12 files
730 links
Разбираем вопросы с собеседований по Machine Learning, Data Science, Deep Learning и Нейронным сетям, Python.

Вопросы - @notxxx1


@itchannels_telegram -🔥лучшие it каналы

РКН: clck.ru/3FmwRz
Download Telegram
Какой критерий информативности используется в алгоритме AdaBoost?

AdaBoost — это итеративный ансамблевый метод. Классификатор AdaBoost создает сильный классификатор, объединяя несколько плохо работающих классификаторов, так что вы получите сильный классификатор с высокой точностью. Основная концепция Adaboost заключается в установке весов классификаторов и обучении выборки данных на каждой итерации, чтобы обеспечить точные прогнозы необычных наблюдений. Любой алгоритм машинного обучения может использоваться в качестве базового классификатора, если он принимает веса в обучающем наборе. Adaboost должен соответствовать двум условиям:
Классификатор должен обучаться в интерактивном режиме на различных взвешенных обучающих примерах.

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

==============================

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

Он итеративно обучает модель машинного обучения.AdaBoost, выбирая обучающий набор на основе точного прогноза последнего обучения.

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

Чтобы классифицировать, проведите «голосование» по всем созданным вами алгоритмам обучения.

Смотри Пайтон код алгоритма здесь https://informatics-ege.blogspot.com/2022/07/adaboost-algorithm-and-learn-adaboost.html

Ответ

@machinelearning_interview
Что такое стохастический ЕМ-алгоритм, какова основная идея?

Ответ
Алгоритм максимизации ожидания (EM) — это способ найти оценки максимального правдоподобия для параметров модели, когда ваши данные неполны, имеют отсутствующие точки данных или имеют ненаблюдаемые (скрытые) скрытые переменные. Это итеративный способ аппроксимации функции максимального правдоподобия. Хотя оценка максимального правдоподобия может найти «наиболее подходящую» модель для набора данных, она не особенно хорошо работает для неполных наборов данных. Более сложный алгоритм EM может найти параметры модели, даже если у вас отсутствуют данные. Он работает, выбирая случайные значения для отсутствующих точек данных и используя эти предположения для оценки второго набора данных. Новые значения используются для создания лучшего предположения для первого набора, и процесс продолжается до тех пор, пока алгоритм не сойдется в фиксированной точке.
================================

Алгоритм EM находит оценки максимального правдоподобия для параметров модели, когда у вас есть неполные данные. «Е-шаг» находит вероятности для присвоения точек данных на основе набора гипотетических функций плотности вероятности; «М-шаг» обновляет исходную гипотезу новыми данными. Цикл повторяется до тех пор, пока параметры не стабилизируются.

@machinelearning_interview
📌 Каковы области применения однофакторной логистической регрессии?

Ответ

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

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

Логистическая регрессия не требует строго нормального распределения для данных, однако оно желательно в отношении независимых переменных. Следует избегать коллинеарности предикторов, что может привести к смещенным оценкам и большим среднеквадратичным ошибкам. Процедура наиболее эффективна в ситуации, когда группирующая переменная является истинно категориальной; если принадлежность к группе определяется значениями непрерывной переменной (например, высокий IQ по сравнению с низким IQ), имеет смысл обратиться к линейной регрессии, чтобы воспользоваться преимуществом большей информативности непрерывной переменной.

Логистическая регрессия бывает двух видов: бинарная и мультиномиальная.

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

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

@machinelearning_interview
Что такое сеть радиальных базисных функций?

Сеть радиальных базисных функций - нейронная сеть прямого распространения сигнала, которая содержит промежуточный (скрытый) слой радиально симметричных нейронов. Такой нейрон преобразовывает расстояние от данного входного вектора до соответствующего ему "центра" по некоторому нелинейному закону (обычно функция Гаусса)[1]. В данной статье мы рассмотрим применение этой нейронной сети к решению задачи классификации с помощью восстановления смесей распределений (частный случай ЕМ-алгоритма

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

@machinelearning_interview
С какой целью делается бинаризация и в каких случаях?

Ответ

Бинаризация используется, когда вы хотите преобразовать вектор числовых признаков в логический вектор. В области обработки цифровых изображений бинаризация изображения — это процесс, посредством которого цветное изображение или изображение в градациях серого преобразуется в бинарное изображение, т. е. изображение только с двумя цветами (обычно черным и белым). Этот метод используется для распознавания объектов, форм и, в частности, символов. Благодаря бинаризации можно отличить интересующий объект от фона, на котором он находится. Функция preprocessing.Binarizer() выполняет бинарную обработку данных в соответствии с заданным порогом. Значения, превышающие пороговое значение, сопоставляются с 1, а значения, меньшие или равные пороговому значению, сопоставляются с 0. При пороговом значении по умолчанию, равном 0, только положительные значения сопоставляются с 1. В нашем случае установленное пороговое значение равно 1,4, поэтому значения, превышающие 1,4 сопоставляются с 1, а значения меньше 1,4 сопоставляются с 0.
==============================================

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

from sklearn import preprocessing

import numpy as np

data = np.array([[3, -1.5, 2, -5.4], [0, 4, -0.3, 2.1], [1, 3.3, -1.9, -4.3]])

print(data)

data_binarized = preprocessing.Binarizer(threshold=1.4).transform(data)

print("Done data_binarized","\n",data_binarized )

print("\n")

(.env) [boris@ServerFedora35 BINARIZE]$ python Binarize1.py

[[ 3. -1.5 2. -5.4]

[ 0. 4. -0.3 2.1]

[ 1. 3.3 -1.9 -4.3]]

Done data_binarized

[[1. 0. 1. 0.]

[0. 1. 0. 1.]

[0. 1. 0. 0.]]

Смотирите пример: https://informatics-ege.blogspot.com/2022/07/what-is-purpose-of-binarization.html

@machinelearning_interview
⚙️ 9 концепций, которые вы должны изучить для своих интервью по науке о данных

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

Итак, каково решение?

Вы ищете синтаксис/концепцию в Google первые 2-3 раза, когда вы ее используете, а затем пытаетесь реализовать ее самостоятельно на 4-й раз.

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

➡️ Читать дальше

@machinelearning_interview
Что делать, если классы не сбалансированы?

Я бы тут уточнил вопрос: кому и когда делать? Причины дисбаланса бывают разные, иногда он устраним на этапе постановки задачи, иногда он совсем неустраним и надо продумать подходящую метрику качества, а если уже всё продумано, то часто ничего не надо делать.

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

Есть куча искусственных приёмов для восстановления баланса классов, например SMOTE. Но как показывает практика, лучше с ними не связываться, гораздо важнее подобрать правильную модель и корректно преобразовать её результаты (например, с помощью калибровки). В крайнем случае, можно использовать пересемплирование (resampling) данных, например, дублирование объектов малого класса. Для желающих сказать побольше при ответе на этот вопрос — вот ссылка.

@machinelearning_interview
Как вы обрабатываете пропуски? Какие методы подстановки вы рекомендуете?

Существует несколько способов обработки пропущенных данных:

- удаление строк с пропущенными данными;
- подстановка среднего значения, медианы или моды;
- присваивание уникального значения;
- предсказание пропущенных значений;
- использование алгоритма, допускающего пропуски – например, случайный лес.

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

@machinelearning_interview
Дайте простой пример того, как постановка экспериментов может помочь ответить на вопрос о поведении. Как экспериментальные данные контрастируют с данными наблюдений?

Ответ

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

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

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

@machinelearning_interview
Для тестирования новой и старой систем сортировки пациентов неотложной помощи исследователи выбрали 20 ночей и случайным образом назначили новую систему сортировки на 10 из них, в остальных оставив старую. Они рассчитали среднее время ожидания (СВО) доктора для каждой ночи. Для новой системы СВО = 3 часа с отклонением 0.60, тогда как для старой было 5 часов с отклонением 0.68. Оцените 95% доверительный интервал для разницы в среднем СВО между системами. Считайте дисперсию постоянной.

Воспользуемся формулой нахождения доверительного интервала для двух независимых выборок (используем t-таблицу для n1+n2-2 степеней свободы)

Доверительный интервал – это среднее +/- t-оценка * стандартную ошибку.

Среднее значение = новое среднее – старое среднее = 3-5 = -2.

t-оценка равна 2.101, учитывая 18 степеней свободы (20-2) и 95% доверительный интервал (смотри Картинку).

Стандартная ошибка = sqrt(0.62*9+0.682*9)/(10+10–2)) * sqrt(1/10+1/10) = 0.352. Доверительный интервал = [-2.75, -1.25].

@machinelearning_interview
Вы баллотируетесь на пост, и ваш социолог опросил 100 избирателей, 60 из которых сказали, что собираются голосовать за вас. Можете ли вы быть уверены в победе?

Ответ

Примем для простоты, что у вас только один соперник.
Также примем, что желаемый доверительный интервал составляет 95%. Это даст нам z-оценку 1.96. Формула на картинке.

В нашей задаче p = 0.6, z = 1.96, n = 100, что дает доверительный интервал [50.4, 69.6].

Таким образом, при доверительном интервале 95% вы можете расслабиться, только если ничего не имеете против победы с минимальным перевесом. В противном случае придется добиться 61 голоса из 100 опрошенных, чтобы не беспокоиться.


@machinelearning_interview
🔥 Полезнейшая Подборка каналов

🖥 Machine learning
@ai_machinelearning_big_data – все о машинном обучении
@data_analysis_ml – все о анализе данных.
@machinelearning_ru – машинное обучении на русском от новичка до профессионала.
@machinelearning_interview – подготовка к собеседования Data Science
@datascienceiot – бесплатные книги Machine learning
@ArtificialIntelligencedl – канал о искусственном интеллекте
@neural – все о нейронных сетях
@machinee_learning – чат о машинном обучении
@datascienceml_jobs - работа ds, ml

🖥 Python

@pro_python_code – погружение в python
@python_job_interview – подготовка к Python собеседованию
@python_testit тесты на python
@pythonlbooks - книги Python
@Django_pythonl django
@python_djangojobs - работа Python

🖥 Java
@javatg - Java для програмистов
@javachats Java чат
@java_library - книги Java
@android_its Android разработка
@java_quizes - тесты Java
@Java_workit - работа Java
@progersit - шпаргалки ит

🖥 Javascript / front
@javascriptv - javascript изучение
@about_javascript - javascript продвинутый
@JavaScript_testit -тесты JS
@htmlcssjavas - web
@hashdev - web разработка

👣 Golang
@golang_interview - вопросы и ответы с собеседований по Go. Для всех уровней разработчиков.
@Golang_google - go для разработчиков
@golangtests - тесты и задачи GO
@golangl - чат Golang
@GolangJobsit - вакансии и работа GO
@golang_jobsgo - чат вакансий
@golang_books - книги Golang
@golang_speak - обсуждение задач Go

🖥 Linux
@linux_kal - чат kali linux
@linuxkalii - linux kali
@linux_read - книги linux

👷‍♂️ IT работа

@hr_itwork - ит-ваканнсии

🖥 SQL
@sqlhub - базы данных
@chat_sql - базы данных чат

🤡It memes
@memes_prog - ит-мемы

⚙️ Rust
@rust_code - язык программирования rust
@rust_chats - чат rust

#️⃣ c# c++
@csharp_ci - c# c++кодинг
@csharp_cplus чат

📓 Книги

@programming_books_it
@datascienceiot
@pythonlbooks
@golang_books
@frontendbooksit
@progersit
@linux_read
@java_library
@frontendbooksit

📢 English for coders

@english_forprogrammers - Английский для программистов

🖥 Github
@github_code
Please open Telegram to view this post
VIEW IN TELEGRAM
Какими способами можно сделать модель более устойчивой к выбросам?

Ответ

Выбросы обычно определяются по отношению к распределению. Они могут быть удалены на этапе предварительной обработки (до любого этапа обучения)…

Странно задавать вопрос именно в такой форме, чтобы услышать именно такой ответ! Как СДЕЛАТЬ МОДЕЛЬ устойчивой — надо до её использования повозиться с данными. Если бы вопрос был «как решить проблему выбросов», то ответ был бы корректным, причём я бы его разнёс по пунктам:

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

- применение т.н. робастных моделей (например, линейных с настройкой не на сумму квадратов ошибки, а на сумму модулей),

- удаление выбросов и переобучение моделей (например, удаляя объекты, на которых модель ошибается сильнее).
А вообще, я бы попросил уточнить вопрос: хотелось бы немного знать природу выбросов, чтобы выбрать правильную стратегию решения.

@machinelearning_interview
📌 Карьера в DATA SCIENCE: TOP-50 Вопросов на собеседовании

↪️ Смотреть видео

@machinelearning_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Уровень заражений в больнице, превышающий 1 заражение на 100 человеко-дней, считается высоким. В некоторой больнице было 10 заражений за последние 1787 человеко-дней. Вычислите P-значение верного одностороннего теста, чтобы определить, высок ли уровень заражений в этой больнице.

Ответ

Поскольку мы анализируем количество событий (заражений), произошедших за определенный интервал времени, нужно использовать распределение Пуассона.

произошлособытий

Нуль-гипотеза: 1 заражение на 100 человеко-дней или меньше

Альтернативная гипотеза: больше 1 заражения на 100 человеко-дней.

k (фактическое) = 10 заражений.

Лямбда (теоретическое) = 1/100 * 1787.

P = 0.032372 или 3.2372% (можно рассчитать с помощью using.poisson() в Excel, ppois в R или scipy.stats.poisson в Python)

Поскольку значение P меньше альфы (при уровне значимости 5%), мы отвергаем нулевую гипотезу, и делаем вывод, что больница не соответствует стандарту.

@machinelearning_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
Зачем нужна разметка данных для нейросети?

Ответ

Качество проекта машинного обучения напрямую зависит от того, как вы подходите к решению 3-х основных задач: сбор данных, их предобработка и разметка.
Разметка обычно представляет собой сложный и трудоемкий процесс. Например, системы распознавания изображений часто предполагают рисование ограничивающих рамок вокруг объектов, в то время как системы рекомендаций по продуктам и системы анализа настроений могут потребовать знания культурного контекста. Не забывайте также, что массив данных может содержать десятки и более тысяч образцов, нуждающихся в разметке.
===========================
Таким образом, подход к созданию проекта машинного обучения будет зависеть от сложности поставленной задачи, масштаба проекта и графика его реализации. Учитывая эти факторы, мы выделили 5 основных подходов к разметке данных и привели аргументы за и против каждого из них.
Различные способы разметки данных для машинного обучения делятся на следующие категории:
===========================
Аутсорсинг: это хороший способ в тех случаях, когда команда на разметку данных нужна на определенный период времени. Разместив объявление на рекрутинговых сайтах или в своих социальных сетях, вы сможете сформировать базу потенциальных исполнителей. Далее в ходе собеседования и тестирования будут определены те, кто обладает необходимыми навыками. Это отличный вариант для формирования временной команды, но это требует четкого планирования и организации; новые сотрудники должны быть обучены, чтобы участвовать и выполнять работу по мере необходимости. Кроме того, если у вас еще нет инструмента разметки данных, вам необходимо его приобрести.
============================
Краудсорсинг: краудсорсинговые платформы — это способ решения конкретной задачи с помощью большого количества исполнителей. Так как в краудсорсинге участвуют исполнители из самых разных стран и можно фильтровать по уровню, получается быстрый и достаточно бюджетный метод. При этом краудсорсинговые платформы сильно различаются по квалификации исполнителей, контролю качества и инструментам управления проектами. Поэтому при выборе краудсорсинговой площадки нужно учитывать все эти параметры.
=============================
Синтетический метод: синтетическая разметка означает создание или генерацию новых данных, содержащих атрибуты, необходимые для вашего конкретного проекта. Одним из способов создания синтетической разметки является использование генеративно-состязательной сети (GAN). GAN использует две нейронные сети (генератор и дискриминатор), которые конкурируют друг с другом, создавая ложные данные и различая настоящие данные от ложных. В результате получаются очень реалистичные новые данные. GAN и другие методы синтетической разметки позволяют получать совершенно новые данные из существующих массивов. Этот метод очень экономичен по времени и отлично подходит для получения высококачественных данных. Однако в настоящее время синтетические методы разбиения требуют больших вычислительных мощностей, что делает их очень дорогими.
===============================
«Программный метод»: предусматривает использование скриптов для автоматической разметки данных. Этот процесс позволяет автоматизировать задачи, в том числе разметку изображений и текстов, что позволяет значительно сократить количество исполнителей. Кроме того, компьютерная программа не будет делать перерывов на отдых, а значит, вы сможете получить результаты гораздо быстрее. Однако этот метод все еще далек от совершенства, а при программной разметке часто требуется группа контроля качества, которая попутно следит за правильностью разметки данных.

@machinelearning_interview
Объясните дилемму смещения-дисперсии (bias-variance tradeoff) и приведите примеры алгоритмов с высоким и низким смещением. (Тема: Алгоритмы)

Ответ

Смещение (bias) – это ошибка, внесенная в вашу модель из-за чрезмерного упрощения алгоритма машинного обучения, которое может привести к недообучению. В процессе обучения модели делаются упрощенные предположения, чтобы сделать целевую функцию более простой для понимания. Алгоритмы машинного обучения с низким смещением включают деревья решений, KNN и SVM. Высоким смещением, в частности, отличаются линейная и логистическая регрессия.

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

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

@machinelearning_interview
↪️ Что показывает P-значение о данных? (Тема: Статистика)

Ответ

P-значение используется для проверки значимости результатов после статистического теста гипотезы. P-значения помогают анализирующему делать выводы и всегда находятся в диапазоне между 0 и 1.

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

- P-значение, меньшее 0.05, обозначает сильные доказательства против нулевой гипотезы – это значит, что нулевая гипотеза может быть отвергнута.

- P-значение, равное 0.05, находится на границе, то есть мы не можем сделать уверенного вывода о том, можно ли отвергнуть нулевую гипотезу.

@machinelearning_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
Как бы вы справились с разными формами сезонности

Ответ

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

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

@machinelearning_interview
This media is not supported in your browser
VIEW IN TELEGRAM
Всегда ли методы градиентного спуска сходятся в одной и той же точке?

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

Здесь и в посте показаны GIF'ы разных оптимизаторов (методов градиентного спуска) с демонстрацией их работы в пространстве ошибок.

@machinelearning_interview