тестовая выборка для машинного обучения это

Введение в машинное обучение с помощью scikit-learn (перевод документации)

Данная статья представляет собой перевод введения в машинное обучение, представленное на официальном сайте scikit-learn.

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

Машинное обучение: постановка вопроса

В общем, задача машинного обучения сводится к получению набора выборок данных и, в последствии, к попыткам предсказать свойства неизвестных данных. Если каждый набор данных — это не одиночное число, а например, многомерная сущность (multi-dimensional entry или multivariate data), то он должен иметь несколько признаков или фич.

Обучающая выборка и контрольная выборка

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

Загрузка типовой выборки

Scikit-learn устанавливается вместе с несколькими стандартными выборками данных, например, iris и digits для классификации, и boston house prices dataset для регрессионного анализа.

Например, набор данных digits.data дает доступ к фичам, которые можно использовать для классификации числовых выборок:

а digits.target дает возможность определить в числовой выборке, какой цифре соответствует каждое числовое представление, чему мы и будем обучаться:

Форма массива данных

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

Следующий простой пример с этим набором данных иллюстрирует, как, исходя из поставленной задачи, можно сформировать данные для использования в scikit-learn.

Обучение и прогнозирование

В случае с числовым набором данных цель обучения — это предсказать, принимая во внимание представление данных, какая цифра изображена. У нас есть образцы каждого из десяти возможных классов (числа от 0 до 9), на которым мы обучаем алгоритм оценки (estimator), чтобы он мог предсказать класс, к которому принадлежит неразмеченный образец.

В scikit-learn алгоритм оценки для классификатора — это Python объект, который исполняет методы fit(X, y) и predict(T). Пример алгоритма оценки — это класс sklearn.svm.SVC выполняет классификацию методом опорных векторов. Конструктор алгоритма оценки принимает в качестве аргументов параметры модели, но для сокращения времени, мы будем рассматривать этот алгоритм как черный ящик:

Выбор параметров для модели

В этом примере мы установили значение gamma вручную. Также можно автоматически определить подходящие значения для параметров, используя такие инструменты как grid search и cross validation.

Мы назвали экземпляр нашего алгоритма оценки clf, так как он является классификатором. Теперь он должен быть применен к модели, т.е. он должен обучится на модели. Это осуществляется путем прогона нашей обучающей выборки через метод fit. В качестве обучающей выборки мы можем использовать все представления наших данных, кроме последнего. Мы сделали эту выборку с помощью синтаксиса Python [:-1], что создало новый массив, содержащий все, кроме последней, сущности из digits.data:

Теперь можно предсказать новые значения, в частности, мы можем спросить классификатор, какое число содержится в последнем представлении в наборе данных digits, которое мы не использовали в обучении классификатора:

Соответствующее изображение представлено ниже:

тестовая выборка для машинного обучения это. Смотреть фото тестовая выборка для машинного обучения это. Смотреть картинку тестовая выборка для машинного обучения это. Картинка про тестовая выборка для машинного обучения это. Фото тестовая выборка для машинного обучения это

Как вы можете видеть, это сложная задача: представление в плохом разрешении. Вы согласны с классификатором?

Полное решение этой задачи классификации доступно в качестве примера, который вы можете запустить и изучить: Recognizing hand-written digits.

Сохранение модели

В scikit модель можно сохранить, используя встроенный модуль, названный pickle:

В частном случае применения scikit, может быть полезнее заметить pickle на библиотеку joblib (joblib.dump & joblib.load), которая более эффективна для работы с большим объемом данных, но она позволяет сохранять модель только на диске, а не в строке:

Потом можно загрузить сохраненную модель(возможно в другой Python процесс) с помощью:

Обратите внимание, что joblib.dump возвращает список имен файлов. Каждый отдельный массив numpy, содержащийся в clf объекте, сеарилизован как отдельный файл в файловой системе. Все файлы должны находиться в одной папке, когда вы снова загружаете модель с помощью joblib.load.

Обратите внимание, что у pickle есть некоторые проблемы с безопасностью и сопровождением. Для получения более детальной информации о хранении моделей в scikit-learn обратитесь к секции Model persistence.

Источник

Отбор признаков в задачах машинного обучения. Часть 1

1. Методы фильтрации

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

Простейшим способом оценки пригодности признаков является разведочный анализ данных (например, с библиотекой pandas-profiling). Эту задачу можно автоматизировать с помощью библиотеки feature-selector, которая отбирает признаки по следующим параметрам:

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

