Обучение и оценка модели
Из этой статьи вы узнаете, как создавать модели машинного обучения, собирать метрики и измерять производительность с помощью ML.NET. Несмотря на то что код в этом примере обучает модель регрессии, те же принципы действуют и в большинстве других алгоритмов.
Разделение данных на обучающий и проверочный наборы
Цель модели машинного обучения — обнаружить закономерности в обучающих данных. Эти закономерности используются для создания прогнозов на основе новых данных.
Можно моделировать данные с помощью класса, например HousingData .
public class HousingData < [LoadColumn(0)] public float Size < get; set; >[LoadColumn(1, 3)] [VectorType(3)] public float[] HistoricalPrices < get; set; >[LoadColumn(4)] [ColumnName("Label")] public float CurrentPrice < get; set; >>
Используйте следующие данные, которые загружаются в IDataView .
HousingData[] housingData = new HousingData[] < new HousingData < Size = 600f, HistoricalPrices = new float[] < 100000f ,125000f ,122000f >, CurrentPrice = 170000f >, new HousingData < Size = 1000f, HistoricalPrices = new float[] < 200000f, 250000f, 230000f >, CurrentPrice = 225000f >, new HousingData < Size = 1000f, HistoricalPrices = new float[] < 126000f, 130000f, 200000f >, CurrentPrice = 195000f >, new HousingData < Size = 850f, HistoricalPrices = new float[] < 150000f,175000f,210000f >, CurrentPrice = 205000f >, new HousingData < Size = 900f, HistoricalPrices = new float[] < 155000f, 190000f, 220000f >, CurrentPrice = 210000f >, new HousingData < Size = 550f, HistoricalPrices = new float[] < 99000f, 98000f, 130000f >, CurrentPrice = 180000f > >;
Разделите данные на обучающий и проверочный наборы с помощью метода TrainTestSplit . В результате появится объект TrainTestData , содержащий два члена IDataView — один для обучающего набора данных, другой для проверочного. Распределение данных определяется параметром testFraction . В приведенном ниже фрагменте кода для проверочного набора удерживаются 20 процентов исходных данных.
DataOperationsCatalog.TrainTestData dataSplit = mlContext.Data.TrainTestSplit(data, testFraction: 0.2); IDataView trainData = dataSplit.TrainSet; IDataView testData = dataSplit.TestSet;
Подготовка данных
Перед обучением модели машинного обучения данные необходимо подвергнуть предварительной обработке. Дополнительные сведения о подготовке данных см. в инструкции по подготовке данных, а также в transforms page .
Алгоритмы ML.NET имеют ограничения на типы входных столбцов. Кроме того, если значения не указаны, в качестве имен входных и выходных столбцов используются значения по умолчанию.
Работа с ожидаемыми типами столбцов
Алгоритмы машинного обучения в ML.NET в качестве входных данных ожидают вектор с плавающей запятой известного размера. Если все данные уже переведены в числовой формат и предназначены для одновременной обработки (пиксели изображения), примените к модели данных атрибут VectorType .
Если не все данные являются числовыми, а вы хотите к каждому столбцу применить отдельное преобразование данных, используйте метод Concatenate после обработки каждого столбца — в результате все отдельные столбцы будут объединены в единый вектор компонентов, который будет выходными данными нового столбца.
В следующем фрагменте кода столбцы Size и HistoricalPrices объединены в один вектор компонентов, который служит выходными данными для нового столбца с именем Features . Поскольку нет разницы в масштабах, NormalizeMinMax применяется к столбцу Features для нормализации данных.
// Define Data Prep Estimator // 1. Concatenate Size and Historical into a single feature vector output to a new column called Features // 2. Normalize Features vector IEstimator dataPrepEstimator = mlContext.Transforms.Concatenate("Features", "Size", "HistoricalPrices") .Append(mlContext.Transforms.NormalizeMinMax("Features")); // Create data prep transformer ITransformer dataPrepTransformer = dataPrepEstimator.Fit(trainData); // Apply transforms to training data IDataView transformedTrainingData = dataPrepTransformer.Transform(trainData);
Работа с именами столбцов по умолчанию
Если имена столбцов не указаны, алгоритмы ML.NET используют имена по умолчанию. Все инструкторы имеют параметр с именем featureColumnName для входных данных, алгоритма, а там, где это применимо, еще и параметр с именем labelColumnName для ожидаемого значения. По умолчанию используются значения Features и Label соответственно.
Если во время предварительной обработки используется метод Concatenate , который создает столбец с именем Features , имя столбца компонентов в параметрах алгоритма указывать необязательно, поскольку он уже существует в предварительно обработанных данных IDataView . Столбец меток — CurrentPrice , но в связи с тем, что атрибут ColumnName используется в модели данных, ML.NET переименовывает столбец CurrentPrice в Label и таким образом устраняет необходимость предоставлять параметр labelColumnName для средства оценки алгоритма машинного обучения.
Если вы не хотите использовать имена столбцов по умолчанию, передайте имена столбцов компонентов и меток в виде параметров при определении средства оценки алгоритма машинного обучения, как показано в следующем фрагменте кода:
var UserDefinedColumnSdcaEstimator = mlContext.Regression.Trainers.Sdca(labelColumnName: "MyLabelColumnName", featureColumnName: "MyFeatureColumnName");
Кэширование данных
По умолчанию при обработке данных их загрузка или потоковая передача осуществляется отложенным образом. Это означает, что во время обучения алгоритмы обучения могут несколько раз загружать данные с диска и выполнять их итерацию. Поэтому чтобы сократить количество загрузок данных с диска, рекомендуется кэшировать помещаемые в память наборы данных. Кэширование выполняется как часть EstimatorChain с помощью AppendCacheCheckpoint .
Рекомендуется использовать AppendCacheCheckpoint до алгоритмов обучения в конвейере.
Используя следующий класс EstimatorChain для добавления метода AppendCacheCheckpoint перед классом StochasticDualCoordinateAscent , алгоритм обучения кэширует результаты предыдущих средств оценки для последующего использования.
// 1. Concatenate Size and Historical into a single feature vector output to a new column called Features // 2. Normalize Features vector // 3. Cache prepared data // 4. Use Sdca trainer to train the model IEstimator dataPrepEstimator = mlContext.Transforms.Concatenate("Features", "Size", "HistoricalPrices") .Append(mlContext.Transforms.NormalizeMinMax("Features")) .AppendCacheCheckpoint(mlContext); .Append(mlContext.Regression.Trainers.Sdca());
Обучение модели машинного обучения
Когда данные пройдут предварительную обработку, используйте метод Fit для обучения модели машинного обучения с алгоритмом регрессии StochasticDualCoordinateAscent .
// Define StochasticDualCoordinateAscent regression algorithm estimator var sdcaEstimator = mlContext.Regression.Trainers.Sdca(); // Build machine learning model var trainedModel = sdcaEstimator.Fit(transformedTrainingData);
Извлечение параметров модели
После обучения модели извлеките полученные ModelParameters для проверки или повторного обучения. LinearRegressionModelParameters предоставляют смещение и полученные коэффициенты или вес обученной модели.
var trainedModelParameters = trainedModel.Model as LinearRegressionModelParameters;
Другие модели включают параметры, характерные для их задач. Например, алгоритм K-средних помещает данные в кластер на основе центроидов, а KMeansModelParameters содержит свойство, в котором хранятся полученные центроиды. Чтобы узнать больше, изучите Microsoft.ML.Trainers документацию по API и выполните поиск классов, в именах которых есть ModelParameters .
Оценка качества модели
Чтобы выбрать наиболее эффективную модель, необходимо оценить ее производительность на основе проверочных данных. Для измерения различных метрик обученной модели используйте метод Evaluate .
Метод Evaluate создает различные метрики в зависимости от того, на каком компьютере выполнялась задача машинного обучения. Чтобы узнать больше, изучите Microsoft.ML.Data документацию по API и выполните поиск классов, в именах которых есть Metrics .
// Measure trained model performance // Apply data prep transformer to test data IDataView transformedTestData = dataPrepTransformer.Transform(testData); // Use trained model to make inferences on test data IDataView testDataPredictions = trainedModel.Transform(transformedTestData); // Extract model metrics and get RSquared RegressionMetrics trainedModelMetrics = mlContext.Regression.Evaluate(testDataPredictions); double rSquared = trainedModelMetrics.RSquared;
В приведенном выше фрагменте кода:
- Проверочный набор данных подвергается предварительной обработке с использованием предварительно заданных преобразований для подготовки данных.
- В обученной модели машинного обучения формируются прогнозы на основе проверочных данных.
- В методе Evaluate значения в столбцу CurrentPrice проверочного набора данных сравниваются со столбцом Score , куда сохраняются новые полученные прогнозы, и рассчитываются метрики модели регрессии, одна из которых, R-квадрат, хранится в переменной rSquared .
В этом небольшом примере из-за ограниченного объема данных значение R-квадрат не попадает в диапазон от 0 до 1. В реальной ситуации его значение должно быть в диапазоне от 0 до 1.
Совместная работа с нами на GitHub
Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.
Метрики оценки производительности в машинном обучении
В машинном обучении показатели оценки производительности используются для расчета производительности ваших обученных моделей машинного обучения. Это помогает определить, насколько лучше ваша модель машинного обучения может работать с набором данных, которого она никогда раньше не видела. Если вы никогда не использовали какие-либо показатели оценки производительности для оценки производительности своей модели машинного обучения, то эта статья для вас. В этой статье я познакомлю вас с некоторыми из лучших показателей оценки производительности в машинном обучении.
Метрики оценки производительности
В машинном обучении метрика оценки производительности играет очень важную роль в определении производительности нашей модели машинного обучения для набора данных, который она никогда раньше не видела. Скорее всего, модель, которую вы обучили, всегда будет лучше работать с набором данных, на котором вы ее обучили. Но мы обучаем модели машинного обучения хорошо работать при решении реальных проблем, когда данные передаются непрерывно. Если мы используем модель, которая недостаточно подходит для хорошей работы, нет смысла использовать машинное обучение для решения ваших проблем. Вот здесь-то и появляются метрики оценки производительности. Метрика оценки производительности определяет, будет ли ваша обученная модель машинного обучения хорошо справляться с решением проблемы, для которой она была обучена, или нет.
Существует множество показателей оценки производительности, которые вы можете использовать для измерения производительности ваших моделей машинного обучения для классификации, а также для регрессии. Ниже представлены некоторые из лучших показателей оценки производительности, которые я рекомендую вам использовать для оценки производительности вашей модели машинного обучения. Все упомянутые ниже показатели оценки производительности решаются и объясняются с помощью языка программирования Python.
Оценка R2:
Оценка R2 – очень важный показатель, который используется для оценки производительности модели машинного обучения на основе регрессии. Он произносится как R в квадрате и также известен как коэффициент детерминации. Он работает, измеряя количество отклонений в прогнозах, объясненных набором данных. Проще говоря, это разница между выборками в наборе данных и прогнозами, сделанными моделью. Здесь вы можете найти учебное пособие по этой теме.
Объясненная дисперсия:
Объясненная дисперсия используется для измерения доли изменчивости прогнозов модели машинного обучения. Проще говоря, это разница между ожидаемым значением и прогнозируемым значением. Концепция объясненной дисперсии очень важна для понимания того, сколько информации мы можем потерять, сверяя набор данных. Здесь вы можете найти учебное пособие по этой теме.
Матрица неточностей:
Матрица неточностей – это метод оценки эффективности модели классификации. Идея состоит в том, чтобы подсчитать, сколько раз экземпляры класса 1 классифицируются как класс 2. Например, чтобы узнать, сколько раз модель классификации путала изображения собаки с кошкой, вы используете матрицу неточностей. Здесь вы можете найти учебное пособие по этой теме.
Отчет о классификации:
Отчет о классификации – это один из показателей оценки эффективности модели машинного обучения на основе классификации. Он отображает точность вашей модели, отзывчивость, оценку F1 и поддержку. Он обеспечивает лучшее понимание общей производительности нашей обученной модели. Чтобы понять суть отчета о классификации модели машинного обучения, вам необходимо знать все показатели, отображаемые в отчете. Для более четкого понимания я объяснил все показатели ниже, чтобы вы могли легко понять отчет о классификации вашей модели машинного обучения:
- Точность: Точность определяется как отношение истинных положительных результатов к сумме истинных и ложных классификаций.
- Отзыв: отзыв определяется как отношение истинных положительных результатов к сумме истинно положительных и ложно отрицательных результатов.
- Оценка F1: F1 – это взвешенное среднее гармоническое значение точности и запоминания. Чем ближе значение показателя F1 к 1,0, тем выше ожидаемая производительность модели.
- Поддержка: Поддержка – это количество фактических вхождений класса в набор данных. Для разных моделей она не отличается, а просто диагностирует процесс оценки эффективности.
Здесь вы можете найти учебное пособие по этой теме.
Резюме
Итак, это – одни из лучших показателей оценки производительности, которые вы можете использовать для измерения производительности вашей модели машинного обучения. В машинном обучении метрика оценки производительности играет очень важную роль в определении производительности нашей модели машинного обучения для набора данных, который она никогда раньше не видела. Надеюсь, вам понравилась эта статья о показателях оценки эффективности в машинном обучении. Не стесняйтесь задавать свои вопросы в разделе комментариев ниже.
Оценка качества работы алгоритма машинного обучения
Было разработано множество методик оценки соответствия получаемой модели второму требованию, а именно требованию наличия предсказательной способности.
Все метрики для оценки качества модели высчитываются по тестовым и приемочным выборкам. Тестовая выборка — это набор объектов и ответов, заранее известный, не используемый при обучении, но используемый для измерения качества модели. Именно за счет отсутствия этих примеров в обучающей выборке и оценивается предсказательная способность модели. После того как качество модели было оценено с помощью тестовой выборки, может возникнуть желание разобрать ошибочные ответы в модели. Тогда человек, обучающий модель, может заглянуть в тестовую выборку и попытаться на основе значений признаков или на основе иных критериев понять, в чем проблема обученной модели. Это главное отличие тестовой выборки от приемочной.
В приемочную выборку разработчик никогда не должен смотреть, чтобы ненароком не придумать такой набор признаков, который бы лучше подгонял модель иод эту выборку, что совсем не гарантирует наличия предсказательной способности у модели. Чаще всего тестовую выборку создает разработчик модели, а приемочную — заинтересованное в результате работы алгоритма лицо, которое само не участвует в процессе разработки. Например, если разрабатывается система ранжирования документов, то приемочную выборку составляют так называемые асессоры — люди, которые профессионально занимаются оценкой поисковых систем. В случае построения модели для предсказания болезней человек, который мог бы составить приемочную выборку, был бы скорее всего врачом, который имеет доступ к данным о пациентах.
Но существует проблема: что, если у нас нет эксперта, который мог бы составить приемочную выборку, и есть только обучающая выборка, а составление тестовой — дорого? Тогда можно прибегнуть к так называемой кроссвалиации (crossvalidation), суть которой состоит в том, что исходная обучающая выборка разделяется на N частей и N раз производится обучение по N — 1 части (без повторов) и оценка по оставшейся одной части. После чего оценки усредняются и высчитывается стандартное отклонение используемых метрик. Наличие больших значений стандартного отклонения говорит скорее всего о том, что данный набор факторов или модель плохо подходят для решения задачи и необходимо их пересмотреть. Соответственно, при малых значениях стандартного отклонения разработчик смотрит на средние значения метрик.
Ниже представлен псевдокод, демонстрирущий процесс кроссвалидации.
trait Model
def predict (obj: Object): Answer
def learn (sample: Map [Object, Answer]): Unit
trait Answer
def crossvalidation (model: Model, learningSample:
Map [Object, Answer]) =(
val n =10 // разделим на 10 частей
val parts =learningSample.grouped (learningSample.
val testAndLearningParts = parts.map (p =>p -> (learningSample — p) ) // получим пары
// 1/n — тестовый сэмпл // (n-1) /п — обучающий
val estimations = testAndLearningParts map < case (testingSample, learningSample) => model.learn (learningSample)
val answersOnTestSample: Map [Object, Answer] = testingSample.keys.map (obj =>obj -> model, predict (obj)).toMap estimate (model, testingSample)
val m =mean (estimations)
val std =Math.sqrt (mean (estimations.map
(estimation => (estimation — m) * (estimation — m) ) ) )
Прежде чем описать некоторые популярные метрики, необходимо дать несколько важных определений.
Истинно-положительное значение (TP — true-positive) — для бинарной классификации означает наличие положительного решения классификатора и что истинное значение ответа в оценочной выборке также положительное.
Ложно-ноложительное значение (FP — false-positive) говорит соответственно о наличии положительного ответа классификатора и отрицательного в оценочной выборке.
Аналогичные случаи есть и для отрицательных примеров — истинно-отрицательное значение (TN — true-negative) и ложноотрицательное значение (FN — false-negative).
Для данных значений можно привести простой пример на основе задачи классификации спама:
- • ТР — письмо было классифицировано как спам, и в оценочной выборке оно действительно является спамом;
- • FP — письмо было классифицировано как спам, однако в выборке это не так;
- • TN — письмо было классифицировано как не-спам, и это действительно так согласно выборке;
- • FN — письмо было принято как не-спам, однако согласно выборке это спам.
Так как оценка метрик производится по всей выборке, то значения TP, FP, TN, FN будут означать общее число соотвествующих случаев.
Точность

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

Иногда бывает необходимо оценить совместно и полноту, и точность модели. Это может быть полезно при сравнении нескольких моделей между собой, полученных путем обучения различных алгоритмов машинного обучения. В случае такой необходимости многокритериального анализа модели на помощь приходит использование F-меры (/-measure):

При этом коэффициент р позволяет отдать предпочтение полноте или точности. При значениях р
Урок 5. Оценка результатов машинного обучения

В машинном обучении оценка результатов модели является не менее важным этапом, чем все то, о чем мы говорили ранее. Она позволяет определить эффективность алгоритма на тестовых данных, выбрать наиболее подходящую модель для конкретных задач и улучшить ее качество.
Цель урока: познакомиться с процессом оценки результатов машинного обучения и понять, как она осуществляется.
В данном уроке мы рассмотрим различные методы оценки результатов машинного обучения и узнаем, как выбрать наиболее подходящий метод для конкретной задачи.
Содержание:
- Разделение выборки на обучающую и тестовую
- Метрики качества
- Кросс-валидация и подбор гиперпараметров
- Задание на взаимопроверку
- Интерпретация результатов машинного обучения
- Проверочный тест
Как вы помните, мы уже касались обучающей и тестовой выборок. В начале этого урока мы должны сказать об этом более подробно, т.к. обе выборки играют ключевую роль в машинном обучении и его результатах.
Разделение выборки на обучающую и тестовую
Разделение выборки на обучающую и тестовую является одним из ключевых этапов в машинном обучении. Он заключается в том, что из доступной нам выборки данных мы отделяем некоторую часть для обучения модели, а оставшуюся часть используем для оценки ее качества.
Как правило, выборка разделяется на обучающую и тестовую в пропорции 70/30 или 80/20. Например, мы можем использовать 70% данных для обучения модели, а оставшиеся 30% оставить для тестирования.
Процесс разделения выборки на обучающую и тестовую состоит из нескольких шагов:
- Сначала необходимо перемешать данные, чтобы избежать возможной сортировки по какому-то признаку и сохранить случайность.
- Далее мы отделяем часть данных для тестирования и сохраняем ее в отдельную переменную. Например, мы можем использовать функцию train_test_split из библиотеки sklearn на языке Python (где X – это матрица признаков, y – это вектор целевых переменных, test_size – это доля данных, которую мы отделяем для тестирования, а random_state – это значение для генерации случайных чисел):

- Мы используем X_train и y_train для обучения модели и X_test и y_test для оценки ее качества. После того, как модель обучена на обучающей выборке, мы применяем ее к тестовой выборке и оцениваем ее качество, например, используя метрику точности или среднеквадратичную ошибку.
- После оценки качества модели мы можем вернуться к шагу 2 и изменить параметры разделения, если это необходимо, например, увеличивая или уменьшая долю тестовой выборки. Также мы можем изменять параметры модели и использовать методы кросс-валидации и подбора гиперпараметров для получения более точных результатов (об этом мы поговорим ниже).
Дополнительно есть несколько важных соображений, которые следует учитывать при разделении выборки на обучающую и тестовую:
| ✔ | Разделение выборки должно быть выполнено случайным образом, чтобы исключить возможность включения более представительных или необычных данных в одну из выборок. Это помогает обеспечить более точную оценку качества модели на новых данных. |
| ✔ | Если у вас маленькая выборка, лучше использовать метод перекрестной проверки (cross-validation), который позволяет более эффективно использовать имеющиеся данные. В этом случае выборка разделяется на несколько частей (например, 5 или 10), и модель обучается на каждой части и тестируется на оставшейся части. Каждая часть выступает как тестовая выборка один раз. В результате мы получаем несколько оценок качества модели, которые могут быть усреднены для получения более точной оценки. |
| ✔ | Некоторые данные могут содержать несбалансированные классы, т.е. один из классов может быть представлен значительно меньшим количеством данных, чем другой. В этом случае важно сохранить балансировку классов при разделении выборки на обучающую и тестовую. Для этого можно использовать параметр stratify при вызове функции train_test_split. |
| ✔ | Необходимо помнить, что выборка может содержать выбросы, которые способны исказить оценку качества модели на тестовой выборке. Для этого можно использовать методы обнаружения выбросов (например, метод межквартильного размаха) и удалить выбросы из обучающей выборки. |
| ✔ | Важно не использовать тестовую выборку для настройки параметров модели, т.к. это может привести к переобучению. Настройку параметров следует производить только на обучающей выборке, а тестовую выборку использовать только для оценки качества модели. Если нужно настроить параметры, можно использовать метод перекрестной проверки, о котором упоминалось выше. |
Кроме разделения на обучающую и тестовую выборки, в некоторых случаях может быть полезно использовать еще одну выборку – выборку для проверки (validation set). Выборка для проверки используется для выбора наилучших гиперпараметров модели, т.е. параметров, которые не могут быть оптимизированы во время обучения модели, но влияют на ее качество. Примерами гиперпараметров могут быть число скрытых слоев в нейронной сети, скорость обучения и другие параметры, которые можно настроить вручную.
Процесс использования выборки для проверки состоит из следующих шагов:
- Из обучающей выборки мы отделяем часть данных для выборки для проверки.
- На обучающей выборке мы обучаем несколько моделей с различными значениями гиперпараметров.
- На выборке для проверки мы оцениваем качество каждой из моделей и выбираем ту, которая показывает лучшие результаты.
- После выбора наилучшей модели мы обучаем ее на всей обучающей выборке (включая выборку для проверки) и оцениваем ее качество на тестовой выборке.
Использование выборки для проверки позволяет получить более точные результаты, т.к. мы выбираем наилучшие гиперпараметры модели на отдельной выборке, которая не используется для обучения модели.
Однако важно учитывать, что при использовании выборки для проверки мы теряем часть данных, которые могут быть использованы для обучения модели. Поэтому, если у нас есть маленькая выборка данных, использование выборки для проверки может быть нецелесообразным.
Также при использовании выборки для проверки необходимо быть внимательными и избегать переобучения на этой выборке, т.к. это может привести к получению оптимистичных оценок качества модели на новых данных.
Кроме того, существует несколько методов, которые помогают улучшить процесс выбора гиперпараметров на выборке для проверки. Один из таких методов – это ранняя остановка (early stopping), который заключается в том, чтобы прекратить обучение модели, когда ошибка на выборке для проверки перестает уменьшаться. Этот метод позволяет избежать переобучения и выбрать наилучшую модель с наименьшей ошибкой на выборке для проверки.
Корректное разделение выборки, учет особенностей данных и выбор оптимальных параметров помогают получить наилучшие результаты при использовании машинного обучения. Но выбор оптимального способа разделения выборки и использования дополнительных выборок для проверки может зависеть от конкретной задачи и доступных данных. Поэтому важно проводить тщательный анализ данных и выбирать наилучший подход для каждой задачи машинного обучения.
Плюс ко всему, выборки тесно связаны с метриками качества. Они позволяют измерить эффективность модели, отображают точность, полноту, F1-меру, среднеквадратическую ошибку (MSE) и другие показатели, которые позволяют оценить, насколько хорошо модель выполняет задачу.
Метрики качества
Метрики качества – это способ оценки производительности модели машинного обучения на основе ее способности предсказывать правильные ответы для тестовой выборки.
Оценка производительности модели важна, чтобы понять, насколько хорошо она справляется с задачей, для которой была обучена. Ниже рассмотрим несколько наиболее распространенных метрик качества для различных типов задач машинного обучения.
Для задач классификации:
- Accuracy (Точность) – доля правильных ответов модели среди всех предсказаний.
- Precision (Точность) – доля истинно положительных ответов среди всех положительных ответов модели.
- Recall (Полнота) – доля истинно положительных ответов среди всех правильных ответов.
- F1-мера – гармоническое среднее между точностью и полнотой.
Для задач регрессии:
- Mean Squared Error (MSE) – среднее значение квадрата разности между предсказанными и правильными значениями.
- Root Mean Squared Error (RMSE) – квадратный корень из среднего значения квадратов разности между предсказанными и правильными значениями.
- Mean Absolute Error (MAE) – среднее значение абсолютной разности между предсказанными и правильными значениями.
- R2-коэффициент детерминации – мера, которая показывает, насколько хорошо модель подходит для данных. R2-коэффициент может принимать значения от 0 до 1, где 1 означает идеальное соответствие.
Для задач кластеризации:
- Silhouette score (Коэффициент силуэта) – мера, которая показывает, насколько точно каждый объект соответствует своему кластеру и насколько он отличается от других кластеров. Значение коэффициента силуэта может варьироваться от -1 до 1, где 1 означает, что объекты внутри кластера находятся ближе друг к другу, чем к объектам других кластеров.
Кроме этих метрик, в зависимости от конкретной задачи машинного обучения могут быть использованы и другие метрики качества. Например, для задачи рекомендательной системы может использоваться Precision@k (точность на k рекомендациях), где k – это количество рекомендаций, которые модель должна дать пользователю.
Выбор наиболее подходящей метрики зависит от конкретной задачи и целей машинного обучения. Например, если наша цель – максимизировать количество истинно положительных ответов, то метрика Precision будет более важна, чем Recall. Если же наша задача состоит в том, чтобы избежать ложно отрицательных ответов, то Recall будет более актуальной.
Также важно учитывать, что метрики качества не всегда могут полностью описать производительность модели, и бывают случаи, когда метрики дают неправильные оценки. Поэтому при выборе метрики качества необходимо учитывать не только ее численное значение, но и интерпретируемость результата, а также понимать ее ограничения.
В дополнение к сказанному, метрики качества играют важную роль в процессе кросс-валидации и подбора гиперпараметров, о которых также нужно иметь представление.
Кросс-валидация и подбор гиперпараметров
Кросс-валидация и подбор гиперпараметров – это два важных этапа в процессе машинного обучения, которые помогают выбрать наилучшую модель для конкретной задачи.
Кросс-валидация – это метод оценки производительности модели, состоящий в том, чтобы разбить обучающую выборку на несколько фолдов (частей), обучить модель на каждом фолде, используя остальные фолды для валидации, и усреднить результаты. Этот метод позволяет получить более точную оценку производительности модели, т.к. использует все доступные данные для обучения и валидации.
Существует несколько типов кросс-валидации, в частности:
Подбор гиперпараметров – это процесс выбора оптимальных значений гиперпараметров модели, которые не могут быть оптимизированы во время обучения, но влияют на ее производительность. Примерами гиперпараметров могут быть количество скрытых слоев в нейронной сети, скорость обучения и т.д.
Существует несколько методов подбора гиперпараметров, среди которых:
- Grid Search – метод, который перебирает все возможные комбинации гиперпараметров и выбирает ту, которая дает наилучшие результаты.
- Random Search – метод, который выбирает случайные значения гиперпараметров и оценивает производительность модели для каждой комбинации.
- Bayesian Optimization – метод, который использует вероятностные модели для определения оптимальных значений гиперпараметров.
Выбор метода подбора гиперпараметров зависит от конкретной задачи машинного обучения и доступных данных. Кроме того, важно помнить, что кросс-валидация и подбор гиперпараметров могут занимать много времени и ресурсов, поэтому необходимо использовать их с умом и эффективно.
Некоторые методы, такие как Grid Search, могут быть очень затратными, особенно при большом количестве гиперпараметров и больших объемах данных. В таких случаях можно использовать более эффективные методы, например, Random Search или Bayesian Optimization.
Также важно учитывать, что кросс-валидация и подбор гиперпараметров могут привести к переобучению модели на обучающих данных, особенно если они используются неудачным образом. Например, если мы используем всю обучающую выборку для подбора гиперпараметров, мы можем переоценить производительность модели на тестовых данных.
Обобщая же, можно сказать, что метрики качества, кросс-валидация и подбор гиперпараметров тесно связаны друг с другом, а качественные результаты можно получить лишь при грамотной работе с каждым из этих элементов.
Задание на взаимную проверку
Чтобы лучше понять, как оценить результаты машинного обучения, выбрать подходящие метрики качества модели и улучшить ее точность, предлагаем выполнить еще одно сложное задание.
Найдите открытый набор данных, который относится к интересующей вас области, например, к здравоохранению или финансовым рынкам. Разбейте выбранный набор данных на обучающую и тестовую выборки. Используйте простой метод разбиения на обучение и тестирование, например, случайное разбиение на 70% обучающей выборки и 30% тестовой выборки.
Обучите модель машинного обучения на обучающей выборке. Используйте простые алгоритмы машинного обучения, такие как линейная регрессия или деревья решений. Оцените результаты модели на тестовой выборке, используя метрики качества модели (точность, полнота и F1-мера). Выберите одну или несколько метрик и объясните их значение.
Это задание на взаимную проверку, поэтому сначала вам нужно проверить две работы других пользователей, а затем загрузить свою. При проверке чужих работ вам необходимо оценить масштаб проделанной работы и глубину понимания материала, предложить улучшения для модели, которые могут привести к повышению ее точности, а также написать, какие трудности возникли при выполнении задания.
Интерпретация результатов машинного обучения
Интерпретация результатов машинного обучения – это процесс понимания того, как модель принимает решения и как работает в целом. Он очень важен для принятия решений на основе модели и обеспечения ее прозрачности и объяснимости.
Интерпретация результатов машинного обучения является важным этапом в создании моделей, особенно если эти модели используются в критических приложениях, где необходимо понимать причины принимаемых моделью решений.
Для интерпретации результатов машинного обучения можно использовать различные методы, включая методы, основанные на теории игр, такие как SHAP (SHapley Additive exPlanations), и методы, основанные на интерпретации локальных моделей, такие как LIME (Local Interpretable Model-agnostic Explanations).
Коротко о каждом из них:
| 1 | Метод SHAP использует теорию игр, чтобы определить вклад каждого признака в принятие решений моделью. Он представляет каждый объект входных данных как комбинацию признаков и определяет, какой вклад каждый признак вносит в принятие решений моделью для данного объекта. Результаты SHAP показывают, какие признаки наиболее важны для принятия решений моделью на уровне отдельных объектов. |
| 2 | Метод LIME использует локальную модель для интерпретации результатов машинного обучения. Он представляет объекты входных данных в виде набора признаков и оценивает вклад каждого признака в принятие решений моделью для данного объекта. LIME использует локальную модель, чтобы приблизить поведение исходной модели в окрестности данного объекта и показать, какие признаки наиболее важны для принятия решений для данного объекта. |
Оба метода помогают лучше понять то, как модель принимает решения на уровне отдельных объектов. Они позволяют получить важную информацию о важности признаков и влиянии отдельных объектов на результаты модели. Кроме того, они позволяют обнаружить возможные ошибки в работе модели и улучшить ее производительность.
Еще одним методом интерпретации результатов машинного обучения является анализ ошибок модели. Он позволяет определить, какие объекты входных данных наиболее трудны для модели и почему она совершает ошибки на этих объектах. Например, если мы строим модель для классификации изображений, а она ошибается на изображениях с определенными характеристиками, анализ ошибок может показать, что модель имеет проблемы с распознаванием объектов определенного размера или формы.
Также существуют методы интерпретации результатов машинного обучения на основе визуализации. Они позволяют визуально представить работу модели и понять, как она принимает решения на основе входных данных. Например, для моделей, основанных на нейронных сетях, можно визуализировать активацию нейронов на разных слоях или важные признаки на изображениях.
Но нельзя забывать и о том, что методы интерпретации результатов машинного обучения могут иметь свои ограничения и не всегда давать полную картину того, как работает модель. Кроме того, не все модели могут быть легко интерпретированы (например, нейронные сети, которые являются очень сложными моделями со множеством параметров).
Тем не менее, стремление интерпретировать результаты машинного обучения является важным шагом для обеспечения прозрачности и объяснимости модели. Это позволяет повысить уверенность в принимаемых решениях на основе модели и помогает сделать выводы о причинах возможных ошибок.
Интерпретация результатов машинного обучения не является финальной стадией в работе искусственного интеллекта, а представляет собой непрерывный процесс, который может происходить на протяжении всего жизненного цикла модели.
После того, как модель была разработана и обучена, интерпретация результатов поможет понять, как модель принимает решения и почему она делает определенные предсказания. Это полезно для настройки модели, оптимизации ее производительности и улучшения ее точности при работе в реальных условиях.
Однако на этом введение в искусственный интеллект можно считать оконченным, и у нас остался лишь один вопрос для рассмотрения – каковы последствия использования искусственного интеллекта. О них мы поговорим в заключительном уроке, а сейчас предлагаем перейти к тесту.
Проверьте свои знания
Если вы хотите проверить свои знания по теме данного урока, можете пройти небольшой тест, состоящий из нескольких вопросов. В каждом вопросе правильным может быть только один вариант. После выбора вами одного из вариантов система автоматически переходит к следующему вопросу. На получаемые вами баллы влияет правильность ваших ответов и затраченное на прохождение время. Обратите внимание, что вопросы каждый раз разные, а варианты перемешиваются.
Заключительный урок посвящен последствиям применения искусственного интеллекта.