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


Как определить стихотворный размер • Arzamas

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

Автор Кирилл Головастиков

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

Важно! Здесь я хочу помочь с практиче­скими заданиями — определением метров и размеров. Если вы готовитесь к теорети­ческому экзамену, лучше зазубривайте определения из тех учеб­ников, которые вам советовали пре­подаватели, чтобы сдать на пять. И — я буду сходу использо­вать термины вроде «силлабо-тонический» и «стопа», не особенно их поясняя: раз вы чи­таете этот материал, значит, хотя бы приблизительно в курсе.

Итак, сначала научимся определять метр, потом перейдем к размеру. Но сначала —

Маленькое предуведомление

Давайте договоримся вот о чем: в каждой строке каждому слогу мы присвоим поряд­ковый номер — считая слева направо. В «Буря мглою небо кроет» слог «бу» — 1-й, «ря» — 2-й и так далее, вплоть до 7-го «кро» и 8-го «ет».

Необязательное вступление: почему определить метр для многих непросто?

Скорее всего, вам объяснили, что ямб и хорей — это стопы из двух слогов. В сто­пе ямба первый слог безударный, второй — ударный; в хорее — наоборот. Получается, в стихах, написанных ямбом, ударения должны падать на четные слоги в каждой строке (2-й, 4-й, 6-й и так далее), а хореем — на нечетные (1-й, 3-й, 5‑й…). 

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

Мой дя́дя са́мых че́стных пра́вил,

Все в порядке: четные по счету слоги — 2-й, 4-й, 6-й, 8-й — действительно ударные.

Когда́ не в шу́тку занемо́г,
Он уважа́ть себя́ заста́вил
И лу́чше вы́думать не мо́г.

Стоп. Здесь все не так. Нет ударений на 6-м слоге, на 2-м, снова на 6-м… Что происходит? Это все-таки не ямб?

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

Мы́сль изрече́нная е́сть ло́жь.

Здесь нет ударения на 2-м слоге («из») и на 6­-м («я»), но зато есть на 1-м («мысль»), а еще на 7-м («есть»), которые вроде бы в ямбе должны быть безударными. Самое пора­зительное, что таких строк, которые не подходят под строку «идеаль­ного» ямба, гораздо больше, чем «идеальных»! Так что же, все это обман?

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

То же самое с анапестами и дактилями (трех­сложными силлабо-тоническими стопами). В строках дактиля ударения должны падать на 1-й, 4-й, 7-й, 10-й слоги и так далее. В анапестах — на 3-й, 6-й, 9-й, 12-й… Однако по факту в дак­тилях очень часто на 1-м слоге ударений не оказывается, хотя они там нужны («А за окно́м шеле­стя́т тополя́…»). А в анапестах они там не нужны, но очень часто оказываются:

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

Сергей Гандлевский

Вы спросите — что за ерунда?! Сейчас объясню. Но сначала —

Самый простой способ определить метр

Самый легкий способ определить простой (клас­сический, силлабо-тонический) метр — это скан­довка. То, как болельщики кричат кричалки на трибунах. Попыт­ка почув­ство­вать ритм, под­ставляя ударения там, где их нет, но они нужны, и не делая их там, где вроде бы они есть, но ритм велит не ударять. Это делается интуитивно:

мойДЯ!дяСА!мыхЧЕСТ!ныхПРА!вил

мысльИ!зреЧЕ!наЯ!естьЛОЖЬ!

Стиховед Александр Илюшин предложил изящ­ный способ, как перевести резуль­­таты скандовки на язык стиховедения. Он сравнил пять основных силлабо-тонических метров с пятью формами популярного русского мужского имени:

Хорей: Ва́ня-Ва́ня-Ва́ня-Ва́ня
Ямб: Ива́нва́нва́нва́н
Дактиль: Ва́нечка-Ва́нечка-Ва́нечка-Ва́нечка
Амфибрахий: Ваню́ша-Ваню́ша-Ваню́ша-Ваню́ша
Анапест: Иоа́нн-Иоа́нн-Ио а́нн-Иоа́нн

