Отменяющая сзв м без штрафа: СЗВ-М отменяющая: как заполнить, когда сдается, как не получить штраф

Корректировка отчета СЗВ-СТАЖ в программных продуктах 1С – Учет без забот

Опубликовано 19.10.2020 16:03
Автор: Administrator
Просмотров: 21599

СЗВ-СТАЖ – форма отчетности, сдаваемая ежегодно не позднее 1 марта года, следующего за отчетным. Ранее мы уже писали о том, как создать первичный отчет СЗВ-СТАЖ. Ведь тут важно не допустить ошибок, т.к. от правильности данных зависит будущая пенсия сотрудников, а неточности в отчете грозят штрафными санкциями. Но на практике без ошибок не бывает. И в случае необходимости исправления уже сданной формы СЗВ-СТАЖ необходимо заполнить новую форму СЗВ-КОРР, предназначенную для корректировки ранее поданных сведений. И всё бы ничего, однако СЗВ-КОРР бывает нескольких видов. О том, какая форма нужна именно вам и как ее создать в программах 1С поговорим сегодня. 

Напоминаем, что отчет по форме СЗВ-СТАЖ подают все плательщики страховых взносов: 

• имеющие наемных работников;

• заключившие трудовые договора или договора гражданско-правового характера, в т. ч. авторские, по которым

• начисляются страховые взносы и т.д.

В форму СЗВ-СТАЖ включаются сведения и по сотрудникам:

• находящимся в отпуске за свой счет;

• в отпуске по уходу за ребенком;

• в ситуации, когда договор заключен, но оплата не произведена и т.п.

В зависимости от вида ошибки СЗВ-КОРР имеет несколько видов:

• «Корректирующая» — для исправления или уточнения ошибочных сведений. Например, у сотрудника указан неверный период работы;

• «Отменяющая» — отменяет сведения, указанные в форме. Например, в форму включен лишний, уволенный ранее сотрудник, или по ошибке сотрудник указан дважды.

• «Особая» — наоборот, в форму по ошибке не включили сотрудника.

Порядок заполнения формы «Данные о корректировке сведений, учтенных на индивидуальном лицевом счете застрахованного лица (СЗВ-КОРР)» утвержден Постановлением Правления ПФ РФ от 06.12.2018 №507п.

СЗВ-КОРР в программе 1С: ЗУП ред. 3.1

Итак, форму СЗВ-КОРР можно создать двумя способами.

1 вариант – в разделе «Отчетность, справки» — «1С – Отчетность».

2 вариант – в разделе «Отчетность, справки» — «ПФР. Пачки, реестры, описи».

Рассмотрим создание СЗВ-КОРР в разделе «1С – Отчетность».

Шаг 1. Перейдите в раздел «Отчетность, справки» — «1С-Отчетность».

Шаг 2. Нажмите «Создать» и в окне «Виды отчетов» в разделе «По получателям» из группы «ПФР» выберите «Данные о корректировке сведений застрахованных лиц, СЗВ-КОРР».

Шаг 3. Заполните шапку формы:

• отчетный период;

• корректировочный период;

• тип сведений.

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

• «Корректирующая»;

• «Отменяющая»;

• «Особая».

Рассмотрим на примерах каждую из корректировок.

СЗВ-КОРР – «Корректирующая».

Для внесения изменений в данные о сотруднике установите «Тип сведений» — «Корректирующая».

Шаг 4. Выберите сотрудника, по которому нужно внести исправление – кнопка «Подбор».

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

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

Шаг 6. Нажмите «ОК» и сохраните изменения.

Шаг 7. Сформируйте печатную форму – «кнопка «Печать» — «СЗВ-КОРР».

Форма имеет 6 разделов.

С 1 по 3 раздел – это общие сведения о страхователе и застрахованном лице.

Раздел 4 и 5 содержат сведения о корректировке данных о доходе физлица, начисленных и уплаченных страховых взносах, и страховых взносах по дополнительному тарифу (5 раздел).

Раздел 6 отражает сведения о корректировке периодов работы сотрудника.

В зависимости от типа изменений заполняются соответствующие разделы формы. В нашем примере мы внесли изменения, отражающиеся в 6 разделе СЗВ-КОРР.

Шаг 8. Проведите корректировку. Отправьте ее сразу в контролирующий орган, если используете сервис 1С-Отчетность, либо выгрузите форму в файл по кнопке «Выгрузить» для отправки через сторонние программы.

Во втором случае укажите папку выгрузки. Имя файла программа сформирует автоматически. Нажмите «Сохранить». Файл СЗВ-КОРР в формате *.XML подготовлен к отправке.

