{"id":518,"date":"2023-07-29T15:29:02","date_gmt":"2023-07-29T15:29:02","guid":{"rendered":"https:\/\/statorials.org\/pl\/jak-przeprowadzic-krzyzowa-weryfikacje-wydajnosci-modelu-w-r\/"},"modified":"2023-07-29T15:29:02","modified_gmt":"2023-07-29T15:29:02","slug":"jak-przeprowadzic-krzyzowa-weryfikacje-wydajnosci-modelu-w-r","status":"publish","type":"post","link":"https:\/\/statorials.org\/pl\/jak-przeprowadzic-krzyzowa-weryfikacje-wydajnosci-modelu-w-r\/","title":{"rendered":"Jak zweryfikowa\u0107 krzy\u017cowo wydajno\u015b\u0107 modelu w r"},"content":{"rendered":"<p><\/p>\n<hr>\n<p><span style=\"color: #000000;\">W statystyce cz\u0119sto budujemy modele z dw\u00f3ch powod\u00f3w:<\/span><\/p>\n<ul>\n<li> <span style=\"color: #000000;\">Zrozumie\u0107 zwi\u0105zek pomi\u0119dzy jedn\u0105 lub wi\u0119ksz\u0105 liczb\u0105 zmiennych predykcyjnych a<\/span> <span style=\"color: #000000;\">zmienn\u0105 odpowiedzi.<\/span><\/li>\n<li> <span style=\"color: #000000;\">U\u017cyj modelu, aby przewidzie\u0107 przysz\u0142e obserwacje.<\/span><\/li>\n<\/ul>\n<p> <span style=\"color: #000000;\"><strong>Walidacja krzy\u017cowa<\/strong> jest przydatna do oszacowania, jak dobrze model jest w stanie przewidzie\u0107 przysz\u0142e obserwacje.<\/span><\/p>\n<p> <span style=\"color: #000000;\">Na przyk\u0142ad mo\u017cemy zbudowa\u0107 <a href=\"https:\/\/statorials.org\" target=\"_blank\" rel=\"noopener noreferrer\">model regresji liniowej<\/a><\/span> <span style=\"color: #000000;\">, kt\u00f3ry wykorzystuje <em>wiek<\/em> i <em>doch\u00f3d<\/em> jako zmienne predykcyjne, a <em>status domy\u015blny jako<\/em> zmienn\u0105 odpowiedzi.<\/span> <span style=\"color: #000000;\">W takim przypadku mo\u017cemy chcie\u0107 dopasowa\u0107 model do zbioru danych, a nast\u0119pnie u\u017cy\u0107 tego modelu do przewidzenia, na podstawie<\/span> <span style=\"color: #000000;\">dochod\u00f3w i wieku nowego wnioskodawcy, prawdopodobie\u0144stwa, \u017ce nie sp\u0142aci on po\u017cyczki.<\/span><\/p>\n<p> <span style=\"color: #000000;\">Aby okre\u015bli\u0107, czy model ma silne zdolno\u015bci predykcyjne, musimy go u\u017cy\u0107 do przewidywania<\/span> <span style=\"color: #000000;\">danych, kt\u00f3rych nigdy wcze\u015bniej nie widzia\u0142. Pozwoli to oszacowa\u0107 <strong>b\u0142\u0105d predykcji<\/strong> modelu.<\/span><\/p>\n<h2> <strong><span style=\"color: #000000;\">Korzystanie z walidacji krzy\u017cowej w celu oszacowania b\u0142\u0119du przewidywania<\/span><\/strong><\/h2>\n<p> <span style=\"color: #000000;\"><strong>Walidacja krzy\u017cowa<\/strong> odnosi si\u0119 do r\u00f3\u017cnych sposob\u00f3w szacowania b\u0142\u0119du przewidywania.<\/span> <span style=\"color: #000000;\">Og\u00f3lne podej\u015bcie do<\/span> <span style=\"color: #000000;\">walidacji krzy\u017cowej jest nast\u0119puj\u0105ce:<\/span><\/p>\n<p> <span style=\"color: #000000;\"><strong>1.<\/strong> Od\u0142\u00f3\u017c na bok pewn\u0105 liczb\u0119 obserwacji w zbiorze danych \u2013 zazwyczaj 15-25% wszystkich obserwacji.<\/span><br \/> <span style=\"color: #000000;\"><strong>2.<\/strong> Dopasuj (lub \u201ewytrenuj\u201d) model na obserwacjach, kt\u00f3re przechowujemy w zbiorze danych.<\/span><br \/> <span style=\"color: #000000;\"><strong>3.<\/strong> Sprawd\u017a, jak dobrze model mo\u017ce przewidywa\u0107 obserwacje, kt\u00f3rych nie wykorzystali\u015bmy do uczenia modelu.<\/span><\/p>\n<h2> <span style=\"color: #000000;\"><strong>Pomiar jako\u015bci modelu<\/strong><\/span><\/h2>\n<p> <span style=\"color: #000000;\">Kiedy u\u017cywamy dopasowanego modelu do przewidywania nowych obserwacji, mo\u017cemy u\u017cy\u0107 kilku r\u00f3\u017cnych metryk do pomiaru jako\u015bci modelu, w tym:<\/span><\/p>\n<p> <span style=\"color: #000000;\"><strong>Wielokrotne R-kwadrat:<\/strong> Mierzy si\u0142\u0119 liniowej zale\u017cno\u015bci mi\u0119dzy zmiennymi predykcyjnymi a<\/span> <span style=\"color: #000000;\">zmienn\u0105 odpowiedzi. R-kwadrat wielokrotno\u015bci 1 wskazuje na idealn\u0105 zale\u017cno\u015b\u0107 liniow\u0105, podczas gdy<\/span> <span style=\"color: #000000;\">R-kwadrat wielokrotno\u015bci 0 oznacza brak zale\u017cno\u015bci liniowej. Im wy\u017csza wielokrotno\u015b\u0107 R-kwadrat, tym wi\u0119ksze prawdopodobie\u0144stwo, \u017ce zmienne predykcyjne przewidz\u0105 zmienn\u0105 odpowiedzi.<\/span><\/p>\n<p> <span style=\"color: #000000;\"><strong>Pierwiastek \u015bredniokwadratowy (RMSE):<\/strong> mierzy \u015bredni b\u0142\u0105d przewidywania pope\u0142niany przez model podczas przewidywania warto\u015bci<\/span> <span style=\"color: #000000;\">nowej obserwacji. Jest to \u015brednia odleg\u0142o\u015b\u0107 pomi\u0119dzy prawdziw\u0105 warto\u015bci\u0105 obserwacji a warto\u015bci\u0105 przewidywan\u0105 przez model.<\/span> <span style=\"color: #000000;\">Ni\u017csze<\/span> warto\u015bci <span style=\"color: #000000;\">RMSE wskazuj\u0105 na lepsze dopasowanie modelu.<\/span><\/p>\n<p> <span style=\"color: #000000;\"><strong>\u015aredni b\u0142\u0105d bezwzgl\u0119dny (MAE):<\/strong> Jest to \u015brednia bezwzgl\u0119dna r\u00f3\u017cnica mi\u0119dzy prawdziw\u0105 warto\u015bci\u0105 obserwacji a warto\u015bci\u0105 przewidywan\u0105 przez model.<\/span> <span style=\"color: #000000;\">Metryka ta jest generalnie mniej wra\u017cliwa na warto\u015bci odstaj\u0105ce ni\u017c RMSE. Ni\u017csze warto\u015bci MAE wskazuj\u0105 na lepsze dopasowanie modelu.<\/span><\/p>\n<h2> <span style=\"color: #000000;\"><strong>Implementacja czterech r\u00f3\u017cnych technik walidacji krzy\u017cowej w R<\/strong><\/span><\/h2>\n<p> <span style=\"color: #000000;\">Nast\u0119pnie wyja\u015bnimy, jak wdro\u017cy\u0107 nast\u0119puj\u0105ce techniki walidacji krzy\u017cowej w R:<\/span><\/p>\n<p> <span style=\"color: #000000;\"><strong>1.<\/strong> Podej\u015bcie oparte na zestawie walidacyjnym<\/span><br \/> <span style=\"color: #000000;\"><strong>2.<\/strong> k-krotna walidacja krzy\u017cowa<\/span><br \/> <span style=\"color: #000000;\"><strong>3.<\/strong> Od\u0142\u00f3\u017c na bok weryfikacj\u0119 krzy\u017cow\u0105<\/span><br \/> <span style=\"color: #000000;\"><strong>4.<\/strong> Powtarzana k-krotna walidacja krzy\u017cowa<\/span><\/p>\n<p> <span style=\"color: #000000;\">Aby zilustrowa\u0107, jak korzysta\u0107 z tych r\u00f3\u017cnych technik, u\u017cyjemy podzbioru wbudowanego zbioru danych R <em>mtcars<\/em> :<\/span><\/p>\n<pre style=\"background-color: #e5e5e5; font-size: 15px;\"> <strong><span style=\"color: #008080;\">#define dataset\n<\/span>data &lt;- mtcars[, c(\"mpg\", \"disp\", \"hp\", \"drat\")]\n\n<span style=\"color: #008080;\">#view first six rows of new data\n<\/span>head(data)\n\n# mpg disp hp drat\n#Mazda RX4 21.0 160 110 3.90\n#Mazda RX4 Wag 21.0 160 110 3.90\n#Datsun 710 22.8 108 93 3.85\n#Hornet 4 Drive 21.4 258 110 3.08\n#Hornet Sportabout 18.7 360 175 3.15\n#Valiant 18.1 225 105 2.76\n<\/strong><\/pre>\n<p> <span style=\"color: #000000;\">Zbudujemy model regresji liniowej, wykorzystuj\u0105c <em>disp<\/em> , <em>hp<\/em> i <em>drat<\/em> jako zmienne predykcyjne oraz <em>mpg<\/em><\/span> <span style=\"color: #000000;\">jako zmienn\u0105 odpowiedzi.<\/span><\/p>\n<h2> <strong><span style=\"color: #000000;\">Metoda zestawu walidacyjnego<\/span><\/strong><\/h2>\n<p> <span style=\"color: #000000;\"><strong>Metoda zestawu walidacyjnego<\/strong> dzia\u0142a w nast\u0119puj\u0105cy spos\u00f3b:<\/span><\/p>\n<p> <span style=\"color: #000000;\"><strong>1.<\/strong> Podziel dane na dwa zbiory: jeden s\u0142u\u017cy do uczenia modelu (tj. szacowania parametr\u00f3w modelu),<\/span> <span style=\"color: #000000;\">a drugi do testowania modelu. Og\u00f3lnie rzecz bior\u0105c, zbi\u00f3r ucz\u0105cy jest generowany poprzez losowe wybranie<\/span> <span style=\"color: #000000;\">70\u201380% danych, a pozosta\u0142e 20\u201330% danych s\u0142u\u017cy jako zbi\u00f3r testowy.<\/span><\/p>\n<p> <span style=\"color: #000000;\"><strong>2.<\/strong> Utw\u00f3rz model, korzystaj\u0105c ze zbioru danych ucz\u0105cych.<\/span><br \/> <span style=\"color: #000000;\"><strong>3.<\/strong> Wykorzystaj model do przewidywania danych zbioru testowego.<\/span><br \/> <span style=\"color: #000000;\"><strong>4.<\/strong> Zmierz jako\u015b\u0107 modelu za pomoc\u0105 wska\u017anik\u00f3w takich jak R-kwadrat, RMSE i MAE.<\/span><\/p>\n<h3> <strong><span style=\"color: #000000;\">Przyk\u0142ad:<\/span><\/strong><\/h3>\n<p> <span style=\"color: #000000;\">W poni\u017cszym przyk\u0142adzie wykorzystano zbi\u00f3r danych zdefiniowany powy\u017cej. Najpierw dzielimy dane na<\/span><br \/> <span style=\"color: #000000;\">zbi\u00f3r ucz\u0105cy i zbi\u00f3r testowy, wykorzystuj\u0105c 80% danych jako zbi\u00f3r ucz\u0105cy, a pozosta\u0142e 20% danych<\/span> <span style=\"color: #000000;\">jako zbi\u00f3r testowy. Nast\u0119pnie budujemy model korzystaj\u0105c ze<\/span> <span style=\"color: #000000;\">zbioru ucz\u0105cego. Nast\u0119pnie u\u017cywamy modelu do przewidywania zbioru testowego. Na koniec mierzymy jako\u015b\u0107 modelu<\/span> <span style=\"color: #000000;\">za pomoc\u0105 kwadratu R, RMSE i MAE.<\/span><\/p>\n<pre style=\"background-color: #e5e5e5; font-size: 15px;\"> <strong><span style=\"color: #008080;\">#load <em>dplyr<\/em> library used for data manipulation\n<\/span>library(dplyr)\n\n<span style=\"color: #008080;\">#load <em>caret<\/em> library used for partitioning data into training and test set\n<\/span>library(caret)\n\n<span style=\"color: #008080;\">#make this example reproducible\n<\/span>set.seed(0)\n\n<span style=\"color: #008080;\">#define the dataset\n<\/span>data &lt;- mtcars[, c(\"mpg\", \"disp\", \"hp\", \"drat\")]\n\n<span style=\"color: #008080;\">#split the dataset into a training set (80%) and test set (20%).\n<\/span>training_obs &lt;- data$mpg %&gt;% createDataPartition(p = 0.8, list = FALSE)\n\ntrain &lt;- data[training_obs, ]\ntest &lt;- data[-training_obs, ]\n\n<span style=\"color: #008080;\"># Build the linear regression model on the training set\n<\/span>model &lt;- lm(mpg ~ ., data = train)\n\n<span style=\"color: #008080;\"># Use the model to make predictions on the test set\n<\/span>predictions &lt;- model %&gt;% predict(test)\n\n<span style=\"color: #008080;\">#Examine R-squared, RMSE, and MAE of predictions\n<\/span>data.frame(R_squared = R2(predictions, test$mpg),\n           RMSE = RMSE(predictions, test$mpg),\n           MAE = MAE(predictions, test$mpg))\n\n#R_squared RMSE MAE\n#1 0.9213066 1.876038 1.66614\n<\/strong><\/pre>\n<p> <span style=\"color: #000000;\">Por\u00f3wnuj\u0105c r\u00f3\u017cne modele, preferowanym modelem jest ten, kt\u00f3ry daje najni\u017cszy RMSE w zestawie testowym.<\/span><\/p>\n<h3> <span style=\"color: #000000;\"><strong>Zalety i wady tego podej\u015bcia<\/strong><\/span><\/h3>\n<p> <span style=\"color: #000000;\">Zalet\u0105 podej\u015bcia opartego na zbiorze walidacyjnym jest to, \u017ce jest proste i wydajne obliczeniowo. Wad\u0105<\/span> <span style=\"color: #000000;\">jest to, \u017ce model jest budowany przy u\u017cyciu tylko cz\u0119\u015bci wszystkich danych. Je\u015bli dane, kt\u00f3re pominiemy<\/span> <span style=\"color: #000000;\">w zbiorze ucz\u0105cym, zawieraj\u0105 interesuj\u0105ce lub warto\u015bciowe informacje, model nie we\u017amie ich pod uwag\u0119.<\/span><\/p>\n<h2> <span style=\"color: #000000;\"><strong>Metoda k-krotnej walidacji krzy\u017cowej<\/strong><\/span><\/h2>\n<p> <span style=\"color: #000000;\"><strong>Metoda k-krotnej walidacji krzy\u017cowej<\/strong> dzia\u0142a w nast\u0119puj\u0105cy spos\u00f3b:<\/span><\/p>\n<p> <span style=\"color: #000000;\"><strong>1.<\/strong> Losowo podziel dane na k \u201ecz\u0119\u015bci\u201d lub podzbior\u00f3w (na przyk\u0142ad 5 lub 10 podzbior\u00f3w).<\/span><br \/> <span style=\"color: #000000;\"><strong>2.<\/strong> Wytrenuj model na wszystkich danych, pomijaj\u0105c tylko jeden podzbi\u00f3r.<\/span><br \/> <span style=\"color: #000000;\"><strong>3.<\/strong> Wykorzystaj model do przewidywania danych z pomini\u0119tego podzbioru.<\/span><br \/> <span style=\"color: #000000;\"><strong>4.<\/strong> Powtarzaj ten proces, a\u017c ka\u017cdy z k podzbior\u00f3w zostanie u\u017cyty jako zbi\u00f3r testowy.<\/span><br \/> <span style=\"color: #000000;\"><strong>5<\/strong> . Zmierz jako\u015b\u0107 modelu, u\u015bredniaj\u0105c k b\u0142\u0119d\u00f3w testu. To jest znane<\/span><br \/> <span style=\"color: #000000;\">jako b\u0142\u0105d weryfikacji krzy\u017cowej.<\/span><\/p>\n<h3> <strong><span style=\"color: #000000;\">Przyk\u0142ad<\/span><\/strong><\/h3>\n<p> <span style=\"color: #000000;\">W tym przyk\u0142adzie najpierw dzielimy dane na<\/span> <span style=\"color: #000000;\">5 podzbior\u00f3w. Nast\u0119pnie dopasowujemy model, wykorzystuj\u0105c wszystkie dane opr\u00f3cz podzbioru. Nast\u0119pnie u\u017cywamy modelu do przewidywania<\/span> <span style=\"color: #000000;\">pomini\u0119tego podzbioru i rejestrowania b\u0142\u0119du testu (stosuj\u0105c R-kwadrat, RMSE i MAE). Powtarzamy<\/span> <span style=\"color: #000000;\">ten proces, a\u017c ka\u017cdy podzbi\u00f3r zostanie u\u017cyty jako zbi\u00f3r testowy. Nast\u0119pnie po prostu obliczamy \u015bredni\u0105 z 5<\/span> <span style=\"color: #000000;\">b\u0142\u0119d\u00f3w testowych.<\/span><\/p>\n<pre style=\"background-color: #e5e5e5; font-size: 15px;\"> <strong><span style=\"color: #008080;\">#load <em>dplyr<\/em> library used for data manipulation\n<\/span>library(dplyr)\n\n<span style=\"color: #008080;\">#load <em>caret<\/em> library used for partitioning data into training and test set\n<\/span>library(caret)\n\n<span style=\"color: #008080;\">#make this example reproducible\n<\/span>set.seed(0)\n\n<span style=\"color: #008080;\">#define the dataset\n<\/span>data &lt;- mtcars[, c(\"mpg\", \"disp\", \"hp\", \"drat\")]\n\n<span style=\"color: #008080;\">#define the number of subsets (or \"folds\") to use\n<\/span>train_control &lt;- trainControl(method = \"cv\", number = 5)\n\n<span style=\"color: #008080;\">#train the model\n<\/span>model &lt;- train(mpg ~ ., data = data, method = \"lm\", trControl = train_control)\n\n<span style=\"color: #008080;\">#Summarize the results\n<\/span>print(model)\n\n#Linear Regression \n#\n#32 samples\n#3 predictor\n#\n#No pre-processing\n#Resampling: Cross-Validated (5 fold) \n#Summary of sample sizes: 26, 25, 26, 25, 26 \n#Resampling results:\n#\n# RMSE Rsquared MAE     \n#3.095501 0.7661981 2.467427\n#\n#Tuning parameter 'intercept' was held constant at a value of TRUE\n<\/strong><\/pre>\n<h3> <strong><span style=\"color: #000000;\">Zalety i wady tego podej\u015bcia<\/span><\/strong><\/h3>\n<p> <span style=\"color: #000000;\">Zalet\u0105 podej\u015bcia k-krotnej walidacji krzy\u017cowej w por\u00f3wnaniu z podej\u015bciem zestawu walidacyjnego jest to, \u017ce buduje model kilka razy,<\/span> <span style=\"color: #000000;\">u\u017cywaj\u0105c za ka\u017cdym razem r\u00f3\u017cnych fragment\u00f3w danych, wi\u0119c nie musimy ryzykowa\u0107 pomini\u0119cia wa\u017cnych danych podczas budowania<\/span> <span style=\"color: #000000;\">modelu.<\/span><\/p>\n<p> <span style=\"color: #000000;\">Subiektywn\u0105 cz\u0119\u015bci\u0105 tego podej\u015bcia jest wyb\u00f3r warto\u015bci k, czyli liczby podzbior\u00f3w,<\/span> <span style=\"color: #000000;\">na kt\u00f3re nale\u017cy podzieli\u0107 dane. Og\u00f3lnie rzecz bior\u0105c, ni\u017csze warto\u015bci k prowadz\u0105 do wi\u0119kszego obci\u0105\u017cenia, ale mniejszej zmienno\u015bci, podczas gdy wy\u017csze warto\u015bci k<\/span> <span style=\"color: #000000;\">prowadz\u0105 do mniejszego obci\u0105\u017cenia, ale wi\u0119kszej zmienno\u015bci.<\/span><\/p>\n<p> <span style=\"color: #000000;\">W praktyce k jest zwykle wybierane jako r\u00f3wne 5 lub 10, poniewa\u017c taka liczba<\/span> <span style=\"color: #000000;\">podzbior\u00f3w pozwala jednocze\u015bnie unikn\u0105\u0107 zbyt du\u017cego b\u0142\u0119du systematycznego i zbyt du\u017cej zmienno\u015bci.<\/span><\/p>\n<h2> <span style=\"color: #000000;\"><strong>Podej\u015bcie typu Leave One Out Cross-Validation (LOOCV).<\/strong><\/span><\/h2>\n<p> <span style=\"color: #000000;\"><strong>Podej\u015bcie LOOCV<\/strong> dzia\u0142a w nast\u0119puj\u0105cy spos\u00f3b:<\/span><\/p>\n<p> <span style=\"color: #000000;\"><strong>1.<\/strong> Zbuduj model, wykorzystuj\u0105c wszystkie obserwacje ze zbioru danych z wyj\u0105tkiem jednej.<\/span><br \/> <span style=\"color: #000000;\"><strong>2.<\/strong> Wykorzystaj model do przewidzenia warto\u015bci brakuj\u0105cej obserwacji. Zapisz b\u0142\u0105d podczas testowania tej prognozy.<\/span><br \/> <span style=\"color: #000000;\"><strong>3.<\/strong> Powt\u00f3rz ten proces dla ka\u017cdej obserwacji w zbiorze danych.<\/span><br \/> <span style=\"color: #000000;\"><strong>4.<\/strong> Zmierz jako\u015b\u0107 modelu poprzez u\u015brednienie wszystkich b\u0142\u0119d\u00f3w predykcji.<\/span><\/p>\n<h3> <strong><span style=\"color: #000000;\">Przyk\u0142ad<\/span><\/strong><\/h3>\n<p> <span style=\"color: #000000;\">Poni\u017cszy przyk\u0142ad ilustruje spos\u00f3b u\u017cycia perform LOOCV dla tego samego zbioru danych, co w poprzednich przyk\u0142adach:<\/span><\/p>\n<pre style=\"background-color: #e5e5e5; font-size: 15px;\"> <strong><span style=\"color: #008080;\">#load <em>dplyr<\/em> library used for data manipulation\n<\/span>library(dplyr)\n\n<span style=\"color: #008080;\">#load <em>caret<\/em> library used for partitioning data into training and test set\n<\/span>library(caret)\n\n<span style=\"color: #008080;\">#make this example reproducible\n<\/span>set.seed(0)\n\n<span style=\"color: #008080;\">#define the dataset\n<\/span>data &lt;- mtcars[, c(\"mpg\", \"disp\", \"hp\", \"drat\")]\n\n<span style=\"color: #008080;\">#specify that we want to use LOOCV\n<\/span>train_control &lt;- trainControl( <span style=\"color: #800080;\">method = \"LOOCV\"<\/span> )\n\n<span style=\"color: #008080;\">#train the model\n<\/span>model &lt;- train(mpg ~ ., data = data, method = \"lm\", trControl = train_control)\n\n<span style=\"color: #008080;\">#summarize the results\n<\/span>print(model)\n\n#Linear Regression \n#\n#32 samples\n#3 predictor\n#\n#No pre-processing\n#Resampling: Leave-One-Out Cross-Validation \n#Summary of sample sizes: 31, 31, 31, 31, 31, 31, ... \n#Resampling results:\n#\n# RMSE Rsquared MAE     \n#3.168763 0.7170704 2.503544\n#\n#Tuning parameter 'intercept' was held constant at a value of TRUE\n<\/strong><\/pre>\n<h3> <span style=\"color: #000000;\"><strong>Zalety i wady tego podej\u015bcia<\/strong><\/span><\/h3>\n<p> <span style=\"color: #000000;\">Zalet\u0105 LOOCV jest to, \u017ce wykorzystujemy wszystkie punkty danych, co og\u00f3lnie zmniejsza potencjalne obci\u0105\u017cenie. Poniewa\u017c jednak<\/span> <span style=\"color: #000000;\">u\u017cywamy modelu do przewidywania warto\u015bci ka\u017cdej obserwacji, mo\u017ce to prowadzi\u0107 do wi\u0119kszej zmienno\u015bci<\/span> <span style=\"color: #000000;\">b\u0142\u0119du przewidywania.<\/span><\/p>\n<p> <span style=\"color: #000000;\">Inn\u0105 wad\u0105 tego podej\u015bcia jest to, \u017ce musi pasowa\u0107 do tak du\u017cej liczby modeli, \u017ce mo\u017ce sta\u0107 si\u0119 nieefektywne i wymagaj\u0105ce obliczeniowo.<\/span><\/p>\n<h2> <strong><span style=\"color: #000000;\">Metoda powtarzanej k-krotnej walidacji krzy\u017cowej<\/span><\/strong><\/h2>\n<p> <span style=\"color: #000000;\">Mo\u017cemy przeprowadzi\u0107 <strong>wielokrotn\u0105 k-krotn\u0105 weryfikacj\u0119 krzy\u017cow\u0105,<\/strong> po prostu wielokrotn\u0105 k-krotn\u0105 walidacj\u0119 krzy\u017cow\u0105. B\u0142\u0105d ko\u0144cowy to \u015bredni b\u0142\u0105d liczby<\/span> <span style=\"color: #000000;\">powt\u00f3rze\u0144.<\/span><\/p>\n<p> <span style=\"color: #000000;\">Poni\u017cszy przyk\u0142ad przeprowadza 5-krotn\u0105 weryfikacj\u0119 krzy\u017cow\u0105, powt\u00f3rzon\u0105 4 razy:<\/span><\/p>\n<pre style=\"background-color: #e5e5e5; font-size: 15px;\"> <strong><span style=\"color: #008080;\">#load <em>dplyr<\/em> library used for data manipulation\n<\/span>library(dplyr)\n\n<span style=\"color: #008080;\">#load <em>caret<\/em> library used for partitioning data into training and test set\n<\/span>library(caret)\n\n<span style=\"color: #008080;\">#make this example reproducible\n<\/span>set.seed(0)\n\n<span style=\"color: #008080;\">#define the dataset\n<\/span>data &lt;- mtcars[, c(\"mpg\", \"disp\", \"hp\", \"drat\")]\n\n<span style=\"color: #008080;\">#define the number of subsets to use and number of times to repeat k-fold CV\n<\/span>train_control &lt;- trainControl(method = \"repeatedcv\", number = 5, <span style=\"color: #800080;\">repeats = 4<\/span> )\n\n<span style=\"color: #008080;\">#train the model\n<\/span>model &lt;- train(mpg ~ ., data = data, method = \"lm\", trControl = train_control)\n\n<span style=\"color: #008080;\">#summarize the results\n<\/span>print(model)\n\n#Linear Regression \n#\n#32 samples\n#3 predictor\n#\n#No pre-processing\n#Resampling: Cross-Validated (5 fold, repeated 4 times) \n#Summary of sample sizes: 26, 25, 26, 25, 26, 25, ... \n#Resampling results:\n#\n# RMSE Rsquared MAE     \n#3.176339 0.7909337 2.559131\n#\n#Tuning parameter 'intercept' was held constant at a value of TRUE\n<\/strong><\/pre>\n<h3> <span style=\"color: #000000;\"><strong>Zalety i wady tego podej\u015bcia<\/strong><\/span><\/h3>\n<p> <span style=\"color: #000000;\">Zalet\u0105 podej\u015bcia polegaj\u0105cego na powtarzanej k-krotnej walidacji krzy\u017cowej jest to, \u017ce przy ka\u017cdym powt\u00f3rzeniu dane zostan\u0105 podzielone na nieco inne podzbiory, co powinno da\u0107 jeszcze bardziej obiektywne oszacowanie b\u0142\u0119du przewidywania modelu. Wad\u0105 tego podej\u015bcia jest to, \u017ce mo\u017ce by\u0107 wymagaj\u0105ce obliczeniowo, poniewa\u017c musimy kilkakrotnie powtarza\u0107 proces dopasowywania modelu.<\/span><\/p>\n<h2> <strong><span style=\"color: #000000;\">Jak wybra\u0107 liczb\u0119 fa\u0142d w walidacji krzy\u017cowej<\/span><\/strong><\/h2>\n<p> <span style=\"color: #000000;\">Najbardziej subiektywn\u0105 cz\u0119\u015bci\u0105 walidacji krzy\u017cowej jest podj\u0119cie decyzji, ile fa\u0142d (tj. podzbior\u00f3w) zastosowa\u0107. Og\u00f3lnie rzecz bior\u0105c, im mniejsza liczba fa\u0142d, tym bardziej obci\u0105\u017cone s\u0105 szacunki b\u0142\u0119d\u00f3w, ale b\u0119d\u0105 one mniej zmienne. I odwrotnie, im wi\u0119ksza liczba fa\u0142d, tym mniej obci\u0105\u017cone s\u0105 szacunki b\u0142\u0119d\u00f3w, ale b\u0119d\u0105 one bardziej zmienne.<\/span><\/p>\n<p> <span style=\"color: #000000;\">Wa\u017cne jest r\u00f3wnie\u017c, aby pami\u0119ta\u0107 o czasie oblicze\u0144. Dla ka\u017cdego zagi\u0119cia b\u0119dziesz musia\u0142 wytrenowa\u0107 nowy wz\u00f3r i cho\u0107 jest to powolny proces, mo\u017ce zaj\u0105\u0107 du\u017co czasu, je\u015bli wybierzesz du\u017c\u0105 liczb\u0119 zagi\u0119\u0107.<\/span><\/p>\n<p> <span style=\"color: #000000;\">W praktyce weryfikacj\u0119 krzy\u017cow\u0105 zwykle przeprowadza si\u0119 5 lub 10 razy, poniewa\u017c zapewnia to dobr\u0105 r\u00f3wnowag\u0119 mi\u0119dzy zmienno\u015bci\u0105 a obci\u0105\u017ceniem, a jednocze\u015bnie jest wydajne obliczeniowo.<\/span><\/p>\n<h2> <strong>Jak wybra\u0107 model po przeprowadzeniu walidacji krzy\u017cowej<\/strong><\/h2>\n<p> <span style=\"color: #000000;\">Walidacja krzy\u017cowa s\u0142u\u017cy do oceny b\u0142\u0119du przewidywania modelu. Mo\u017ce to pom\u00f3c nam wybra\u0107 pomi\u0119dzy dwoma lub wi\u0119ksz\u0105 liczb\u0105 r\u00f3\u017cnych modeli poprzez podkre\u015blenie, kt\u00f3ry model ma najni\u017cszy b\u0142\u0105d przewidywania (w oparciu o RMSE, R-kwadrat itp.).<\/span><\/p>\n<p> <span style=\"color: #000000;\">Po zastosowaniu walidacji krzy\u017cowej w celu wybrania najlepszego modelu wykorzystujemy <em>wszystkie<\/em> dost\u0119pne dane, aby dopasowa\u0107 go do wybranego modelu. W przypadku naszego ostatecznego modelu nie u\u017cywamy rzeczywistych instancji modelu, kt\u00f3re przeszkolili\u015bmy podczas weryfikacji krzy\u017cowej.<\/span><\/p>\n<p> <span style=\"color: #000000;\">Na przyk\u0142ad mo\u017cemy zastosowa\u0107 5-krotn\u0105 weryfikacj\u0119 krzy\u017cow\u0105, aby okre\u015bli\u0107, kt\u00f3ry model lepiej zastosowa\u0107 mi\u0119dzy dwoma r\u00f3\u017cnymi modelami regresji. Jednak gdy ju\u017c ustalimy, kt\u00f3ry model jest najlepszy, wykorzystujemy <em>wszystkie<\/em> dane, aby dopasowa\u0107 model ostateczny. Innymi s\u0142owy, buduj\u0105c ostateczny model, nie zapominamy o \u017cadnym fa\u0142dzie.<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>W statystyce cz\u0119sto budujemy modele z dw\u00f3ch powod\u00f3w: Zrozumie\u0107 zwi\u0105zek pomi\u0119dzy jedn\u0105 lub wi\u0119ksz\u0105 liczb\u0105 zmiennych predykcyjnych a zmienn\u0105 odpowiedzi. U\u017cyj modelu, aby przewidzie\u0107 przysz\u0142e obserwacje. Walidacja krzy\u017cowa jest przydatna do oszacowania, jak dobrze model jest w stanie przewidzie\u0107 przysz\u0142e obserwacje. Na przyk\u0142ad mo\u017cemy zbudowa\u0107 model regresji liniowej , kt\u00f3ry wykorzystuje wiek i doch\u00f3d jako [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[],"class_list":["post-518","post","type-post","status-publish","format-standard","hentry","category-przewodnik"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v21.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Jak zweryfikowa\u0107 krzy\u017cowo wydajno\u015b\u0107 modelu w R - Statorials<\/title>\n<meta name=\"description\" content=\"W tym samouczku wyja\u015bniono cztery r\u00f3\u017cne sposoby przeprowadzania weryfikacji krzy\u017cowej w j\u0119zyku R w celu oceny wydajno\u015bci modelu.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/statorials.org\/pl\/jak-przeprowadzic-krzyzowa-weryfikacje-wydajnosci-modelu-w-r\/\" \/>\n<meta property=\"og:locale\" content=\"pl_PL\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Jak zweryfikowa\u0107 krzy\u017cowo wydajno\u015b\u0107 modelu w R - Statorials\" \/>\n<meta property=\"og:description\" content=\"W tym samouczku wyja\u015bniono cztery r\u00f3\u017cne sposoby przeprowadzania weryfikacji krzy\u017cowej w j\u0119zyku R w celu oceny wydajno\u015bci modelu.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/statorials.org\/pl\/jak-przeprowadzic-krzyzowa-weryfikacje-wydajnosci-modelu-w-r\/\" \/>\n<meta property=\"og:site_name\" content=\"Statorials\" \/>\n<meta property=\"article:published_time\" content=\"2023-07-29T15:29:02+00:00\" \/>\n<meta name=\"author\" content=\"Benjamin Anderson\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Napisane przez\" \/>\n\t<meta name=\"twitter:data1\" content=\"Benjamin Anderson\" \/>\n\t<meta name=\"twitter:label2\" content=\"Szacowany czas czytania\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 minut\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/statorials.org\/pl\/jak-przeprowadzic-krzyzowa-weryfikacje-wydajnosci-modelu-w-r\/\",\"url\":\"https:\/\/statorials.org\/pl\/jak-przeprowadzic-krzyzowa-weryfikacje-wydajnosci-modelu-w-r\/\",\"name\":\"Jak zweryfikowa\u0107 krzy\u017cowo wydajno\u015b\u0107 modelu w R - Statorials\",\"isPartOf\":{\"@id\":\"https:\/\/statorials.org\/pl\/#website\"},\"datePublished\":\"2023-07-29T15:29:02+00:00\",\"dateModified\":\"2023-07-29T15:29:02+00:00\",\"author\":{\"@id\":\"https:\/\/statorials.org\/pl\/#\/schema\/person\/6484727a4612df3e69f016c3129c6965\"},\"description\":\"W tym samouczku wyja\u015bniono cztery r\u00f3\u017cne sposoby przeprowadzania weryfikacji krzy\u017cowej w j\u0119zyku R w celu oceny wydajno\u015bci modelu.\",\"breadcrumb\":{\"@id\":\"https:\/\/statorials.org\/pl\/jak-przeprowadzic-krzyzowa-weryfikacje-wydajnosci-modelu-w-r\/#breadcrumb\"},\"inLanguage\":\"pl-PL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/statorials.org\/pl\/jak-przeprowadzic-krzyzowa-weryfikacje-wydajnosci-modelu-w-r\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/statorials.org\/pl\/jak-przeprowadzic-krzyzowa-weryfikacje-wydajnosci-modelu-w-r\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Dom\",\"item\":\"https:\/\/statorials.org\/pl\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Jak zweryfikowa\u0107 krzy\u017cowo wydajno\u015b\u0107 modelu w r\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/statorials.org\/pl\/#website\",\"url\":\"https:\/\/statorials.org\/pl\/\",\"name\":\"Statorials\",\"description\":\"Tw\u00f3j przewodnik po kompetencjach statystycznych!\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/statorials.org\/pl\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"pl-PL\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/statorials.org\/pl\/#\/schema\/person\/6484727a4612df3e69f016c3129c6965\",\"name\":\"Benjamin Anderson\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\/\/statorials.org\/pl\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/statorials.org\/pl\/wp-content\/uploads\/2023\/11\/Benjamin-Anderson-96x96.jpg\",\"contentUrl\":\"https:\/\/statorials.org\/pl\/wp-content\/uploads\/2023\/11\/Benjamin-Anderson-96x96.jpg\",\"caption\":\"Benjamin Anderson\"},\"description\":\"Cze\u015b\u0107, jestem Benjamin i jestem emerytowanym profesorem statystyki, kt\u00f3ry zosta\u0142 oddanym nauczycielem Statorials. Dzi\u0119ki bogatemu do\u015bwiadczeniu i wiedzy specjalistycznej w dziedzinie statystyki ch\u0119tnie dziel\u0119 si\u0119 swoj\u0105 wiedz\u0105, aby wzmocni\u0107 pozycj\u0119 uczni\u00f3w za po\u015brednictwem Statorials. Wiedzie\u0107 wi\u0119cej\",\"sameAs\":[\"https:\/\/statorials.org\/pl\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Jak zweryfikowa\u0107 krzy\u017cowo wydajno\u015b\u0107 modelu w R - Statorials","description":"W tym samouczku wyja\u015bniono cztery r\u00f3\u017cne sposoby przeprowadzania weryfikacji krzy\u017cowej w j\u0119zyku R w celu oceny wydajno\u015bci modelu.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/statorials.org\/pl\/jak-przeprowadzic-krzyzowa-weryfikacje-wydajnosci-modelu-w-r\/","og_locale":"pl_PL","og_type":"article","og_title":"Jak zweryfikowa\u0107 krzy\u017cowo wydajno\u015b\u0107 modelu w R - Statorials","og_description":"W tym samouczku wyja\u015bniono cztery r\u00f3\u017cne sposoby przeprowadzania weryfikacji krzy\u017cowej w j\u0119zyku R w celu oceny wydajno\u015bci modelu.","og_url":"https:\/\/statorials.org\/pl\/jak-przeprowadzic-krzyzowa-weryfikacje-wydajnosci-modelu-w-r\/","og_site_name":"Statorials","article_published_time":"2023-07-29T15:29:02+00:00","author":"Benjamin Anderson","twitter_card":"summary_large_image","twitter_misc":{"Napisane przez":"Benjamin Anderson","Szacowany czas czytania":"10 minut"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/statorials.org\/pl\/jak-przeprowadzic-krzyzowa-weryfikacje-wydajnosci-modelu-w-r\/","url":"https:\/\/statorials.org\/pl\/jak-przeprowadzic-krzyzowa-weryfikacje-wydajnosci-modelu-w-r\/","name":"Jak zweryfikowa\u0107 krzy\u017cowo wydajno\u015b\u0107 modelu w R - Statorials","isPartOf":{"@id":"https:\/\/statorials.org\/pl\/#website"},"datePublished":"2023-07-29T15:29:02+00:00","dateModified":"2023-07-29T15:29:02+00:00","author":{"@id":"https:\/\/statorials.org\/pl\/#\/schema\/person\/6484727a4612df3e69f016c3129c6965"},"description":"W tym samouczku wyja\u015bniono cztery r\u00f3\u017cne sposoby przeprowadzania weryfikacji krzy\u017cowej w j\u0119zyku R w celu oceny wydajno\u015bci modelu.","breadcrumb":{"@id":"https:\/\/statorials.org\/pl\/jak-przeprowadzic-krzyzowa-weryfikacje-wydajnosci-modelu-w-r\/#breadcrumb"},"inLanguage":"pl-PL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/statorials.org\/pl\/jak-przeprowadzic-krzyzowa-weryfikacje-wydajnosci-modelu-w-r\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/statorials.org\/pl\/jak-przeprowadzic-krzyzowa-weryfikacje-wydajnosci-modelu-w-r\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Dom","item":"https:\/\/statorials.org\/pl\/"},{"@type":"ListItem","position":2,"name":"Jak zweryfikowa\u0107 krzy\u017cowo wydajno\u015b\u0107 modelu w r"}]},{"@type":"WebSite","@id":"https:\/\/statorials.org\/pl\/#website","url":"https:\/\/statorials.org\/pl\/","name":"Statorials","description":"Tw\u00f3j przewodnik po kompetencjach statystycznych!","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/statorials.org\/pl\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"pl-PL"},{"@type":"Person","@id":"https:\/\/statorials.org\/pl\/#\/schema\/person\/6484727a4612df3e69f016c3129c6965","name":"Benjamin Anderson","image":{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/statorials.org\/pl\/#\/schema\/person\/image\/","url":"https:\/\/statorials.org\/pl\/wp-content\/uploads\/2023\/11\/Benjamin-Anderson-96x96.jpg","contentUrl":"https:\/\/statorials.org\/pl\/wp-content\/uploads\/2023\/11\/Benjamin-Anderson-96x96.jpg","caption":"Benjamin Anderson"},"description":"Cze\u015b\u0107, jestem Benjamin i jestem emerytowanym profesorem statystyki, kt\u00f3ry zosta\u0142 oddanym nauczycielem Statorials. Dzi\u0119ki bogatemu do\u015bwiadczeniu i wiedzy specjalistycznej w dziedzinie statystyki ch\u0119tnie dziel\u0119 si\u0119 swoj\u0105 wiedz\u0105, aby wzmocni\u0107 pozycj\u0119 uczni\u00f3w za po\u015brednictwem Statorials. Wiedzie\u0107 wi\u0119cej","sameAs":["https:\/\/statorials.org\/pl"]}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"_links":{"self":[{"href":"https:\/\/statorials.org\/pl\/wp-json\/wp\/v2\/posts\/518","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/statorials.org\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/statorials.org\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/statorials.org\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/statorials.org\/pl\/wp-json\/wp\/v2\/comments?post=518"}],"version-history":[{"count":0,"href":"https:\/\/statorials.org\/pl\/wp-json\/wp\/v2\/posts\/518\/revisions"}],"wp:attachment":[{"href":"https:\/\/statorials.org\/pl\/wp-json\/wp\/v2\/media?parent=518"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/statorials.org\/pl\/wp-json\/wp\/v2\/categories?post=518"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/statorials.org\/pl\/wp-json\/wp\/v2\/tags?post=518"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}