Проскандировали строчку? Теперь посмо­трите, на что результат похож больше — на «Ивана», «Ваню» или «Иоанна». Этот не вполне научный способ всегда останется у вас в качестве подкреп­ления. А теперь —

Немного о науке

Какие определения ямба и хорея приняты в стро­гой науке? Примерно такие: ямб — метр, в кото­ром ударения неодносложных слов могут падать на четные по счету места в строке. Хорей — то же самое, но на нечетные.

Здесь, во-первых, добавлено слово «могут» — значит, не обязаны: это объяс­няет строки «Когда не в шутку занемог» (ямб, хотя нет ударения на 6-м слоге) или «Он уважать себя заставил» (ударе­ния нет на 2-м). Во-вторых, добавлено слово «не­односложных»: тогда можно не думать о приме­рах вроде «Мы́сль изреченная е́сть ложь» или «Бе́г санок вдоль Невы широкой» (или, в случае с хореями, «В тот же день ста́л княжить он»). Действи­тельно, здесь есть «лиш­ние» ударе­ния — но все они обеспечены односложными слова­ми, а их мы дого­ворились не учитывать.

Но есть две проблемы. Во-первых, это определе­ние верно только для ямба и хорея (то есть двусложных силлабо-тонических размеров). Для дактиля, амфибрахия или ана­песта (трехсложных силлабо-тонических размеров) его при­шлось бы менять на «ударения неоднослож­ных и недвусложных слов», что уже слишком сложно. А определения многих других метров — не классических (силлабо-тонических), а, напри­мер, дольников («Все мы бражники здесь, блуд­ницы, / Как невесело вместе нам! / На стенах цветы и птицы / Томятся по обла­кам») или такто­виков («По городу бегал черный человек. / Гасил он фонарики, карабкаясь на лестни­цу») вообще нельзя вывести из этого правила.

Во-вторых, и это самое главное, эти правила могут нарушаться — в той или иной строке. Могут нару­шаться случайно, по недосмотру: «Я предлагаю выпить в его́́ память…» («Пир во время чумы», это пятистопный ямб).

Могут нарушаться потому, что поэт приспо­сабливает язык к своим нуждам: «Во всё время разговора / Он стоял позадь забора…» («Сказка о царе Салтане», хорей): здесь мы должны «проглотить» ударение на «во всё», чтобы не пред­положить, что у Пушкина ошибка в метре.

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

Когда обидой — опилась
Душа разгневанная,
Когда семижды зареклась
Сражаться с демонами —

Не с теми, ливнями огней
В бе́здну нисхлестнутыми:
С земными низостями дней.
С людскими косностями —

Деревья! К вам иду! Спастись
От рева рыночного!
Ва́шими вымахами ввысь
Как сердце выдышано!

Дуб богоборческий! В бои
Всем корнем шествующий!
и́вы-провидицы мои!
Березы-девственницы!

Вяз — яростный Авессалом,
На пытке вздыбленная
Сосна — ты, уст моих псалом:
Го́речь рябиновая…

К вам! В живоплещущую ртуть
Листвы — пусть рушащейся!
Впервые руки распахнуть!
Забросить рукописи!

Зеленых отсветов рои…
Как в руки — плещущие…
Простоволосые мои,
Мои трепещущие!

Ямб нарушен четыре раза — однако это не делает его не ямбом. Во-первых, если это не ямб, то что же еще? Во-вторых, «наруше­ние» метра не значит, что это плохие стихи. Наоборот, можно трактовать это как прояв­ление поэтиче­ской силы: поэт сам поставил условия — сам их и нарушил, имеет право.

 

Arzamas для занятий со школьниками! Подборка материалов для учителей и родителей

Лекции и тексты о литературе, истории и искусстве, игры, тесты, видео, подкасты и многое другое

Что же делать?!

Итак, вы попытались применить скандиро­вание или что-то еще, но у вас не полу­чилось или вы не уверены. Вот что надо делать. Вооружитесь каран­дашом. Возьмите текст или, если он боль­шой, его фрагмент — строк 16, не меньше. Рас­ставьте в нем уда­рения так, как вам кажется правильно, счи­таясь с интуи­цией (понятное дело, что суще­ствительные и глаголы почти всегда ударны, предлоги и союзы почти всегда безудар­ны, а остальные части речи — по-раз­ному. Напри­мер, если вам кажется, что одно и то же слово — «он», «они», «был», «стал», «свой», «свои», «всё» — в одном случае ско­рее ударное, а в дру­гом скорее нет — так и отмечайте).

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

Среди стихотворных форм еще выделяют верлибр, он же свободный стих: счи­тается, что иногда поэт пишет без любой метри­ческой схемы в голове, как бог на душу положит. В таком случае междуударные интервалы будут распреде­ляться так: чаще всего будут попадаться 2 и 3, реже — 1 и 4, еще реже — 0 и 5, но никакой из них не бу­дет специально избегаться (например, если 5 окажется чаще, чем 4, а нулей вообще не будет, повод заподозрить неладное — что это не просто верлибр, а что-то другое).

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

— Если у вас получился тактовик, но интер­валов 2 маловато, то проверьте, не является ли он на са­мом деле ямбом и хореем (с помо­щью скандирования).

— Если вам кажется, что у вас дольник, то с помо­щью скандирования про­верь­те, вдруг это идеаль­ный дактиль, или анапест, или амфибрахий. Помните стихотворение Гандлевского? В нем много «лишних» (стиховеды бы сказали, сверх­схемных) ударений на 1-м слоге, но если начать его скандировать-напе­вать, то станет ясно, что это чистейший анапест.

Если у вас сразу получились ямбы/хореи или дактили/амфибрахии/анапесты, то опреде­лите, что это конкретно (ямб или хорей и так далее), методом сканди­рования.

Метр определили. А размер?

Размер — это посчитать, сколько в строке умещается стоп (или «Иванов-Ванюш»). Сколько раз они встречаются, столько и ставьте: пять «Ванюш» — пятистопный амфибрахий, три «Вани» — трехстопный хорей и так далее. Если в разных строках число «Вань-Иванов» оказы­вается разным (как в баснях Кры­лова, «Горе от ума» или «Товарищу Нетте, пароходу и челове­ку» Маяковского), то это называют вольным (не свободным!) стихом, так и пишите: вольный ямб/амфибрахий. Если оно разное, но чередуется регулярно (как в «Памятнике» Пушкина: сначала три строки шестистопного ямба, потом одна — четырехстоп­ного, а потом заново), то так и гово­рите: урегули­рованное чередование таких-то и таких-то ямбических строк.

Впрочем, есть важные уточнения. Часто строка не делится на стопы нацело: в конце строки оказываются как бы половинки или трети стоп. Например, в строке «Вихри снежные крутя» последней стопе хорея не хватает до полноты одного слога (Ваня-Ваня-Ваня-Ва!). А в строке «Оттого, что я терпкой печалью», наоборот, слог «лью» как бы лишний (или, если вы оптимист, до полной стопы анапеста не хватает двух слогов). Правило простое: «непол­ная» стопа счита­ется, если в ней есть ударный слог (поэтому «Вихри снежные крутя» — это четырехстопный хорей несмотря ни на что), и не счи­тается, если от стопы взяты только безударные слоги («Оттого, что я терпкой печалью» — только трехстопный анапест, не четырехстопный).

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

Есть еще дольник и тактовик, они на стопы не делятся, там считают ударения. В такто­виках (которые на самом деле очень редко встречаются в русской поэ­зии, особенно в чистом виде!) просто посчитайте число междуударных интер­валов в каждой строке, все эти единицы, двойки и тройки. Посчи­тали? Теперь прибавляйте еди­ницу: если в строках по два интервала, то ударе­ний, что логич­но, три. Пишите, соответственно: трехударный тактовик.

С дольниками надо быть аккуратнее. Проще всего найти строки, в которых есть только интервалы в 1 и 2 слога, и поступить как с тактовиками: посчитайте число интервалов и добавьте единич­ку. Но если вы решили определить размер по строкам, в которых есть интервалы 4 и 5, то считайте по-другому: интерва­лы 1 и 2 — за один, а 4 или 5 — за два. Потом тоже прибав­ляйте единицу. 

В верлибре (свободном стихе) размер не счи­тается, ура!

Что, это все?

Нет, конечно. Есть много сложных и пере­ходных форм. Есть сложные про­из­ведения — в которых автор в разных строках или фраг­ментах любит стал­кивать несочетаемые обычно метры: например, ямбы, анапесты и дольники. Наконец, есть сложные гибрид­ные размеры (которыми, например, написа­но «Не выходи из комнаты…» Бродского). Но эти сложные формы на экзамене вам вряд ли попадутся — они скорее для спе­циа­листов.

P. S. Зачем все это надо?

Для счастья! То есть, конечно, я понимаю тех, кто скажет, что это сложно и скучно, но поймите и вы меня. Во-первых, стихове­дение (не такое базовое, как мы с вами сейчас вскрыли) — точная наука, с графи­ками и формулами, и от него мож­но полу­чать то же наслаждение, которое матема­тик получает от изящной теоремы. Кроме того, стиховедение часто похоже на детектив, и разга­дывать загадки очень увлекательно. Наконец, стих в его высших про­яв­лениях очень сильно связан с поэзией — с языком, на котором стихотво­рение написано, и со смыслами, которые в нем выра­жены. В некоторых шедеврах это достигает удиви­тельной связи. В старой лекции я пытался раскрыть один такой пример — на примере «Молитвы» Лермон­това (не знаю, убедит ли он вас):

@ Arzamas

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

 

Вся русская литература XIX века в 230 карточках

От публикации «Слова о полку Игореве» до последнего романа Толстого

 

Русь, Запад, Восток: 10 веков в одной таблице

От Рюрика до Робеспьера — синхронная таблица по мировой истории

 

Весь XIX век в одной таблице

От Наполеона до возрождения Олимпийских игр: главные события, герои и идеи в синхронной таблице по истории

 

Философия Просвещения в одной таблице

Главные идеи и герои европейского, американского и русского Просвещения

 

XX век: все главные стили живописи в одной таблице

Раскладываем все по полочкам: от фовизма до концептуализма

 

Средневековая литература: главные книги в одной таблице

«Беовульф», Данте, «Эдда», трубадуры и другие

Нарушая проклятие небольших наборов данных в машинном обучении: Часть 1 | Джиоти Пракаш Махесвари

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

a) Измените функцию потерь: Для задач классификации мы часто используем кросс-энтропийную потерю и редко используем среднюю абсолютную ошибку или среднеквадратичную ошибку для обучения и оптимизации нашей модели.В случае несбалансированных данных модель становится более смещенной в сторону класса большинства, поскольку она оказывает большее влияние на окончательную величину потерь, и наша модель становится менее полезной. В таких сценариях мы можем добавить веса к потерям, соответствующим различным классам, чтобы выровнять это смещение данных. Например, если у нас есть два класса с данными в соотношении 4: 1, мы можем применить веса в соотношении 1: 4 к вычислению функции потерь, чтобы данные были сбалансированы. Этот метод помогает нам легко решить проблему несбалансированных данных и улучшить обобщение модели для разных классов.Мы можем легко найти библиотеки как в R, так и в Python, которые могут помочь в назначении весов классам во время расчета потерь и оптимизации. Scikit-learn имеет удобную служебную функцию для вычисления весов на основе частот классов:

Мы можем избежать вышеуказанного вычисления, используя class_weight = `сбалансированный` , который выполняет те же вычисления, чтобы найти class_weights. Мы также можем указать явные веса классов в соответствии с нашими требованиями. Для получения более подробной информации обратитесь к документации Scikit-learn

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

Рис. 10: Изображение избыточной и недостаточной выборки (Источник)

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

d) Генерация синтетических данных: Хотя повышающая или понижающая дискретизация помогает сбалансировать данные, дублирование данных увеличивает вероятность переобучения.Другой подход к решению этой проблемы - создание синтетических данных с помощью данных о классе меньшинств. Техника передискретизации синтетических меньшинств (SMOTE) и модифицированная-SMOTE - два таких метода, которые генерируют синтетические данные. Проще говоря, SMOTE берет точки данных класса меньшинства и создает новые точки данных, которые лежат между любыми двумя ближайшими точками данных, соединенными прямой линией. Для этого алгоритм вычисляет расстояние между двумя точками данных в пространстве признаков, умножает расстояние на случайное число от 0 до 1 и помещает новую точку данных на этом новом расстоянии от одной из точек данных, используемых для определения расстояния. расчет.Обратите внимание, что количество ближайших соседей, учитываемых для генерации данных, также является гиперпараметром и может быть изменено в зависимости от требований.