Созданная корректирующая форма сохранена. Найти ее можно в разделе «Отчетность, справки» — «ПФР. Пачки, реестры, описи».

СЗВ-КОРР – «Отменяющая».

Рассмотрим пример создания «Отменяющей» СЗВ-КОРР.

Воспользуемся вторым способом создания формы – из журнала «ПФР. Пачки, реестры, описи».

Шаг 1. Нажмите «Создать» и выберите «Данные о корректировке сведений застрахованных лиц, СЗВ-КОРР».

Принцип заполнения формы такой же, как описан выше.

Заполните шапку формы, укажите тип сведений «Отменяющая» и подберите сотрудника, по которому необходимо отменить сведения.

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

Шаг 2. Выполните проверку формы – «Проверка» — «Проверить выгрузку». Сохраните ее для отправки в папку компьютера – «Выгрузить».

СЗВ-КОРР – «Особая».

Создадим СЗВ-КОРР с типом сведений «Особая».

Пример: При заполнении формы СЗВ-СТАЖ за период 2019 года забыли указать сотрудника Виноградову Г.И.

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

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

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

Шаг 2. Сохраните форму, распечатайте или подготовьте файл для отправки в ПФР.

Если вы обнаружили неточность в сданной форме отчетности СЗВ-СТАЖ, не надо ждать пока ПФР укажет на ошибку. Корректирующую форму можно сдать в любой момент при обнаружении ошибки по собственной инициативе.

Так в журнале у нас сохранено три варианта корректирующей формы СЗВ-КОРР.

Одновременно с формой СЗВ-КОРР в пенсионный направляется и опись – ОДВ-1.

Создание СЗВ-КОРР в 1С: Бухгалтерии предприятия ред. 3.0

В программе 1С: Бухгалтерия предприятия ред. 3.0 форма СЗВ-КОРР заполняется аналогично 1С: ЗУП ред. 3.1.

Сделать это можно также 2 способами.

1 вариант – Раздел «Зарплата и кадры» — «ПВР. Пачки, реестры, описи».

Создание и заполнение формы корректировки такое же, как и в программе 1С: ЗУП.

2 вариант – «Отчеты» — «Регламентированные отчеты».

Форма «Данные о корректировке сведений застрахованных лиц, СЗВ-КОРР» находится также в разделе ПФР, при выборе на закладке «По получателям».

Или в разделе «Отчетность по физлицам» на закладке «По категориям».

Форма-документ имеет тот же вид, что и в 1С: ЗУП ред. 3.1.

Как видите, в конфигурациях 1С, формы отчетности создаются и заполняются одинаково. И если вы работали с 1С: ЗУП, вам не составит труда заполнить эту же форму отчета в 1С: Бухгалтерия предприятия.

Автор статьи: Ольга Круглова

Понравилась статья? Подпишитесь на рассылку новых материалов

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

Как исправить или отменить СЗВ-ТД с ошибкой?

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

 

Содержание:

  1. Как корректировать или исправить СЗВ-ТД?
  2. Как полностью отменить СЗВ-ТД
  3. Как отменить отправленный СЗВ-ТД в старых версиях?
  4. Как внести корректировку в отправленный СЗВ-ТД в старых версиях?
  5. Коды ошибок от ПФР по СЗВ-ТД с комментариями
  6. Бесплатная консультация для бухгалтера

 

Совет: для того, чтобы разобраться в вопросе с электронными трудовыми книжками, СЗВ-ТД, СТД-Р, заполнением, изменением, отменой переданных мероприятий, вы можете изучить видео-курс от учебного центра 1С или пройти обучение в онлайн формате.
Подробнее о курсе про ЭТК, СЗВ-ТД и СТД-Р на нашем сайте курсов по 1С.

 

Как корректировать или исправить СЗВ-ТД?

Итак, с версии 3. 1.10.348 и 3.1.13.120, в котором обновили функционал по СЗВ-ТД нужно действовать следующим образом

Предположим, что у нас есть увольнение с ошибочной датой 08.04.2020. Исправим её на верную 10.04.2020.

Вот наш исходный документ:

 

После того как мы отправили отчет СЗВ-ТД (в котором неверная дата):

 

 

в документе “Увольнение” программа показывает предупреждение: “Записи трудовой книжки переданы в ПФР”.
Но редактировать документ можно, для этого открываем меню по кнопке “Еще” и нажимаем “Изменить документ”. Выглядит это вот так:

Меняем в документе дату увольнения и проводим его. Теперь дата верная — 10.04.2020:

Теперь сформируем новый СЗВ-ТД за апрель 2020. Нажимаем “Заполнить”. Программа видит изменения и добавляет их в апрельский отчет:

 

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

 

