Каре

Каре разноуровневое: Рваное каре 💖 [с челкой и без] — стрижка на средние и короткие волосы

Разноуровневое каре | Красивые прически

Главная
» Разноуровневое каре

14.12.2021 в 05:42

Каре — одна из самых давних стрижек за всю историю человечества. Некоторые источники утверждают, что её носила сама Клеопатра! За множество веков её не то что не забыли, а даже перевели в разряд культовых, что позволило причёске закрепить свой статус среди модниц и простых людей. Её модернизировали столько раз, что теперь вовсе не обязательно состригать любимую длину, ведь есть стильные варианты абсолютно для каждого.

Для коротких волос

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

13.08.2022 в 21:29

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

06.08.2022 в 13:12

Цветные пряди впервые появились в Лондоне еще в 70-х годах. Это настоящий прорыв в парикмахерском искусстве. Много лет многие знаменитости красят свои пряди в разные оттенки. Это позволяет им оставаться популярными, привлекая к себе внимание окружающих

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

27. 07.2022 в 03:09

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

Советы для начинающих

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

Другой момент – правильно выбрать ножницы: слишком длинными можно пораниться, а короткими – не удастся хорошо обработать концы волос. Оптимальная длина для мужчин-парикмахеров – 5,5″ – 6,5″, для женщин-парикмахеров – 5,3″ – 5,5″.

Для левшей компания Olivia Garden разработала особые ножницы SwivelCut 575 – у них верхнее лезвие находится слева, что упрощает работу мастера.

20.07.2022 в 05:49

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

Можно выделить несколько главных особенностей таких причесок:

асимметрия;применение рваных срезов;плавные переходы;сохранение выразительности, эффектного внешнего вида.

22.06.2022 в 20:39

encoding=»utf-8″ ?

16.06.2022 в 21:58

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

Объемная

14.06.2022 в 07:13

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

Короткие стрижки, не требующие укладки

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

Пикси

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

11.05.2022 в 02:11

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

10.05.2022 в 11:46

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

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

Плюсы многослойных стрижек:

09.05.2022 в 20:45

Выбор челки на средние волосы

Чтобы подобрать правильную челку следует определить тип лица, а также густоту волос.

Любая прическа будет смотреться идеально в сочетании с правильно подобранной челкой, которая скроит недостатки и подчеркнет достоинства лица.

Косая

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

Длину челки стоит подбирать исходя из особенностей лица:

07.05.2022 в 23:43

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

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

07.05.2022 в 11:20

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

Удлиненное каре

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

03.05.2022 в 22:25

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

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

02.05.2022 в 22:39

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

Каре на средние волосы с челкой

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

01.05.2022 в 09:51

Тренд модного сезона 2021-2022 – градуированные стрижки. Они отлично помогут скрыть недостатки, выглядеть неотразимо в любой ситуации.

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

Градуированная стрижка на средние волосы.

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

30.04.2022 в 19:41

Написано статей

1

Стильные или роковые, дерзкие или романтичные,призваны подчеркнуть черты лица и придать холодный акцент образу. В тренде асимметричная, прямая, в стиле 70-х, короткая или длинная, объемная челка. Узнайте, как выглядят сейчас лучшие стрижки с челкой на средние волосы 2022 года, просмотрев фотографии и идеи образов от известных стилистов и парикмахеров.

02.04.2022 в 12:30

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

Обладательницам круглой или треугольной формы лица следует выбрать стрижку длиной до подбородка и ниже

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

Эта стрижка идеально подойдет женщинам с прямыми волосами и изящной шеей

06. 03.2022 в 21:16

Каскад

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

Стрижка каскад

Лесенка

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

Описание: Стрижка «лесенка»

25.12.2021 в 16:34

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

Короткое градуированное каре

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

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

24.12.2021 в 18:27

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

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

Уход за волосами. Мой опыт.

Уход за волосами.

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

Начну с того, что с самого раннего детства у меня были очень хорошие длинные густые волосы, я жила до 17 лет в благополучном с экологически точки зрения городке Краснодарского края и из ухода за волосами у меня был только шампунь Wash&Go и только он, больше никакими средствами ухода я не пользовалась, и это было прекрасное время! Мыла тогда голову я раз в неделю, и с этим тоже проблем никаких не было. Стричься мне особо не разрешали, краситься тоже, я почти не носила волосы распущенными, только дома, поэтому, наверное, когда я стала жить одна, я «ударилась во все тяжкие с волосами».

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

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

