Содержание

С 30 мая действует новая форма отчета СЗВ-М для ПФР

Правление ПФР постановлением от 15 апреля 2021 года № 103п обновило форму отчета СЗВ-М («Сведения о застрахованных лицах»). Вступила в силу новая форма 30 мая 2021 года. Поэтому использовать ее работодатели должны уже при отправке отчетности за май.

Напомним, что СЗВ-М – это форма ежемесячной отчетности в ПФР, которую сдают все организации и ИП, имеющие наемных работников по трудовым договорам или договорам ГПХ, включая сотрудников, находящихся в декрете или отпуске, а также тех, с кем в отчетном месяце был расторгнут рабочий договор.

Сроки сдачи СЗВ-М – до 15-го числа месяца, следующего за отчетным. Так, отчет по новой форме СЗВ-М за май нужно сдать до 15 июня 2021 года.

Что изменилось в бумажной форме СЗВ-М

Существенно – ничего. Основных изменений три:

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

Тип формы теперь нужно прописывать полностью, вместо используемых ранее сокращений. Например: «исходящая» вместо «исхд».

Последнее скорее уточнение, а не изменение. СЗВ-М теперь нужно сдавать на директоров, являющихся единственными учредителями компании. 

Что изменилось в электронной форме СЗВ-М

Ничего. Электронная форма СЗВ-М осталась неизменной. С порядком ее сдачи вы можете ознакомиться в постановлении Правления ПФР от 7 декабря 2016 года № 1077п.

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

Отчетность в ПФР – без проблем с сервисами Такском

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

Максимально минимизировать вероятность ошибки можно, используя сервисы для электронной отчетности. Тем более, что в электронной СЗВ-М, как мы уже сообщили, ничего не поменялось.

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

Во-вторых, при заполнении форм отчетности вы видите текстовые подсказки по их заполнении – очень удобно, чтобы не обращаться за помощью к дополнительным интернет ресурсам.

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

Узнать подробнее о преимуществах электронной отчетности и подобрать тарифный план вы можете здесь.

Отправить

Запинить

Твитнуть

Поделиться

Поделиться

СЗВ-ТД и СЗВ-M за май 2021

СЗВ-М и СЗВ-ТД — это два отчёта, подавать которые нужно ежемесячно. Отчёт СЗВ-М за май 2021 года заполняется уже по новой форме, а новый бланк СЗВ-ТД начинается действовать с июля 2021 года. Разберёмся в изменениях, которым подверглись оба ежемесячных отчёта.



СЗВ-М

Общие сведения о форме и обзор изменений

СЗВ-М — документ, в котором представлены сведения о застрахованных лицах. Подавать отчёт по итогам месяца должны все страхователи: организации (в т. ч. иностранные, которые работают в России), индивидуальные предприниматели, а также адвокаты, частные детективы и нотариусы.

Исключение: индивидуальные предприниматели, адвокаты, частные детективы и нотариусы могут не сдавать СЗВ-М, если у них нет наёмных сотрудников и подрядчиков.

Изначально форму утвердили ещё в 2016 году, последний раз в таком виде её подавали за апрель 2021 года. С 30 мая этого года начинает действовать новая форма (Постановление Правления ПФ РФ от 15.04.2021 N 103п), и подавать за этот месяц её нужно уже в июне.

Смысл документа остался нетронутым, изменился только внешний вид бланка. В предыдущем Постановлении (№ 83п от 01.02.2016), которое утвердило уже прежнюю форму отчёта, не было пояснений по его заполнению, — они были представлены непосредственно в самом бланке. Главным нововведением в форму стало исключение этой информации из документа, а порядок заполнения привели в Приложении 1 к Постановлению.

Важно: теперь при заполнении графы «Тип формы (Код)» писать её название нужно полностью, а не сокращённо, как было принято в старом бланке.

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

Заполнение формы и образец

Сдать СЗВ-М можно в электронном формате или на бумажном носителе до 15 числа месяца, следующего за отчётным. СЗВ-М за май 2021 года нужно сдать до 15 июня.

Важно: если количество физических лиц, включённых в отчёт, равно или превышает 25 человек, отчёт нужно подавать исключительно в электронном виде и подписывать его квалифицированной электронной подписью.

Сам отчёт СЗВ-М состоит из четырёх разделов:

  1. Реквизиты страхователя. В этом разделе нужно указать регистрационный номер в ПФР, полное или сокращённое название организации, а также ИНН и КПП.

  2. Отчётный период календарного года. Эта строка заполняется в формате ММ ГГГГ.

  3. Тип формы (код). Заполнить эту строку нужно в соответствии с той формой, которая подаётся: «Исходная», «Дополняющая» или «Отменяющая».

  4. Сведения о застрахованных лицах. В таблицу нужно вписать всех работников, на которых распространяется обязательное пенсионное страхование. На каждое застрахованное лицо должно быть заполнено его Ф.И.О., СНИЛС и ИНН. № п/п указывается в порядке возрастания.

Внизу бланка нужно поставить подпись и Ф.И.О. заполнившего документ, а также написать название должности руководителя и дату заполнения. При наличии, нужно поставить печать.

Бланк СЗВ-М с мая 2021 года выглядит следующим образом:

СЗВ-ТД

Общие сведения о форме

СЗВ-ТД — документ, в котором представлены сведения о трудовой деятельности застрахованных лиц. С января 2020 года отчёт подают все работодатели, у которых есть работники, даже если работник всего один. Это правило относится как к организациям, так и к индивидуальным предпринимателям.

Сведения о трудовой деятельности — это аналог трудовой книжки, представленный в электронном формате. Сдавать отчёт нужно только по тем сотрудникам, статус которых в отчётный период изменился. К таким изменениям относят:

  • приём на работу;

  • увольнение;

  • изменения названия страхователя;

  • установление страхователю новой профессии, специальности или квалификации;

  • перевод на другую работу;

  • запрет на занятие должности;

  • подача заявление о выборе трудовой книжки (электронный или бумажный формат).

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

Какие изменения будут с июля

Новая форма СЗВ-ТД утверждена Постановлением Правления ПФ РФ № 769п от 27 октября 2020 года. Её положения вступают в силу 1 июля 2021 года, следовательно, на новом бланке сведения о застрахованных лицах нужно подавать уже за июнь, а за май — на прежнем.

Итак, в форму СЗВ-ТД внесли следующие изменения:

  1. Добавили раздел «Сведения о работодателе, правопреемником которого является страхователь».

  2. В табличную часть добавили пункт «Работа в районах Крайнего Севера или местностях, приравненных к районам Крайнего Севера».

  3. Изменили графу «Код выполняемой функции» и пересмотрели порядок её заполнения.

Заполнение формы и образец

Как и в случае с СЗВ-М, СЗВ-ТД нужно подавать в электронном виде, если у работодателя больше 24 работников. Если работников 24 и меньше, то подавать документ он имеет право и на бумажном носителе.

Чтобы подать документ в электронном виде, нужна квалифицированная электронная подпись. Для этой цели подойдёт «Астрал-ЭТ», кроме того, её можно использовать для регистрации онлайн-кассы, работы на госпорталах и участия в торгах.

Ещё одно сходство с документом, о котором мы говорили в прошлом разделе, это дата подачи. СЗВ-ТД подаётся ежемесячно до 15 числа, то есть за май документ нужно подать до 15 июня.

Рассмотрим порядок заполнения бланка.

  1. Сведения о страхователе.

    В этом разделе необходимо указать наименование организации в соответствии с учредительными документами, ИНН, КПП, а также регистрационный номер в ПФР.

  2. Сведения о работодателе, правопреемником которого является страхователь. Этот раздел заполняется правопреемником страхователя о работодателе, который в настоящее время снят с учёта в качестве страхователя. Раздел заполняется только при необходимости. Порядок заполнения реквизитов идентичен первому разделу бланка.

  3. Сведения о зарегистрированном лице. В отведённых графах нужно указать Ф.И.О. зарегистрированного лица, его дату рождения и СНИЛС.

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

  5. Табличная часть. По порядку заполняются все графы таблицы, подробно остановимся только на тех графах, где произошли изменения. В графе «Работа в районах Крайнего Севера или местностях, приравненных к районам Крайнего Севера» при необходимости нужно указать код РКС или МКС соответственно. В графе «Код выполняемой функции» указывается кодовое обозначение занятия в соответствии с занимаемой должностью по ОКЗ (Общероссийский классификатор занятий).

Внизу нужно поставить подпись и Ф.И.О. заполнившего документ, а также написать название должности руководителя и дату заполнения. При наличии, нужно поставить печать.

Сам бланк СЗВ-ТД с июля 2021 года будет выглядеть следующим образом:

СЗВ-М и СЗВ-ТД удобно заполнять в веб-сервисе «Астрал Отчёт 5.0». Все типы отчётов всегда имеют актуальную версию.

ПФР СООБЩИЛ, ДО КАКОГО ЧИСЛА НУЖНО ПОДАТЬ СЗВ-М, ЕСЛИ ПОСЛЕДНИЙ ДЕНЬ СРОКА ПРИХОДИТСЯ НА ВЫХОДНОЙ ИЛИ НЕРАБОЧИЙ ПРАЗДНИЧНЫЙ ДЕНЬ

Ecли последний день подачи отчетности в ПФР по форме СЗВ-М приходится на выходной и нерабочий праздничный день, то крайний срок представления сведений переносится на первый следующий рабочий день. Такие разъяснения содержатся в письме Пенсионного фонда от 07.04.16 № 09-19/4844.

Напомним, что с апреля 2016 года все страхователи обязаны ежемесячно представлять в территориальные подразделения ПФР сведения по каждому физическому лицу, с которым оформлены трудовые или гражданско-правовые отношения. Сведения надо подавать по форме СЗВ-М, которая утверждена постановлением правления ПФР 

от 01.02.16 № 83п (также см. «С апреля 2016 года вводится ежемесячная отчетность в ПФР: кто, как и зачем должен ее сдавать», «Форма СЗВ-М: как заполнить и сдать новую форму для ежемесячной отчетности в ПФР»).

Сведения на работников нужно сдавать не позднее 10 числа месяца, следующего за отчетным месяцем (п. 2.2 ст. 11 Федерального закона от 01.04.96 № 27-ФЗ). При этом Законом № 27-ФЗ не определен порядок переноса срока представления отчетности, если последний день приходится на выходной или нерабочий праздничный день. Вместе с тем сведения индивидуального учета страхователь представляет ежеквартально в ПФР и в ФФОМС в соответствии с Федеральным законом от 24.07.09 № 212-ФЗ о страховых взносах в ПФР, ФСС, ФФОМС. А в этом законе прописано: если последний день срока приходится на день, признаваемый выходным и (или) нерабочим праздничным днем, то днем окончания срока считается ближайший следующий за ним рабочий день (п. 7 

ст. 4 Закона № 212-ФЗ).

Далее чиновники отмечают, что в случаях, когда отношения прямо не урегулированы законодательством, к таким отношениям, если это не противоречит их существу, применяется законодательство, регулирующее сходные отношения (аналогия закона). А поскольку порядок представления ежемесячной и ежеквартальной отчетности установлен положениями Закона № 27-ФЗ, то положения, регулирующие представление ежеквартальной отчетности, вполне применимы к порядку представления ежемесячной отчетности, считают в Пенсионном фонде.

На этом основании авторы письма пришли к выводу: если последний день срока сдачи сведений по форме СЗВ-М приходится на выходной или нерабочий праздничный день, то последним днем представления отчетности считается первый следующий за ним рабочий день.

Отметим, что в этом году последние дни сдачи СЗВ-М за июнь, август и ноябрь выпадают на выходные. Соответственно, СЗВ-М за июнь нужно сдать не позднее 11 июля, за август — не позднее 12 сентября, за ноябрь — не позднее 12 декабря.

 

Машина опорных векторов - Введение в алгоритмы машинного обучения | Рохит Ганди

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

Функция потерь для SVM

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

Градиенты

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

Обновление градиента - без ошибочной классификации

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

Обновление градиента - неправильная классификация

Реализация SVM в Python

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

Поскольку набор данных Iris состоит из трех классов, мы удалим один из классов. Это оставляет нам проблему классификации бинарных классов.

Визуализация точек данных

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

Мы извлекаем необходимые функции и разделяем их на данные для обучения и тестирования.90% данных используются для обучения, а остальные 10% используются для тестирования. Теперь давайте создадим нашу модель SVM, используя библиотеку numpy.

α (0,0001) - скорость обучения, а параметр регуляризации λ установлен на 1 / эпох. Следовательно, значение регуляризации уменьшает количество возрастов эпох.

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

Точность нашей модели SVM

Есть еще один простой способ реализовать алгоритм SVM. Мы можем использовать библиотеку Scikit learn и просто вызвать связанные функции для реализации модели SVM. Количество строк кода значительно сокращается, если слишком мало строк.

Заключение

Машина опорных векторов - это элегантный и мощный алгоритм. Используйте его с умом 🙂

ПОДДЕРЖКА ВЕКТОРНЫХ МАШИН (SVM). Введение: все, что вам нужно знать… | by Ajay Yadav

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

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

Рассмотрим следующую ситуацию:

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

Думаю, вы бы выбрали инжир (а). Вы думали, почему вы выбрали инжир (а)? Потому что электронные письма на рис (а) четко классифицированы, и вы более уверены в этом, чем на рис (б). По сути, SVM состоит из идеи создания оптимальной гиперплоскости , которая четко классифицирует различные классы (в данном случае это бинарные классы).

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

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

В этом посте мы так долго обсуждали гиперплоскость, давайте объясним ее значение, прежде чем двигаться дальше. Гиперплоскость - это функция, которая используется для различения элементов. В 2-D функция, используемая для классификации между элементами, является линией, тогда как функция, используемая для классификации элементов в 3-D, называется плоскостью, аналогично функция, которая классифицирует точку в более высоком измерении, называется гиперплоскостью.Теперь, когда вы знаете о гиперплоскости, давайте вернемся к SVM.

Допустим, есть размеры «m»:

, таким образом, уравнение гиперплоскости в измерении «M» можно представить как =

, где

Wi = векторы (W0, W1, W2, W3… Wm )

b = смещенный член (W0)

X = переменные.

Теперь,

Предположим, 3 гиперплоскости, а именно (π, π +, π−), такие, что «π +» параллельно «π», проходящему через опорные векторы на положительной стороне, а «π−» параллельно » π ', проходящий через опорные векторы на отрицательной стороне.

уравнения каждой гиперплоскости можно рассматривать как:

для точки X1:

Объяснение: когда точка X1 мы можем сказать, что эта точка лежит на гиперплоскости, и уравнение определяет, что произведение нашего фактического выхода и уравнение гиперплоскости равно 1, что означает, что точка правильно классифицируется в положительной области.

для точки X3:

Объяснение: когда точка X3, мы можем сказать, что эта точка находится далеко от гиперплоскости, и уравнение определяет, что произведение нашего фактического выхода и уравнения гиперплоскости больше 1, что означает, что точка правильно классифицирован в положительной области.

для точки X4:

Объяснение: когда точка X4, мы можем сказать, что эта точка лежит на гиперплоскости в отрицательной области, и уравнение определяет, что произведение нашего фактического выхода и уравнения гиперплоскости равно 1, что означает, что точка правильно отнесена к отрицательной области.

для точки X6:

Объяснение: когда точка X6, мы можем сказать, что эта точка находится далеко от гиперплоскости в отрицательной области, и уравнение определяет, что произведение нашего фактического выхода и уравнения гиперплоскости больше 1, что означает, что точка правильно отнесена к отрицательной области.

Давайте рассмотрим ограничения, которые не классифицируются:

для точки X7:

Объяснение: Когда Xi = 7, точка классифицируется неправильно, потому что для точки 7 wT + b будет меньше единицы, и это нарушает ограничения. Итак, мы обнаружили неправильную классификацию из-за нарушения ограничений. Точно так же мы можем сказать для точек Xi = 8.

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

