Каре

Можно ли каре в 2021: Стрижка каре 2021: фото и способы укладки с челкой, боб, каре-каскад, удлиненное

Содержание

15 самых модных каре в 2021 году

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

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

www.pinterest.com

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

www.pinterest.com

Удлиненное каре без челки. Замечательная стрижка для волос любого типа: тонкие и не густые будут выглядеть объемнее, а плотные — мягче.

www.pinterest.com

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

www.pinterest. com

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

www.pinterest.com

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

www.pinterest.com

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

www.pinterest.com

Длинное волнистое каре с легкой асимметрией. Добавьте сюда необычный цвет и ваша прическа будет идеальной и современной.

www.pinterest.com

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

www.pinterest.com

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

www.pinterest. com

Асимметричное каре с более длинными передними прядями. Обратите внимание на затылочную часть — здесь волосы пострижены тонкими слоями для более объемной укладки.

www.pinterest.com

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

www.pinterest.com

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

www.pinterest.com

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

www.pinterest.com

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

www.pinterest.com

А вы хоть раз в жизни носили каре? Или хотите попробовать?

Читайте нас в Яндекс Дзен  LADYLINE. ME и Сам Себе Парикмахер

Топ-5 стрижек-каре, которые будут актуальны в 2022 году

Фото
Социальные сети emilyshak

Какое оно — модное каре 2022 года? Видов коротких стрижек очень много, и сделать выбор довольно сложно. Нужно отталкиваться и от современных трендов, и от формы лица, и от собственного стиля. Каре женское 2022 года может быть самой разной длины и формы. Чтобы узнать самые трендовые вариации, лови наш топ-5!

Кому подходит стрижка-каре?

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

Классическое каре

Фото
Социальные сети kafelnikova_a

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

Каре «Боб»

Фото
Getty Images

Идеальная стрижка для любительниц объемных причесок. Ее отличие от других стрижек — силуэт боба (фасолинки) 😄 Это довольно короткая стрижка, которая позволяет оголить шею. «Боб» украсит девушку с любой формой лица! Отлично подойдет обладательницам даже тонких волос, если они желают придать видимый прикорневой объем волосам. Кстати, есть еще вариант стрижки под названием «боб-каре» — гибрид двух причесок. Спереди она выглядит как классическое каре, а сзади — как «боб».

Каре с челкой

Фото
Социальные сети nastyaivleeva

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

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

Фото
Социальные сети haileybieber

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

Градуированное каре

Фото
Getty Images

Градуированное каре может быть любой длины, это не имеет значения. Главное в этой прическе — не ровный, а ярусный срез волос. Такая техника стрижки добавит «многослойности», а следовательно, и объема волосам. Градуированное каре смотрится легко и естественно, чем порадует любительниц небрежной укладки. Оно подойдет обладательницам прямых и слегка вьющихся волос. Кроме того, такая стрижка круто подчеркнет модное окрашивание: балаяж, мелирование, шатуш.

Лолита Кириллова


Теги

  • прическа
  • волосы
  • бьюти-тренды

TidyModels или CARET — как они сравниваются?

[Эта статья была впервые опубликована в блогах R — Hutsons-hacks и любезно предоставлена ​​R-блогерами]. (Вы можете сообщить о проблеме с содержанием на этой странице здесь)


Хотите поделиться своим контентом с R-блогерами? нажмите здесь, если у вас есть блог, или здесь, если у вас его нет.

Люди говорили мне больше не преподавать каретку, хотя я также преподаю TidyModels. Их аргумент заключается в том, что TidyModels является новым и блестящим, и мы должны использовать самые современные инструменты. Я понимаю это оправдание, но действительно ли карет мертв? Мой ответ: « далеко не всегда! ». Снимаю шляпу перед Максом Куном и командой за развертывание этих замечательных пакетов, и без Макса моделирование в R было бы не таким простым и увлекательным.

Как они складываются?

Это не совсем корректное сравнение, так как CARET — это единый пакет машинного обучения с сотнями алгоритмов моделирования, тогда как TidyModels — это набор пакетов на основе машинного обучения, в том числе: K-кратная перекрестная проверка

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

    Коллекция 6 906 инструментов 906 ML0066 Гораздо больше алгоритмов, чем TidyModels: models: A List of Available Models in train in Caret: Classification and Regression Training (rdrr. io)
    TidyModels Caret
    TidyModels Caret
    Документация ограничена по сравнению с Caret Обилие документации и виньеток
    Ориентирован на конвейер (предпочтительнее аккуратных преобразований среди нас) Больше похоже на базовый R
    Все еще разрабатывается, поэтому в будущем будет много новых функций Все еще поддерживается, но активно не развивается

    Сравнение Caret и TidyModel

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

    Каковы тенденции использования TidyModels и CARET в R?

    Недавно я играл с функцией получения количества загрузок пакетов в месяц. Я написал статью об этом на веб-сайте сообщества NHS-R. Эта функция принимает вектор имен пакетов и возвращает таблицу, сводку и диаграмму ggplot.

    Это подтолкнуло меня к расследованию: « карет действительно умирает? » и « » насколько популярны становятся приборки? ” Затем я также сравниваю каре и пастернак, чтобы получить более объективное сравнение.

    Ежемесячные загрузки CARET и TidyModels

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

    Ежемесячные загрузки CARET против пастернака

    Далее, чтобы проверить, как выглядит пастернак?

    Пастернак показывает аналогичный восходящий тренд, до недавнего короткого спада. Это показывает, что карет по-прежнему загружается много, но число TidyModels растет.

    Где учиться?

    Я сделал пару туториалов по каретке или TidyModels. Они были сосредоточены на задаче классификации ML, и их можно сравнивать напрямую.

    Узнать КАРЕТ

    Изучите TidyModels

    Первая часть по очистке данных с рецептами и подгонке модели с пастернаком.

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

    Привет пакету ConfusionTableR

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

    Заключительные заявления и где взять содержимое

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

    Содержание:

    • Учебник CARET — это обучение GitHub
    • Классификационная модель TidyModels — это содержимое «создание модели с нуля»
    • ConfusionTableR — это содержимое пакета для очистки выходных данных матрицы путаницы для хранения базы данных
    • PackageTracker — функция для отслеживания посылок, как описано в этой статье.

    Если вам не нравятся пакеты для моделирования в R, всегда есть чему поучиться!

    Спасибо, ребята, и до новых встреч!

    К оставьте комментарий для автора, перейдите по ссылке и оставьте комментарий в их блоге: R Blogs — Hutsons-hacks .


    R-bloggers.com предлагает ежедневных обновления по электронной почте новостей R и руководств по изучению R и многим другим темам. Нажмите здесь, если вы хотите опубликовать или найти работу R/data-science.


    Хотите поделиться своим контентом с R-блогерами? нажмите здесь, если у вас есть блог, или здесь, если у вас его нет.

    Caret vs Tidymodels: как использовать оба пакета для машинного обучения? | by Yu-En Hsu

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

    Фото Криса Барбалиса на Unsplash

    Макс Кун создает оба пакета (при участии многих других талантливых людей). Пакет Caret (сокращение от C lassification A nd RE gression T raining) упрощает процесс создания прогностических моделей и является лучшим выбором среди пользователей R. Он существует уже давно, и существует множество ресурсов, ответов и решений на все возможные вопросы. С другой стороны, tidymodels новее и построен на принципах tidyverse . RStudio наняла Макса, намеревающегося разработать опрятную версию каретки.

    Я использовал карет для прогнозного моделирования. Хотя я знаю о tidymodels , я начал исследовать только на прошлой неделе. Как и все в жизни, внедрение новой экосистемы требует времени и терпения. Так что этот пост ни в коем случае не является исчерпывающим анализом. Полный код доступен на GitHub, и опубликована HTML-версия Markdown.

    Caret — это единый пакет с различными функциями для машинного обучения. Например, createDataPartition для разделения данных и trainControl для настройки перекрестной проверки.

    tidymodels — набор пакетов для моделирования. Когда я выполняю команду library(tidymodels) , загружаются следующие пакеты:

    • rsample : для разделения данных и повторной выборки
    • пастернак : для опробования различных моделей
    • рецепты : для предварительной обработки
    • рабочий процесс : для объединения всего
    • критерий : для оценки моделей
    • 6 общая информация статистические объекты R в удобные для пользователя предсказуемые форматы

    • циферблаты : для создания и управления параметрами настройки

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

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

      Библиотека  (TIDYMODELS) 
    Библиотека (ЛИЦА)
    Библиотека (Lubridate)
    Библиотека (Tidyverse)
    (Моменты)
    Библиотека (Corprr) 04 .
    4 .
    4 .
    4 .
    4 .
    4 (MOMANTS)
    (Corprr
    bike <- read_csv("Bike-Sharing-Dataset/hour.csv")
    bike %>% dim()
    ## [1] 17379 17

    Имеется 17 379 случаев и 17 признаков. Убрал момент , поменял форматирование на год и переименованы некоторые переменные.

     велосипед %>% 
    mutate(instant = NULL, yr = yr + 2011) %>%
    rename(
    дата = день,
    год = год,
    месяц = ​​месяц,
    час = час,
    погода = погода,
    влажность = гул,
    всего = cnt
    ) ->
    велосипед
    голова (велосипед)

    Предварительный просмотр заголовка фрейма данных

    Целевая переменная

     велосипед %>% 
    pivot_longer(
    cols = c(случайный, зарегистрированный, общий),
    name_to = "тип пользователя",
    values_to = "количество"
    ) %>%
    ggplot(aes(count, color = usertype)) +
    geom_density() +
    labs(
    title = "Распределение количества арендованных велосипедов",
    x = "Количество в час", y = "Плотность"
    ) +
    scale_color_discrete(
    name = "Тип пользователя",
    breaks = c("случайный", "зарегистрированный", "всего"),
    labels = c("Незарегистрированный", "Зарегистрированный", "Всего")
    )

    Распределение целевой переменной

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

    Correlation

    Я использовал функцию corrected() из пакета corrr , который является частью tidymodels , но не загружается автоматически командой library(tidymodels) . Меня постоянно удивляет, сколько пакетов в аккуратной экосистеме. Как правило, я предпочитаю аккуратные пакеты независимым из-за интеграции конвейера и единообразия эстетики, и corrr не является исключением.

     велосипед %>% 
    select(where(is.numeric)) %>%
    корреляция() %>%
    перестановка(absolute = FALSE) %>%
    shave() ->
    bike_cor
    rplot(bike_cor, print_cor = TRUE)

    График корреляции

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

    Целевая переменная

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

     bike_all <- bike %>% 
    select(-casual, -registered)

    # Оригинал
    skewness(bike_all$total) 9(1 / 3)

    Предикторы

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

     bike_all$season <- factor( 
    bike_all$season,
    уровней = c(1, 2, 3, 4),
    labels = c("весна", "лето", "осень", "зима")
    )
    bike_all$holiday <- factor(
    bike_all$holiday,
    уровней = c(0, 1), labels = c(FALSE, TRUE)
    )
    bike_all$workingday <- factor(
    bike_all$workingday,
    уровней = c(0, 1), метки = c(ЛОЖЬ, ИСТИНА)
    )
    bike_all$weather <- factor(
    bike_all$weather,
    уровней = c(1, 2, 3, 4),
    меток = c("ясно", "облачно", "дождь", "сильный дождь"),
    order = TRUE
    )
    head(bike_all)

    Предварительный просмотр заголовка фрейма данных

    Оба пакета предоставляют функции для общих стратегий разделения данных, таких как k -кратность, сгруппированная k-кратность, пропуск единицы и начальная загрузка. Но tidyverse кажется более полной, так как включает перекрестную проверку Монте-Карло (я не знаю, что это такое, но звучит круто) и вложенная перекрестная проверка . Я особо выделил этот метод, потому что в исследовательской работе было обнаружено, что «подходы с вложенным CV и разделением обучения/тестирования дают надежные и непредвзятые оценки производительности независимо от размера выборки». (Vabalas et al., 2019)

    tidymodels

    Библиотека tidymodels rsample обрабатывает разделение данных. Разделение обучения и тестирования выполняется, как показано, вместе с 10-кратной перекрестной проверкой.

     set.seed(25) 
    split <- initial_split(bike_all, prop = 0.8)
    train_data <- training(split)
    train_data %>% dim()
    ## [1] 13904 14

    test_data <- testing(split)
    test_data %>% dim()
    ## [1] 3475 14

    train_cv <- vfold_cv(train_data, v = 10)

    знак вставки

    Доступны две опции:

    • Использовать собственные функции DataPart , такие как create 1019 9019 9.
     set.seed(25) 
    train_index <- createDataPartition(
    bike_all$total, p = 0,8, times = 1, list = FALSE
    )
    train_data <- mics[ train_index, ]
    test_data <- mics[-train_index, ]

    fold_index <- createFolds(
    train_data$total,
    k = 10, returnTrain = TRUE, list = TRUE
    )
    train_cv <- trainControl(method="cv", index = fold_index)

    • Используйте функцию rsample2caret от tidymodels, которая возвращает список, имитирующий индекс и indexOut элементов объект trainControl .
     train_cv_caret <- rsample2caret(train_cv) 
    ctrl_caret <- trainControl(
    method = "cv",
    index = train_cv_caret$index,
    indexOut = train_cv_caret$indexOut
    ) 9000 Два пакета очень похожи. Интересно, что trainControl указывает только стратегию перекрестной проверки, но не данные. Тем не менее, благодаря командам rsample2caret() и командам caret2rsample() из tidymodels легко настроить ресемплинг в любом пакете, который вы предпочитаете. Здесь я использовал rsample2caret() для создания 10-кратных индексов для Caret , чтобы обеспечить идентичность перекрестной проверки для обоих.

    В каретке одна функция preProcess охватывает всю предварительную обработку числовых признаков, включая вменение, центрирование, масштабирование и преобразование мощности. Для категориальных функций я могу либо использовать dummyVars для создания фиктивных переменных, либо оставить значение 9. 0190 train , который обрабатывает факторы во время обучения модели. Одна вещь, которую я нахожу разочаровывающей, заключается в том, что я не могу указать предварительную обработку для разных переменных. Например, я хочу использовать преобразование Бокса-Кокса, чтобы нормализовать сильно искаженную переменную. Но preProcess выполняет преобразование для всех предикторов. Если вы знакомы с sklearn в Python, я говорю, что хочу ColumnTransformer .

    tidymodels

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

     prep_recipe <- 
    recipe(total ~ ., data = train_data) %>%
    step_rm(год, месяц, день недели) %>%
    step_date(дата) %>%
    step_corr(all_numeric(), порог = 0,8) %>%
    step_dummy(all_nominal())

    знак вставки

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

     подготовка <- предварительная обработка (отсечка = 0,8) 

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

     train_data_caret <- 
    prep(prep_recipe) %>% Bake(new_data = NULL)

    test_data_caret <-
    prep(prep_recipe) %>% Bake(new_data = test_data)

    Две пользовательские функции, которые я буду использовать позже: 7 7 7 # Создание таблиц предсказания
    предсказание_таблицы <- 93
    )
    }
    result
    }

    # Извлечь RMSE для моделей
    pull_rmse <- function (result_table) {
    rmse_result <- rmse(result_table, pred, fact) %>0 9027 rmse_result_real <- rmse(result_table, pred_real, fact_real) %>%
    pull(. estimate)
    result <- c(rmse = rmse_result, real_rmse = rmse_result_real)
    }

    Базовый уровень

    всего 93
    ) %>%
    mutate(pred = mean(actual), pred_real = mean(actual_real))base_train_rmse <- pull_rmse(base_train_pred)
    print(base_train_rmse)
    ## rmse real_rmse
    ## 2.032927 181.063306base_rmse(base_rmse_rmse) base_test_pred)
    print(base_test_rmse)
    ## rmse real_rmse
    ## 2.02608 182.61370

    Деревья решений с tidymodels

    пастернак для моделирования, well 9190 workflow

  • 1 для настройки параметров и критерий для показателей производительности. Мне также было любопытно узнать время, поэтому я также записал время.

      # Сложность стоимости для параметра дерева решений  
    tree_cp <- seq(0.01, 0.1, 0.01)

    set.seed(25)
    tree_tidy_time1 <- Sys.time()

    # Укажите модель tree <-engine

    9

    9
    дерево_решений(режим = "регрессия", стоимость_сложность = настройка()) %>%
    set_engine("rpart")

    # Установить рабочий процесс (предварительный процесс и модель)
    tree_workflow <-
    workflow() %>%
    add_recipe(prep_recipe) %>%
    add_model(tree_engine)

    # Настройка параметров с перекрестной проверкой
    tree_gridune (
    tree_workflow,
    resamples = train_cv,
    grid = data. frame(cost_complexity = tree_cp),
    metrics = metric_set(rmse)
    )

    # Подгонка снова с лучшим параметром select_best(tree_tune)) %>%
    fit(train_data)

    tree_tidy_time2 <- Sys.time()
    print(tree_tidy_time2 - tree_tidy_time1)
    ## Разница во времени 1,376683 мин

    Перекрестная проверка десяти параметров занимает около 1 минуты 20 секунд. Как только это будет сделано, я могу предсказать целевую переменную и проверить производительность модели с помощью RMSE. Здесь я использовал пользовательские функции predict_table и pull_rmse для выполнения задачи.

     tree_tidy_train_pred <- predict_table(tree_best, train_data, TRUE) 
    tree_tidy_train_rmse <- pull_rmse(tree_tidy_train_pred)
    print(tree_tidy_train_rmse)
    ## rmse real_rmse
    ## 1.078724 116.106006tree_tidy_test_pred <- predict_table(tree_best, test_data, TRUE)
    tree_tidy_test_rmse <- pull_rmse(tree_tidy_test_pred)
    print(tree_tidy_test_rmse)
    ## rmse real_rmse
    ## 1. 074347 118.205989

    Деревья решений с кареткой

     set.seed(25) 
    tree_caret_time1 <- Sys.time()
    tree_caret <- train(
    total~.,
    data = train_data_caret,
    method = "rpart",
    trControl = ctrl_caret,
    metric = "RMSE",
    tuneGrid = data.frame(cp = tree_cp)
    )
    tree_caret_time2 <- Sys.time( )
    print(tree_caret_time2 - tree_caret_time1)
    ## Разница во времени 4,469931 сек. Это занимает всего 4,5 секунды. Кроме того, код намного короче. Функция train включает метод модели = "rpart" , перекрестную проверку trControl = ctrl_caret и настройка параметров tuneGrid = data.frame(cp = tree_cp) .

     tree_caret_train_pred <- predict_table(tree_caret, train_data_caret, FALSE) 
    tree_caret_train_rmse <- pull_rmse(tree_caret_train_pred)
    print(tree_caret_train_rmse)
    ## rmse real_rmse
    ## 1.078724 116.106006tree_caret_test_pred <- predict_table(tree_caret, test_data_caret, FALSE)
    tree_caret_test_rmse < - pull_rmse(tree_caret_test_pred)
    print(tree_caret_test_rmse)
    ## rmse real_rmse
    ## 1. 074347 118.205989

    Compare models

     rbind( 
    base_train_rmse, base_test_rmse,
    tree_tidy_train_rmse, tree_tidy_test_rmse,
    tree_caret_train_rmse, tree_caret_test_rmse
    )## rmse real_rmse
    ## base_train_rmse 2.032927 181.0633
    ## base_test_rmse 2.026080 182.6137
    ## tree_tidy_train_rmse 1.078724 116.1060
    ## tree_tidy_test_rmse 1.074347 118.2060
    ## tree_caret_train_rmse 1.078724 116.1060
    ## tree_caret_test_rmse 1.074347 118.2060

    Как видите, результаты модели дерева решений одинаковы независимо от библиотеки, поскольку я разделил данные и настроил перекрестную проверку одинаковым образом. Более того, и tidymodels, и Caret используют rpart в качестве базового движка. Поэтому кажется странным, что tidymodels занимает более 1 минуты, в то время как карете требуется всего 4–5 секунд для запуска дерева решений.

    Я пользуюсь tidymodels уже несколько недель, и мне очень нравится интегрироваться в tidyverse.