Библиотека дата-сайентиста | Data Science, Machine learning, анализ данных, машинное обучение
18.5K subscribers
2.36K photos
119 videos
64 files
4.8K links
Все самое полезное для дата сайентиста в одном канале.

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

Курс по ML: https://clc.to/4hNluQ

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

РКН: https://gosuslugi.ru/snet/67a5b03124c8ba6dcaa121c9
Download Telegram
Вам дали список чисел. Напишите функцию, которая вернёт выбросы

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

✔️ Вычислим квартили.
Так мы получим Q1 (первый квартиль) и Q3 (третий квартиль). Тогда IQR — это размах между первым и третьим квартилями (Q3 - Q1).
✔️ Определим выбросы.
Как правило, выбросами считаются точки данных, которые находятся ниже Q1 - 1.5 * IQR или выше Q3 + 1.5 * IQR.

Вот пример функции, реализующей такой алгоритм:
import numpy as np

def find_outliers(data):
sorted_data = sorted(data)

Q1 = np.percentile(sorted_data, 25)
Q3 = np.percentile(sorted_data, 75)

IQR = Q3 - Q1

lower_bound = Q1 - 1.5 * IQR
upper_bound = Q3 + 1.5 * IQR

outliers = [x for x in sorted_data if x < lower_bound or x > upper_bound]

return outliers


#вопросы_с_собеседований
Please open Telegram to view this post
VIEW IN TELEGRAM
23👍14🔥41
Какие допущения есть у линейной регрессии?

Линейная регрессия — это, в сущности, статистический метод, который позволяет описать связь между переменными. Этот метод валиден, если выполняются четыре предположения:

1️⃣ Между независимой переменной x и зависимой переменной y существует линейная зависимость.
2️⃣ Между последовательными остатками (или разницей между фактическими и предсказанными значениями) нет корреляции. Это чаще всего случается в данных временных рядов.
3️⃣ Должна соблюдаться гомоскедастичность. То есть дисперсия остатков обязана быть одинаковой. Иными словами, разность между реальным и предсказанным значениями, должна оставаться в определённом известном диапазоне.
4️⃣ Остатки должны быть нормально распределены.

#вопросы_с_собеседований
12👍2😁1
Как выбрать количество скрытых слоёв и нейронов в нейросети?

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

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

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

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

#вопросы_с_собеседований
👍9
Какие существуют методы аугментации для текстов?

Аугментацией называют процесс модификации существующих данных для создания новых образцов и расширения тренировочного набора. Обычно об аугментации говорят в контексте компьютерного зрения. Самый простой способ расширить набор картинок на основе существующих — это исказить их разными методами. Но что делать, если стоит задача получить новые образцы текста для NLP? Есть несколько способов.

Замена синонимом
Это самый простой метод перефразировать предложение. Однако реализовать его на большом массиве текстов может быть нелегко, так как не все синонимы являются корректной заменой (многое, например, зависит от контекста).

Сокращения
Можно применять общепринятые сокращения. Например, вместо «так как» — «т.к.». Существуют библиотеки для подобных аугментаций.

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

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

Замена и удаление несущественного/существенного
В одной из работ Unsupervised Data Augmentation предлагается заменять несущественные слова, которые определены как слова с маленьким значением TF-IDF. В другой работе наоборот предлагается заменять самые значимые слова. Так, в задаче определения сентимента можно находить самое «сентиментное» слово и удалять его (например, слова «отличный», «превосходный», «классный», «улётный» и т.п.).

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

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

Генеративные модели
Можно синтезировать новые тексты с помощью генеративных моделей, тех же GPT.

#вопросы_с_собеседований
👍11
Чем отличаются друг от друга Transfer learning, Fine-tuning и Multi-task learning?

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

▫️Fine-tuning
Идея похожа на Transfer learning, однако Fine-tuning подразумевает корректировку параметров предобученной модели по всем слоям или по какой-то их части. Для корректировки используется новый набор данных, подходящий для вашей конкретной задачи.

▫️Multi-task learning
Этот подход предполагает одновременное обучение модели для решения нескольких задачах. Это позволяет улучшить обобщающую способность за счёт совместного извлечения признаков.

#вопросы_с_собеседований
7👍1
✍️ Опишите алгоритм обратного распространения ошибки

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

Алгоритм таков:

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

#вопросы_с_собеседований
👍10
✍️Что такое проблема «умирающего» ReLU?

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

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

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

#вопросы_с_собеседований
👍141
✍️ Что вы знаете про N-грамные языковые модели?