, если Yi (WT * Xi + b) ≥ 1:

тогда Си правильно классифицирован

иначе:

Си неправильно классифицирован.

Итак, мы можем видеть, что если точки линейно разделимы, то только наша гиперплоскость способна различать их, а если вводится какой-либо выброс, то она не может их разделить. Таким образом, этот тип SVM называется как SVM с жестким запасом (поскольку у нас есть очень строгие ограничения для правильной классификации каждой точки данных).

Мы в основном считаем, что данные линейно разделимы, и это может быть не так в реальном сценарии.Нам нужно обновление, чтобы наша функция могла пропустить несколько выбросов и иметь возможность классифицировать почти линейно разделяемые точки. По этой причине мы вводим новую переменную Slack ( ξ), которая называется Xi.

, если мы введем ξ в наше предыдущее уравнение, мы можем переписать его как

Введение Xi

, если ξi = 0,

точки можно считать правильно классифицированными.

иначе:

ξi> 0, неправильно классифицированные точки.

, поэтому, если ξi> 0, это означает, что Xi (переменные) находятся в неправильном измерении, поэтому мы можем думать о ξi как об ошибке, связанной с Xi (переменной). Средняя ошибка может быть выражена как;

средняя ошибка

, таким образом, наша цель математически может быть описана как;

, где ξi = ςi

ЧТЕНИЕ: найти вектор w и скаляр b, такие, что гиперплоскость, представленная w и b, максимизирует запасное расстояние и минимизирует член потерь при условии, что все точки правильно классифицирован.

Эта формулировка называется методом мягких полей.

, когда Zi ≥ 1, потери равны 0, когда Zi <1, потери возрастают.

, таким образом, можно интерпретировать, что потери на шарнире являются максимальными (0,1-Zi).

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

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

Примечание:

Если αi> 0, то Xi является опорным вектором, а когда αi = 0, то Xi не является опорным вектором.

Наблюдение:

  1. Для решения реальной проблемы нам не требуется фактическая точка данных, вместо этого может быть достаточно скалярного произведения между каждой парой вектора.
  2. Для вычисления смещенной константы «b» нам требуется только скалярное произведение.
  3. Основным преимуществом двойной формы SVM перед формулировкой Лагранжа является то, что она зависит только от α .

Переходя к основной части SVM, которой она наиболее известна, это трюк с ядром . Ядро - это способ вычисления скалярного произведения двух векторов x и y в некотором (очень многомерном) пространстве признаков, поэтому функции ядра иногда называют «обобщенным скалярным произведением».

попробуйте прочитать это уравнение… s.t = подчинено

Применение уловки ядра означает просто замену скалярного произведения двух векторов функцией ядра.

  1. линейное ядро ​​
  2. полиномиальное ядро ​​
  3. Ядро радиальной базисной функции (RBF) / ядро ​​Гаусса

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

Полиномиальное ядро:

В общем случае полиномиальное ядро ​​определяется как;

b = степень ядра & a = постоянный член.t и Zb.

Метод 1:

Традиционно мы решаем эту проблему следующим образом:

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

Или мы могли бы просто использовать

Method 2:

с использованием уловки ядра:

В этом методе мы можем просто вычислить скалярное произведение, увеличив значение мощности. Просто не правда ли?

Ядро радиальной базисной функции (RBF) / Гауссово ядро:

Гауссовское RBF (радиальная базисная функция) - еще один популярный метод ядра, используемый в моделях SVM для большего.Ядро RBF - это функция, значение которой зависит от расстояния от начала координат или от некоторой точки. Гауссовское ядро ​​имеет следующий формат;

|| X1 - X2 || = Евклидово расстояние между X1 и X2

Используя расстояние в исходном пространстве, мы вычисляем скалярное произведение (сходство) X1 и X2.

Примечание: сходство - это угловое расстояние между двумя точками.

Параметры:

  1. C: сила, обратная степени регуляризации.

Поведение: По мере увеличения значения «c» модель становится переобученной.

Поскольку значение «c» уменьшается, модель не подходит.

2. γ: Гамма (используется только для ядра RBF)

Поведение: По мере увеличения значения « γ » модель становится переобученной.

Поскольку значение « γ » уменьшается, модель не соответствует требованиям.

Плюсы:

  1. Это действительно эффективно в высшем измерении.
  2. Эффективно, когда количество функций больше, чем обучающих примеров.
  3. Лучший алгоритм, когда классы разделяются
  4. На гиперплоскость влияют только опорные векторы, поэтому выбросы имеют меньшее влияние.
  5. SVM подходит для двоичной классификации крайних случаев.

минусы:

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

1. Числовое преобразование:

SVM предполагает, что входные данные числовые, а не категориальные. Таким образом, вы можете преобразовать их, используя один из наиболее часто используемых « one hot encodin g, label-encoding etc ».

2. Двоичное преобразование:

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

Выбор обучающих наборов для опорных векторных машин: обзор

Все алгоритмы для работы с обучающими SVM из больших наборов данных можно разделить на две основные категории, включая методы, которые (i) ускоряют обучение SVM и (ii) уменьшите размер обучающих наборов , выбрав векторы-кандидаты (то есть те векторы, которые, вероятно, будут аннотированы как SV). В первом случае существующие методы применяются либо для уменьшения сложности основной проблемы оптимизации, либо для более эффективного управления процессом оптимизации.Тем не менее, этот подход по-прежнему вызывает проблему высокой сложности памяти в процессе обучения SVM, которая является сложной задачей и должна преодолеваться в задачах с большими данными (Guo and Boukir 2015; Wang and Xu 2004). Алгоритмы из второй категории выбирают векторы из \ (\ varvec {T} \) для формирования значительно меньших обучающих наборов - в этом обзоре мы сосредоточимся на подходах к выбору обучающих наборов SVM из больших наборов данных.

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

Рис. 2

Общие категории подходов к выбору обучающих наборов SVM