Коэффициент корреляции (удаляются признаки, у которых коэффициент корреляции больше порогового).

Вариативность (удаляются признаки, состоящие из одного значения).

Оценка важности признаков с помощью lightgbm (удаляются признаки, имеющие низкую важность в модели lightgbm. Следует применять только если lightgbm имеет хорошую точность.)

Туториал по этой библиотеке находится здесь.

Более сложные методы автоматического отбора признаков реализованы в sklearn. VarianceThreshold отбирает признаки, у которых дисперсия меньше заданного значения. SelectKBest и SelectPercentile оценивают взаимосвязь предикторов с целевой переменной используя статистические тесты, позволяя отобрать соответственно заданное количество и долю наилучших по заданному критерию признаков. В качестве статистических тестов используются F-тест,

и взаимная информация.

F-тест

F-тест оценивает степень линейной зависимости между предикторами и целевой переменной, поэтому он лучше всего подойдёт для линейных моделей. Реализован в sklearn как f_regression и f_classif соответственно для регрессии и классификации.

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

Взаимная информация

2. Встроенные методы

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

Пример

fnlwgt (final weight) – примерная оценка количества людей, которое представляет каждая строка данных

educational-num – длительность обучения

capital-gain – прирост капитала

capital-loss – потеря капитала

hours-per-week – количество рабочих часов в неделю

Источник

Выборка

Материал из MachineLearning.

Содержание

Выборка (sample, set) — конечный набор прецедентов (объектов, случаев, событий, испытуемых, образцов, и т.п.), некоторым способом выбранных из множества всех возможных прецедентов, называемого генеральной совокупностью.

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

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

Термины выборка (sample, set) и данные (data) взаимозаменяемы; иногда они употребляются вместе как один термин выборка данных (data set). Поэтому анализ данных можно понимать также как анализ конечных выборок. Основные цели анализа данных:

Вероятностная модель порождения данных

Случайная выборка

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

Однородная выборка

Независимая выборка

Простая выборка

Простая выборка — это случайная, однородная, независимая выборка (i.i.d. — independent, identically distributed).

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

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

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

Обучающая и тестовая выборка

Обучающая выборка (training sample) — выборка, по которой производится настройка (оптимизация параметров) модели зависимости.

Тестовая (или контрольная) выборка (test sample) — выборка, по которой оценивается качество построенной модели. Если обучающая и тестовая выборки независимы, то оценка, сделанная по тестовой выборке, является несмещённой.

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

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

Источник

Насколько данные для обучения модели (не)похожи на тестовую выборку?

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

Есть такая поговорка: «Не сравнивайте яблоки с апельсинами». Но что делать, если нужно сравнить один набор яблок с апельсинами с другим, но распределения фруктов в двух наборах разное? Сможете работать с данными? И как будете это делать?

тестовая выборка для машинного обучения это. Смотреть фото тестовая выборка для машинного обучения это. Смотреть картинку тестовая выборка для машинного обучения это. Картинка про тестовая выборка для машинного обучения это. Фото тестовая выборка для машинного обучения это

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

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

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

тестовая выборка для машинного обучения это. Смотреть фото тестовая выборка для машинного обучения это. Смотреть картинку тестовая выборка для машинного обучения это. Картинка про тестовая выборка для машинного обучения это. Фото тестовая выборка для машинного обучения это

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

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

Ковариантный сдвиг

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

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

тестовая выборка для машинного обучения это. Смотреть фото тестовая выборка для машинного обучения это. Смотреть картинку тестовая выборка для машинного обучения это. Картинка про тестовая выборка для машинного обучения это. Фото тестовая выборка для машинного обучения это

Основная идея

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

тестовая выборка для машинного обучения это. Смотреть фото тестовая выборка для машинного обучения это. Смотреть картинку тестовая выборка для машинного обучения это. Картинка про тестовая выборка для машинного обучения это. Фото тестовая выборка для машинного обучения это

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

тестовая выборка для машинного обучения это. Смотреть фото тестовая выборка для машинного обучения это. Смотреть картинку тестовая выборка для машинного обучения это. Картинка про тестовая выборка для машинного обучения это. Фото тестовая выборка для машинного обучения это

Реализация

Попробуем применить описанную идею к реальному датасету. Используем датасет из соревнования на Kaggle.

Шаг 1: подготовка данных

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

Шаг 2: добавление индикатора источника данных

