Что такое сериализация и десериализация? Как используется в машинном обучении?
В контексте хранения данных, сериализация — это процесс перевода структур данных в формат для их хранения и передачи. Десериализация — обратный процесс, восстановление данных из этого формата в исходный вид.
В машинном обучении можно сохранять обученные модели на диске или передавать их по сети, а затем использовать для прогнозирования на новых данных. Чтобы это проделать, пригодятся сериализация и десериализация.
Для этой задачи подойдёт, например, модуль pickle в Python. Вот как можно его использовать:
#машинное_обучение
В контексте хранения данных, сериализация — это процесс перевода структур данных в формат для их хранения и передачи. Десериализация — обратный процесс, восстановление данных из этого формата в исходный вид.
В машинном обучении можно сохранять обученные модели на диске или передавать их по сети, а затем использовать для прогнозирования на новых данных. Чтобы это проделать, пригодятся сериализация и десериализация.
Для этой задачи подойдёт, например, модуль pickle в Python. Вот как можно его использовать:
# сериализуем
with open('model.pickle', 'wb') as wf:
pickle.dump(model, wf)
# десериализуем модель
with open('model.pickle', 'rb') as rf:
model_out = pickle.load(rf)
#машинное_обучение
Объясните смысл бэггинга?
Бэггинг (bagging) можно расшифровать как bootstrap aggregating. Он предполагает три основных шага:
✔️Bootstrapping
На этом этапе мы создаём подвыборки из данных. Таким образом мы получаем несколько датасетов, на которых далее будем обучать разные копии модели.
✔️Parallel training
На этом этапе копии модели (их называют базовыми моделями) обучаются параллельно и независимо друг от друга.
✔️Aggregation
В конце концов мы берём обученные базовые модели и на их основе рассчитываем, в зависимости от типа задачи, среднее значение или класс, предсказанный большинством.
Бэггинг помогает уменьшить переобучение в моделях. Основная его цель — снизить вариативность (или дисперсию) предсказаний. Метод используется, например, на деревьях решений — в данном случае его называют случайный лес (Random Forest).
#машинное_обучение
Бэггинг (bagging) можно расшифровать как bootstrap aggregating. Он предполагает три основных шага:
✔️Bootstrapping
На этом этапе мы создаём подвыборки из данных. Таким образом мы получаем несколько датасетов, на которых далее будем обучать разные копии модели.
✔️Parallel training
На этом этапе копии модели (их называют базовыми моделями) обучаются параллельно и независимо друг от друга.
✔️Aggregation
В конце концов мы берём обученные базовые модели и на их основе рассчитываем, в зависимости от типа задачи, среднее значение или класс, предсказанный большинством.
Бэггинг помогает уменьшить переобучение в моделях. Основная его цель — снизить вариативность (или дисперсию) предсказаний. Метод используется, например, на деревьях решений — в данном случае его называют случайный лес (Random Forest).
#машинное_обучение
Расскажите про систематическую ошибку отбора (Selection bias)
В общем, систематическая ошибка отбора говорит о том, что выводы, сделанные применительно к какой-либо группе, могут оказаться неточными из-за неправильного отбора в эту группу. В контексте машинного обучения о selection bias можно говорить, когда данные, используемые для обучения модели, не являются репрезентативными по отношению к целевой популяции, для которой предназначена модель. Это может привести к тому, что модель будет хорошо работать на тренировочных данных, но показывать плохие результаты на новых данных.
Систематическая ошибка отбора может возникать по разным причинам:
▫️Если тренировочный датасет собирается из источников, которые не охватывают всё многообразие генеральной совокупности, то данные могут быть смещены в сторону определённых значений или классов.
▫️Если в обучающем наборе отсутствуют данные по определённым категориям, то модель может совершать ошибки.
#статистика
В общем, систематическая ошибка отбора говорит о том, что выводы, сделанные применительно к какой-либо группе, могут оказаться неточными из-за неправильного отбора в эту группу. В контексте машинного обучения о selection bias можно говорить, когда данные, используемые для обучения модели, не являются репрезентативными по отношению к целевой популяции, для которой предназначена модель. Это может привести к тому, что модель будет хорошо работать на тренировочных данных, но показывать плохие результаты на новых данных.
Систематическая ошибка отбора может возникать по разным причинам:
▫️Если тренировочный датасет собирается из источников, которые не охватывают всё многообразие генеральной совокупности, то данные могут быть смещены в сторону определённых значений или классов.
▫️Если в обучающем наборе отсутствуют данные по определённым категориям, то модель может совершать ошибки.
#статистика
Что вы можете сказать про вычислительную устойчивость сигмоиды? Могут ли возникать какие-нибудь проблемы?
Формула сигмоиды выглядит так, как на картинке. При очень больших отрицательных или положительных значениях x у функции действительно могут возникнуть проблемы.
В общем, в такой ситуации производная сигмоидной функции будет стремиться к нулю. Это означает, что изменения весов будут незначительными в процессе обратного распространения ошибки, что может существенно замедлить обучение или даже остановить его.
Если же мы имеем дело с очень большими значениями x, то у нас и вовсе может возникнуть переполнение памяти (overflow). Так, в Python мы можем получить предупреждение о переполнении (RuntimeWarning: overflow encountered in exp). Это указывает на то, что результат вычисления экспоненциальной функции слишком велик для представления в типе данных с плавающей запятой.
#машинное_обучение
Формула сигмоиды выглядит так, как на картинке. При очень больших отрицательных или положительных значениях x у функции действительно могут возникнуть проблемы.
В общем, в такой ситуации производная сигмоидной функции будет стремиться к нулю. Это означает, что изменения весов будут незначительными в процессе обратного распространения ошибки, что может существенно замедлить обучение или даже остановить его.
Если же мы имеем дело с очень большими значениями x, то у нас и вовсе может возникнуть переполнение памяти (overflow). Так, в Python мы можем получить предупреждение о переполнении (RuntimeWarning: overflow encountered in exp). Это указывает на то, что результат вычисления экспоненциальной функции слишком велик для представления в типе данных с плавающей запятой.
#машинное_обучение
Forwarded from Библиотека дата-сайентиста | Data Science, Machine learning, анализ данных, машинное обучение
👾 Карточки по мотивам наших вопросов с собеседований DS
Наш подписчик сделал колоду карточек ANKI из пар вопрос-ответ, опубликованных в канале Библиотека собеса по Data Science. Всего в наборе 203 карточки.
Чтобы смотреть их в удобной форме, нужно:
▪️Завести аккаунт на AnkiWeb;
▪️Скачать десктопное приложение ANKI;
▪️Скачать карточки;
▪️Открыть их в приложении.
❤️ Если вы тоже делали карточки, шпаргалки или инструкции по нашим материалам, то обязательно присылайте нашему боту
Наш подписчик сделал колоду карточек ANKI из пар вопрос-ответ, опубликованных в канале Библиотека собеса по Data Science. Всего в наборе 203 карточки.
Чтобы смотреть их в удобной форме, нужно:
▪️Завести аккаунт на AnkiWeb;
▪️Скачать десктопное приложение ANKI;
▪️Скачать карточки;
▪️Открыть их в приложении.
❤️ Если вы тоже делали карточки, шпаргалки или инструкции по нашим материалам, то обязательно присылайте нашему боту
Какие нелинейные преобразования данных вы знаете?
Нелинейные преобразования меняют структуру распределения. Это помогает улучшить модели, делая их способными улавливать сложные зависимости в данных.
Вот некоторые из наиболее распространённых нелинейных преобразований:
▪️Логарифмическое преобразование.
Оно позволяет увеличить расстояние между небольшими значениями и уменьшить между большими значениями. Преобразование делает скошенное распределение более симметричным и приближённым к нормальному.
▪️Преобразование с помощью квадратного корня.
Действует аналогично логарифмическому, однако менее агрессивно. Его без изменений можно применять к нулевым значениям.
▪️Преобразование Бокса-Кокса.
Обычно используется для трансформации зависимой переменной в случае, если у нас есть ненормальное распределение ошибок и/или нелинейность взаимосвязи, а также в случае гетероскедастичности.
▪️Преобразование Йео-Джонсона.
Позволяет работать с нулевыми и отрицательными значениями.
#машинное_обучение
#статистика
Нелинейные преобразования меняют структуру распределения. Это помогает улучшить модели, делая их способными улавливать сложные зависимости в данных.
Вот некоторые из наиболее распространённых нелинейных преобразований:
▪️Логарифмическое преобразование.
Оно позволяет увеличить расстояние между небольшими значениями и уменьшить между большими значениями. Преобразование делает скошенное распределение более симметричным и приближённым к нормальному.
▪️Преобразование с помощью квадратного корня.
Действует аналогично логарифмическому, однако менее агрессивно. Его без изменений можно применять к нулевым значениям.
▪️Преобразование Бокса-Кокса.
Обычно используется для трансформации зависимой переменной в случае, если у нас есть ненормальное распределение ошибок и/или нелинейность взаимосвязи, а также в случае гетероскедастичности.
▪️Преобразование Йео-Джонсона.
Позволяет работать с нулевыми и отрицательными значениями.
#машинное_обучение
#статистика
Forwarded from Библиотека дата-сайентиста | Data Science, Machine learning, анализ данных, машинное обучение
🤖✍️ Как работают языковые модели (LLM): простое объяснение через аналогию с кулинарией
Языковые модели (LLM) — это сложные системы искусственного интеллекта, способные генерировать человекоподобные тексты. Но как именно они это делают? В этой статье мы объясним принципы работы LLM, используя простую и понятную аналогию с приготовлением еды.
🔗 Читать статью
🔗 Зеркало
Языковые модели (LLM) — это сложные системы искусственного интеллекта, способные генерировать человекоподобные тексты. Но как именно они это делают? В этой статье мы объясним принципы работы LLM, используя простую и понятную аналогию с приготовлением еды.
🔗 Читать статью
🔗 Зеркало
В чём заключается разница между обычным k-средних (k-means) и k-средних++ (k-means++)?
Разница заключается в том, как инициализируются центроиды. Центроид — это, по сути, репрезентативная точка в каждом кластере. В обычном алгоритме k-means такие точки назначаются случайным образом. Это не самый оптимальный способ, ведь центроиды могут оказаться слишком рядом друг к другу и разделение по кластерам будет неверным.
Для улучшения алгоритма была придумана схема k-means++. По ней, сначала случайным образом выбирается первый центроид в данных. Следующие центроиды назначаются, исходя из сравнения с первым. Вероятность того, что некоторая точка будет выбрана как следующий центроид, пропорциональна квадратному расстоянию между этой точкой и ближайшим центроидом, который уже был выбран. Такой подход гарантирует более равномерное распределение репрезентативных точек по пространству данных.
#машинное_обучение
Разница заключается в том, как инициализируются центроиды. Центроид — это, по сути, репрезентативная точка в каждом кластере. В обычном алгоритме k-means такие точки назначаются случайным образом. Это не самый оптимальный способ, ведь центроиды могут оказаться слишком рядом друг к другу и разделение по кластерам будет неверным.
Для улучшения алгоритма была придумана схема k-means++. По ней, сначала случайным образом выбирается первый центроид в данных. Следующие центроиды назначаются, исходя из сравнения с первым. Вероятность того, что некоторая точка будет выбрана как следующий центроид, пропорциональна квадратному расстоянию между этой точкой и ближайшим центроидом, который уже был выбран. Такой подход гарантирует более равномерное распределение репрезентативных точек по пространству данных.
#машинное_обучение
🤖👾 Как злоумышленники взламывают LLM: 7 ключевых стратегий
Чат-боты на основе ИИ все чаще становятся мишенью для хакеров. Какие уязвимости позволяют злоумышленникам взламывать ИИ-системы и как защитить свои приложения от атак? Рассказываем о 7 ключевых стратегиях.
👉 Читать статью
👉 Зеркало
Чат-боты на основе ИИ все чаще становятся мишенью для хакеров. Какие уязвимости позволяют злоумышленникам взламывать ИИ-системы и как защитить свои приложения от атак? Рассказываем о 7 ключевых стратегиях.
👉 Читать статью
👉 Зеркало
Расскажите про известные вам меры сходства, используемые в машинном обучении
Наиболее распространёнными мерами сходства являются:
▪️Косинусное сходство
Определяет сходство между двумя векторами по косинусу угла между ними. Значения меры находятся в диапазоне [-1, 1], где 1 означает, что два вектора очень похожи, а -1 — что два вектора полностью отличаются друг от друга.
▪️Евклидово расстояние
Представляет расстояние между двумя точками в n-мерной плоскости. По сути, это длина соединяющей их прямой линии. Можно рассчитать по формуле Пифагора.
▪️Манхэттенское расстояние
Похоже на Евклидова. Согласно этой метрике, расстояние между двумя точками равно сумме модулей разностей их координат.
▪️Индекс подобия Жаккара
Показатель сходства между двумя наборами данных. Если два набора данных имеют одни и те же элементы, их индекс сходства Жаккара будет равен 1. И если у них нет общих элементов, то сходство будет равно 0.
#машинное_обучение
Наиболее распространёнными мерами сходства являются:
▪️Косинусное сходство
Определяет сходство между двумя векторами по косинусу угла между ними. Значения меры находятся в диапазоне [-1, 1], где 1 означает, что два вектора очень похожи, а -1 — что два вектора полностью отличаются друг от друга.
▪️Евклидово расстояние
Представляет расстояние между двумя точками в n-мерной плоскости. По сути, это длина соединяющей их прямой линии. Можно рассчитать по формуле Пифагора.
▪️Манхэттенское расстояние
Похоже на Евклидова. Согласно этой метрике, расстояние между двумя точками равно сумме модулей разностей их координат.
▪️Индекс подобия Жаккара
Показатель сходства между двумя наборами данных. Если два набора данных имеют одни и те же элементы, их индекс сходства Жаккара будет равен 1. И если у них нет общих элементов, то сходство будет равно 0.
#машинное_обучение
🧑💻 Статьи для IT: как объяснять и распространять значимые идеи
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
Как выбор функции потерь влияет на процесс обучения модели?
Anonymous Quiz
2%
Функция потерь не оказывает влияния на обучение
78%
Функция потерь определяет цель для алгоритма оптимизации
5%
Функция потерь определяет архитектуру модели
15%
Выбор функции потерь влияет только на оценку модели
Какая из этих метрик — MAE or MSE или RMSE — более устойчива к выбросам?
▪️MAE (mean absolute error) можно перевести как средняя абсолютная ошибка. Измеряет среднюю абсолютную разницу между фактическими и прогнозируемыми значениями.
▪️MSE (mean square error) можно перевести как среднеквадратичная ошибка. Вычисляет среднее значение квадратов разностей между фактическими и прогнозируемыми значениями.
▪️RMSE (root mean square error) — это корень из среднеквадратичной ошибки.
Среди этих трёх метрик MAE наиболее устойчива к выбросам по сравнению с MSE или RMSE. Основная причина этого — возведение в квадрат значений ошибок. В случае выброса значение ошибки само по себе высокое, и его возведение в квадрат приводит к многократному увеличению значений ошибки, что может «ввести в заблуждение» алгоритм оптимизации.
#машинное_обучение
▪️MAE (mean absolute error) можно перевести как средняя абсолютная ошибка. Измеряет среднюю абсолютную разницу между фактическими и прогнозируемыми значениями.
▪️MSE (mean square error) можно перевести как среднеквадратичная ошибка. Вычисляет среднее значение квадратов разностей между фактическими и прогнозируемыми значениями.
▪️RMSE (root mean square error) — это корень из среднеквадратичной ошибки.
Среди этих трёх метрик MAE наиболее устойчива к выбросам по сравнению с MSE или RMSE. Основная причина этого — возведение в квадрат значений ошибок. В случае выброса значение ошибки само по себе высокое, и его возведение в квадрат приводит к многократному увеличению значений ошибки, что может «ввести в заблуждение» алгоритм оптимизации.
#машинное_обучение
Расскажите, что вы знаете про генеративно-состязательные сети (GAN)?
Так называют большой класс генеративных моделей, главная особенность которых — обучение одновременно с другой сетью, которая старается отличить сгенерированные объекты от настоящих.
👮♂️ Для объяснения принципа работы GAN нередко приводят аналогию с фальшивомонетчиком и полицейским. Так, задача фальшивомонетчика — научиться создавать купюры, которые полицейский не сможет отличить от реальных. Задача полицейского тем временем — научиться отличать купюры фальшивомонетчика от настоящих.
GAN состоят из двух частей: генератора (фальшивомонетчик) и дискриминатора (полицейский). Генератор учится создавать данные, похожие на те, что находятся в обучающем датасете. Дискриминатор выполняет функцию классификатора, пытаясь отличить настоящие данные от тех, что были сгенерированы генеративной сетью. То есть каждому реальному сэмплу и фейковому ставится в соответствие вероятность, которая оценивает степень принадлежности к реальным данным.
#глубокое_обучение
Так называют большой класс генеративных моделей, главная особенность которых — обучение одновременно с другой сетью, которая старается отличить сгенерированные объекты от настоящих.
👮♂️ Для объяснения принципа работы GAN нередко приводят аналогию с фальшивомонетчиком и полицейским. Так, задача фальшивомонетчика — научиться создавать купюры, которые полицейский не сможет отличить от реальных. Задача полицейского тем временем — научиться отличать купюры фальшивомонетчика от настоящих.
GAN состоят из двух частей: генератора (фальшивомонетчик) и дискриминатора (полицейский). Генератор учится создавать данные, похожие на те, что находятся в обучающем датасете. Дискриминатор выполняет функцию классификатора, пытаясь отличить настоящие данные от тех, что были сгенерированы генеративной сетью. То есть каждому реальному сэмплу и фейковому ставится в соответствие вероятность, которая оценивает степень принадлежности к реальным данным.
#глубокое_обучение
Forwarded from Библиотека дата-сайентиста | Data Science, Machine learning, анализ данных, машинное обучение
🤖🛠️ 4 полезных инструмента для работы с ИИ: RAGFlow, The Pipe, UFO и SWE-agent
В новой статье рассматриваем 4 инструмента, которые расширяют возможности разработчика: от платформ для работы с документами до агентов, способных исправлять ошибки в коде.
🔗 Читать статью
🔗 Зеркало
В новой статье рассматриваем 4 инструмента, которые расширяют возможности разработчика: от платформ для работы с документами до агентов, способных исправлять ошибки в коде.
🔗 Читать статью
🔗 Зеркало
Что вы знаете про работу с временными рядами?
Временной ряд — это последовательность значений, которые были измерены в определённом временном промежутке. Такой тип данных может появляться повсеместно. Например, компаниям часто требуется знать ответ на вопрос: что будет происходить с показателями в ближайший день/неделю/месяц. Такими показателями могут быть количество пользователей, установивших приложение, пиковый онлайн и т.д.
Работа с временными рядами — это в основном прогнозирование. С точки зрения машинного обучения мы занимаемся задачей регрессии — предсказываем следующее в ряду значение. Прогноз значения ряда в какой-то момент времени строится на основе известных значений ряда до этого момента времени. Также имеет смысл строить предсказательный интервал для значений.
Виды прогнозирования:
▪️Наивное: «завтра будет как вчера»
Или «почти как вчера». Тут чаще всего используется скользящее среднее для предсказания значение ряда.
Модификацией простого скользящего среднего является взвешенное среднее, внутри которого наблюдениям придаются различные веса, в сумме дающие единицу, при этом обычно последним наблюдениям присваивается больший вес.
▪️Менее наивное: экспоненциальное сглаживание
Вместо взвешивания последних n значений ряда мы будем взвешивать все доступные наблюдения, при этом экспоненциально уменьшая веса по мере углубления в исторические данные. В этом нам поможет формула простого экспоненциального сглаживания.
Можно расширить этот метод. Будем разбивать ряд на две составляющие — уровень (level, intercept) и тренд (trend, slope). Уровень — это и есть ожидаемое значение ряда, которое мы уже предсказывали. А тренд можно тоже прогнозировать при помощи экспоненциального сглаживания.
Кроме того, можно добавить третью компоненту — сезонность, и предсказывать её тоже. Такая модель тройного экспоненциального сглаживания больше известна по фамилиям её создателей — Чарльза Хольта и Питера Винтерса.
Среди других методов анализа временных рядов выделяются:
▪️ ARIMA;
▪️ Сезонная ARIMA (SARIMA);
▪️ Рекуррентные нейронные сети (RNN).
#машинное_обучение
Временной ряд — это последовательность значений, которые были измерены в определённом временном промежутке. Такой тип данных может появляться повсеместно. Например, компаниям часто требуется знать ответ на вопрос: что будет происходить с показателями в ближайший день/неделю/месяц. Такими показателями могут быть количество пользователей, установивших приложение, пиковый онлайн и т.д.
Работа с временными рядами — это в основном прогнозирование. С точки зрения машинного обучения мы занимаемся задачей регрессии — предсказываем следующее в ряду значение. Прогноз значения ряда в какой-то момент времени строится на основе известных значений ряда до этого момента времени. Также имеет смысл строить предсказательный интервал для значений.
Виды прогнозирования:
▪️Наивное: «завтра будет как вчера»
Или «почти как вчера». Тут чаще всего используется скользящее среднее для предсказания значение ряда.
Модификацией простого скользящего среднего является взвешенное среднее, внутри которого наблюдениям придаются различные веса, в сумме дающие единицу, при этом обычно последним наблюдениям присваивается больший вес.
▪️Менее наивное: экспоненциальное сглаживание
Вместо взвешивания последних n значений ряда мы будем взвешивать все доступные наблюдения, при этом экспоненциально уменьшая веса по мере углубления в исторические данные. В этом нам поможет формула простого экспоненциального сглаживания.
Можно расширить этот метод. Будем разбивать ряд на две составляющие — уровень (level, intercept) и тренд (trend, slope). Уровень — это и есть ожидаемое значение ряда, которое мы уже предсказывали. А тренд можно тоже прогнозировать при помощи экспоненциального сглаживания.
Кроме того, можно добавить третью компоненту — сезонность, и предсказывать её тоже. Такая модель тройного экспоненциального сглаживания больше известна по фамилиям её создателей — Чарльза Хольта и Питера Винтерса.
Среди других методов анализа временных рядов выделяются:
▪️ ARIMA;
▪️ Сезонная ARIMA (SARIMA);
▪️ Рекуррентные нейронные сети (RNN).
#машинное_обучение
Объясните разницу между списком и кортежем?
▫️Список — это упорядоченная коллекция элементов. Элементы могут иметь любой тип. При этом коллекцию можно изменять: вставить новый элемент, удалить старый и т.д. То есть длина у списка динамическая — при необходимости Python будет выделять новую память.
Список создаётся через квадратные скобки.
▫️Кортеж — это тоже упорядоченная коллекция элементов. Элементы тоже могут иметь любой тип. Однако изменять кортеж нельзя. Кроме того, в памяти Python пустой кортеж — всегда в единственном экземпляре. Пустые списки же каждый раз создаются заново.
Кортеж создаётся через круглые скобки.
#программирование
#python
▫️Список — это упорядоченная коллекция элементов. Элементы могут иметь любой тип. При этом коллекцию можно изменять: вставить новый элемент, удалить старый и т.д. То есть длина у списка динамическая — при необходимости Python будет выделять новую память.
Список создаётся через квадратные скобки.
▫️Кортеж — это тоже упорядоченная коллекция элементов. Элементы тоже могут иметь любой тип. Однако изменять кортеж нельзя. Кроме того, в памяти Python пустой кортеж — всегда в единственном экземпляре. Пустые списки же каждый раз создаются заново.
Кортеж создаётся через круглые скобки.
#программирование
#python