Теперь проводим СЗВ-ТД, отправляем его в ПФР, не забываем поставить галочку, что отчет был отправлен, тогда данные не попадут в следующий отчет!

Важно! Будьте внимательны. Не перепроводите кадровые документы без изменений иначе могут возникнуть ошибки в СЗВ-ТД.

 

Как полностью отменить СЗВ-ТД

Итак, с версии 3.1.10.348 и 3.1.13.120, в котором обновили функционал по СЗВ-ТД нужно действовать следующим образом.
У нас есть отчет СЗВ-ТД за февраль, в котором мы ошибочно отправили данные по сотруднику. Отправку этих данных нужно отменить, но в новом релизе нет поля, в котором можно указать дату отмены кадрового мероприятия.

 

Вот то самое ошибочное увольнение с запретом на редактирование:

 

 

Важно! Пока что не трогайте этот документ! Не нужно его отменять и распроводить, он пока что нужен.

Правильная последовательность действий здесь будет такая:

  1. отменим отправленный СЗВ-ТД
  2. затем отменим проведение и удалим ошибочный документ “Увольнение”

Для отправки отмены создадим отчет СЗВ-ТД (это может быть отчет уже за следующий месяц).
С помощью кнопки “Подбор” добавим нужного нам сотрудника.
В “Мероприятиях” пусто и это правильно, так как программа не “увидела” никаких изменений по данному сотруднику:

Открываем строку по сотруднику двойным нажатием, затем в Мероприятиях открываем “Регистрация трудовой деятельности” и нажимаем кнопку “Отменить”:

В появившемся окне видим наш документ с ошибочным увольнением. Нажимаем “Выбрать”:

В разделе “Регистрации трудовой деятельности” появляется строка с признаком отмены, туда вам нужно поставить дату отмены:

 

 

В “Мероприятиях” нажимаем “Заполнить” и внизу “Ок”:

И теперь новый отчет с отмененным увольнением отправляем в ПФР.  Устанавливаем об этом отметку:

После того как отчет отправлен можно перейти к непосредственному удалению документа с ошибочным увольнением.
Если удалить сначала сам документ, то в новом (отменяющем корректировочном) отчете СЗВ-ТД программа его не “увидит”.

 

Как отменить отправленный СЗВ-ТД в старых версиях?

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

Вот как это выглядит в программе 1С. Копируем нужный отчет:

 

 

В мероприятиях открыть ссылку “Регистрация трудовой деятельности” и указать в последней колонке дату отмены:

 

После этого проверяем и отправляем в ПФР как делали ранее.

 

Как внести корректировку в отправленный СЗВ-ТД в старых версиях?

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

 

 

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

Как отправлять СЗВ-ТД с изменениями?

Отправка в ПФР отменяющих и корректирующих отчетов СЗВ-ТД происходит в обычном порядке. Отдельных корректирующих нет.
Про обычную отправку СЗВ-ТД мы уже писали про это вот в этой статье.

 

Коды ошибок от ПФР по СЗВ-ТД с комментариями

КодУсловиеКод результатаПеречень документовНаш комментарий
ВС.Б-СТРАХОВАТЕЛЬ.1.1“Регистрационный номер ПФР” должен быть зарегистрирован в ПФР на дату проверяемого документа50 СЗВ-ТД"}»>ЭТК.СЗВ-ТДГрубая ошибка – нужно пересдать отчет
ВС.Б-СТРАХОВАТЕЛЬ.1.2ИНН должен соответствовать ИНН в карточке страхователя50ЭТК.СЗВ-ТДГрубая ошибка – нужно пересдать отчет
ВС.Б-СТРАХОВАТЕЛЬ.1.3КПП должен соответствовать КПП в карточке страхователя20 СЗВ-ТД"}»>ЭТК.СЗВ-ТДПредупреждение, сведения приняты. Информация, указанная в сведениях требует разъяснений либо проверки. Необходимо проверить правильность представленных сведений и при необходимости внести исправления
ВС.Б-ЗЛ.1.1“Фамилия”, “Имя”, “Отчество” и “СНИЛС” должны соответствовать данным ПФР, проверка осуществляется с учетом историчности30 СЗВ-ТД"}»>ЭТК.СЗВ-ТДОшибка. Нужно проверить корректность заполнения ФИО и СНИЛС, заново провести кадровый документ, отправить отчет повторно
ВС.Б-МП.1.1По зарегистрированному лицу мероприятия не приняты. Не найдены исходные сведения для отменяемого мероприятия30ЭТК.СЗВ-ТД Проведите заново документ, отправьте отчет повторно."}»>Ошибка. Нужно проверить правильность отчета, скорее всего отменяете не те данные в отчете. Проведите заново документ, отправьте отчет повторно.
ВС.Б-МП.1.2По зарегистрированному лицу мероприятия не приняты. Ранее учтено мероприятие с таким же GUID30ЭТК.СЗВ-ТД "}»>Самая частая ошибка.
В отправленном отчете был неуникальный идентификатор (GUID).
1) Необходимо заново провести кадровые документы и отправить отчет повторно. 2) Но возможен вариант в котором вы отправляете повторно сведения с тем же самым идентификатором, хотя исправлений и изменений в кадровых документах у вас не было (дублируете данные с тем же GUID).
ВС.Б-МП.1.3По зарегистрированному лицу ранее учтено мероприятие с такими же видом, датой и отметкой о совместительстве20ЭТК.СЗВ-ТД Информация, указанная в сведениях требует разъяснений либо проверки. Необходимо проверить правильность представленных сведений и при необходимости внести исправления"}»>Предупреждение, сведения приняты. Информация, указанная в сведениях требует разъяснений либо проверки. Необходимо проверить правильность представленных сведений и при необходимости внести исправления

 

Бесплатная консультация для бухгалтера

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

 

python — SVM с использованием обучения scikit работает бесконечно и никогда не завершает выполнение

Asked

Изменено
1 год, 2 месяца назад

Просмотрено
133k раз

$\begingroup$

Я пытаюсь запустить SVR, используя scikit-learn (python) для обучающего набора данных, который имеет 595605 строк и 5 столбцов (функций), в то время как тестовый набор данных имеет 397070 строк. Данные были предварительно обработаны и систематизированы.

Я могу успешно запустить тестовые примеры, но при выполнении с использованием моего набора данных и оставлении его работать более часа я все еще не видел никаких выходных данных или завершения программы. Я пробовал выполнять с использованием другой IDE и даже с терминала, но проблема не в этом.
Я также попытался изменить значение параметра «C» с 1 на 1e3.

Я сталкиваюсь с похожими проблемами во всех реализациях SVM, использующих scikit.

Я недостаточно долго жду завершения?
Сколько времени должно занять это выполнение?

По моему опыту, это не должно занимать больше нескольких минут.

Вот конфигурация моей системы:
Ubuntu 14.04, 8 ГБ ОЗУ, много свободной памяти, процессор i7 4-го поколения

  • python
  • svm
  • scikit-learn

$\endgroup$

3

$\begingroup$

Ядро SVM требует вычисления функции расстояния между каждой точкой в ​​наборе данных, которая является доминирующей стоимостью $\mathcal{O}(n_\text{features} \times n_\text{observations}^2)$. 3)$.

Вы можете увеличить этот кеш, вызвав SVR как

 модель = SVR(cache_size=7000)
 

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

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

Популярным способом достижения этого является использование 100 или около того кластерных центров, найденных kmeans/kmeans++, в качестве основы вашей функции ядра. Затем новые производные функции вводятся в линейную модель. Это очень хорошо работает на практике. Google, Yahoo и Microsoft делают это с помощью таких инструментов, как sophia-ml и vowpal wabbit. Ввод/вывод становится доминирующей статьей затрат для простых линейных учащихся.

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

Дальнейшее чтение

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

$\endgroup$

1

$\begingroup$

SVM решает задачу оптимизации квадратичного порядка.

Мне нечего добавить к тому, что здесь не было сказано. Я просто хочу опубликовать ссылку на страницу sklearn о SVC, которая разъясняет, что происходит:

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

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

Вы также можете использовать стохастический градиентный спуск для решения задачи оптимизации. Sklearn использует SGDClassifier. Вы должны использовать loss='epsilon_insensitive' , чтобы получить результаты, аналогичные линейному SVM. См. документацию. Я бы использовал градиентный спуск только в крайнем случае, потому что он подразумевает большую настройку гиперпараметров, чтобы не застревать в локальных минимумах. Используйте LinearSVC , если можете.

$\endgroup$

4

$\begingroup$

Включили ли вы масштабирование в этап предварительной обработки? У меня была эта проблема при запуске моей SVM. Мой набор данных составляет ~ 780 000 образцов (строка) с 20 функциями (столбец). Мой тренировочный набор составляет ~ 235 тыс. образцов. Оказывается, я просто забыл масштабировать свои данные! Если это так, попробуйте добавить этот бит в свой код:

масштабировать данные до [-1,1] ; увеличить скорость SVM:

 из sklearn.preprocessing import MinMaxScaler
масштабирование = MinMaxScaler(feature_range=(-1,1)).fit(X_train)
X_train = масштабирование.transform(X_train)
X_test = масштабирование.transform(X_test)
 

$\endgroup$

4

$\begingroup$

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

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

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

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

$\endgroup$

$\begingroup$

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

 из sklearn.preprocessing import RobustScaler
 скейлер = RobustScaler()
 X = масштабирование.fit_transfrom(X)
 

X теперь преобразован/масштабирован и готов к использованию в желаемой модели.

$\endgroup$

$\begingroup$

Это имеет смысл. IIUC, скорость выполнения операций с опорными векторами ограничена количеством выборок, а не размерностью. Другими словами, оно ограничено процессорным временем, а не оперативной памятью. Я точно не знаю, сколько времени это займет, но я запускаю некоторые тесты, чтобы выяснить это.

$\endgroup$

$\begingroup$

Попробуйте нормализовать данные до [-1,1]. Я столкнулся с подобной проблемой, и после нормализации все заработало нормально. Вы можете легко нормализовать данные, используя:

 из предварительной обработки импорта sklearn
X_train = предварительная обработка.масштаб(X_train)
X_test = предварительная обработка.масштаб(X_test)
 

$\endgroup$

2

$\begingroup$

Оставьте работать на ночь или лучше на 24 часа.
Какая у вас загрузка процессора? Если ни одно из ядер не работает на 100%, у вас проблема. Наверное с памятью. Вы проверяли, помещается ли вообще ваш набор данных в 8 ГБ?
Вы пробовали SGDClassifier? Там он один из самых быстрых. Стоит попробовать сначала, надеясь, что он завершится через час или около того.

$\endgroup$

3

$\begingroup$

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

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

Я использовал sklearn в питоне и e1071 в R и R гораздо быстрее получается без установки max_iter и sklearn занимает в 2-4 раза больше времени. Единственный способ сократить время вычислений для Python — использовать max_iter . Это зависит от сложности вашей модели, количества функций, ядер и гиперпараметров, но для небольшого набора данных я использовал около 4000 точек данных и max_iter был 10000 результаты совсем не отличались и это было приемлемо.

$\endgroup$

$\begingroup$

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

 из sklearn.svm import SVR
из sklearn. pipeline импортировать Pipeline
из sklearn.preprocessing import StandardScaler, MinMaxScaler
модель = Pipeline([('масштабатор', StandardScaler()),
                  ('svr', SVR(kernel='linear'))])
 

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

$\endgroup$

0

$\begingroup$

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

Попробуйте использовать следующий код:

 # X - ваш массив данных numpy.
предварительная обработка импорта из sklearn
X = предварительная обработка. масштаб (X)
 

$\endgroup$

1

$\begingroup$

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

 из предварительной обработки импорта sklearn
X_train = предварительная обработка.масштаб(X_train)
X_test = предварительная обработка.масштаб(X_test)
 

$\endgroup$

1

Машина опорных векторов | Руководство для начинающих по методу опорных векторов

Эта статья была опубликована в рамках блога Data Science Blogathon

Введение

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

Источник изображения: pinterest.com

Машинное обучение — введение в тизер (базовое введение):

Алгоритм машинного обучения

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

Машинное обучение — это область исследования, которая дает компьютерам возможность обучаться без явного программирования. — Артур Сэмюэл, 1959

ML классифицируется по трем широким основным областям,

Источник изображения: www. dataflair.com

Проще говоря,

1. Контролируемое машинное обучение — Набор данных/данные имеют функции (независимые переменные) и целевые (зависимая переменная/целевые) переменные. Он имеет два широких типа: классификацию и регрессию.

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

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

4.  Полуконтролируемое обучение (Частичные данные с этикеткой и без нее)

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

Итак, что такое термин «классификация и регрессия»?

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

Источник изображения: javapoint.com

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

SVM — это специальный алгоритм, который представлен в классификации и регрессии.

Машина опорных векторов — фанатский постер (введение в цМем):

Я всегда считаю, что «картинка стоит тысячи слов», поэтому, прежде чем мы погрузимся в океан SVM, мы поймем всю концепцию на картинке ниже, она также подходит для текущей ситуации (COVID-19),

Источник изображения: image.google.com

SVM — знакомство с героем (теоретическое введение):

 

Источник изображения: edureka.com

1. SVM — подпадает под надзор ML

2. SVM может выполнять как классификацию, так и регрессию

3. Цель — Создать наилучшую границу решения, которая может разделить n-мерное пространство на классы, чтобы мы могли легко поместить новые точки данных в правильную категорию — Гиперплоскость.