К обеим частям датасета — обучающей и тестовой — необходимо добавить новый признак-индикатор. Для обучающей выборки со значением «1», для тестовой, соответственно, «0».

Шаг 3: объединение обучающей и тестовой выборки

Теперь необходимо объединить два датасета. Ппоскольку обучающий датасет содержит столбец целевых значений ‘target’, которого нет в тестовом датасете, этот столбец необходимо удалить.

Шаг 4: построение и тестирование классификатора

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

Используем стратифицированное рандомизированное разбиение на 4 фолда. Таким образом мы сохраним соотношение меток ‘is_train’ в каждом фолде как в исходной объединенной выборке. Для каждого разбиенения обучим классификатор на большей части разбиения и предскажем метку класса для меньшей отложенной части.

Шаг 5: интерпретация результатов

Посчитаем значение метрики ROC AUC для нашего классификатора. На основе этого значения сделаем вывод, насколько хорошо наш классификатор выявляет ковариантный сдвиг в данных.

Если классификатор с хорошо разделяет объекты на обучающий и тестовый датасет, то значение метрики ROC AUC должно быть значительно больше 0.5, в идеале близко к 1. Такая картина свидетельствует о сильном ковариантном сдвиге в данных.

Найдём значение ROC AUC:

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

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

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

Дальнейшие шаги

Итак, либо мы наблюдаем ковариантный сдвиг, либо нет. Что же делать, чтобы улучшить качество модели на тесте?

Удаление смещенных признаков:

Примечание: метод применим, если наблюдается ковариантный сдвиг в данных.

Использование весов важностей объектов на основе оценки коэффициента плотности

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

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

Например, для первого объекта наш Random Forest Classifier считает, что он принадлежит обучающей выборке с вероятностью 0.397. Назовём эту величину тестовая выборка для машинного обучения это. Смотреть фото тестовая выборка для машинного обучения это. Смотреть картинку тестовая выборка для машинного обучения это. Картинка про тестовая выборка для машинного обучения это. Фото тестовая выборка для машинного обучения это. Или можно сказать, что вероятность принадлежности тестовым данным равна 0.603. Аналогично, назовём вероятность тестовая выборка для машинного обучения это. Смотреть фото тестовая выборка для машинного обучения это. Смотреть картинку тестовая выборка для машинного обучения это. Картинка про тестовая выборка для машинного обучения это. Фото тестовая выборка для машинного обучения это.

Теперь небольшой трюк: для каждого объекта обучающего датасета вычислим коэффициент тестовая выборка для машинного обучения это. Смотреть фото тестовая выборка для машинного обучения это. Смотреть картинку тестовая выборка для машинного обучения это. Картинка про тестовая выборка для машинного обучения это. Фото тестовая выборка для машинного обучения это.

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

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

Эти веса могут быть вычислены с помощью кода:

Полученные коэффициенты можно передать модели, например, следующим образом:

тестовая выборка для машинного обучения это. Смотреть фото тестовая выборка для машинного обучения это. Смотреть картинку тестовая выборка для машинного обучения это. Картинка про тестовая выборка для машинного обучения это. Фото тестовая выборка для машинного обучения это

Пара слов о полученной гистограмме:

Заключение

Надеемся, что вам этот пост поможет вам в выявлении «ковариантного сдвига» в данных и борьбе с ним.

Источник

Выборка

Материал из MachineLearning.

Содержание

Выборка (sample, set) — конечный набор прецедентов (объектов, случаев, событий, испытуемых, образцов, и т.п.), некоторым способом выбранных из множества всех возможных прецедентов, называемого генеральной совокупностью.

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

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

Термины выборка (sample, set) и данные (data) взаимозаменяемы; иногда они употребляются вместе как один термин выборка данных (data set). Поэтому анализ данных можно понимать также как анализ конечных выборок. Основные цели анализа данных:

Вероятностная модель порождения данных

Случайная выборка

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

Однородная выборка

Независимая выборка

Простая выборка

Простая выборка — это случайная, однородная, независимая выборка (i.i.d. — independent, identically distributed).

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

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

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

Обучающая и тестовая выборка

Обучающая выборка (training sample) — выборка, по которой производится настройка (оптимизация параметров) модели зависимости.

Тестовая (или контрольная) выборка (test sample) — выборка, по которой оценивается качество построенной модели. Если обучающая и тестовая выборки независимы, то оценка, сделанная по тестовой выборке, является несмещённой.

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

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

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *