нежное знакомство

Большинство из нас уже сталкивались с некоторыми из наиболее повторяющихся проблем в проектах машинного обучения: переоснащение, неполное оснащение ... Чтобы решить эти проблемы, наивный кодировщик будет проверять все предложения, которые он или она найдет в поиске Google, без фактического анализа ситуации и все различные параметры, которые следует учитывать: характер алгоритма обучения, его характеристики, качество данных ... В этой статье мы узнаем, как определить причину ошибок, с которыми вы сталкивались ранее ( и, вероятно, столкнемся снова), понимая «Разложение отклонения смещения», чтобы повысить точность вашей модели. Сделайте глубокий вдох и налейте себе чашку кофе; приступим к работе ».

Определения и обозначения

Далее «P» - это распределение, составленное из пар точек данных (x, y), где x обозначает элемент входного набора, а y - вектор, связанный с этим x (т. Е. Вектор, который мы должны получить на выходе если мы дадим классификатору вектор x во входных данных в соответствии с распределением P), мы обозначим буквой «A» алгоритм классификации (вы можете представить все, что захотите: деревья решений, случайный лес, нейронные сети). Сети и т. Д.) И, наконец, «h (D)» - это классификатор, который мы получили, обучив алгоритм «A» с использованием некоторого набора данных D = {(x1, y1), (x2, y2),….}, Который мы сформировали из распределение «П».

примечание: для простоты мы будем использовать квадрат ошибки (squared_error (h (x), y) = [h (x) - (y)] ^ 2) как функцию ошибки 😇😇😄😄😄

Ожидаемая тестовая ошибка классификатора

Интуитивно, чтобы вычислить ожидаемую тестовую ошибку классификатора h (D), мы должны повторить этот процесс (мы называем его, например, альфа) большое количество раз:

  1. мы берем пару (x, y) из распределения P (обязательно нужно выбрать (x, y), которые не принадлежат набору данных D).
  2. в этом случае мы вычисляем квадрат ошибки.
  3. записываем полученный результат.

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

для большей точности ожидаемая ошибка теста классификатора может быть представлена ​​следующим образом:

Ожидаемый классификатор

Как мы уже говорили ранее, классификатор h (D) является результатом комбинации двух компонентов:

  1. Алгоритм классификации «А».
  2. Набор данных «D», который мы использовали для этого алгоритма.

мы можем видеть, что мы могли бы построить множество классификаторов (h1, h2, h3,…), используя разные наборы данных (D1, D2, D3,….), которые сформированы из одного и того же распределения «P», поэтому мы определяем ожидаемый классификатор следующим образом :

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

Сделайте глоток кофе и отдохните, чтобы понять, что мы попытаемся объяснить сейчас 😂😂😂😁😁😁.

Ожидаемая ошибка алгоритма «А»

Проще говоря, мы можем вычислить это значение, повторив этот процесс (мы называем это, например, бета-версией) большое количество раз:

  1. мы строим набор данных «D» из распределения «P».
  2. мы получаем классификатор h (D), обучая алгоритм «A» с использованием набора данных «D».
  3. мы используем альфа-процесс, который мы описали ранее, чтобы вычислить ожидаемую тестовую ошибку для этого конкретного классификатора.
  4. записываем полученный результат.

и в конце этого процесса все, что нам нужно сделать, это вычислить среднее значение результатов, которые мы записали ранее, и, наконец, мы можем сказать, что формально мы действительно получили желаемое значение:

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

Теперь пришло время интерпретировать каждый компонент и понять, как он может повлиять на точность классификатора 👌👌👌👌👌😎😎😎😎.

Первый компонент: «дисперсия»

это значение описывает степень осведомленности алгоритма о небольших изменениях данных, подумайте об этом: если мы обучим алгоритм «A» с двумя разными наборами данных D1 и D2, чтобы получить два разных классификатора h1 и h2, насколько ближе будет выводит, если мы дадим h1 и h2 один и тот же вектор x, на самом деле это является причиной проблемы переобучения: алгоритм слишком заботится о деталях в данных, поэтому он игнорирует «основные» характеристики и фиксируют только конкретные детали каждой выборки на этапе обучения, поэтому мы получаем плохие результаты, когда показываем классификатору некоторые новые наблюдения, потому что он не может найти зафиксированные детали в новых данных.

Вторая составляющая: «шум в данных».

Я думаю, вам следует глубоко проанализировать это🧐🧐🧐🧐: (x, y) - это пара точек данных, где x обозначает элемент входного набора, а y - вектор, связанный с x (т.е. результат ожидаемого классификатора, когда мы дадим ему вектор x на входе, будет рассчитан по формуле: ). Под моими словами я подразумеваю, что связь « x ‹-› y ”не обязательно. true, что иногда случается в реальной жизни: во время подготовки данных мы даем образцу ложную метку, мы можем сказать, что этот компонент описывает шум в данных.

Третий компонент: «предвзятость».

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

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

Ресурсы:

[1] Стюарт Геман, Нейронная сеть и дилемма смещения / дисперсии (1992), http://www.dam.brown.edu/people/geman/Homepage/Essays%20and%20ideas%20about%20neurobiology/bias-variance. .pdf

[2] Килиан Вайнбергер, Разложение дисперсии смещения (2018 г.), https://www.youtube.com/watch?v=zUJbRO0Wavo&t=2717s