Немного расскажу Вам о своем уходе за волосами:

Во-первых, я больше кардинально не экспериментирую со средствами ухода за волосами, такими как шампуни и ополаскиватели. Опытным путем был сделан вывод, что мне подходят органические шампуни, именно они не забивают поры на голове и спустя месяц не вызывают привыкания и не перестают действовать. Дорогие средства мне не подходят, я конечно пробовала не все, но из тех, что приходилось-ни одно не подошло. Я покупаю такие марки как Натура Сиберика, Love2Mix, Органик шоп и т.д. (надеюсь, за рекламу не сочтут).

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

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

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

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

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

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

Ну и немного меня, чтобы не быть голословной)

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

Всем добра и лета!

r — Многоклассовые вероятности случайного леса внутри модели каретки

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

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

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

folds5 <- groupKFold(feature_data$hh_id, k = 5)
#удалить групповую переменную
feature_data <- feature_data[ ! имена (feature_data) == "hh_id"]
fitControl <- trainControl (метод = "cv",
                           число = 5,
                           индекс = складки5,
                           выборка = "вниз",
                           сохранитьPred=T)
set.seed(1)
rf_mod <- train(класс~.,feature_data,
                метод = "рф",
                норма.голосов=Т,
                #predict.all=ЛОЖЬ,
                тип = "Классификация",
                метрика = "Точность",
                число = 500,
                trControl = FitControl)
 

мои результаты имеют точность около 40%, что разумно для этого случая. это матрица путаницы:

 Матрица путаницы и статистика
          Ссылка
Прогноз 1 2 3 4 5
         1 245 399 61 57 37
         2 171 962 162 206 91
         3 50 456 131 130 51
         4 36 352 95 395 167
         5 67 182 42 263 152
Общая статистика
               Точность: 0,38
 

Первой моей мыслью продолжить было использовать функцию предсказание(. .., тип = "вероятность") , чтобы получить вероятности.
Это приводит к точности до 80%. Я предполагаю, что эти результаты неверны, потому что данные также использовались для обучения.

 прогнозирование_rf_model <- прогнозирование (rf_mod)
Caret :: ConfusionMatrix (predict_rf_model, feature_data $ class)
          Ссылка
Прогноз 1 2 3 4 5
         1 558 190 0 13 0
         2 8 1658 0 45 0
         3 1 221 491 54 2
         4 1 185 0 886 1
         5 1 97 0 53 495
Общая статистика
               Точность: 0,8242
                 95% ДИ: (0,8133, 0,8347)
 

Это означает, что я не могу использовать predict() для получения вероятностей класса

Я пытался найти поля внутри моей модели rf_mod . И я нашел несколько многообещающих полей:

  • rf_mod$pred сохраняет предсказания всех тестовых выборок, если вы установите safePred в TrainControl. При этом я получаю все предсказанные классы, что приятно

  • есть поле rf_mod$finalModel$votes , которое сохраняет вероятности класса (5 классов):

 > rf_mod$finalModel$голоса
               1 2 3 4 5
1 0,521505376 0,021505376 0,010752688 0,064516129 0,381720430
2 0,865979381 0,072164948 0,020618557 0,005154639 0,036082474
3 0,873626374 0,054945055 0,038461538 0,016483516 0,016483516
. ..
 
  • Сначала я подумал, что это то, что мне нужно, но finalModel имеет ту же или похожую матрицу путаницы, что и функция прогнозирования() с фальсифицированными (?) результатами.

Где я могу получить вероятность классификатора, как в rf_mod$finalModel$votes ?
Может быть еще один параметр для получения вероятностей, который я слишком глуп, чтобы понять.

Любое другое решение для получения вероятностей классов с групповой перекрестной проверкой также приветствуется.

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

Заранее спасибо!

Оценка моделей мультиклассовой классификации с помощью знака вставки •

В этом посте я оцениваю производительность некоторых популярных алгоритмов классификации с учителем, используя знак вставки и набор данных о бедности домохозяйств в Коста-Рике (CRHP), предоставленный Межамериканским банком развития ( IDB) через Kaggle.

Проблема и данные

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

Исследовательский анализ

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

 библиотека(tidyverse)
библиотека (каре)
библиотека (сеткаExtra)
библиотека (kableExtra)
library(rpart.plot) 

Распределение уровней бедности

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

 train_filtered %>%
  ggplot(aes(as.numeric(Target))) +
  geom_bar(aes(y = ..prop.., fill = factor(..x..)), stat = "count", show.legend = TRUE) +
  geom_text(aes(label = scales::percent(..prop..), y = ..prop..), stat = "count", vjust = -.5, size = 3) +
  scale_y_continuous (метки = Scales::percent) +
  ylab("относительные частоты") +
  ggtitle("Относительная частота уровней бедности, отфильтрованная обучающая выборка") +
  тема_минимальный() +
  тема (ось. текст.y = element_blank(), axis.title.y = element_blank(), axis.title.x = element_blank()) +
  scale_fill_viridis_d(name="Уровень бедности (целевой)",
                      разрывы = с («1», «2», «3», «4»),
                      labels=c("1 = крайняя бедность", "2 = умеренная бедность", "3 = уязвимый", "4 = неуязвимый")) 

Первое, что мы замечаем, это несбалансированный набор целей классификации. Те, кто помечен как принадлежащий к группе крайней бедности, появляются только в 8,1% случаев, в то время как те, кто не подвержен риску попасть в бедность, преобладают в 62,8% случаев. Мы учтем это позже при выборе показателей обучения и оценки нашей модели.

Распределение других числовых переменных

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

 # определить любые столбцы, которые принимают значения более 0:1
no_dummy_index <- apply(train_filtered, 2, function(x) { !all(x %in% 0:1) })
# подмножество столбцов без фиктивных
no_dummy <- train_filtered[ no_dummy_index]
# вывести имена без фиктивных столбцов
имена(no_dummy) 
 ## [1] "Id" "idhogar" "комнаты" "r4h2"
## [5] "r4h3" "r4h4" "r4m1" "r4m2"
## [9] "r4m3" "r4t1" "r4t2" "r4t3"
## [13] "tamhog" "tamviv" "escolari" "hogar_nin"
## [17] "hogar_adul" "hogar_mayor" "edjefe" "edjefa"
## [21] "спальни" "переполненность" "qмобильный телефон" "возраст"
## [25] «Цель» 

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

  • возраст , Возраст в годах
  • escolari , годы обучения
  • qmobilephone , # мобильных телефонов
  • тамвив , количество проживающих в домохозяйстве
  • переполненность , количество человек в номере
  • hogar_nin , Количество детей от 0 до 19 лет в домохозяйстве

Мы можем посмотреть, как эти переменные распределяются в зависимости от уровня бедности человека на графиках ниже:
plot_target_by_var <- функция (df, переменная) { var <- enquo(переменная) дф %>%
ggplot(aes(!!var, fill = as. factor(Цель), color = as.factor(Цель))) +
geom_density (альфа = 0,1, размер = 1, show.legend = ЛОЖЬ) +
scale_color_viridis_d() +
тема_минимальный()
}
#графические переменные, представляющие интерес
p_age <- plot_target_by_var (train_filtered, возраст) p_escolari <- plot_target_by_var(train_filtered, escolari) p_qmobilephone <- plot_target_by_var(train_filtered, p_qmobilephone) p_tamviv <- plot_target_by_var(train_filtered, tamviv) p_overcrowding <- plot_target_by_var(train_filtered, overcrowding) p_hogar_nin <- plot_target_by_var(train_filtered, hogar_nin) #отображать графики в сетке grid.arrange(p_age, p_escolar, p_qmobilephone, p_tamviv, p_overcrowding, p_hogar_nin, nrow = 2, top = textGrob("Распределение выбранных функций по классу `Цель`", gp=gpar(fontsize=15)))