Рис. 11: SMOTE в действии с k = 3 (Источник)

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

e) Методы объединения: Идея объединения нескольких слабых учащихся / разных моделей показала отличные результаты при работе с несбалансированными наборами данных. Как методы упаковки в мешки, так и методы повышения показали отличные результаты при решении множества задач, и их следует изучить вместе с методами, описанными выше, для получения лучших результатов.В попытке ограничить длину этого блога я не буду обсуждать эти методы, но для подробного понимания различных методов ансамбля и того, как их использовать для несбалансированных данных, обратитесь к следующему блогу.

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

.

Полное пошаговое руководство по машинному обучению на Python: Часть вторая | by Will Koehrsen

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

В следующем коде мы создаем объект Scikit-Learn Imputer со стратегией, установленной на медианное значение. Затем мы обучаем этот объект на обучающих данных (используя imputer.fit ) и используйте его для заполнения недостающих значений как в данных обучения, так и в данных тестирования (используя imputer.transform ). Это означает, что пропущенные значения в тестовых данных заполняются соответствующим медианным значением из обучающих данных .

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

 # Создайте импутируемый объект со средним значением стратегия наполнения 
imputer = Imputer (strategy = 'median') # Обучайте на обучающих функциях
imputer.fit (train_features) # Преобразование данных обучения и данных тестирования
X = imputer.transform (train_features)
X_test = imputer.transform (test_features) Отсутствующие значения в функциях обучения: 0
Отсутствующие значения в функциях тестирования: 0

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

Масштабирование объекта

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

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

Хотя этот процесс легко реализовать вручную, мы можем сделать это с помощью объекта MinMaxScaler в Scikit-Learn. Код этого метода идентичен коду для вменения, за исключением того, что вместо импутера используется масштабатор! Опять же, мы обязательно тренируемся только с использованием обучающих данных, а затем преобразуем все данные.

 # Создайте объект скейлера с диапазоном от 0 до 1 
scaler = MinMaxScaler (feature_range = (0, 1)) # Подгоните к скалеру данных обучения
.fit (X) # Преобразование данных обучения и тестирования
X = scaler.transform (X)
X_test = scaler.transform (X_test)

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

Реализация моделей машинного обучения в Scikit-Learn

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

Мы можем проиллюстрировать один пример создания модели, обучения (с использованием .fit ) и тестирования (с использованием .predict ) с помощью Регрессора Gradient Boosting:

  Gradient Boosted Performance на тестовом наборе: MAE = 10.0132  

Создание, обучение и тестирование моделей - каждая строка! Для построения других моделей мы используем тот же синтаксис, только меняем название алгоритма.Результаты представлены ниже:

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

Регрессор с градиентным усилением (MAE = 10,013) немного превосходит случайный лес (10,014 MAE). Эти результаты не совсем справедливы, потому что мы в основном используем значения по умолчанию для гиперпараметров. Особенно в таких моделях, как машина опорных векторов, производительность сильно зависит от этих настроек.Тем не менее, из этих результатов мы выберем регрессор с градиентным усилением для оптимизации модели.

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

Во-первых, что такое гиперпараметры и чем они отличаются от параметров?

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

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

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

Проблема с выбором правильных гиперпараметров заключается в том, что оптимальный набор будет отличаться для каждой задачи машинного обучения! Поэтому единственный способ найти лучшие настройки - это попробовать несколько из них в каждом новом наборе данных.К счастью, в Scikit-Learn есть несколько методов, позволяющих нам эффективно оценивать гиперпараметры. Более того, такие проекты, как TPOT от Epistasis Lab, пытаются оптимизировать поиск гиперпараметров, используя такие методы, как генетическое программирование. В этом проекте мы будем продолжать делать это с помощью Scikit-Learn, но следите за обновлениями, чтобы продолжить работу над сценой автоматического машинного обучения!