4. Стандартный классификатор

5. Для лучшего понимания SVM изучим,

          @ Классификатор максимальной маржи

          @ Классификатор опорных векторов

          @ Машина опорных векторов

SVM — Классификатор максимальной маржи — Первая песня:

Прежде чем мы узнаем о классификаторе максимальной маржи (MMC), давайте начнем с основ. Все мы знаем термины «одномерный» (1D), «двухмерный» (2D) и «трехмерный» (3D). Так что же это такое?

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

Источник изображения: wikipedia.com

1. Нет размера или 0-D – Точка (существует единственная позиция)

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

2. Один размер или 1-D – А-образный (с двумя точками)

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

3. Двумерный или двумерный – А-плоскость

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

4. Три измерения или 3D – A-Solid (возможно куб)

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

Примечание:  Точка — это гиперплоскость в одномерном пространстве, прямая — это гиперплоскость в двумерном пространстве, а плоскость — это гиперплоскость в трехмерном пространстве.

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

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

Источник изображения: image. google.com

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

Источник изображения: google.image.com

Есть много возможностей разделить два класса категорий — Но какой из них лучше?

Источник изображения: google.image.com

Мы не можем предсказать это правильно, поэтому решение проблемы — ГИПЕРПЛОСКОСТЬ. В обобщенном виде это можно изобразить на рисунке ниже,

Источник изображения: image.google.com

Итак, среди этих различных гиперплоскостей, какая гиперплоскость лучшая?

Источник изображения: image.google.com

Если вы заметили на приведенном выше рисунке, мы можем ясно видеть, как среди трехстрочной, красной линии (h4), которая имеет максимальный запас с точками данных, а также правильно классифицировать данные, если вы видите синюю цветную линию (h3) разница мала для одних данных и велика для других данных, тогда как зеленая линия (h2) не классифицирует сами данные.

Для MMC — опорный вектор, гиперплоскость и поле (романтическая песня!)

1. Точки данных/вектора, ближайшие к гиперплоскости (черная линия), известны как опорный вектор (SV). не.

2. Если точка данных не является SV, ее удаление не повлияет на модель.

3. Удаление SV изменит положение гиперплоскости.

Источник изображения: google.image.com

Размер гиперплоскости зависит от количества элементов. Если количество входных объектов равно 2, то гиперплоскость — это просто линия. Если число входных признаков равно 3, то гиперплоскость становится двумерной плоскостью. Становится трудно представить, когда количество функций превышает 3.

Классификатор опорных векторов (SVC) (вторая песня):

У многих возникает путаница с терминами SVM и SVC. Простой ответ: если гиперплоскость, которую мы используем для классификации, находится в линейном состоянии, то состояние SVC.

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

Источник изображения: image.google.com

Снова Маржа может быть подразделена на

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

Источник изображения: medium.com

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

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

Немного математики (Сцена путаницы):

 

Источник изображения: https://iq.opengenus.org/

Вся математика, связанная с SVM, кратко изложена на картинке вверху и внизу,

 

Источник изображения: https://iq.opengenus.org/

Ограничение SVC (Внезапный поворот в фильме):

Существуют некоторые ограничения SVC, которые можно объяснить на рисунке ниже,

Источник изображения: image.google.com

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

Метод опорных векторов (SVM) – (интервальный блок):

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

Источник изображения: image.google.com

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

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

Источник изображения: image.google.com

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

Источник изображения: в направлении datascience.com

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

Есть некоторые известные и наиболее часто используемые нелинейные ядра в SVM,

1. Полиномиальное ядро ​​SVM

2. Радиальная базисная функция Гаусса (RBF)

3. Сигмовидное ядро ​​

Источник изображения: scikit-learn.org

Полиномиальное ядро ​​SVM: (сцена боя №1!)

1. Один из способов создания объектов в более высоких измерениях — это выполнение полиномиальных комбинаций в определенной степени.

2. Например, с двумя признаками A и B полином степени 2 даст 6 признаков: 1 (любой признак в степени 0), A, B, A², B² и AB.

3. Мы можем легко добавить эти функции вручную с помощью PolynomialFeatures() в scikit-learn.

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

Ядро функции радиального базиса: (#2 сцена боя!)

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

2. Максимальное значение ядра RBF равно 1, когда X1 = X2, что означает, что расстояние между двумя точками X1 и X2 равно 0 (что означает, что они очень похожи), Если две точки разделены большим расстоянием (что означает – не аналогичный), то значение будет меньше 1 или близко к 0.

3. Предположим, что σ = 1, тогда это можно объяснить,

Кривая для уравнения RBF показана выше, и мы можем заметить, что по мере увеличения расстояния ядро ​​RBF уменьшается экспоненциально и равно 0 для расстояний, превышающих 4.

4. Предположим, что σ = 10, тогда это можно объяснить,

Источник изображения: image.google.com

Точки считаются похожими на расстояниях до 10 единиц, а дальше 10 единиц — разными. Из обоих случаев видно, что ширина Области подобия изменяется при изменении σ.

 

3. Ядро сигмовидной функции (#3 Fight Scene!)

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

Источник изображения: image.google.com

2. Интересно отметить, что модель SVM, использующая сигмовидную функцию ядра, эквивалентна двухслойной нейронной сети персептрона. 3. В этом ядре есть два регулируемых параметра: наклон — альфа и константа C — пересечение.

Основные параметры для SVM – (Драматическая/Боковая часть) (как линейные, так и нелинейные SVM)

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

Источник изображения: image. google.com

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

1. Параметр регуляризации (C)

2. Гамма-параметр

3. Ядро

4. Степень

5. Случайное состояние

Параметр регуляризации (C):

1. Параметр C в SVM в основном используется для параметра Penalty термина ошибки.

2. Вы можете рассматривать это как степень правильной классификации, которой должен соответствовать алгоритм, или степень оптимизации, которой должна соответствовать SVM.

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

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

Источник изображения: image.google.com

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

Источник изображения: image.google.com

Значение gamma и C не должно быть очень высоким, поскольку это приводит к переоснащению, или оно не должно быть очень маленьким (недообучение). Таким образом, нам нужно выбрать оптимальное значение C.

Гамма Параметр:

1. Гамма используется, когда мы используем ядро ​​Гаусса RBF.

2. Если вы используете линейное или полиномиальное ядро, вам не нужна гамма, вам нужен C гиперметр.

3. Он решает, сколько кривизны мы хотим в границе решения.

4. Высокое значение гаммы – большая кривизна

5. Низкое значение гаммы – меньшая кривизна

Источник изображения: image.google.com

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

Источник изображения: image. google.com

******************************************************* **********************************************

Примечание:  Цель – найти баланс между «не слишком строго» и «не слишком свободно». Перекрестная проверка и повторная выборка, наряду с поиском по сетке, являются хорошими способами нахождения наилучшего C. Затем выбор значений гаммы связан с C для большей точности.

Источник изображения: Автор

******************************************************* *************************************************

Ядро:

В этом параметре все очень просто, в этом параметре есть несколько вариантов, например, если вы хотите смоделировать его линейным образом, мы выбираем «линейный», или если ваша модель не имеет должной точности, вы выбираете нелинейный SVM, такие как «rbf», «poly» и «sigmoid» для большей точности. Предположим, как показано ниже,

Источник изображения: image.google.com

Степень:

1. Управляет гибкостью границы решения.

2. Более высокие степени дают более гибкие границы решений.

3. Настоятельно рекомендуется для полиномиального ядра

Источник изображения: в направлении datascience.com

Случайное состояние:

Этот конкретный параметр, 50-50 человек его используют, а остальные нет. Это не так важно, гарантирует воспроизводимость сгенерированных вами разбиений, например, мы даем в основном значение как 0 или 1, или это может быть и любое другое число.

SVM – Резюме (к кульминационной сцене):

 

Источник изображения: www.datasciencecentral.com

SVM – преимущества, недостатки и применение (Climax Scene):

Преимущество:

1. Более эффективен для многомерного пространства

2. Хорошо работает даже с неструктурированными и частично структурированными данными, такими как текст, изображения и деревья

3. Эффективно обрабатывает нелинейные данные с помощью трюка ядра

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

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

Недостаток:

1. Не подходит для большого набора данных

2. Чувствителен к выбросам (если в наборе данных больше, то SVM не правильный выбор!)

3. Гиперпараметры, такие как стоимость (C) и гамма SVM, не так просто настроить, а также трудно визуализировать их влияние

4. SVM требует много времени для обучения на больших наборах данных

5. Модель SVM сложна для понимания и интерпретации людьми, в отличие от деревьев решений.

6. Прежде чем применять SVM, необходимо выполнить масштабирование переменных.

Приложения:

1. Распознавание рукописного ввода

2. Распознавание лиц

3. Категоризация текста и гипертекста

4. Классификация изображений

5. Биоинформатика (классификация белков и классификация рака)

Памятка по SVM (конец фильма):

Источник изображения: github.com

Часть кода (за кулисами!)

Набор данных и полный код:   https://github.com/anandprems/SVM_Classification_Regression 

SVM — Классификация:

 импортировать numpy как np
импортировать панд как pd
импортировать matplotlib.pyplot как plt
импортировать Seaborn как sns
встроенный %matplotlib 

Набор данных

 = pd.read_csv('parkinsons_new.csv') 
 набор данных.голова()
набор данных.хвост()
набор данных.shape
набор данных.columns
набор данных.информация()
набор данных.describe()
pd.isnull(набор данных).сумма()
классы = набор данных ['статус'].value_counts()
классы
классы.график.бар()
#удаление определенного столбца, ось =1
набор данных = набор данных.drop (['имя'], ось = 1)
набор данных = pd. get_dummies (набор данных, prefix_sep = 'пол')
набор данных.голова()
#поиск корреляции между признаками
corr_var = набор данных.corr ()
печать (corr_var)
plt.figure(figsize=(20,17.5))
sns.heatmap(corr_var, annot=True, cmap='BuPu') 
 X = набор данных.loc[:, набор данных.columns !="статус"]
у = набор данных["статус"] 
 из sklearn.model_selection импорта train_test_split
X_train, X_test, y_train, y_test = train_test_split (X, y, test_size = 0,2, random_state = 0)
print ("Размер для поезда X:", X_train.shape)
print ("Размер для теста X:", X_test.shape)
print ("Размер поезда y:", y_train.shape)
print("Размер для теста y:", y_test.shape) 
 из sklearn.preprocessing import StandardScaler
sc = StandardScaler().fit(X_train)
X_train = sc.transform(X_train)
X_test = sc.transform(X_test) 
 из sklearn импортировать svm
cl = svm.SVC (ядро = «линейный», C = 0,01)
cl.fit(X_train, y_train) 
 y_pred = кл.predict(X_train) 
 y_pred_1 = cl. predict(X_test)
у_пред_1 
 из sklearn.metrics импорта: точность_оценки, путаница_матрица
см = матрица_замешательства (y_test, y_pred_1)
см 
 акк = показатель точности (y_test, y_pred_1)
согл 
 из sklearn.model_selection импортировать GridSearchCV
параметры = {'C': [0,001, 0,005, 0,01, 0,05, 0,1, 0,5, 1, 5, 10, 50, 100, 500, 1000, 5000],
              'степень': [2, 3, 4, 5],
              «гамма»: [0,001, 0,01, 0,1, 0,5, 1],
              'ядро': ['rbf','poly']
              }
cl = svm.SVC()
сетка = GridSearchCV (cl, параметры, cv = 10)
grid.fit(X_train, y_train)
печать (сетка.best_params_)
печать (сетка.best_estimator_) 
 из sklearn.metrics импортаclassification_report
grid_prediction = grid.predict(X_test)
печать (classification_report (y_test, grid_prediction)) 

 

Источник изображения: Автор

SVM – Регрессия:

 импортировать numpy как np
импортировать matplotlib.pyplot как plt
импортировать панд как pd 
 набор данных = pd. read_csv('Position_Salaries.csv') 
 набор данных.голова()
набор данных.хвост()
набор данных.columns
набор данных.shape
набор данных.describe()
print(str('Любые отсутствующие данные или NaN в наборе данных:'),dataset.isnull().values.any())
набор данных.info() 
 X = набор данных.iloc[:, 1:2].значения
у = набор данных.iloc[:, 2].значения 
 y = y.reshape(-1,1) 
 из sklearn.preprocessing import StandardScaler
sc_X = Стандартный масштаб()
sc_y = Стандартный масштаб()
X = sc_X.fit_transform(X)
у = sc_y.fit_transform(y) 
 из sklearn.svm импорт SVR
регрессор = SVR (ядро = 'rbf')
regressor.fit(X, у) 
 y_pred = regressor.predict([[6.5]])
y_pred = sc_y.inverse_transform(y_pred)
печать (у_пред) 
 plt.scatter (X, y, цвет = «красный»)
plt.plot(X, regressor.predict(X), color = 'синий')
plt.title('Правда или блеф (SVR)')
plt.xlabel('Уровень позиции')
plt.ylabel('Зарплата')
plt.show() 
 X_grid = np. arange(min(X), max(X), 0,01) #этот шаг необходим, поскольку данные масштабируются по функциям.
X_grid = X_grid.reshape((len(X_grid), 1))
plt.scatter(X, y, цвет = 'красный')
plt.plot(X_grid, regressor.predict(X_grid), цвет = 'синий')
plt.title('Правда или блеф (SVR)')
plt.xlabel('Уровень позиции')
plt.ylabel('Зарплата')
plt.show() 

EndNote (КОНЕЦ!):

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

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