Из этих графиков плотности мы можем видеть, что те, кто помечен как находящиеся в крайней нищете (фиолетовая линия), вероятно, намного моложе и имеют более низкий уровень образования, чем другие группы (которые, естественно, совпадают). Что касается образования ( escolari ), мы также можем видеть, что те, кто помечен как не подверженный бедности (желтая линия), гораздо чаще, чем другие группы, имеют более 12 лет образования или около того. Кроме того, мы можем видеть, что в крайне и умеренно бедных домохозяйствах наблюдается несколько более высокая тенденция к тому, чтобы в доме проживало больше людей (9).0015 tamviv ) в диапазоне 7+ человек на домохозяйство, и, аналогично, они, как правило, имеют более перенаселенность в пересчете на 2-4 человека на комнату.

Корреляция с переменной

Target

Еще одна вещь, на которую мы можем обратить внимание, прежде чем мы начнем строить нашу модель, — это корреляция между уровнями бедности Target со всеми характеристиками, которые мы сохранили до сих пор в нашем наборе данных.

 ## escolari epared3 pisomoscer cielorazo номера paredblolad
## 0,3220620 0,2956923 0,2850161 0,2746833 0,2641804 0,2532956
## instlevel8 спальни edjefe v18q
## 0. 2341791 0.2298932 0.2159925 0.2069992 

В приведенном выше списке представлены 10 основных переменных, которые наиболее сильно коррелируют с нашей переменной Target в любом направлении. В дополнение к некоторым переменным, которые мы только что рассмотрели, мы видим несколько бинарных фиктивных переменных вверху в этом списке, в том числе epared3 , которые показывают, хорошие ли стены дома, pisomoscer , указывающий, сделаны ли полы из керамики, paredblolad , указывающий, кирпичные ли дома стены, и cielorazo , указывающий, есть ли в доме потолок.

Моделирование

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

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

Непосредственно перед тем, как мы начнем, мы можем удалить обе наши переменные ID ( Id , idhogar ). Кроме того, на этом этапе нам необходимо преобразовать переменную или Target в фактор, чтобы наши модели машинного обучения рассматривали эту проблему как задачу классификации.

 # удалить переменные идентификатора как из `train_filtered`, так и из `test_filtered`
train_filtered <- train_filtered[ ,3:78]
test_filtered <- test_filtered[ ,3:78]
# преобразовать `Target` в фактор для обоих наборов
train_filtered$Target <- as.factor(train_filtered$Target)
test_filtered$Target <- as.factor(test_filtered$Target) 

Подгонка различных моделей классификации

В этой первой части нашего упражнения по моделированию мы просто попробуем несколько наиболее известных алгоритмов классификации, которые рассматриваются в каре пакет. Поскольку мы имеем дело с несбалансированными данными, параметр по умолчанию, который мы попытаемся оптимизировать во время обучения, будет каппа , чтобы повысить нашу производительность. Это можно сделать, добавив аргумент metric = "Kappa" к нашему вызову train() .

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

Мы можем подогнать все наши исходные модели к обучающим данным с помощью следующего кода:

 # определить модели, которые нужно попробовать
модели <- c("multinom", "lda", "naive_bayes", "svmLinear", "knn", "rpart", "ranger")
# установить контроль CV для knn, k-folds
control <- trainControl(method = "cv", number = 10, p = .9) # 10 раз, 10%
# подходящие модели
set.seed(1)
train_models <- lapply (модели, функция (модель) {
    печать (модель)
    train (Цель ~ . , метод = модель, данные = train_filtered, trControl = контроль, метрика = «Каппа»)
})
имена (train_models) <- модели 

Оценка: Макрооценки

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

Стандартная оценка \(F_1\) для всех прогнозов нашего класса может быть рассчитана следующим образом:
\[
F_1 = 2 \times \frac{\mbox{точность} \cdot \mbox{отзыв}}
{\mbox{точность} + \mbox{отзыв}}
\]
Нам также может быть полезно взглянуть на сводку по одному числу этой оценки \(F_1\), поэтому мы вычислим как макро-\(F_1\), так и взвешенную-\(F_1\), каждая из которых попытается чтобы сбалансировать важность различных классов в нашем наборе данных. (Перейдите по ссылке, чтобы ознакомиться с кратким обзором показателей Macro-\(F_1\) и Weighted-\(F_1\). 9{к}н_и}
\]

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

 # извлечь прошедшее время обучения. 