Случайный поиск с перекрестной проверкой

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

  • Случайный поиск относится к методике, которую мы будем использовать для выбора гиперпараметров.Мы определяем сетку, а затем произвольно выбираем различные комбинации, а не ищем по сетке, где мы исчерпывающе пробуем каждую комбинацию. (Удивительно, но случайный поиск работает почти так же, как поиск по сетке, с резким сокращением времени выполнения.)
  • Перекрестная проверка - это метод, который мы используем для оценки выбранной комбинации гиперпараметров. Вместо того, чтобы разделять обучающую систему на отдельные обучающие и проверочные наборы, что сокращает объем обучающих данных, которые мы можем использовать, мы используем перекрестную проверку K-Fold.Это включает в себя разделение обучающих данных на количество складок K, а затем прохождение итеративного процесса, в котором мы сначала тренируемся на K-1 складок, а затем оцениваем производительность в K-й кратности. Мы повторяем этот процесс K раз, и в конце K-кратной перекрестной проверки мы принимаем среднюю ошибку на каждой из K итераций в качестве окончательного показателя производительности.

Идея перекрестной проверки K-Fold с K = 5 показана ниже:

Перекрестная проверка K-Fold с K = 5 (Источник)

Весь процесс выполнения случайного поиска с перекрестной проверкой:

  1. Настройка сетка гиперпараметров для оценки
  2. Произвольная выборка комбинации гиперпараметров
  3. Создайте модель с выбранной комбинацией
  4. Оцените модель, используя перекрестную проверку в K-кратном порядке
  5. Решите, какие гиперпараметры работают лучше всего

Конечно, мы не делаем На самом деле не делайте это вручную, а позвольте Scikit-Learn RandomizedSearchCV выполнять всю работу!

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

Методы повышения стали популярны в последние годы и часто побеждают в соревнованиях по машинному обучению. Метод повышения градиента - это одна из конкретных реализаций, в которой используется градиентный спуск для минимизации функции затрат путем последовательного обучения учащихся на остатках от предыдущих.Реализация Gradient Boosting в Scikit-Learn обычно считается менее эффективной, чем другие библиотеки, такие как XGBoost, но она будет работать достаточно хорошо для нашего небольшого набора данных и довольно точна.

Вернуться к настройке гиперпараметров

Существует множество гиперпараметров для настройки в регрессоре с градиентным усилением, и вы можете посмотреть документацию Scikit-Learn для подробностей. Мы оптимизируем следующие гиперпараметры:

  • потеря : функция потерь для минимизации
  • n_estimators : количество слабых учеников (деревья решений) для использования
  • max_depth : максимальная глубина каждого дерева решений
  • min_samples_leaf : минимальное количество примеров, необходимое для конечного узла дерева решений
  • min_samples_split : минимальное количество примеров, необходимое для разделения узла дерева решений
  • max_features : максимальное количество функций использовать для разделения узлов

Я не уверен, есть ли кто-нибудь, кто действительно понимает, как все они взаимодействуют, и единственный способ найти лучшую комбинацию - это попробовать их!

В следующем коде мы строим сетку гиперпараметров, создаем объект RandomizedSearchCV и выполняем поиск гиперпараметров с использованием 4-кратной перекрестной проверки по 25 различным комбинациям гиперпараметров:

После выполнения поиска мы можем проверить RandomizedSearchCV объект, чтобы найти лучшую модель:

 # Найдите лучшую комбинацию настроек 
random_cv.best_estimator_ GradientBoostingRegressor (loss = 'lad', max_depth = 5,
max_features = None,
min_samples_leaf = 6,
min_samples_split = 6,
n_estimators = 500)

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

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

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

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

Для окончательной модели мы будем использовать 800 оценщиков, потому что это привело к наименьшей ошибке при перекрестной проверке. Пришло время опробовать эту модель!

.

Как определить совокупность и размер выборки обследования?

Каков размер выборки обследования?

По очевидным причинам невозможно обследовать эти (примерно) 400 миллионов взрослых в ЕС. Выборка взрослых, проживающих в ЕС, предлагает решение этой проблемы. Выборка - это выборка респондентов, выбранных таким образом, чтобы они представляли все население как можно лучше. Однако сразу же на первый план выходит новый вопрос: «Из скольких людей должна состоять моя выборка?» .Использование правильного размера выборки имеет решающее значение для вашего исследования. В конце концов, слишком большая выборка приведет к напрасной трате драгоценных ресурсов, таких как время и деньги, а слишком маленькая выборка не позволит вам получить надежную информацию.

Итак, какого размера должна быть ваша выборка? Следует ли вам обследовать 1%, 5%, 10%,… взрослых граждан ЕС? Что ж, это во многом зависит от того, насколько точными вы хотите, чтобы данные вашего опроса были. Другими словами, насколько близко вы хотите, чтобы ваши результаты совпадали с результатами всего населения.Есть два показателя , которые влияют на точность данных.

  • Прежде всего, это предел погрешности (или доверительные интервалы) . Короче говоря, это положительное и отрицательное отклонение, которое вы допускаете в результатах опроса для выборки. Или, другими словами, расхождение между мнением ваших респондентов и мнением всего населения. Пример проливает свет на это статистическое объяснение. Предположим, вы установили предел погрешности 5%.Если - будем надеяться! - 90% респондентов вашего опроса нравится строка «Осень 2016» , погрешность 5% означает, что вы можете быть «уверены» в том, что от 85% (90% -5) до 95% (90% + 5) всего населения действительно нравится линия 'Fall 2016' .
  • Во-вторых, уровень достоверности . Это говорит о том, как часто процент населения, которому нравится строка «Осень 2016» , на самом деле находится в пределах допустимой погрешности. Или, следуя нашему предыдущему примеру, он показывает, насколько вы можете быть уверены, что от 85% до 95% населения нравится кампания «Осень 2016» .Предположим, вы выбрали уровень достоверности 95% - что в значительной степени является стандартом в количественных исследованиях 1 - тогда в 95% случаев от 85% до 95% населения нравится строка «Осень 2016» 2 .

Сколько респондентов требуется для вашего опроса?

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

Ниже вы найдете ориентировочную таблицу о том, как рассчитать ваше число завершает . Помните, что ваше население в ЕС составляет около 400 миллионов взрослых. Как следствие, соответствующее количество завершений будет найдено в последней строке таблицы ниже. В зависимости от уровня достоверности и погрешности количество завершений будет варьироваться. Поскольку для нашей кампании «Осень 2016» мы выбрали предел погрешности 5% и уровень достоверности 95%, для вашей выборки вам потребуется примерно 400 завершений (желательно округлить до ближайшей сотни).

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

А как насчет скорости отклика?

Прежде чем вы начнете рассылать свой опрос 400 респондентам, помните, что есть такое понятие, как , коэффициент отклика . Коэффициент отклика - это соотношение респондентов , заполнивших полученные анкеты, по сравнению с общим количеством разосланных вами опросов .Например, если вы разослали свой опрос 400 людям и получили 200 заполненных опросов, ваш процент ответов составит 50%.

Для онлайн-опроса обычно показатель отклика 20% считается хорошим показателем отклика , а показатель отклика 30% считается действительно хорошим. Поскольку мы подсчитали, что нам нужно 400 завершает , это означает, что вам обязательно нужно будет отправить опрос более чем 400 людям, чтобы охватить эти 400 завершает .Очевидно, что заранее предсказать, какой скорости отклика вы достигнете, невозможно. Однако, предполагая, что ваш опрос обеспечит 20% ответов, мы делим цель в 400 завершенных ответов на 20%. Как следствие, вам придется разослать анкету примерно 2 000 взрослых в ЕС.


1 В некоторых количественных исследованиях используются более строгие уровни достоверности (например, уровень достоверности 99%)
2 Точнее говоря: 95% выборок, взятых из совокупности.

Создайте опрос сейчас

Рассчитайте собственный размер выборки с помощью нашего онлайн-калькулятора

Статьи по теме

.

Как определить свой фактический тип волос

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

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

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

.

Смотрите также