N-грам (n-gram) языковые модели — это статистические модели, которые предсказывают следующее слово после N-1 слов, основываясь на вероятности их сочетания. Сам по себе N-gram представляет собой последовательность из определённого количества слов. Например, если речь идёт о двух словах, то мы использует биграмы. В такой модели вероятность каждого слова зависит только от предыдущего слова.

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

#вопросы_с_собеседований
👍101
Запустится ли этот код на Python 3? Если да, то что он выведет?

sys.allow_boolean_assignment разрешает создавать переменные с именами, зарезервированными под идентификаторы типа bool. Поэтому этот код запустится и выведет «True is False».

Эта настройка введена в известном первоапрельском коммите, который до сих пор остался в коде интерпретатора. Если кандидат об этом знает, можно с уверенностью сказать, что он общается в должных профессиональных кругах и любят углубляться в детали.
#вопросы_с_собеседований
🔥9
Как прочитать данные в DataFrame из файла CSV?

Мы можем создать фрейм данных из файла CSV — «Comma Separated Values (значения, разделенные запятыми)». Это можно сделать с помощью метода read_csv(), который принимает файл csv в качестве параметра:
pandas.read_csv(file_name)

Другой способ сделать это — использовать метод read_table(), который принимает CSV-файл и значение разделителя в качестве параметра:
pandas.read_table(file_name, delimiter)
#вопросы_с_собеседований
🥱10🌚3
Что такое дескрипторы?

Дескрипторы — это механизм в Python, который позволяет настраивать доступ к атрибутам объектов. Они используются для определения поведения при доступе, изменении или удалении атрибута объекта.

Дескрипторы реализуются через три метода:

— __get__(self, instance, owner) вызывается при доступе к атрибуту
— __set__(self, instance, value) вызывается при изменении атрибута
— __delete__(self, instance) вызывается при удалении атрибута

Дескрипторы могут быть определены как отдельный класс или внутри другого класса. Они могут быть использованы для создания свойств, которые имеют специальное поведение при доступе, изменении или удалении.
#вопросы_с_собеседований
👍11😁32
🌲Какие операции с деревьями как структурами данных вы знаете?

Дерево — это иерархическая структура данных, состоящая из узлов, соединённых рёбрами.

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

🔹Insert (вставка)
Если нет ограничений на размещение узла, вставка может быть простым добавлением нового потомка к существующему листу.

🔹Basic Search (обход дерева)
В самой простой форме обход дерева — это рекурсивная функция, которая вызывает саму себя для каждого потомка узла до тех пор, пока не будет найден целевой узел.

🔹Delete (удаление)
Если нужно удалить целое поддерево, это можно сделать, используя метод поиска узла. После того как целевой узел найден, его можно удалить из списка потомков его родителя.

#вопросы_с_собеседований
👍3
Чем различаются стандартное отклонение и стандартная ошибка?

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

▪️Стандартная ошибка (SE) показывает, насколько точно среднее значение выборки (sample mean) оценивает среднее значение генеральной совокупности (population mean). Она уменьшается с увеличением размера выборки, так как большее количество данных позволяет лучше оценить истинное среднее.

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

#вопросы_с_собеседований
👏16👍42🥱1
Как извлечь отдельные значения из столбца в SQL?

Используя ключевое слово DISTINCT в сочетании с командой SELECT, мы можем извлекать различные значения из столбца в SQL. Ключевое слово DISTINCT используется для фильтрации дубликатов значений и возврата только уникальных значений из указанного столбца.
#вопросы_с_собеседований
👍5🥱5👏1
Что такое диффузионные модели?

Диффузионные модели используются для генерации новых данных (например, изображений), и в их основе лежит процесс «зашумления» и «расшумления».

✍️ Как это работает?

▪️К исходному объекту добавляется случайный шум. На каждом этапе этого процесса объект становится всё более «шумным», пока не превратится в почти случайный набор данных.
▪️Теперь задача модели — шаг за шагом «убирать» шум, чтобы восстановить что-то осмысленное, например, изображение.

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

#вопросы_с_собеседований
😁3🥱1
✍️ Как определить выбросы с помощью критерия Граббса?

Главное предположение критерия Граббса состоит в том, что выборка имеет нормальное распределение.

🔧 Алгоритм определения выбросов:

1️⃣ Возьмите данные и найдите самое удалённое значение.

2️⃣ Рассчитайте метрику отклонения.
Для этого нужно определить, насколько далеко это значение находится от среднего уровня остальных данных, учитывая их вариативность.

3️⃣ Сравните с критическим значением.
Критическое значение берётся из таблицы критерия Граббса (оно зависит от количества данных и уровня значимости). Если метрика превышает этот порог, значение считается выбросом.

#вопросы_с_собеседований
👍7