истекло <- sapply (train_models, функция (объект)
    объект$раз$все["истекшее"])
# извлечь точность из CM за один шаг без создания отдельного вектора прогнозов
acc = sapply (train_models, функция (x) {
    pred = предсказать (x, новые данные = test_filtered)
    см = матрица путаницы (предыдущая, ссылка = test_filtered $ Target)
    return(cm[["общий"]]["Точность"])
  }
)
# извлечь F1 по классам
F1 = sapply (train_models, функция (x) {
    pred = предсказать (x, новые данные = test_filtered)
    см = матрица путаницы (предыдущая, ссылка = test_filtered $ Target)
    return(cm[["byClass"]][ "F1"])
  }
)
# извлечь макрос F1
F1_M = sapply (train_models, функция (x) {
    pred = предсказать (x, новые данные = test_filtered)
    см = матрица путаницы (предыдущая, ссылка = test_filtered $ Target)
    return(mean(cm[["byClass"]][ "F1"], na.rm = TRUE))
  }
)
# извлечь взвешенный F1
F1_W <- sapply (train_models, функция (x) {
    pred = предсказать (x, новые данные = test_filtered)
    см = матрица путаницы (предыдущая, ссылка = test_filtered $ Target)
    факт = colSums (см $ таблица)
    F1 = см[["byClass"]][ "F1"]
    return((sum(actual*F1, na. rm = TRUE))/(sum(actual)))
  }
) 

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

Из этого резюме сразу бросается в глаза несколько вещей: (1) диапазон скоростей, с которыми работают эти модели, весьма различен. С одной стороны, линейный дискриминантный анализ (LDA) ( lda ), наивный байесовский анализ ( naive_bayes ), дерево решений ( rpart ) были чрезвычайно быстрыми и заняли всего несколько секунд для вычисления; а на другом конце полиномиальная логистическая регрессия ( multinom ), машина опорных векторов (SVM) ( svmLinear ) и случайный лес ( ranger ) выполнялись в 30-100 раз дольше. Наш K-ближайший сосед ( knn ) находится посередине и работает относительно быстро. Что касается того, как эти времена подгонки модели связаны с производительностью, мы можем просмотреть каждую из наших оценочных метрик одну за другой.

Скорость и точность

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

Скорость и показатель Macro-F1

Когда мы смотрим на показатели Macro-F1, картина немного меняется. Кажется, что модели остались в своих группах скорости, но самая эффективная модель теперь наша 9.Дерево решений 0201 ( rpart ), а SVM занимает второе место. Учитывая разрыв между нашей реализацией rpart и остальными, я склонен думать, что была проблема с этим расчетом Macro-F1, поэтому мы внесем этот момент в таблицу для дальнейшего изучения позже.

Скорость по сравнению со взвешенной оценкой F1

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

Оценка: микро-баллы

Выше мы видели, что наши макроусредненные метрики, по-видимому, указывают на то, что multinom дает нам наилучшую производительность, хотя и за счет умеренно продолжительного вычислительного времени, в то время как гораздо быстрее, lda , rpart или даже knn работают достаточно хорошо, используя только часть того же времени.

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

\(F_1\)-оценка по классам

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

 F1 %>% kable () %>% kable_styling() 

Сразу же мы можем заметить некоторые проблемы, а именно значения NaN и NA в svmLinear и rpart . Это, безусловно, искажает наш расчет показателей Macro-\(F_1\) и Weighted-\(F_1\) для этих двух моделей, о чем следует помнить.

Для класса : 1 , категории «крайняя бедность», мы видим, что naive_bayes на самом деле работает лучше всего.

 which.max(F1[1, ]) 

Оценка \(F-\beta\) по классам

В то время как оценка \(F_1\) учитывает как чувствительность , так и специфичность (т. е. отзыв ). Оценка \(F_1\) одинаково взвешивает важность этих двух показателей, но мы можем добавить веса, чтобы подчеркнуть, какие из двух показателей для нас более важны. Например, в этом проекте нас больше всего интересует наименее представленный класс в наборе данных (92 \cdot \mbox{точность}) + \mbox{отзыв}}
\]