В этом разделе собраны алгоритмы, которые извлекают уточненные обучающие наборы SVM в чтобы уменьшить вычислительную нагрузку и нагрузку на память при обучении. Мы делим эти методы на пять основных категорий: (i) алгоритмы анализа геометрии данных (исследование геометрии \ (\ varvec {T} \) в поисках векторов-кандидатов, которые должны быть включены в уточненные наборы \ (\ varvec {T ' } \) s), (ii) методы анализа окрестностей (использующие статистические свойства \ (\ varvec {T} \) и исследования локальных окрестностей векторов \ (\ varvec {T} \)), (iii) эволюционные методы (разработка усовершенствованных обучающих наборов), (iv) активное обучение и (v) методы случайной выборки.

Методы анализа геометрии данных

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

Методы на основе кластеризации

Алгоритмы на основе кластеризации интенсивно изучаются для выбора уточненных обучающих наборов. Lyhyaoui et al. (1999) указывают на их теоретические преимущества: (i) методы, основанные на кластеризации, всегда могут устранить бесполезные векторы из \ (\ varvec {T} \), (ii) они применимы к мультиклассовым задачам, (iii) их целевые затраты может быть свободно установлен для данной проблемы. Однако эти методы страдают от сложной проблемы определения потенциально большого количества параметров (параметры кластеризации и количество векторов, помеченных как важные для каждого кластера, являются наиболее важными параметрами).

Блок-схема, визуализирующая стандартный алгоритм выбора обучающего набора, который использует кластеризацию, представлена ​​на рис. 3. После установки параметров алгоритма векторы из \ (\ varvec {T} \) кластеризуются с использованием заданного метода кластеризации. Footnote 2 . Затем выбираются кластеры для дальнейшего анализа (этот шаг может быть пропущен для алгоритмов, исследующих все кластеры, поэтому он помечен пунктирной линией на блок-схеме), и кандидаты SV, наконец, включаются в уточненный набор.Эта процедура чаще всего выполняется для каждого класса в \ (\ varvec {T} \) независимо.

Рис. 3

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

Lyhyaoui et al. (1999) применили частотно-зависимое соревновательное обучение к векторам набора обучающих кластеров (Scheunders and Backer 1999) с различным количеством центроидов для каждого класса. После определения центроидов они дополнительно анализируются для извлечения наиболее важных (критических) центроидов.Сначала посещается каждый из них и находится ближайший центроид противоположного класса. Если два центроида (обозначенные как центроиды A и B) являются ближайшими друг к другу в обоих смыслах (таким образом, когда центроид A является ближайшим центроидом для B и наоборот), то они помещаются в пул из критических центроидов. . Наконец, уже выбранные критические центроиды используются для классификации оставшихся с использованием алгоритма 1-ближайшего соседа, а ошибочно классифицированные центроиды считаются важными и помечаются как критические (они, скорее всего, будут лежать рядом с гиперплоскостью решения).Авторы разработали четыре различных механизма выбора выборки для извлечения окончательных векторов, которые должны быть включены в уточненный обучающий набор. Эти подходы основаны на: (i) анализе дисперсии векторов, (ii) анализе окрестности вектора (т. Е. Добавляется ближайший вектор противоположного класса из того, что добавлен в \ (\ varvec {T '} \). к \ (\ varvec {T '} \) также), (iii) комбинации (i) и (ii), и (iv) анализа отношений между векторами и центроидами. Авторы пришли к выводу, что применение различных алгоритмов отбора не оказывает существенного влияния на оценку классификации (однако, двухклассная обучающая выборка, используемая в экспериментах, была очень маленькой).

Кластеризация k -means была использована Barros de Almeida et al. (2000) в своем усовершенствованном алгоритме выбора обучающей выборки, названном SVM-KM. В SVM-KM k кластеров (где k - определяемый пользователем входной параметр алгоритма) формируются для всего обучающего набора (, а не для векторов, принадлежащих к разным классам независимо). Затем одноклассовые кластеры (т. Е. Те, которые содержат векторы, принадлежащие одному классу) игнорируются, и только их центроиды остаются в уточненном наборе, тогда как все векторы из гетерогенных кластеров (содержащие векторы из разных классов) добавляются к \ ( \ varvec {T '} \).Стоит отметить, что распределение данных может существенно повлиять на производительность SVM-KM (он подходит для плотных наборов данных и может некорректно вести себя для разреженных). Кроме того, значение k следует устанавливать с осторожностью, поскольку это может легко нарушить поведение алгоритма.

В SVM на основе кластеризации (сокращенно CB-SVM) Yu et al. (2003) применили иерархическую микрокластеризацию (Zhang et al. 1996), которая сканирует обучающий набор в поисках ценных векторов. CB-SVM строит дерево микрокластеров (называемое деревом [CF] функции кластеризации ) путем добавления входящих векторов \ (\ varvec {T} \) к кластерам.Он не позволяет выполнять обратное отслеживание, поэтому распределение данных может влиять на его возможности, но деревья CF по-прежнему могут извлекать основные шаблоны распределения данных. 2, \ end {align} $$

(32)

соответственно.Дерево CF - это дерево со сбалансированной высотой, которое характеризуется двумя параметрами: фактором ветвления (\ (b_ \ mathrm {CF} \)) и порогом (\ (t_ \ mathrm {CF} \)). Каждый нелистовой узел содержит не более \ (b_ \ mathrm {CF} \) элементов формы \ ((\ mathrm CF_j, child_j) \), где \ (j = 1,2, \ dots, b_ \ mathrm { CF} \), тогда как конечные узлы не имеют потомков. Таким образом, каждый нелистовой узел можно интерпретировать как кластер, состоящий из подкластеров, представленных его дочерними элементами. Порог \ (t_ \ mathrm {CF} \) - это максимальный радиус кластера в любом листовом узле.Деревья CF строятся в соответствии с процедурами, аналогичными тем, которые применяются в деревьях B \ (+ - \). Примечательной особенностью и преимуществом такой кластеризации является возможность обработки выбросов и векторов с шумом - те листовые записи, которые содержат значительно меньшее количество векторов, чем другие, считаются выбросами.

В CB-SVM деревья CF строятся для обоих классов отдельно, а SVM обучаются с использованием центроидов корневых записей (в корне есть как минимум одна запись, каждая запись является кластером, поэтому есть как минимум один центроид) обоих деревьев.Если в этом наборе слишком мало векторов, то элементы второго уровня деревьев включаются в уточненный набор. Затем записи, расположенные рядом с гиперплоскостью (так называемые кластеры с низкими полями ), декластерируются, и дочерние записи, декластеризованные по отношению к родительским, добавляются в \ (\ varvec {T '} \) вместе с некластеризованные родители. Наконец, другая SVM обучается с использованием центроидов записей \ (\ varvec {T '} \) - этот процесс продолжается до тех пор, пока не останется записей, подлежащих декластеризации.Хотя этот метод казался хорошо масштабируемым для больших наборов данных, авторы отметили, что в настоящее время он ограничен линейными ядрами, поскольку иерархические микрокластеры не будут изоморфны пространствам признаков большой размерности. Кроме того, параметры алгоритма (\ (b_ \ mathrm {CF} \) и \ (t_ \ mathrm {CF} \)) следует выбирать с осторожностью для анализируемого набора данных.

Koggalage и Halgamuge (2004) предложили очень интересный подход, аналогичный SVM-KM - сначала для поиска начальных кластеров применяется кластеризация k , затем определяются четких кластеров (т.е., те кластеры, которые содержат одноклассные векторы), и, наконец, определяются векторы, которые должны быть отброшены из \ (\ varvec {T} \). Авторы показали, что некоторые векторы из четких кластеров могут быть аннотированы как SV, поэтому они не должны автоматически удаляться из уточненных наборов. Следовательно, для каждого четкого кластера определена область безопасности, которая содержит его ключевые векторы (расположенные рядом с границей кластера). Процесс отбрасывания внутренних векторов из четкого кластера визуализирован на рис. 4. Ширина области безопасности (желтого цвета) определяется на основе количества векторов в кластере и радиуса кластера, поэтому она является переменной для разные кластеры.

Рис. 4

Удаление внутренних векторов из четкого кластера (a) , на основе области безопасности (отмеченной желтым) (b) . Удаленные векторы отображаются серым цветом. (Цветной рисунок онлайн)

Ван и Сюй (2004) предложили эвристический SVM (HSVM), в котором сначала определяется мера сходства векторов (\ (s_ \ mathrm {HSVM} \)), а затем векторы группируются в \ (k_ \ mathrm {HSVM) } \) группы. Функция подобия задается как

$$ \ begin {align} s_ \ mathrm {HSVM} = f \ left (\ frac {1} {\ left | \ left | \ varvec {a} _i- \ varvec {a} _j \ right | \ right | _2} \ right), \ end {align} $$

(33)

где \ (\ varvec {a} _i \ ne \ varvec {a} _j \), а \ (f (x) = x \) - чем больше значение меры подобия, тем ближе (геометрически) соответствующий векторы есть.Для каждой группы находится средний вектор и используется для удаления других обучающих векторов, если их значения \ (s_ \ mathrm {HSVM} \) (относительно среднего вектора) больше, чем предполагаемый порог. Как и в других методах, в которых используются некоторые заранее определенные пороги, этот порог следует выбирать очень осторожно (чувствительность к этим пороговым значениям является недостатком таких методов).

В алгоритме, предложенном Cervantes et al. (2008) была введена концепция кластеризации с минимальным охватывающим шаром (MEB).MEB данного набора \ (S_ \ mathrm {MEB} \) - это наименьший шар, охватывающий все шары и векторы в \ (S_ \ mathrm {MEB} \). Мяч обозначается как \ (B (c_B, r_B) \), где \ (c_B \) и \ (r_B \) - центр и радиус B . Поскольку найти оптимальный шар для данного набора очень сложно, авторы предложили использовать \ ((1+ \ epsilon) \) - приближение MEB. После кластеризации MEB уточненный набор содержит все векторы из кластеров смешанного класса, а также центроиды кластеров одного класса.После обучения SVM применяется дополнительная декластеризация для восстановления других потенциально ценных векторов \ (\ varvec {T} \), которые лежат рядом с гиперплоскостью решения, и для добавления их в \ (\ varvec {T '} \).

Похожий подход (названный SebSVM) был предложен Zeng et al. (2008). Здесь векторы выпуклой оболочки выбираются для формирования уточненных обучающих наборов в пространстве признаков. Это выполняется путем решения проблемы MEB в пространстве функций: сначала данные отображаются в пространство ядра более высокой размерности, и создаются два MEB (для обоих классов независимо).На основе этих MEB извлекаются векторы выпуклой оболочки из \ (\ varvec {T} \). Подобно Koggalage и Halgamuge (2004), область безопасности используется в SebSVM, чтобы избежать удаления полезных векторов из \ (\ varvec {T '} \).

Ван и Ши (2008) предложили алгоритм уменьшения размера обучающих наборов с помощью анализа структуры данных (сокращенно SR-DSA). В своем подходе авторы использовали кластеризацию по Уорду (Ward, 1963), которая позволяет получать эллипсоидальные кластеры. Связь Уорда для двух кластеров (\ (c_1 \) и \ (c_2 \)) задается как

$$ \ begin {align} W (c_1, c_2) = \ frac {\ left | c_1 \ right | \ cdot \ left | c_2 \ right | } {\ left | c_1 \ right | + \ влево | c_2 \ right | } \ cdot \ left | \ left | \ varvec {\ mu} _ {1} - \ varvec {\ mu} _ {2} \ right | \ право | ^ 2, \ end {align} $$

(34)

где \ (\ varvec {\ mu} _ {1} \) и \ (\ varvec {\ mu} _ {2} \) - средние векторы.Изначально каждый вектор представляет собой отдельный кластер, и впоследствии эти кластеры объединяются. Ценность связи Варда увеличивается, когда количество кластеров уменьшается во время процесса кластеризации. Это можно визуализировать на кривой расстояния слияния, которая обычно используется для нахождения точки изгиба (используется для определения желаемого количества кластеров). После этой процедуры разрабатывается уточненный обучающий набор - внутренние векторы из каждого кластера удаляются вместе с теми векторами, которые далеки от кластеров другого класса на основе метрики Махаланобиса.Каждый класс обрабатывается отдельно с помощью SR-DSA. Визуализация этого процесса представлена ​​на рис. 5. Основным недостатком этого метода является необходимость выбора различных его параметров (наиболее важным является конечное количество кластеров или количество внутренних векторов, удаленных из каждого кластера). Эти значения следует исследовать независимо для каждого входящего обучающего набора.

Рис. 5

Создание уточненного набора с использованием SR-DSA: a весь \ (\ varvec {T} \) (два цвета обозначают два класса), b векторы сгруппированы в кластеры - внутренние векторы и внешние векторы отклоняются (они отображаются серым и черным цветом соответственно).Этот рисунок вдохновлен Ван и Ши (2008). (Цветной рисунок онлайн)

Интересный метод, который сочетает кластеризацию k -средств с обнаружением границ во всем обучающем наборе, был предложен Li et al. (2009). В этом алгоритме обучающий набор интерпретируется как цветное изображение (есть два различных цвета для двоичной классификации, обозначающие два класса). Используя методы обработки изображения, окрестности пикселя сканируются для обнаружения сильных изменений яркости и цвета, которые могут соответствовать краям.При обнаружении краев, использованном Ли и др. (2009) анализируются векторы из \ (\ varvec {T} \) - если хотя бы один соседний вектор принадлежит к другому классу, чем исследуемый (\ (\ varvec {a} \)), то \ (\ varvec {a} \) сохраняется в \ (\ varvec {T '} \) (соседние векторы отклоняются). Этот процесс дополняется кластеризацией k -means, которая направлена ​​на поиск центроидов из \ (\ varvec {T} \), которые также добавляются к уточненному обучающему набору.

Чау и др. (2013) предложили алгоритм анализа выпукло-вогнутой оболочки для выбора \ (\ varvec {T '} \) (называемого CCHSVM).Авторы указали, что в линейно неразделимых случаях выпуклые оболочки, которые охватывают два класса в обучающей выборке, будут перекрываться, поэтому необходимо «сжимать» выпуклые оболочки (CH), чтобы избежать перекрытия. В предложенном алгоритме CH, генерируемый для каждого класса независимо, не модифицируется, однако вогнутая оболочка используется для извлечения векторов, которые наиболее близки к внешней границе CH (все векторы лежат на одной стороне края CH). Поскольку «близость» к CH может варьироваться в зависимости от разных векторов \ (\ varvec {T} \), авторы ищут k ближайших точек для края, определенного с использованием двух соседних опорных точек на CH.Стоит отметить, что различные значения k могут повлиять на форму окончательного выпукло-вогнутого корпуса (Lopez-Chau et al. 2012). Кроме того, набор точек CH является подмножеством выпукло-вогнутой оболочки, что означает, что алгоритм будет хорошо работать в линейно разделимых случаях. Авторы отметили, что метод будет хорошо работать для равномерно распределенных данных. Распределение обычно заранее не известно, поэтому они выполняют предварительную обработку \ (\ varvec {T} \), в которой \ (\ varvec {T} \) разбивается на разделы с использованием кластеризации на основе сетки.В случаях с более высокой размерностью для уменьшения количества измерений используется анализ главных компонентов (PCA). Затем выпукло-вогнутый анализ применяется к разделам данных, и граничные выпукло-вогнутые векторы включаются в \ (\ varvec {T '} \). Пример представлен на рис. 6.

Рис. 6

Пример выделения векторов \ (\ varvec {T} \) в уточненное множество: - одноклассный кластер векторов , b выпуклый оболочка, определенная для этого кластера, c вогнутая оболочка, определенная для этого кластера для данного значения k , d , векторы, которые отклоняются из \ (\ varvec {T '} \), отображаются серым цветом

Анализ выпуклых оболочек применялся во многих других алгоритмах выбора уточненных обучающих наборов (также для e.g., искусственные нейронные сети) (Wang et al. 2007). Эти подходы включают интересный анализ КГ, используемых для обучения онлайн-классификаторам (Хосравани и др., 2013; Ван и др., 2013a). В этих методах SVM обновляются динамически, когда в систему поступают новые векторы (на основе образцов скелета, являющихся вершинами выпуклых оболочек, извлеченных либо в автономном, либо в оперативном режиме, когда появляются новые векторы). Авторы указали, что алгоритм может быть неприменим в случае зашумленных наборов данных, и они предлагают включить методы подавления шума перед автономным выбором векторов \ (\ varvec {T '} \) (удаление зашумленных векторов в онлайн шаг обновления все еще требует исследования).

В недавнем алгоритме сокращения избыточных данных Shen et al. (2016) предложили удалить ненужные векторы обучающей выборки с помощью анализа границ кластеров, дополненного исследованием других межкластерных отношений. Для каждого кластера ( k - означает, что кластеризация используется для кластеризации всего \ (\ varvec {T} \)), рассчитывается набор плотности расстояния (плотность расстояния подсчитывает количество векторов, которые попадают в круг с центром в центроид кластера и радиус, равный расстоянию между центроидом и заданным вектором \ (\ varvec {T} \)).Предполагается, что векторы, расположенные около центроида, являются «плотными», тогда как векторы, расположенные далеко от центроида, являются разреженными. Наконец, дискриминантный анализ Фишера используется для определения границы между плотной и разреженной частями каждого кластера (Макрис и др., 2011) - только разреженные векторы включаются в \ (\ varvec {T '} \). Удаление векторов внутреннего кластера показано на рис. 7.

Рис. 7

Удаление ненужных векторов обучающего набора из одноклассового кластера - b отклоненные векторы аннотированы серым цветом

Дополнительный метод, представленный Шеном и др.(2016) касается удаления избыточных кластеров. Первоначальные кластеры, полученные с использованием k -средств кластеризации, в дальнейшем делятся на одноклассовые и гетерогенные кластеры. Последние затем разбиваются на подкластеры, чтобы выделить внутренние кластеры одного класса. Авторы указывают, что SV будут производиться из разнородных кластеров с большей вероятностью, и некоторые векторы \ (\ varvec {T} \) могут быть безопасно удалены из кластеров одного класса. Избыточные одноклассовые кластеры удаляются с использованием алгоритма максимального-минимального кластерного расстояния, а векторы, принадлежащие этим кластерам, отбрасываются из \ (\ varvec {T '} \).

Поскольку методы кластеризации могут занимать довольно много времени, появились подходы, в которых используются различные параллельные архитектуры (например, графические процессоры), чтобы ускорить процесс выбора \ (\ varvec {T '} \) (Yuan et al. 2015), и они были применены к реальным задачам. Еще одна важная проблема этих методов, которую необходимо решить, - это правильный выбор их ключевых параметров, которые могут легко повлиять на уточненные обучающие наборы. Наконец, во многих случаях все еще необходимо анализировать всю \ (\ varvec {T} \) для извлечения полезной информации.

Некластеризованные методы

Помимо методов, основанных на кластеризации, существует ряд подходов, которые используют геометрическую информацию об обучающем наборе без группировки данных. Абэ и Иноуэ (2001) оценивают, какие векторы \ (\ varvec {T} \) расположены рядом с границей решения SVM, используя классификатор на основе расстояния Махаланобиса. Этот подход особенно подходит для полиномиальных ядерных функций, поскольку границы решения выражаются полиномами, когда применяется расстояние Махаланобиса (которое инвариантно для линейных преобразований входных переменных).Сначала находятся центры и ковариационные матрицы для всех векторов \ (\ varvec {T} \) (для обоих классов независимо). Затем для каждого вектора вычисляется относительная разность расстояний (\ (r_ \ mathrm {MD} \)). Для вектора положительного класса это становится

$$ \ begin {выравнивание} r_ \ mathrm {MD} (\ varvec {a}) = \ frac {\ mathrm {MD} _ {-} (\ varvec {a} ) - \ mathrm {MD} _ {+} (\ varvec {a})} {\ mathrm {MD} _ {+} (\ varvec {a})} \ le \ eta _ \ mathrm {MD}, \ end {выровнено} $$

(35)

где \ (\ mathrm {MD} _ {+} (\ varvec {a}) \) обозначает расстояние Махаланобиса между \ (\ varvec {a} \) и средним вектором положительного класса, \ (\ mathrm { MD} _ {-} (\ varvec {a}) \) - это расстояние Махаланобиса между \ (\ varvec {a} \) и вектором среднего отрицательного класса, а \ (\ eta _ \ mathrm {MD} \) , где \ (\ eta _ \ mathrm {MD}> 0 \) - параметр, контролирующий «близость» к границе решения.Если значение \ (r_ \ mathrm {MD} (\ varvec {a}) \) отрицательное, то \ (\ varvec {a} \) неправильно классифицировано и, скорее всего, находится рядом с гиперплоскостью решения SVM, поэтому следует быть включенным в усовершенствованный обучающий набор. Все векторы \ (\ varvec {T} \) окончательно сортируются в соответствии с их значениями \ (r_ \ mathrm {MD} \), а \ (t '_ \ mathrm {MD} \) векторы с наименьшими значениями выбираются для form \ (\ varvec {T '} \) (\ (t' _ \ mathrm {MD} / 2 \) поэтому извлекаются для каждого класса, чтобы избежать смещения \ (\ varvec {T '} \) с векторами одного класса ).\ mathrm {\ mathcal {D}} \), \ (\ delta _ \ beta (\ varvec {a}, \ varvec {a} ') \) - расстояние между \ (\ varvec {a} \) и \ (\ varvec {a} '\) и \ (B_ \ beta (\ varvec {a}, r_ \ beta) \) будет окружностью с центром в \ (\ varvec {a} \) и радиусом \ (r_ \ бета \). Окрестность \ (\ mathcal {N} _ {(\ varvec {a}, \ varvec {a} ')} (\ beta) \) затем определяется для любого \ (\ beta \), где \ (1 \ le \ beta \ le \ infty \), как пересечение двух сфер:

$$ \ begin {align} \ mathcal {N} _ {(\ varvec {a}, \ varvec {a} ')} (\ beta ) = B_1 \ cap B_2, \ end {align} $$

(36)

, где

$$ \ begin {align} B_1 = B ((1- \ beta / 2) \ cdot \ varvec {a} + (\ beta / 2) \ cdot \ varvec {a} ', (\ beta / 2) \ cdot \ delta _ \ beta (\ varvec {a}, \ varvec {a} ')) \ end {align} $$

(37)

и

$$ \ begin {выровнены} B_2 = B ((1- \ beta / 2) \ cdot \ varvec {a} '+ (\ beta / 2) \ cdot \ varvec {a}, (\ beta / 2) \ cdot \ delta _ \ beta (\ varvec {a}, \ varvec {a} ')).\ end {align} $$

(38)

\ (\ beta \) - скелет \ (V _ {\ beta} \) - это граф окрестностей со следующим набором ребер:

$$ \ begin {align} \ langle \ varvec {a}, \ varvec {a} '\ rangle \ in E \ end {align} $$

(39)

тогда и только тогда, когда

$$ \ begin {align} \ mathcal {N} _ {(\ varvec {a}, \ varvec {a} ')} \ cap V _ {\ beta} = \ emptyset. \ end {align} $$

(40)

Это означает, что две точки \ (\ varvec {a} \) и \ (\ varvec {a} '\) соединены ребром тогда и только тогда, когда в множестве нет точек \ (V _ {\ beta} \ setminus \ left \ {\ varvec {a}, \ varvec {a} '\ right \} \), которые принадлежат окрестности \ (\ mathcal {N} _ {(\ varvec {a}, \ varvec {a}) ')} (\ beta) \) [как определено в формуле.(36)]. Чжан и Кинг (2002) утверждают, что различные графы близости (например, графы Габриэля) предоставляют геометрическую информацию об обучающем наборе и могут эффективно использоваться для поиска границы принятия решения. Следовательно, алгоритм \ (\ beta \) - скелета может применяться для определения местоположения потенциальных SV и уменьшения размера обучающей выборки. Стоит отметить, что как граф Габриэля, так и граф относительных окрестностей могут быть описаны с помощью алгоритма \ (\ beta \) - скелета с соответствующей настройкой параметров (\ (\ beta = 1 \) и \ (\ beta = 2 \), соответственно. ).Также авторы подчеркнули свойство монотонности этого параметризованного семейства графов (относительно параметра \ (\ beta \)): \ (V _ {\ beta _1} \ subset V _ {\ beta _2} \), если \ ( \ beta _1> \ beta _2 \). Хотя различные классы графиков могут быть получены путем обновления параметра \ (\ beta \) (например, для разных \ (\ beta \), \ (1 \ le \ beta \ le 2 \), будут сгенерированы разные правила ближайшего соседа ), неясно, как настроить \ (\ beta \) для нового набора данных (авторы использовали методы проб и ошибок в своем исследовании).Дополнительные сведения об алгоритмах \ (\ beta \) - скелета см. В статье Ковалука и Маевской (2015).

Ангиулли и Асторино (2010) предложили интересную технику, которая использует правило классификации быстрой конденсации ближайших соседей (FCNN) (Angiulli 2007). В своем алгоритме (сокращенно FCNN-SVM) SVM связаны с FCNN - в отличие от методов, основанных на кластеризации, критерии выбора вектора определяются границей решения. Правила FCNN начинаются с начального уточненного обучающего набора, состоящего из центроидов, сгенерированных для каждого класса независимо.Тогда для каждого вектора \ (\ varvec {a} \) в \ (\ varvec {T '} \) точка, принадлежащая ячейке Вороного (т. Е. Ячейке Вороного \ (\ varvec {a} \), является набор векторов \ (\ varvec {T} \), которые расположены ближе к \ (\ varvec {a} \) по сравнению с любым другим вектором в текущем \ (\ varvec {T '} \)) \ (\ varvec {a} \), но помеченный меткой противоположного класса, включен в уточненный набор. Алгоритм продолжается до тех пор, пока не останется больше векторов из \ (\ varvec {T} \), добавляемых к \ (\ varvec {T '} \). Хотя алгоритм довольно прост, он оказался эффективным и позволяет получать высококачественные уточненные обучающие наборы.

Методы анализа соседства

Были предприняты значительные исследовательские усилия, чтобы предложить методы, которые используют статистические свойства векторов обучающего набора (или их окрестностей) в поисках высококачественных уточненных обучающих наборов. Шин и Чо (2002) предложили алгоритм выбора паттернов на основе k -ближайших соседей ( k -NN), который направлен на выбор правильно помеченных паттернов вблизи гиперплоскости решения SVM. Авторы ввели два понятия: близость и правильность .Векторы, которые близки к границе, вероятно, будут иметь соседей смешанного класса, и их близость может быть оценена с использованием энтропии их ближайших соседей k . Энтропия, вычисленная для вектора \ (\ varvec {a} \) для его k -ближайших соседей, равна

$$ \ begin {align} E (\ varvec {a}, k) = - \ sum _ {i \ in \ {C _ +, C _- \}} \ mathcal {P} _i \ cdot \ log {\ mathcal {P} _i}, \ end {align} $$

(41)

, где

$$ \ begin {выровнено} \ mathcal {P} _i = \ frac {k_i} {k} \ end {выровнено} $$

(42)

и \ (k_i \) обозначает количество соседних векторов, принадлежащих к классу i .Векторы с положительной близостью (\ (E> 0 \)) имеют тенденцию лежать рядом с гиперплоскостью и обрабатываются. Только правильно помеченные векторы из набора, извлеченного на предыдущем шаге, включаются в \ (\ varvec {T '} \). Правильность определяется как вероятность голосования соседних векторов k -NN. Если эта вероятность больше порога, то соответствующий вектор сохраняется в уточненном наборе.

Анализ k -NN может потребовать значительных вычислительных ресурсов.Те же авторы улучшили эту технику, чтобы ускорить вычисления (Шин и Чо, 2003). Усовершенствованный алгоритм основан на простом наблюдении, что соседи вектора, расположенного рядом с гиперплоскостью, также находятся в ее окрестностях. Это наблюдение было использовано для уменьшения пространства поиска - значительное количество векторов \ (\ varvec {T} \) может быть сокращено после того, как будут найдены некоторые из векторов, расположенных рядом с гиперплоскостью. Значение k заметно влияет на эффективность этой техники, поэтому его следует тщательно настраивать (Shin and Cho 2007).

Guo et al. (2010) использовали ансамблевые классификаторы в своем алгоритме выбора обучающей выборки. Используя стандартное определение поля (Schapire et al. 1998) для двоичной классификации, запас (\ (\ phi _M \)) вектора положительного класса \ (\ varvec {a} \) задается как

$$ \ begin {align} \ phi _M (\ varvec {a}) = \ frac {v _ {\ mathcal {C} _ {+}} - v _ {\ mathcal {C} _ {-}}} {v _ {\ mathcal {C} _ {+}} + v _ {\ mathcal {C} _ {-}}}, \ end {align} $$

(43)

где \ (v _ {\ mathcal {C} _ {+}} \) обозначает количество голосов (базовых классификаторов) за истинный класс \ (\ mathcal {C} _ {+} \), \ ( v _ {\ mathcal {C} _ {-}} \) - количество голосов для противоположного класса, а \ (- 1 \ le \ phi _M (\ varvec {a}) \ le 1 \).Если \ (\ phi _M (\ varvec {a}) \) положительный, это означает, что \ (\ varvec {a} \) был правильно классифицирован (в противном случае он помечен неправильным классом). Кроме того, большое значение \ (\ phi _M (\ varvec {a}) \) указывает, что большинство базовых классификаторов правильно классифицировали этот вектор, поэтому он, скорее всего, находится в центре положительного распределения классов (и возможно, окруженный векторами того же класса). С другой стороны, если значение \ (\ phi _M (\ varvec {a}) \) сильно отрицательно, то \ (\ varvec {a} \), вероятно, является выбросом (или вектором с шумом).Наконец, если \ (\ phi _M (\ varvec {a}) \ приблизительно 0 \), то \ (\ varvec {a} \) располагается рядом с границей принятия решения, поскольку аналогичное количество базовых классификаторов классифицирует этот вектор на два противоположные классы. Guo et al. изменил исходную концепцию полей и представил новую, в которой информация о правильном классе образца \ (\ varvec {a} \) опущена:

$$ \ begin {align} \ phi _M '(\ varvec { a}) = \ frac {v_ {C_1} -v_ {C_2}} {v_ {C_1} + v_ {C_2}}, \ end {align} $$

(44)

где \ (C_1 \) - класс, за который проголосовали больше (не обязательно правильный).Следовательно, \ (0 \ le \ phi _M '(\ varvec {a}) \ le 1 \), а меньшие значения \ (\ phi _M' (\ varvec {a}) \) указывают, что вектор близок в гиперплоскость. На основе этого авторы строят классификатор ансамбля со всеми векторами \ (\ varvec {T} \), вычисляют запас каждого вектора, сортируют их по значениям полей и выбирают векторы с наименьшими значениями \ (\ phi _M '( \ varvec {a}) \) в качестве кандидатов в SV для формирования усовершенствованной обучающей выборки. Базовыми классификаторами были деревья классификации и регрессии (Loh 2011) (для создания ансамбля использовалась упаковка).Этот подход подходит также для несбалансированных наборов данных.

Простой, но эффективный анализ окрестностей каждого вектора \ (\ varvec {T} \) был предложен Ван и др. (2005). Для каждого обучающего вектора определяется самая большая сфера, которая содержит только векторы одного класса, и проверяется количество векторов, охватываемых этой сферой (\ (N _ {\ varvec {a}} \) для каждого \ (\ varvec { а} \)). Затем все векторы \ (\ varvec {T} \) сортируются по возрастанию в соответствии со значениями \ (N _ {\ varvec {a}} \) - векторами \ (t '/ 2 \) с наименьшими \ (N _ {\) varvec {a}} \) (для каждого класса) добавляются к уточненному набору, поскольку векторы, окруженные векторами того же класса, скорее всего, не будут SV и могут быть безопасно удалены из \ (\ varvec {T '} \).Таким образом, отклоненные векторы \ (\ varvec {T} \) характеризуются большими значениями \ (N _ {\ varvec {a}} \). Этот подход немного напоминает методы, основанные на MEB.

В недавней статье Гуо и Букир (2015) расширили свой алгоритм, основанный на маржах ансамбля - они указали, что классические деревья мешков неэффективны в случае больших обучающих наборов и большой размерности входных данных. Они предложили использовать более мощные методы ансамбля, включая случайные леса и очень небольшой ансамбль, известный как выбор экземпляра с малым голосованием (SVIS).В SVIS авторы уменьшили размер классифицирующего комитета. Классификаторы ансамбля использовались в других алгоритмах для решения реальных проблем, например, для выбора уточненных обучающих наборов из биомедицинских данных (Oh et al. 2011).

Ли (2011) предложил метод выбора обучающих наборов для одноклассовых SVM, который может быть адаптирован для двухклассовых SVM. В этом алгоритме векторы, принадлежащие одному классу кластера, содержатся на поверхности - эта поверхность может состоять из выпуклой и вогнутой формы, и она настолько «плотная», что проходит через все крайние точки данных кластера.Пример кластера визуализирован на рис. 8. В зависимости от кривизны формы все соседние векторы крайних векторов будут расположены на одной стороне касательной плоскости (отображаемой как пунктирная линия для крайних точек \ (P_1 \ ) и \ (P_2 \) на рис. 8), либо большинство соседей будут расположены по одну сторону от этой плоскости. Авторы предложили алгоритм аппроксимации, который анализирует соседние векторы заданного (скажем, \ (\ varvec {a} \)) в поисках вектора нормали касательной плоскости в \ (\ varvec {a} \).Когда все крайние векторы найдены, они должны выжить в уточненном наборе.

Рис. 8

Одноклассовый кластер, содержащийся в поверхности, построенной с выпуклой и вогнутой формами (a) и b две касательные плоскости в точках \ (P_1 \) и \ (P_2 \). Крайние векторы отображаются черным цветом

Ли и Магуайр (2011) предложили метод выбора критических шаблонов из входного набора данных, который сочетает в себе различные методы. Сначала создается поверхность, которая проходит через все крайние точки и охватывает векторы одного класса, а затем гиперплоскость располагается по касательной к этой поверхности.Положение векторов будет зависеть от кривизны поверхности (если она выпуклая, то все векторы появятся на плоскости одинакового размера). Чтобы справиться с перекрывающимися шаблонами во входном пространстве, авторы усовершенствовали алгоритм, добавив средство, которое устраняет перекрытие классов в наборе. Эта стратегия основана на байесовской апостериорной вероятности вектора \ (\ varvec {a} \), принадлежащего классу \ (\ mathcal {C} \), обозначенному как \ (\ mathcal {P} (\ mathcal {C} , \ varvec {a}) \). Для наборов с двумя классами как \ (\ mathcal {P} (\ mathcal {C} _ {+}, \ varvec {a}) \), так и \ (\ mathcal {P} (\ mathcal {C} _ {- }, \ varvec {a}) \) оцениваются.Если большая вероятность получена для класса, к которому \ (\ varvec {a} \) не принадлежит, то этот вектор удаляется из обучающей выборки. Наконец, любые повторяющиеся шаблоны из \ (\ varvec {T} \) удаляются из набора данных во время предварительной обработки. Авторы показали, что их алгоритм конкурирует с четырьмя современными методами и применим к другим классификаторам.

В недавней статье Cervantes et al. (2015) включили индукционное дерево, чтобы уменьшить размер обучающих наборов SVM.Основная идея предлагаемого метода состоит в том, чтобы обучить SVM с использованием значительно меньших уточненных обучающих наборов, а затем пометить векторы из \ (\ varvec {T} \) как те, которые находятся близко или далеко от гиперплоскости принятия решения. Дерево решений используется для идентификации векторов, которые имеют характеристики, аналогичные характеристикам, аннотированным как SV. Первоначальный выбор небольшого подмножества \ (\ varvec {T} \) выполняется с помощью очень простой эвристики, в которой исследуется уровень дисбаланса набора данных. Авторы классифицируют входящий набор данных (на основе двух предопределенных пороговых значений, \ (\ tau _ {u} = 0.1 \) и \ (\ tau _ {b} = 0,25 \), а коэффициент дисбаланса \ (\ mathcal {I} \) набора данных, заданный как \ (\ mathcal {I} = \ frac {\ min \ left \ {t _ {+}, t _ {-} \ right \}} {t} \), где \ (t _ {+} \) и \ (t _ {-} \) обозначают количество векторов из каждого класса в \ (\ varvec {T} \)) к одному из следующих классов: (i) сбалансированный, (ii) слегка несбалансированный (если \ (\ tau _ {b} \ le \ mathcal {I} \ le 0.5 \) ), (iii) умеренно несбалансированный (\ (\ tau _ {u} \ le \ mathcal {I} <\ tau _ {b} \)) или (iv) сильно несбалансированный (\ (\ mathcal {I} <\ тау _ {и} \)).Если набор данных сбалансирован, то исходное подмножество извлекается с использованием случайной выборки. В противном случае, если набор данных слегка или умеренно несбалансирован, применяется обратная вероятность, пропорциональная мощности набора данных (например, если \ (80 \% \) векторов происходят из отрицательного класса, следовательно, \ (\ mathcal {I} = 0,2 \), то случайная выборка рисует \ (80 \% \) векторов положительного класса). Если набор данных сильно несбалансирован, то все векторы из менее многочисленного класса выживают в \ (\ varvec {T '} \). На основе гиперплоскости решений, полученной с помощью \ (\ varvec {T '} \), индуцируется дерево решений для моделирования распределения SV.Это дерево используется для извлечения тех векторов, которые не были аннотированы как SV, но следуют аналогичному распределению - они включены в \ (\ varvec {T '} \).

He et al. (2011) представили основанную на соседстве модель грубого множества (FARNeM) для поиска граничных векторов в \ (\ varvec {T} \). Эта модель используется для разделения векторов на три области: (i) положительная область, (ii) шумная область и (iii) граничная область. Кроме того, все функции входных данных разделены на: (i) сильно релевантные функции, (ii) слабо релевантные и незаменимые функции, (iii) слабо релевантные и избыточные функции и (iv) нерелевантные функции.Авторы находят пространство признаков на основе этих групп признаков, а затем ищут важные векторы \ (\ varvec {T} \), которые следует добавить в \ (\ varvec {T '} \). Целью алгоритма выбора характеристик является получение минимального количества атрибутов, которые характеризуют входные данные так же хорошо, как и все атрибуты, таким образом, он постепенно увеличивает подмножество атрибутов до тех пор, пока зависимость не перестанет увеличиваться. FARNeM приступает к анализу векторов обучающего набора, чтобы различать SV-кандидатов (векторы, расположенные в граничной области, являются вероятными SV), бесполезные векторы и зашумленные на основе модели приблизительного набора окрестностей.Авторы используют два важных порога, которые влияют на производительность FARNeM - их следует настраивать с осторожностью, поскольку их неправильный выбор может довольно легко поставить под угрозу производительность алгоритма.

Эволюционные методы

Хотя эволюционные алгоритмы (ЭА) оказались очень эффективными в решении широкого круга задач распознавания образов и оптимизации (Pietruszkiewicz and Imada 2013; Li et al. 2007; Wrona and Pawełczyk 2013; Acampora et al.2015) ; Nalepa et al. 2015a), они не были тщательно изучены для выбора усовершенствованных обучающих наборов SVM (Kawulok 2007).Нишида и Курита (2008) предложили гибридный алгоритм (RANSAC – SVM), который объединяет случайную выборку, консенсусный подход (Fischler and Bolles, 1981) и простой эволюционный метод получения \ (\ varvec {T '} \) ’s. В их подходе сначала случайным образом рисуется несколько усовершенствованных обучающих наборов небольшого размера. Затем - на основе оценок классификации SVM, изученных с использованием соответствующих уточненных наборов, - определяется лучший \ (\ varvec {T '} \) (посредством наилучшего консенсуса). Кроме того, авторы использовали простой ГА с многоточечным кроссовером для дальнейшего улучшения уточненных наборов (пары этих уточненных наборов пересекаются, чтобы сформировать дочерние решения, которые наследуют случайные векторы обучающего набора от обоих родителей).Вся процедура (включая случайный выбор обучающих наборов SVM и их эволюцию) повторяется несколько раз, поэтому обрабатываются многочисленные потенциально некоррелированные совокупности.

В генетическом алгоритме (GASVM), предложенном Кавулоком и Налепой (2012), популяция людей (хромосом), представляющая усовершенствованные обучающие наборы заданного размера, эволюционирует во времени. Эта эволюция включает стандартные генетические операторы - отбор, кроссовер и мутацию. Пригодность каждого человека - это площадь под кривой рабочих характеристик приемника (или точность классификации), полученная для \ (\ varvec {T} \).Хотя этот алгоритм оказался очень эффективным и превзошел методы случайной выборки, было неясно, как выбрать размер людей (который нельзя было изменить позже). Эта проблема была решена в адаптивном генетическом алгоритме (AGA), предложенном теми же авторами (Nalepa and Kawulok 2014a) - размер особей, а также размер популяции и схема отбора были адаптированы на лету, чтобы реагировать на эволюцию. прогрессировать как можно лучше. Этой адаптацией управлял набор параметров априори .Следовательно, неправильно настроенные значения параметров могут легко поставить под угрозу поиск (например, использование более мелких уточненных наборов и изучение более крупных могло быть несбалансированным). Динамически адаптивный генетический алгоритм (DAGA) (Kawulok and Nalepa 2014a) представил схему адаптации, которая может обновляться в процессе эволюции на основе характеристик лучших особей (т.е. ожидаемого соотношения SV в уточненных наборах). Ожидаемое соотношение необходимо определить заранее, что нетривиально.

Меметические алгоритмы (MA) объединяют советники с процедурами уточнения, чтобы улучшить уже найденные решения. Они могут использовать знания, полученные в ходе эволюции или извлеченные заранее. Такие методы оказались чрезвычайно эффективными при решении множества сложных проблем (Nalepa and Blocho, 2016). Налепа и Кавулок (2014b) предложили первую МА (названную MASVM) для выбора уточненных обучающих наборов SVM. Пул важных векторов (которые были выбраны в качестве SV в ходе эволюции) поддерживается и используется для обучения населения, а также для введения супериндивидуумов - уточненных наборов, состоящих только из SV.2 \) MA), Налепа и Кавулок (2016a, b) ввели этап предварительной обработки, на котором геометрия \ (\ varvec {T} \) анализируется в поисках потенциально ценных векторов (до эволюции). Этот набор из векторов-кандидатов используется не только для создания начальной популяции (он помогает генерировать более качественные уточненные наборы, которые позже претерпевают эволюцию), но также для компенсации дочерних элементов (если они содержат меньше векторов, чем ожидалось - на рис. 9 , представлен процесс создания дочернего элемента для пары хромосом \ ((p_a, p_b) \), представляющей уточненные наборы), и создания новых хромосом во время выполнения (для разнообразия поиска).2 \) МА. Эта цифра была вдохновлена ​​Налепой и Кавулоком (2016a)

Другие работы над советниками для этой задачи были недавно опубликованы. Fernandes et al. (2015) применили многоцелевой эволюционный метод для разработки сбалансированных уточненных обучающих наборов, извлеченных из несбалансированных наборов данных. Целью было разработать разнообразные и хорошо работающие классификаторы и объединить их в ансамбль классификаторов. Эксперименты, проведенные для нескольких наборов тестов, показали, что эволюционный подход может превзойти другие современные методы работы с большими и несбалансированными наборами данных.

Пигетти и др. (2015) усовершенствовали генетическую эволюцию с помощью хеширования, чувствительного к локальности (чтобы найти ближайший вектор в \ (\ varvec {T} \) для любого сгенерированного вектора во время оптимизации) (Gorisse et al. 2010), и использовали его для решения проблем с множеством классификационные задачи (использовалась стратегия «один против всех»). Хотя подход многообещающий, неясно, когда остановить оптимизацию для мультиклассовых задач (авторы прекратили эволюцию после того, как были извлечены 60 векторов из каждой категории).

Verbiest et al. (2016) недавно исследовали эффективность различных эволюционных методов для выбора обучающих наборов SVM: (i) стандартный генетический алгоритм, (ii) адаптивный генетический алгоритм, который динамически обновляет порог кроссовера [пересекаться могут только заметно разные родители ( Eshelman 1991)] и (iii) генетический алгоритм устойчивого состояния [два родителя отбираются для создания потомства (Cano et al. 2003)]. Интересно, что соответствие включало не только точность классификации SVM-классификатора, но и коэффициент сокращения, показывающий, насколько был уменьшен ввод \ (\ varvec {T} \).Эти методы упаковки изначально использовались для классификации k -NN, и обширные экспериментальные исследования ясно показали, что они могут быть легко адаптированы и для SVM.

В своей недавней статье Кавулок и Налепа (2015) показали, что развивающиеся обучающие векторы и метки могут быть эффективно использованы для управления обучающими SVM из слабо помеченных обучающих наборов. Согласно их меметическому подходу, лучшим человеком в популяции является эксперт , и он используется в операции обучения .При необходимости обучающая выборка переименовывается, а остальные индивидуумы уточняются (заменяются векторы, изменившие метку во время обучения). Несмотря на то, что алгоритм работал очень хорошо для наборов данных с неправильной маркировкой, его производительность ухудшалась для правильно маркированных \ (\ varvec {T} \) 's - этот вопрос требует дальнейшего изучения.

Интересный альтернативный генетический алгоритм (сокращенно ALGA) для оптимизации модели SVM наряду с обучающими наборами SVM был предложен Kawulok et al.(2017). Авторы заметили, что разные модели SVM (то есть функции ядра и их значения гиперпараметров) могут быть оптимальными для разных обучающих наборов. В ALGA две независимые популяции (одна представляет усовершенствованные обучающие наборы, а другая - модели SVM) поочередно развиваются для решения двух задач оптимизации, имеющих общую функцию приспособленности (точность классификации по проверочному набору, полученному с использованием SVM, обученного с наилучшим усовершенствованным обучением. набор и функция ядра). Чередующийся процесс продолжается до тех пор, пока хотя бы на одной из этих двух последующих фаз оптимизации удается улучшить среднюю приспособленность популяции.Эксперименты, проведенные как для искусственно созданных наборов данных, так и для эталонных наборов данных, показали, что ALGA может эффективно выбирать обучающий набор SVM без необходимости предварительно настраивать гиперпараметры SVM. Хотя авторы сосредоточились на ядре радиальной базисной функции (RBF), этот метод можно легко адаптировать к любой другой функции ядра. Интересным направлением исследований могло бы стать усовершенствование ALGA с помощью дополнительного шага по выбору функций для многомерных наборов данных.

Активные методы обучения

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

Метод активного обучения для выбора уточненных множеств был предложен Шоном и Коном (2000) - они использовали вычислительно эффективную эвристику для маркировки векторов, лежащих вблизи гиперплоскости решения SVM.Авторы используют подход выборочной выборки (являющийся формой активного обучения), при котором учащимся предоставляется большой немаркированный набор данных и предоставляется возможность самим маркировать эти векторы (маркировка каждого вектора «стоит» некоторой искусственной платы. ). Учащиеся пытаются свести к минимуму ошибки в данных, которые появятся в системе в будущем. В эвристическом алгоритме, предложенном Шоном и Коном (2000), одним из критериев активного обучения является поиск векторов, ортогональных пространству, охватываемому текущим уточненным обучающим набором.Кроме того, информация об уже известных измерениях данных увеличивается за счет сужения существующего запаса - эффективно извлекаются только те векторы, которые близки к гиперплоскости решения.

SVM, улучшенные алгоритмами активного обучения, успешно применяются во многих реальных приложениях (Тонг и Коллер, 2002). Тонг и Чанг (2001) использовали такие методы в своей системе для проведения эффективной обратной связи по релевантности Footnote 3 для поиска изображений и предложили метод активного обучения на основе пула .Пул содержит неотмеченные векторы \ (\ varvec {T} \), которые анализируются и при необходимости добавляются к \ (\ varvec {T '} \). Классификатор обучается с использованием помеченного набора (если это первый раунд обратной связи, тогда пользователя просят пометить количество случайно нарисованных векторов; в противном случае пользователь маркирует некоторые изображения пула, которые являются наиболее близкими к границе решения).

Методы случайной выборки

В методах случайной выборки для выбора уточненных обучающих наборов SVM векторы \ (\ varvec {T} \) рисуются случайным образом и - на основе дополнительной эвристики - добавляются к \ (\ varvec {T ' } \) или нет.Простота таких методов упрощает их реализацию и становится их самым большим преимуществом в практических сценариях. Кроме того, они кажутся достаточными в ряде реальных обстоятельств (когда можно оценить размер желаемых уточненных наборов), и они не зависят от мощности \ (\ varvec {T} \). Однако они могут легко неправильно вести себя для очень больших и зашумленных наборов данных, поскольку удаление неверно помеченных векторов из \ (\ varvec {T '} \) (влияющее на производительность SVM) часто занимает довольно много времени (Nalepa and Kawulok 2016a).

Простой подход к сокращению \ (t \) - это случайная выборка векторов \ (t '\) из \ (\ varvec {T} \) (Balcázar et al. 2001). В этом алгоритме выборки случайное подмножество \ (\ varvec {T} \) рисуется в соответствии с весами, присвоенными векторам обучающего набора Сноска 4 (чем выше вес, тем больше вероятность включения соответствующего вектора в \ (\ varvec {T '} \)). Затем классификатор SVM обучается с использованием этого подмножества, и \ (\ varvec {T} \) анализируется, чтобы проверить, какие векторы были правильно классифицированы с использованием полученной гиперплоскости решения.Веса тех векторов, которые были неправильно классифицированы, удваиваются, так что они с большей вероятностью будут выбраны и включены в \ (\ varvec {T '} \) в следующем цикле выборки. Если количество раундов достаточно велико, то важные векторы (мы надеемся, включая SV) будут иметь более высокие веса, чем другие векторы, и уточненный набор будет составлен из этих SV. «Оптимальный» размер \ (\ varvec {T '} \) заранее не известен, поэтому количество выбранных векторов следует определять тщательно (обычно методом проб и ошибок, требующих больших затрат времени).Это становится существенным недостатком этого алгоритма, особенно в случае очень больших наборов данных. Кроме того, подходы случайной выборки могут игнорировать важные (и полезные) отношения, которые возникают в наборе данных - если бы эти функции обучающего набора использовались во время выполнения, время сходимости таких методов могло бы быть значительно сокращено (например, только векторы, лежащие около границы векторных групп одного класса могут быть выбраны, потому что они, вероятно, будут влиять на положение гиперплоскости SVM).

Сводка методов сокращения обучающих наборов SVM

В таблице 3 приведены алгоритмы уменьшения размера обучающих наборов SVM. Они были разделены на несколько категорий в зависимости от стратегий оптимизации. Кроме того, мы сообщаем о наиболее важных характеристиках подходов, подробно обсуждаемых в предыдущих разделах. Эти функции включают:

  • Тип - указывает, является ли метод однопроходным или итеративным .В итерационных подходах начальный уточненный обучающий набор постепенно улучшается, чтобы включать лучшие векторы из \ (\ varvec {T} \). Такие методы включают в себя алгоритмы, которые (i) продолжают улучшать уточненные наборы заданного (постоянного) размера, и те, которые (ii) уменьшают или (iii) увеличивают уточненные наборы для повышения их качества.

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

  • Рандомизированный - показывает, является ли алгоритм рандомизированным или детерминированным .

  • Зависит от \ (t \) - показывает, зависит ли алгоритм от мощности \ (\ varvec {T} \). Если это так, может потребоваться анализ всего обучающего набора, что часто невозможно в очень больших реальных наборах данных. Следовательно, в практических приложениях следует отдавать предпочтение методам, не зависящим от \ (t \).

  • Данные - указывает, какие типы наборов данных использовались для проверки соответствующего алгоритма (A - искусственно созданный, B - эталонный тест, R - наборы данных из реальной жизни).

  • Максимум \ (t \) - указывает (примерно) максимальный размер набора данных, для которого метод был протестирован в указанной статье. Как упоминалось в разд. 1, термин большой набор данных довольно неоднозначен в литературе (мощность больших наборов может варьироваться от сотен до миллионов векторов \ (\ varvec {T} \)).

Таблица 1 Источники информации, используемые для создания уточненных обучающих наборов SVM

Оценка алгоритмов выбора обучающего набора SVM

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

Количественные показатели

Следующие количественные показатели широко используются в литературе для оценки эффективности новых методов выбора обучающих наборов - для каждого показателя мы указываем, следует ли его значение максимизировать (\ (\ uparrow \)) или минимизировать (\ (\ downarrow \)):

  • Производительность классификации SVM, обученной с использованием уточненного набора (\ (\ uparrow \)) Производительность классификаторов (включая SVM) оценивается на основе соотношений, полученных из числа (а) правильно классифицированных векторов положительных классов - истинно положительные (TP), (b) правильно классифицированные векторы отрицательного класса - истинно отрицательные векторы (TN), (c) неправильно классифицированные векторы отрицательного класса - ложноположительных результатов (FP), и (d) неправильно классифицированные положительные -классовые векторы - ложных отрицательных результатов (FN), полученных для тестового набора , который не использовался во время обучения (см. Таблицу 2).Использование невидимого набора данных позволяет проверить возможности обобщения классификатора.

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

    $$ \ begin {align} \ mathrm {TPR} = \ frac {\ mathrm {TP}} {\ mathrm {TP + FN}} \ end { выровнено} $$

    (45)

    , а количество ложных срабатываний:

    $$ \ begin {align} \ mathrm {FPR} = \ frac {\ mathrm {FP}} {\ mathrm {FP + TN}.} \ End {выравнивается} $$

    (46)

    TPR и FPR часто представлены в виде кривых рабочих характеристик приемника (ROC) (Fawcett 2006).Каждая точка на этой кривой - это производительность SVM для заданного порога принятия решения (Yu et al. 2015). Вычисление площади под этой кривой (AUC) сокращает кривую ROC до одного скалярного значения, представляющего производительность классификатора (чем выше значения AUC, тем лучше и \ (0 \ le \ mathrm {AUC} \ le 1 \)). Площадь под кривой ROC и точность (ACC):

    $$ \ begin {align} \ mathrm {ACC} = \ frac {\ mathrm {TP} + \ mathrm {TN}} {\ mathrm {TP } + \ mathrm {TN} + \ mathrm {FP} + \ mathrm {FN}} \ end {align} $$

    (47)

    - это наиболее широко используемые меры, используемые для количественной оценки производительности алгоритмов выбора обучающего набора (производительность классификации SVM, обученного с использованием уточненного набора, должна быть максимальной).Другие распространенные меры включают точность, отзыв и F-меру (Хосравани и др., 2013).

  • Размер уточненного обучающего набора (\ (\ downarrow \)) Основная цель алгоритмов выбора обучающего набора - минимизировать мощность обучающего набора (в идеале без снижения производительности классификации SVM). Следовательно, количество векторов в уточненных наборах, разработанных с использованием таких подходов, почти всегда исследуется.Чтобы упростить интерпретацию этого показателя для наборов данных разного размера, он очень часто представлен как коэффициент уменьшения (\ (\ mathcal {R} \)):

    $$ \ begin {align} \ mathcal {R} = \ frac {t} {t '}, \ end {align} $$

    (48)

    где \ (t '\) - мощность уточненного обучающего набора, а \ (t \) - размер исходного набора данных. Эта скорость снижения должна быть максимальной.

  • Количество опорных векторов (\ (\ downarrow \)) Как уже упоминалось, количество SV влияет (линейно) на время классификации SVM.Поэтому его следует свести к минимуму, чтобы ускорить работу обученного классификатора.

  • Процент векторов в уточненном обучающем наборе, выбранных в качестве опорных векторов (\ (\ uparrow \) Определение желаемой мощности уточненных наборов часто является критическим шагом в алгоритмах выбора обучающего набора. Такие уточненные наборы должны быть небольшими и должны включать важных векторов, которые, вероятно, будут выбраны в качестве SV во время обучения SVM.В нескольких работах исследовался процент векторов в уточненных обучающих наборах, выбранных в качестве SV (Nalepa, Kawulok, 2016a; Verbiest et al., 2016). Этот процент должен быть максимальным, чтобы количество «бесполезных» векторов в уточненном наборе было как можно меньшим. Однако эта мера может легко ввести в заблуждение - выбор всех векторов обучающего набора в качестве SV может быть признаком переобучения и отсутствия возможностей обобщения.

  • Выбор обучающего набора, время обучения SVM и классификации (\ (\ downarrow \)) Во всех современных подходах время выполнения алгоритма выбора обучающего набора должно быть минимизировано.Также необходимо минимизировать время обучения и классификации SVM (это время коррелирует с размером уточненного обучающего набора и количеством определенных SV). \ mathrm {B} \) - наилучшее (наименьшее) количество определенных SV по исследуемым алгоритмам выбора обучающего набора, а q обозначает важность первой цели (\ (0 Q извлекается для лучшего алгоритма выбора обучающего набора.

Таблица 2 Прогнозируемые и реальные условия - жирным шрифтом показана ошибочная классификация Таблица 3 Краткое изложение современных методов уменьшения мощности обучающих наборов SVM
Стандартная экспериментальная установка

В стандартной экспериментальной установке каждый новый алгоритм выбора обучающего набора сравнивается с (i) рядом существующих методов выбора и (ii) SVM, обученными с использованием всего обучающего набора (это может быть невозможно для очень больших наборов данных).Рандомизированные подходы (см. Таблицу 3) часто выполняются несколько раз (обычно не менее \ (30 \ times \)), а затем количественные результаты усредняются. Чтобы глубоко изучить возможности обобщения алгоритмов, эксперименты почти всегда выполняются в соответствии со стратегией перекрестной проверки k раз (набор данных делится на обучающий и тестовый набор k раз без каких-либо перекрытий - обучающий набор). включает \ ((k-1) \) фрагменты данных, тогда как тест устанавливает только один фрагмент; затем результаты, полученные для каждого свертка, усредняются).Эксперименты разделены на две группы:

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

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

Поскольку количество сравниваемых алгоритмов обычно велико и каждый из них может работать по-разному для разных наборов данных, выполнение соответствующих (непараметрических) статистических тестов для исследования статистической значимости полученных результатов стало стандартной процедурой в машине. поле обучения.Стандартная нулевая гипотеза, гласящая, что применение алгоритма A приводит к получению результатов того же качества, что и результаты, разработанные алгоритмом B часто проверяется двусторонними знаковыми ранговыми тестами Вилкоксона (Woolson 2007) (Shin and Cho ( 2007) использовали для этой цели тест Макнемара). В экспериментах, охватывающих несколько наборов данных, выполняется тест Фридмана, чтобы проверить, какой алгоритм превосходит другие методы с учетом всех исследованных наборов данных (Friedman 1937).

Наборы данных и практические приложения

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

  • Искусственно созданные наборы данных Векторы в искусственных наборах данных обычно создаются в соответствии с известным распределением (например, распределением Гаусса). Следовательно, основные характеристики данных известны (что не всегда достижимо в случае эталонных и реальных наборов).Кроме того, искусственно созданные наборы часто легко визуализировать. Такие наборы данных используются для понимания поведения новых алгоритмов выбора обучающих наборов (например, расположены ли векторы в уточненных наборах рядом с гиперплоскостью решения или есть ли какие-либо векторы, которые могут быть удалены из уточненных наборов, поскольку они не выбраны как SV). Несколько искусственно созданных наборов данных доступны по адресу http://sun.aei.polsl.pl/~jnalepa/SVM/ (см. Примеры наборов данных на рис.10 - белые и черные пиксели визуализируют векторы из положительного \ (\ varvec {T} _ {+} \) и отрицательного \ (\ varvec {T} _ {-} \) классов; векторы обучающего набора сгруппированы в кластеры в \ (\ alpha \) версиях этих двумерных наборов).

  • Контрольные наборы данных Такие наборы данных (с разными характеристиками) используются для сравнения производительности алгоритмов выбора обучающих наборов (контрольные наборы использовались более чем в \ (70 \% \) статей, представленных в этом обзоре).Эти наборы данных можно загрузить из следующих репозиториев:

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

  • Практические приложения и наборы данных из реальной жизни Хотя объем генерируемых данных в настоящее время неуклонно растет, а размер обучающих наборов стал реальным препятствием для использования SVM на практике, только менее \ (45 \% \) от всего исследованного обучения Алгоритмы выбора наборов были протестированы с использованием реальных наборов данных. 5 \) (рукописные цифры, принадлежащие 10 классам, см. Рис.11). Важные приложения автоматизированного анализа оцифрованного рукописного текста включают обработку банковских чеков, идентификацию почтового адреса, анализ исторических документов или биометрическую аутентификацию.

  • Обнаружение и сегментация кожи Обнаружение пикселей, представляющих кожу человека на цветных изображениях (который является предварительным этапом процесса сегментации области кожи, целью которого является определение границ областей кожи) является сложной и важной задачей распознавания образов.6 \) пикселей в сумме) - они использовали изображения из базы данных обнаружения лиц и кожи ECU, разработанной Phung et al. (2005) (см. Примеры изображений на рис. 12 - обратите внимание, что пиксели кожи демонстрируют различные характеристики цвета и интенсивности) и использовали этот набор для тестирования своих нескольких алгоритмов выбора обучающего набора SVM (Nalepa and Kawulok 2014a, b, 2016a; Kawulok and Nalepa 2014a; Налепа 2016).

  • Оценка позы руки Кавулок и Налепа (2014b) применили SVM для распознавания позы рук на основе дескрипторов контекста формы (Belongie et al.2002). В их подходе векторы различий между двумя формами рук классифицируются, чтобы определить, представляют ли они одну и ту же позу (следовательно, классовое решение является косвенным). Авторы показали, что обучающие наборы могут стать очень большими даже для относительно небольшого количества жестов (например, для n жестов, \ (\ frac {n!} {2 \ cdot (n-2)!} \) Векторов признаков получены). Чтобы сделать SVM применимыми в этом сценарии, была использована генетическая техника для выбора уточненных обучающих наборов SVM (Kawulok and Nalepa 2012).

  • Распознавание лиц Kawulok (2007) и Wang et al. (2013a) проверили свои алгоритмы выбора обучающего набора SVM в задаче обнаружения лиц - Wang et al. (2013a) использовал набор данных с почти 3500 изображениями, тогда как Kawulok (2007) использовал 1000 изображений из известной базы данных Feret, представленной Филлипсом и др. (1998). Обнаружение лиц - это задача распознавания образов, направленная на определение того, содержит ли входное изображение человеческое лицо.Алгоритмы распознавания лиц используются в системах наблюдения, взаимодействиях человека с компьютером и в развлекательных приложениях, определении характеристик походки человека, гендерной классификации и многом другом (Paul and Haque, 2013).

  • Обнаружение обманчивых выражений лица Анализ изображения лица является активной темой - новые направления исследований сосредоточены на распознавании и понимании динамики лица для обнаружения обмана, поведенческого анализа и диагностики психологических расстройств.Kawulok et al. (2016) использовали детекторы интенсивности быстрой улыбки для разработки текстурных черт лица, которые вводятся в конвейер классификации SVM для различения позированных и спонтанных выражений в видеопоследовательностях из базы данных UvA-NEMO, содержащей 1240 последовательностей, включая 643 позированных и 597 спонтанных улыбок (Dibeklioğlu et al. 2012) - см. примеры на рис. 13. Поскольку эти функции извлекаются для каждого кадра (также те, которые являются нейтральными , без каких-либо функций, раскрывающих характеристики улыбки), обучающие наборы SVM могут стать очень большими и часто содержать « бесполезные »векторы.Чтобы справиться с этими проблемами, авторы использовали свой меметический алгоритм выбора обучающего набора (Nalepa and Kawulok 2016a).

  • Поиск изображений Тонг и Чанг (2001) показали, что их алгоритм выбора обучающего набора для активного обучения SVM может успешно применяться для поиска изображений. Он выбирает наиболее информативные изображения для эффективного запроса пользователя и быстрого изучения гиперплоскости решения, которая должна разделять немаркированные изображения \ (\ varvec {T} \), чтобы удовлетворить запрос пользователя.Используя наборы данных из реальной жизни (охватывающие до 2000 изображений, собранных из Интернета), авторы доказали, что их метод превосходит другие современные подходы к поиску изображений. Такие методы поиска изображений обычно применяются в текстильной промышленности, в механизмах фильтрации обнаружения обнаженной натуры, в архивах изображений и произведений искусства и даже в медицинской диагностике (Trojacanec et al. 2009).

  • Биомедицинские приложения Выбор подходящих обучающих наборов - важная проблема в биомедицинских приложениях, так как качество и объем данных являются большими проблемами в этой области.Следующие пункты суммируют наиболее интересные биомедицинские приложения, в которых были протестированы и использовались алгоритмы выбора обучающего набора SVM.

    • Классификация РНК SVM были успешно применены для обнаружения некодирующих РНК (нкРНК) в секвенированных геномах (Узилов и др., 2006). Однако наборы данных РНК очень большие, что влияет на обучение SVM. Сервантес и др. (2008) использовали свой алгоритм выбора обучающего набора на основе кластеризации для двух наборов данных РНК (первый включал почти \ (5 \ times 10 ^ 5 \) векторов с 8 функциями, а второй - \ (2 \ times 10 ^ 3 \) ) векторов с 84 характеристиками) и показал, что он вполне конкурентоспособен с современными технологиями для таких крупномасштабных данных.5 \) векторов с 8 признаками).

    • Классификация болезней (например, лейкемия, диабет, болезнь Паркинсона, гепатит) Существует множество подходов, которые были протестированы для решения различных задач классификации болезней. В стандартном сценарии анализа медицинских изображений мощность обучающего набора не очень велика, но такие наборы данных сильно несбалансированы (обычно существует гораздо больше здоровых примеров по сравнению с патологическими ).Следовательно, неизбежно применение соответствующего подхода к выбору желаемых обучающих наборов. Ох и др. (2011) исследовали выбор тренировочного набора SVM, используя такие несбалансированные наборы для различных заболеваний (лейкемия, диабет, болезнь Паркинсона, гепатит, рак груди и сердечные заболевания). Эти наборы данных включали до 800 векторов (набор данных Diabetes ), а количество признаков достигало почти 7200 в наборе данных Leukemia .

  • Обнаружение сетевых вторжений Yu et al.6 \) векторы). Этот набор данных доступен по адресу http://kdd.ics.uci.edu/databases/kddcup99/kddcup99.html, и он использовался в качестве эталона на Третьем международном конкурсе инструментов для обнаружения и интеллектуального анализа данных, который проводился совместно с Пятая Международная конференция по открытию знаний и интеллектуальному анализу данных (KDD-99). Интересно, что тестовые данные не подчиняются тому же распределению вероятностей, что и обучающие данные (оно включает 14 конкретных типов атак, которых нет в \ (\ varvec {T} \), в которых даны 24 обучающих типа атак).Yu et al. (2003) показали, что их метод выбора обучающей выборки на основе кластеризации может легко превзойти случайную выборку в этом сценарии.

  • Классификация текста Классификация текста, являющаяся проблемой определения темы, к которой принадлежит данный текстовый документ (он может быть в одной, нескольких или ни одной категории из-за пересечения этих категорий), является важной темой исследования, которая была ускорена быстрым ростом онлайн-информации.Его приложения включают фильтрацию спама, идентификацию языка, маршрутизацию электронной почты, оценку читаемости и многое другое. Шон и Кон (2000) и Тонг и Коллер (2002) занялись этой проблемой, чтобы проверить возможности своих подходов к SVM с активным обучением. Они использовали набор данных Reuters-21578 (http://www.daviddlewis.com/resources/testcollections/reuters21578/) в конфигурации разделения данных ModApte (есть несколько предопределенных разделений обучающих тестов, предоставленных авторами этого документа). набор данных) с почти \ (1.4 \) особенности каждого) и рассмотрели 10 наиболее часто встречающихся категорий. Другой широко используемый набор данных для классификации текстов - это Newsweeder (Lang 1995), который также исследуется в этих статьях.

  • Кредитный скрининг Lyhyaoui et al. (1999) протестировали свой выбор обучающего набора SVM, используя набор данных из 690 примеров (15 функций, 2 класса), отражающих кредитоспособность клиентов.Хотя известно, что этот набор данных является зашумленным (Quinlan 1999), авторам удалось превзойти точность классификации на \ (90 \% \) с помощью своей методики, основанной на кластеризации.

Рис. 10

Примеры искусственно созданных наборов 2D-данных

Таблица 4 Сводка наиболее часто используемых наборов эталонных данных Рис.11

Пример изображений MNIST (рукописные цифры)

Фиг.12

Примеры изображений, используемых для создания набора данных Skin

Рис. 13

Примеры а, позированных и б спонтанных улыбок (выделенные кадры). Этот рисунок вдохновлен Kawulok et al. (2016)

Южная Каролина Информация для голосования

Заочное голосование доступно, если вы соответствуете любому из перечисленных ниже критериев. Последний день для запроса открепительного удостоверения - 4 дня до выборов.Бюллетени для голосования должны быть получены до 19:00 в день выборов.

Вы можете голосовать по открепительному удостоверению, если вы:

  • В отпуске или за пределами округа в день выборов

  • Член военной службы или торгового флота, а также ваш супруг (а) и иждивенцы, проживающие с вами, также имеют право на

  • По причине занятости, не может голосовать в день выборов

  • Физически инвалид

  • 65 лет и старше

  • Работа присяжным заседателем в суде штата или федеральном суде в день выборов

  • Поступил в больницу в качестве неотложного пациента в день выборов или в течение четырех дней до выборов

  • Заключен в тюрьму или следственный изолятор до вынесения постановления об аресте или расследовании

  • Сертифицированный наблюдатель, руководитель избирательного участка и окружной избирательный чиновник, работающий в день выборов

  • Учащийся, посещающий школу за пределами вашего округа проживания, или являющийся супругом или иждивенцем такого учащегося

  • Лицо, служащее в Американском Красном Кресте или в Объединенных служебных организациях, которое прикреплено к вооруженным силам за пределами вашего округа проживания и служит в них, либо супруг (а) или иждивенец такого лица

  • Государственный служащий, служащий за пределами вашего округа проживания в день выборов, или супруг (а) или иждивенец такого лица

  • Лицо, в семье которого произошли смерть или похороны в течение трех дней до выборов

  • Избиратель из-за границы

  • Лицо, оказывающее помощь больному или инвалиду

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

Чтобы запросить бюллетень для заочного голосования по почте, запросите заявление и отправьте электронное письмо, почту или факс в офис регистрации избирателей вашего округа.После этого вам будет отправлено заявление. Заполните заявление, подпишите и верните заполненное заявление в окружной офис регистрации избирателей до 17:00 на 4-й день до выборов. Вы можете вернуть заявку лично или по почте, электронной почте или факсу. После этого вам будет выслан открепительный бюллетень.

Те, кто запросил открепительный бюллетень, но в конечном итоге голосует лично: избиратель может вернуть бюллетень лично в окружную избирательную комиссию, где он будет аннулирован, а затем избиратель может проголосовать лично.Избиратель также может вернуть заполненный бюллетень лично в окружную избирательную комиссию или в дополнительные офисы. Его не нужно пересылать по почте.

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

Запросить ваш бюллетень

Классификатор векторной машины поддержки поездов (SVM) для одноклассных и двоичных классификации

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

Линейная функция оценки SVM -

где:

  • x - наблюдение (соответствующее к ряду X ).

  • Вектор β содержит коэффициенты, определяющие вектор, ортогональный к гиперплоскости (соответствующий на номер мкр. бета ). Для разделяемых данных оптимальная маржа длина равна 2 / β‖.

  • b - член смещения (соответствующий по номеру Mdl.Bias ).

Корень ф ( х ) для конкретных коэффициентов определяет гиперплоскость. Для конкретного гиперплоскость, f ( z ) - расстояние от точки z до гиперплоскости.

Алгоритм ищет максимальную длину поля, сохраняя наблюдения в положительный ( y = 1) и отрицательный ( y = –1) классы разделяются.

  • Для разделяемых классов цель состоит в том, чтобы минимизировать ‖β‖ по сравнению с β и b с учетом y j f ( x j ) ≥ 1, для всех j = 1 ,.., н . Это основная форма для разделяемых классов.

  • Для неразделимых классов алгоритм использует резервные переменные. ( ξ j ), чтобы оштрафовать цель функция для наблюдений, которые пересекают границу поля для своего класса. ξ j = 0 для наблюдений, которые не пересекают границу маржи для своего класса, в противном случае ξ j ≥ 0.

    Цель состоит в том, чтобы минимизировать 0,5‖β‖2 + C∑ξj по сравнению с β , b и ξ j субъект к yjf (xj) ≥1 − ξj и ξj≥0 для всех j = 1, .., n и для положительного ограничения скалярного блока С . Это первичная формализация неразлучных классы.

Алгоритм использует метод множителей Лагранжа для оптимизации цели, который вводит n коэффициенты α 1 ,..., α n (соответствует Mdl.Alpha ). Двойственные формализации для линейной SVM следующие: следующим образом:

  • Для разделяемых классов минимизировать

    в отношении α 1 , ..., α n , при ∑αjyj = 0, α j ≥ 0 для всех j = 1, ..., n и Каруш-Кун-Такер (KKT) условия дополнительности.(z)).

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

    Двойная формализация для нелинейной SVM -

    в отношении α 1 , ..., α n , при условии ∑αjyj = 0, 0≤αj≤C для всех j = 1, .., n и KKT условия дополнительности. G ( x k , x j ) являются элементами матрицы Грама. Результирующий функция оценки -

    Для получения дополнительных сведений см. Общие сведения о машинах опорных векторов, [1] и [3].

    Знакомство с машинами опорных векторов (SVM)

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

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

    Возможно, вы копнули немного глубже и столкнулись с такими терминами, как линейно отделимый , трюк ядра и функции ядра . Но не бойтесь! Идея, лежащая в основе алгоритма SVM, проста, и ее применение к NLP не требует большинства сложных вещей.

    В этом руководстве вы узнаете основы SVM и научитесь использовать ее для классификации текста.Наконец, вы увидите, насколько легко начать работу с инструментом без кода, таким как MonkeyLearn.


    Начните классификацию текста с помощью SVM


    Что такое машины опорных векторов?

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

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

    Как работает SVM?

    Основы машин опорных векторов и принципы их работы лучше всего понять на простом примере. Представим, что у нас есть два тега: красный и синий , и наши данные имеют две характеристики: x и y . Нам нужен классификатор, который, учитывая пару координат (x, y) , выводит, если это красный или синий .Мы наносим наши уже помеченные данные обучения на плоскость:

    Наши помеченные данные

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

    В 2D лучшая гиперплоскость - это просто линия

    Но что именно является лучшей гиперплоскостью ? Для SVM это тот, который максимизирует поля для обоих тегов.Другими словами: гиперплоскость (помните, что в данном случае это линия), расстояние до ближайшего элемента каждого тега которой является наибольшим.

    Не все гиперплоскости созданы равными

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

    Нелинейные данные

    Теперь этот пример был легким, поскольку очевидно, что данные были линейно разделимы - мы могли провести прямую линию, чтобы разделить красный и синий . К сожалению, обычно все не так просто.Взгляните на этот случай:

    Более сложный набор данных

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

    Итак, вот что мы сделаем: добавим третье измерение. До сих пор у нас было два измерения: x и y . Мы создаем новый размер z и предписываем его вычислять определенным способом, который удобен для нас: z = x² + y² (вы заметите, что это уравнение для круга).

    Это даст нам трехмерное пространство. Если взять часть этого пространства, это выглядит так:

    С другой стороны, данные теперь разделены на две линейно разделенные группы

    Что с этим может сделать SVM? Посмотрим:

    Отлично! Обратите внимание, что, поскольку сейчас мы находимся в трех измерениях, гиперплоскость - это плоскость, параллельная оси x на определенном расстоянии z (скажем, z = 1 ).

    Все, что осталось, - это отображение двух измерений:

    Вернемся к нашему исходному виду, теперь все аккуратно разделено

    И вот мы! Граница нашего решения - это окружность радиуса 1, которая разделяет оба тега с помощью SVM.Посмотрите эту трехмерную визуализацию, чтобы увидеть еще один пример того же эффекта:

    Уловка с ядром

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

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

    Это то, что мы делаем вместо этого:

    • Представьте себе новое пространство, которое мы хотим:

      z = x² + y²

    • Выясните, как выглядит точечный продукт в этом пространстве:

      a · b = xa · xb + ya · yb + za · zb

      a · b = xa · xb + ya · yb + (xa² + ya²) · (xb² + yb²)

    • Скажите SVM сделать свое дело, но с использованием нового скалярного произведения - мы называем это функцией ядра .

    Вот и все! Это трюк с ядром , который позволяет нам избежать множества дорогостоящих вычислений. Обычно ядро ​​линейное, и мы получаем линейный классификатор. Однако, используя нелинейное ядро ​​(как указано выше), мы можем получить нелинейный классификатор без преобразования данных вообще: мы меняем только скалярный продукт на то, что нам нужно, и SVM с радостью продолжит работу.

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

    Использование SVM с классификацией естественного языка

    Итак, мы можем классифицировать векторы в многомерном пространстве. Большой! Теперь мы хотим применить этот алгоритм для классификации текста, и первое, что нам нужно, это способ преобразовать кусок текста в вектор чисел, чтобы мы могли запускать с ними SVM. Другими словами, какие функции мы должны использовать для классификации текстов с помощью SVM?

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

    Этот метод сводится к подсчету того, сколько раз каждое слово встречается в тексте, и делению его на общее количество слов. Итак, в предложении «Все обезьяны - приматы, но не все приматы - обезьяны» слово обезьяны имеет частоту 2/10 = 0,2, а слово , но имеет частоту 1/10 = 0.1.

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

    Теперь, когда мы это сделали, каждый текст в нашем наборе данных представлен как вектор с тысячами (или десятками тысяч) измерений, каждое из которых представляет частоту одного из слов текста. Идеальный! Это то, что мы скармливаем SVM для обучения. Мы можем улучшить это, используя методы предварительной обработки, такие как выделение слов, удаление стоп-слов и использование n-граммов.

    Выбор функции ядра

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

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

    В нашем примере у нас было две функции. Некоторые реальные применения SVM в других областях могут использовать десятки или даже сотни функций.Между тем, классификаторы НЛП используют тысячи функций, поскольку они могут иметь до одного для каждого слова, которое появляется в обучающих данных. Это немного меняет проблему: хотя использование нелинейных ядер может быть хорошей идеей в других случаях, наличие такого количества функций в конечном итоге приведет к тому, что нелинейные ядра будут перегружать данные. Следовательно, лучше всего просто придерживаться старого доброго линейного ядра, которое на самом деле дает лучшую производительность в этих случаях.

    Собираем все вместе

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

    Учебное пособие по простому классификатору SVM

    Чтобы создать свой собственный классификатор SVM, не прибегая к векторам, ядрам и TF-IDF, вы можете использовать одну из предварительно созданных моделей классификации MonkeyLearn, чтобы сразу приступить к работе. Также легко создать свой собственный, благодаря интуитивно понятному пользовательскому интерфейсу платформы и подходу без кода.

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

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

    1. Создайте новый классификатор

    Перейдите на панель управления, нажмите «Создать модель» и выберите «Классификатор».

    2. Выберите способ классификации данных

    Мы собираемся выбрать модель «Тематическая классификация» для классификации текста по теме, аспекту или релевантности.

    3. Импортируйте данные для обучения

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

    4. Определите теги для классификатора SVM

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

    5. Пометьте данные для обучения классификатора

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

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

    Чем больше данных вы пометите, тем умнее будет ваша модель.

    6. Установите свой алгоритм на SVM

    Перейдите в настройки и убедитесь, что вы выбрали алгоритм SVM в расширенном разделе.

    7. Проверьте свой классификатор

    Теперь вы можете протестировать свой классификатор SVM, нажав «Выполнить»> «Демо». Напишите свой собственный текст и посмотрите, как ваша модель классифицирует новые данные:

    8.Интегрируйте тематический классификатор

    Вы обучили свою модель делать точные прогнозы при классификации текста. Пришло время загрузить новые данные! Есть три различных способа сделать это с помощью MonkeyLearn:

    1. Пакетная обработка: перейдите в «Выполнить»> «Пакетная обработка» и загрузите файл CSV или Excel. Классификатор проанализирует ваши данные и отправит вам новый файл с прогнозами.

    2. API: используйте MonkeyLearn API для классификации новых данных из любого места.

    3. Интеграции: подключайте повседневные приложения для автоматического импорта новых текстовых данных в ваш классификатор. Такие интеграции, как Google Sheets, Zapier и Zendesk, можно использовать, не набирая ни единой строчки кода:

    Заключительные слова

    И это основы Support Vector Machines!

    Подводя итог:

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

    С такими инструментами MLaaS, как MonkeyLearn, чрезвычайно просто реализовать SVM для классификации текста и сразу получить информацию.


    Создайте свой собственный классификатор SVM


    Есть вопросы? Запланируйте демонстрацию, и мы поможем вам начать работу.

    Экономичный SVM для несбалансированной классификации

    Последнее обновление 21 августа 2020 г.

    Алгоритм машины опорных векторов эффективен для сбалансированной классификации, но не работает с несбалансированными наборами данных.

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

    Эту модификацию SVM, которая взвешивает запас, пропорциональный важности класса, часто называют взвешенной SVM или чувствительной к стоимости SVM.

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

    После прохождения этого руководства вы будете знать:

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

    Начните свой проект с моей новой книги «Несбалансированная классификация с Python», включая пошаговые руководства и файлы исходного кода Python для всех примеров.

    Приступим.

    Как реализовать машины взвешенных опорных векторов для несбалансированной классификации
    Фотография Баса Лендерса, некоторые права защищены.

    Обзор учебного пособия

    Это руководство разделено на четыре части; их:

    1. Набор данных несбалансированной классификации
    2. SVM для несбалансированной классификации
    3. Взвешенная SVM с Scikit-Learn
    4. SVM со взвешенным поиском по сетке

    Несбалансированный набор данных классификации

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

    Мы можем использовать функцию make_classification () для определения синтетического несбалансированного двухклассового набора данных классификации. Мы сгенерируем 10 000 примеров с приблизительным соотношением меньшинства к большинству 1: 100.

    ... # определить набор данных X, y = make_classification (n_samples = 10000, n_features = 2, n_redundant = 0, n_clusters_per_class = 1, веса = [0.99], flip_y = 0, random_state = 4)

    ...

    # определить набор данных

    X, y = make_classification (n_samples = 10000, n_features = 2, n_redundant = 0,

    n_clusters_per_class = 1, weights = [0.99], flip_y = 0, random_state = 420

    917)

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

    ... # суммировать распределение классов counter = Counter (y) печать (счетчик)

    ...

    # обобщить распределение классов

    counter = Counter (y)

    print (counter)

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

    ... # точечная диаграмма примеров по метке класса для метки _ в counter.items (): row_ix = where (y == label) [0] pyplot.scatter (X [row_ix, 0], X [row_ix, 1], label = str (label)) пиплот.легенда () pyplot.show ()

    ...

    # точечная диаграмма примеров по метке класса

    для метки, _ в counter.items ():

    row_ix = where (y == label) [0]

    pyplot.scatter (X [ row_ix, 0], X [row_ix, 1], label = str (label))

    pyplot.legend ()

    pyplot.show ()

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

    # Создание и построение набора данных синтетической несбалансированной классификации из коллекций счетчик импорта из sklearn.datasets импортировать make_classification из matplotlib import pyplot из импорта numpy, где # определить набор данных X, y = make_classification (n_samples = 10000, n_features = 2, n_redundant = 0, n_clusters_per_class = 1, веса = [0.99], flip_y = 0, random_state = 4) # суммировать распределение классов counter = Counter (y) печать (счетчик) # точечная диаграмма примеров по метке класса для ярлыка _ в счетчике.Предметы(): row_ix = where (y == label) [0] pyplot.scatter (X [row_ix, 0], X [row_ix, 1], label = str (label)) pyplot.legend () pyplot.show ()

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    140002

    14

    # Сгенерировать и построить набор данных синтетической несбалансированной классификации

    из коллекции импорта Counter

    из sklearn.наборы данных import make_classification

    from matplotlib import pyplot

    from numpy import, где

    # определить набор данных

    X, y = make_classification (n_samples = 10000, n_features = 2, n_redundant = 0,

    _performance = 0,

    _кластер =

    , nights_class =

    _кластеры =

    ], flip_y = 0, random_state = 4)

    # суммировать распределение классов

    counter = Counter (y)

    print (counter)

    # точечная диаграмма примеров по метке класса

    для label, _ in counter.items ():

    row_ix = where (y == label) [0]

    pyplot.scatter (X [row_ix, 0], X [row_ix, 1], label = str (label))

    pyplot.legend ()

    pyplot.show ()

    При выполнении примера сначала создается набор данных и резюмируется распределение классов.

    Мы видим, что набор данных имеет приблизительное распределение классов 1: 100 с немногим менее 10 000 примеров в классе большинства и 100 в классе меньшинства.

    Счетчик ({0: 9900, 1: 100})

    Счетчик ({0: 9900, 1: 100})

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

    Точечная диаграмма набора данных двоичной классификации с дисбалансом классов от 1 до 100

    Затем мы можем разместить стандартную модель SVM в наборе данных.

    SVM можно определить с помощью класса SVC в библиотеке scikit-learn.

    ... # определить модель модель = SVC (гамма = 'масштаб')

    ...

    # определить модель

    модель = SVC (гамма = 'масштаб')

    Мы будем использовать повторную перекрестную проверку для оценки модели с тремя повторениями 10-кратной перекрестной проверки.Характеристики режима будут представлены с использованием средней ROC-площади под кривой (ROC AUC), усредненной по повторам и всем складкам.

    ... # определить процедуру оценки cv = RepeatedStratifiedKFold (n_splits = 10, n_repeats = 3, random_state = 1) # оценить модель scores = cross_val_score (модель, X, y, scoring = 'roc_auc', cv = cv, n_jobs = -1) # подвести итоги print ('Среднее ROC AUC:% .3f'% среднее (баллы))

    ...

    # определить процедуру оценки

    cv = RepeatedStratifiedKFold (n_splits = 10, n_repeats = 3, random_state = 1)

    # оценить модель

    scores = cross_val_score (model, X, y, scoring = 'roc_auc', cv = cv, n_jobs = -1)

    # подвести итоги производительности

    print ('Среднее ROC AUC:% .3f'% среднее (баллы))

    Собирая все вместе, ниже приведен полный пример определения и оценки стандартной модели SVM для проблемы несбалансированной классификации.

    SVM

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

    # поместите svm на несбалансированный набор данных классификации из среднего значения импорта из sklearn.datasets импортировать make_classification из sklearn.model_selection импорт cross_val_score из sklearn.model_selection import RepeatedStratifiedKFold из sklearn.svm импортировать SVC # создать набор данных X, y = make_classification (n_samples = 10000, n_features = 2, n_redundant = 0, n_clusters_per_class = 1, веса = [0.99], flip_y = 0, random_state = 4) # определить модель модель = SVC (гамма = 'масштаб') # определить процедуру оценки cv = RepeatedStratifiedKFold (n_splits = 10, n_repeats = 3, random_state = 1) # оценить модель scores = cross_val_score (модель, X, y, scoring = 'roc_auc', cv = cv, n_jobs = -1) # подвести итоги print ('Среднее ROC AUC:% .3f'% среднее (баллы))

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    140002

    14

    # поместите svm в несбалансированный набор данных классификации

    из numpy import mean

    из sklearn.наборы данных импортировать make_classification

    из sklearn.model_selection импорт cross_val_score

    из sklearn.model_selection import RepeatedStratifiedKFold

    из sklearn.svm import SVC

    # сгенерировать набор данных

    XDUsdatures, n_classFendant = 0,

    n_clusters_per_class = 1, weights = [0.99], flip_y = 0, random_state = 4)

    # определить модель

    model = SVC (gamma = 'scale')

    # определить процедуру оценки

    cv = RepeatedStratifiedKF (n_splits = 10, n_repeats = 3, random_state = 1)

    # оценить модель

    scores = cross_val_score (model, X, y, scoring = 'roc_auc', cv = cv, n_jobs = -1)

    # summarize performance

    отпечаток ('Среднее значение ROC AUC:%.3f '% среднее (баллы))

    При выполнении примера оценивается стандартная модель SVM на несбалансированном наборе данных и отображается среднее значение ROC AUC.

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

    Мы видим, что у модели есть навык, достигающий ROC AUC выше 0,5, в этом случае средний балл равен 0.804.

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

    Хотите начать работу с классификацией дисбаланса?

    Пройдите бесплатный 7-дневный ускоренный курс по электронной почте (с образцом кода).

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

    Загрузите БЕСПЛАТНЫЙ мини-курс

    SVM для несбалансированной классификации

    Машины опорных векторов, или сокращенно SVM, представляют собой эффективный алгоритм нелинейного машинного обучения.

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

    Грубо говоря, запас - это расстояние между границей классификации и ближайшей контрольной точкой обучения.

    - страницы 343-344, Прикладное прогнозное моделирование, 2013.

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

    Обычно классы не разделяются даже при преобразовании данных. Таким образом, запас смягчается, чтобы позволить некоторым точкам появляться не на той стороне границы решения. Это смягчение маржи контролируется гиперпараметром регуляризации, называемым параметром soft-margin, , лямбда, или заглавная буква C (« C »).

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

    - стр. 125, Обучение на несбалансированных наборах данных, 2018.

    Значение C указывает на жесткую границу и отсутствие допуска для нарушений поля. Небольшие положительные значения допускают некоторое нарушение, тогда как большие целочисленные значения, такие как 1, 10 и 100, допускают гораздо более мягкий запас.

    … [C] определяет количество и серьезность нарушений допустимого предела (и гиперплоскости). Мы можем думать о C как о бюджете суммы, на которую маржа может быть нарушена n наблюдениями.

    - страница 347, Введение в статистическое обучение: с приложениями в R, 2013.

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

    Хотя SVM часто дают эффективные решения для сбалансированных наборов данных, они чувствительны к дисбалансу в наборах данных и создают неоптимальные модели.

    - стр. 86, Несбалансированное обучение: основы, алгоритмы и приложения, 2013.

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

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

    … [] алгоритм обучения будет отдавать предпочтение классу большинства, поскольку концентрация на нем приведет к лучшему компромиссу между ошибкой классификации и максимизацией маржи. Это произойдет за счет класса меньшинства, особенно при высоком коэффициенте дисбаланса, поскольку тогда игнорирование класса меньшинства приведет к лучшим результатам оптимизации.

    - стр. 126, Обучение на несбалансированных наборах данных, 2018.

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

    Чтобы учесть эти факторы в SVM, была предложена взвешенная модификация на уровне экземпляра. […] Значения весов могут быть заданы в зависимости от соотношения дисбаланса между классами или факторов сложности отдельных экземпляров.

    - стр.130, Уроки несбалансированных наборов данных, 2018.

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

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

    • Малый вес : Меньшее значение C , больший штраф за неправильно классифицированные примеры.
    • Большой вес : большее значение C , меньший штраф за неправильно классифицированные примеры.

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

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

    - стр. 89, Несбалансированное обучение: основы, алгоритмы и приложения, 2013.

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

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

    - Машина с взвешенными опорными векторами для классификации данных, 2007.

    Взвешенная SVM с Scikit-Learn

    Библиотека машинного обучения Python scikit-learn предоставляет реализацию алгоритма SVM, который поддерживает взвешивание классов.

    Классы LinearSVC и SVC предоставляют аргумент class_weight , который можно указать как гиперпараметр модели. class_weight - это словарь, который определяет каждую метку класса (например, 0 и 1) и вес, применяемый к значению C при вычислении мягкого запаса.

    Например, весовой коэффициент 1 к 1 для каждого класса 0 и 1 можно определить следующим образом:

    ... # определить модель веса = {0: 1.0, 1: 1.0} model = SVC (гамма = 'масштаб', class_weight = вес)

    ...

    # определить модель

    weights = {0: 1.0, 1: 1.0}

    model = SVC (gamma = 'scale', class_weight = weights)

    Классовое взвешивание может быть определено несколькими способами; например:

    • Знание предметной области , определяется путем беседы с экспертами в предметной области.
    • Настройка , определяется поиском гиперпараметров, например поиском по сетке.
    • Эвристика , определенная с использованием общих рекомендаций.

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

    Например, распределение классов в тестовом наборе данных - это соотношение 1: 100 для класса меньшинства к классу большинства. Инверсия этого отношения может использоваться с 1 для класса большинства и 100 для класса меньшинства; например:

    ... # определить модель веса = {0: 1.0, 1: 100.0} model = SVC (гамма = 'масштаб', class_weight = вес)

    ...

    # определить модель

    weights = {0: 1.0, 1: 100.0}

    model = SVC (gamma = 'scale', class_weight = weights)

    Мы также можем определить такое же соотношение, используя дроби, и получить тот же результат; например:

    ... # определить модель веса = {0: 0.01, 1: 1.0} model = SVC (гамма = 'масштаб', class_weight = вес)

    ...

    # определить модель

    weights = {0: 0,01, 1: 1.0}

    model = SVC (gamma = 'scale', class_weight = weights)

    Эта эвристика доступна напрямую при установке class_weight на « сбалансированный ». Например:

    ... # определить модель model = SVC (гамма = 'масштаб', class_weight = 'сбалансированный')

    ...

    # определить модель

    модель = SVC (гамма = 'масштаб', класс_вес = 'сбалансированный')

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

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

    Полный пример приведен ниже.

    # svm с весом класса в несбалансированном наборе данных классификации из среднего значения импорта из склеарна.наборы данных импорт make_classification из sklearn.model_selection импорт cross_val_score из sklearn.model_selection import RepeatedStratifiedKFold из sklearn.svm импортировать SVC # создать набор данных X, y = make_classification (n_samples = 10000, n_features = 2, n_redundant = 0, n_clusters_per_class = 1, веса = [0.99], flip_y = 0, random_state = 4) # определить модель модель = SVC (гамма = 'масштаб', class_weight = 'сбалансированный') # определить процедуру оценки cv = RepeatedStratifiedKFold (n_splits = 10, n_repeats = 3, random_state = 1) # оценить модель scores = cross_val_score (модель, X, y, scoring = 'roc_auc', cv = cv, n_jobs = -1) # подвести итоги print ('Среднее значение ROC AUC:%.3f '% среднее (баллы))

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    140002

    14

    # svm с весом класса в несбалансированном наборе данных классификации

    из numpy import mean

    from sklearn.datasets import make_classification

    from sklearn.model_selection импорт cross_val_score

    из sklearn.model_selection import RepeatedStratifiedKFold

    из sklearn.svm import SVC

    # сгенерировать набор данных

    X, y = make_classification (n_samples = 10000, n_features = 2, n_features = 2 weights = [0.99], flip_y = 0, random_state = 4)

    # определить модель

    model = SVC (gamma = 'scale', class_weight ='balanced ')

    # определить процедуру оценки

    cv = RepeatedStratifiedKFold (n_splits = 10, n_repeats = 3, random_state = 1)

    # оценить модель

    scores = cross_val_score (model, X, y, scoring = 'roc_auc', cv = cv, n_jobs = -1)

    # подвести итоги

    print ('Среднее значение ROC AUC:%.3f '% среднее (баллы))

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

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

    Сообщается средний показатель ROC AUC, в этом случае он показывает лучший результат, чем невзвешенная версия алгоритма SVM, 0.964 по сравнению с 0,804.

    Взвешенная SVM с поиском по сетке

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

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

    В этом разделе мы проведем поиск по сетке по диапазону различных весов классов для взвешенной SVM и выясним, какие результаты дают лучший результат ROC AUC.

    Мы попробуем следующие веса для классов 0 и 1:

    • Класс 0: 100, Класс 1: 1
    • Класс 0: 10, Класс 1: 1
    • Класс 0: 1, Класс 1: 1
    • Класс 0: 1, Класс 1: 10
    • Класс 0: 1, Класс 1: 100

    Их можно определить как параметры поиска по сетке для класса GridSearchCV следующим образом:

    ... # определить сетку баланс = [{0: 100,1: 1}, {0: 10,1: 1}, {0: 1,1: 1}, {0: 1,1: 10}, {0: 1,1: 100}] param_grid = dict (class_weight = баланс)

    ...

    # define grid

    balance = [{0: 100,1: 1}, {0: 10,1: 1}, {0: 1,1: 1}, {0: 1,1: 10 }, {0: 1,1: 100}]

    param_grid = dict (class_weight = balance)

    Мы можем выполнить поиск по сетке по этим параметрам, используя повторную перекрестную проверку, и оценить производительность модели, используя ROC AUC:

    ... # определить процедуру оценки cv = RepeatedStratifiedKFold (n_splits = 10, n_repeats = 3, random_state = 1) # определить поиск по сетке grid = GridSearchCV (оценка = модель, param_grid = param_grid, n_jobs = -1, cv = cv, scoring = 'roc_auc')

    ...

    # определить процедуру оценки

    cv = RepeatedStratifiedKFold (n_splits = 10, n_repeats = 3, random_state = 1)

    # определить поиск по сетке

    grid = GridSearchCV (оценка = модель, param_grid = param_grid, n_grid = param_grid, n , cv = cv, scoring = 'roc_auc')

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

    ... # сообщить о лучшей конфигурации print ("Лучшее:% f с использованием% s"% (grid_result.best_score_, grid_result.best_params_)) # сообщить обо всех конфигурациях означает = grid_result.cv_results _ ['mean_test_score'] stds = grid_result.cv_results _ ['std_test_score'] params = grid_result.cv_results _ ['параметры'] для mean, stdev, param в zip (means, stds, params): print ("% f (% f) with:% r"% (mean, stdev, param))

    ...

    # сообщить о лучшей конфигурации

    print ("Лучшее:% f с использованием% s"% (grid_result.best_score_, grid_result.best_params_))

    # сообщать обо всех конфигурациях

    means = grid_result.cv_results _ ['mean_test_score']

    stds = grid_result.cv_results _ ['std_test_score']

    9result_score.

    для среднего, стандартного отклонения, параметра в zip (means, stds, params):

    print ("% f (% f) с:% r"% (среднее, стандартное отклонение, параметр))

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

    Можно ожидать, что эвристическое взвешивание классов является наиболее производительной конфигурацией.

    # поиск по сетке весов классов с помощью svm для классификации дисбаланса из среднего значения импорта из sklearn.datasets импортировать make_classification из sklearn.model_selection import GridSearchCV из sklearn.model_selection import RepeatedStratifiedKFold из sklearn.svm импортировать SVC # создать набор данных X, y = make_classification (n_samples = 10000, n_features = 2, n_redundant = 0, n_clusters_per_class = 1, веса = [0.99], flip_y = 0, random_state = 4) # определить модель модель = SVC (гамма = 'масштаб') # определить сетку баланс = [{0: 100,1: 1}, {0: 10,1: 1}, {0: 1,1: 1}, {0: 1,1: 10}, {0: 1,1: 100}] param_grid = dict (class_weight = баланс) # определить процедуру оценки cv = RepeatedStratifiedKFold (n_splits = 10, n_repeats = 3, random_state = 1) # определить поиск по сетке grid = GridSearchCV (оценка = модель, param_grid = param_grid, n_jobs = -1, cv = cv, scoring = 'roc_auc') # выполнить поиск по сетке grid_result = сетка.подходят (X, y) # сообщить о лучшей конфигурации print ("Лучшее:% f с использованием% s"% (grid_result.best_score_, grid_result.best_params_)) # сообщить обо всех конфигурациях означает = grid_result.cv_results _ ['mean_test_score'] stds = grid_result.cv_results _ ['std_test_score'] params = grid_result.cv_results _ ['параметры'] для mean, stdev, param в zip (means, stds, params): print ("% f (% f) with:% r"% (mean, stdev, param))

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    140002

    14

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    # вес классов поиска сетки с svm для классификации дисбаланса

    из numpy import mean

    из sklearn.наборы данных импортировать make_classification

    из sklearn.model_selection import GridSearchCV

    из sklearn.model_selection import RepeatedStratifiedKFold

    из sklearn.svm import SVC

    # generate dataset

    10000_classification 0,

    n_clusters_per_class = 1, weights = [0.99], flip_y = 0, random_state = 4)

    # определить модель

    model = SVC (gamma = 'scale')

    # define grid

    balance = [{ 0: 100,1: 1}, {0: 10,1: 1}, {0: 1,1: 1}, {0: 1,1: 10}, {0: 1,1: 100}]

    param_grid = dict (class_weight = balance)

    # определить процедуру оценки

    cv = RepeatedStratifiedKFold (n_splits = 10, n_repeats = 3, random_state = 1)

    # определить поиск по сетке

    grid = GridSearchridCV (param = param_grid, n_jobs = -1, cv = cv, scoring = 'roc_auc')

    # выполнить поиск по сетке

    grid_result = grid.fit (X, y)

    # сообщить о лучшей конфигурации

    print ("Best:% f using% s"% (grid_result.best_score_, grid_result.best_params_))

    # сообщить обо всех конфигурациях

    means = grid_result.cv_results_ ['mean_test_score']

    stds = grid_result.cv_results _ ['std_test_score']

    params = grid_result.cv_results _ ['params']

    для среднего, stdev, param в zip (means, stds,

    params):

    : print ("% f (% f) с:% r"% (среднее, стандартное отклонение, параметр))

    При выполнении примера оценивается вес каждого класса с использованием повторной k-кратной перекрестной проверки и отображается лучшая конфигурация и соответствующий средний показатель ROC AUC.

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

    В этом случае мы видим, что соотношение 1: 100 от большинства к классу меньшинства дает лучший средний балл ROC. Это соответствует конфигурации для общей эвристики.

    Было бы интересно изучить еще более строгие веса классов, чтобы увидеть их влияние на средний показатель ROC AUC.

    Лучшее: 0,966189 при использовании {'class_weight': {0: 1, 1: 100}} 0,745249 (0,129002) с: {'class_weight': {0: 100, 1: 1}} 0,748407 (0,128049) с: {'class_weight': {0: 10, 1: 1}} 0.803727 (0.103536) с: {'class_weight': {0: 1, 1: 1}} 0,932620 (0,059869) с: {'class_weight': {0: 1, 1: 10}} 0,966189 (0,036310) с: {'class_weight': {0: 1, 1: 100}}

    Лучшее: 0,966189 с использованием {'class_weight': {0: 1, 1: 100}}

    0.745249 (0.129002) с: {'class_weight': {0: 100, 1: 1}}

    0,748407 (0.128049) с: {'class_weight': {0: 10, 1: 1}}

    0.803727 (0.103536) с: {'class_weight': {0: 1, 1: 1}}

    0,932620 (0,059869) с: {'class_weight': {0: 1, 1: 10}}

    0,966189 (0,036310) с: {' class_weight ': {0: 1, 1: 100}}

    Дополнительная литература

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

    Документы

    Книги

    API

    Статьи

    Сводка

    В этом руководстве вы обнаружили машины с взвешенными опорными векторами для несбалансированной классификации.

    В частности, вы выучили:

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

    Есть вопросы?
    Задайте свои вопросы в комментариях ниже, и я постараюсь ответить.

    Разберитесь с несбалансированной классификацией!

    Разработка несбалансированных моделей обучения за считанные минуты

    ... всего несколькими строками кода Python

    Узнайте, как в моей новой электронной книге:
    Несбалансированная классификация с Python

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