Для этой меры \(\бета\) принимает число от 1 до \(\infty\), где значение 1 просто возвращает оценку \(F_1\). Чтобы посмотреть, как реагируют наши модели, я вычислю оценки \(F_2\) и \(F_3\) и оценю.

 F2 <- sapply (train_models, функция (x) {
    pred = предсказать (x, новые данные = test_filtered)
    см = матрица путаницы (предыдущая, ссылка = test_filtered $ Target)
    точность = см[["byClass"]][ , "Точность"]
    отзыв = cm[["byClass"]][ , "Отзыв"]
    return((5*точность*отзыв) / (4*точность+отзыв))
  }
)
# извлечь F-бета по классам
F3 <- sapply (train_models, функция (x) {
    pred = предсказать (x, новые данные = test_filtered)
    см = матрица путаницы (предыдущая, ссылка = test_filtered $ Target)
    точность = см[["byClass"]][ , "Точность"]
    отзыв = cm[["byClass"]][ , "Отзыв"]
    return((10*точность*отзыв) / (9*точность+отзыв))
  }
) 
Класс 1: Крайняя бедность
 класс 1 <- rbind(F1[1, ], F2[1, ], F3[1, ])
row.names(class1) <- c("F1", "F2", "F3")
class1 %>% kable(caption = "F-Beta Score, Class: 1, Extreme Poverty") %>% kable_styling() 

В приведенной выше таблице мы можем видеть, как различные \(F_beta\) оценки влияют наш класс : производительность 1 , поскольку мы придаем все большее значение , вспоминая в нашей оценке. Самым поразительным открытием здесь является то, что по мере увеличения значения \(\beta\) значения \(F_\beta\) для всех моделей уменьшаются, за исключением для naive_bayes , который на самом деле начинает работать лучше.

Класс 4: Неуязвимый
 class4 <- rbind(F1[4, ], F2[4, ], F3[4, ])
row.names(class4) <- c("F1", "F2", "F3")
class4 %>% kable(caption = "F-Beta Scores, Class: 4, Non-vulnerable") %>% kable_styling() 

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

Еще одна вещь, на которую было бы интересно обратить внимание, — это относительная важность признаков, используемых для прогнозирования. С помощью rpart мы можем относительно легко извлечь эту информацию. Как мы отмечали выше, было несколько моделей, которые вернули \(F_1\) баллов NA, и rpart была одной из них. Это может произойти с простым классификатором дерева решений, так как иногда не хватает наблюдений за конкретным классом, чтобы повлиять на измерение ошибки классификатора, поэтому класс просто отбрасывается. Эта проблема потенциально может быть устранена с помощью повышающая дискретизация или понижающая дискретизация методы, но пока давайте просто взглянем на окончательную модель:

 #дерево принятия решений
rpart.plot::rpart.plot(train_models$rpart$finalModel) 

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

Точнее, мы можем вызвать список наиболее важных функций, используя функцию varImp из каретки . Среди всех моделей, которые мы пытались подобрать до сих пор, единственная другая модель, которая принимает эту функцию, — это multinom , поэтому мы также вызовем эту модель для сравнения. Ниже приведены 10 самых важных переменных для нашего дерева решений и полиномиальной логит-модели:

 get_imp <- функция (имя модели) {
    imp <- data.frame(varImp(имя модели)$важность)
    imp$Variable <- rownames(imp)
    imp <- imp[order(-imp$Overall)[1:5], ] %>% select(Variable, Total)
    имена строк (имп) <- 1:5
    возврат (имп)
}
imp_multinom <- get_imp(train_models$multinom)
imp_rpart <- get_imp(train_models$rpart)
get_imp <- функция (имя модели) {
    imp <- data.frame(varImp(имя модели)$важность)
    imp$Variable <- rownames(imp)
    imp <- imp[order(-imp$Overall)[1:10], ] %>% select(Variable, Total)
    имена строк (имп) <- 1:10
    возврат (имп)
}
cbind(imp_rpart, imp_multinom) %>% kable(caption = "10 самых важных переменных, `rpart` и `multinom`") %>% kable_styling() 

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

Возможные следующие шаги

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

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

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