{"id":1222,"date":"2023-07-27T05:56:29","date_gmt":"2023-07-27T05:56:29","guid":{"rendered":"https:\/\/statorials.org\/nl\/inpakken-in-r\/"},"modified":"2023-07-27T05:56:29","modified_gmt":"2023-07-27T05:56:29","slug":"inpakken-in-r","status":"publish","type":"post","link":"https:\/\/statorials.org\/nl\/inpakken-in-r\/","title":{"rendered":"Opzakken uitvoeren in r (stap voor stap)"},"content":{"rendered":"<p><\/p>\n<hr>\n<p><span style=\"color: #000000;\">Wanneer we een <a href=\"https:\/\/statorials.org\/nl\/classificatie-en-regressiebomen\/\" target=\"_blank\" rel=\"noopener noreferrer\">beslissingsboom<\/a> maken voor een bepaalde dataset, gebruiken we slechts \u00e9\u00e9n trainingsdataset om het model te bouwen.<\/span><\/p>\n<p> <span style=\"color: #000000;\">Het nadeel van het gebruik van \u00e9\u00e9n enkele beslissingsboom is echter dat deze vaak te kampen heeft met <a href=\"https:\/\/statorials.org\/nl\/bias-variantie-compromis\/\" target=\"_blank\" rel=\"noopener noreferrer\">een hoge variantie<\/a> . Dat wil zeggen: als we de dataset in twee helften splitsen en de beslissingsboom op beide helften toepassen, kunnen de resultaten heel verschillend zijn.<\/span><\/p>\n<p> <span style=\"color: #000000;\">E\u00e9n methode die we kunnen gebruiken om de variantie van een enkele beslissingsboom te verkleinen, staat bekend als <a href=\"https:\/\/statorials.org\/nl\/machine-learning-in-zakken-doen\/\" target=\"_blank\" rel=\"noopener noreferrer\">&#8218;bagging&#8216;<\/a> , ook wel <em>bootstrap-aggregatie<\/em> genoemd.<\/span><\/p>\n<p data-slot-rendered-dynamic=\"true\"> <span style=\"color: #000000;\">Het opzakken werkt als volgt:<\/span><\/p>\n<p> <span style=\"color: #000000;\"><strong>1.<\/strong> Neem <em>b-<\/em> bootstrapped samples uit de originele dataset.<\/span><\/p>\n<p> <span style=\"color: #000000;\"><strong>2.<\/strong> Maak een beslissingsboom voor elk bootstrap-voorbeeld.<\/span><\/p>\n<p> <span style=\"color: #000000;\"><strong>3.<\/strong> Gemiddelde van de voorspellingen van elke boom om een definitief model te verkrijgen.<\/span><\/p>\n<p> <span style=\"color: #000000;\">Door honderden of zelfs duizenden individuele beslisbomen te bouwen en de gemiddelde voorspellingen van alle bomen te nemen, eindigen we vaak met een passend tasmodel dat een veel lager testfoutenpercentage oplevert vergeleken met een enkele beslissingsboom.<\/span><\/p>\n<p> <span style=\"color: #000000;\">Deze zelfstudie biedt een stapsgewijs voorbeeld van hoe u een model in een zak kunt maken in R.<\/span><\/p>\n<h3> <span style=\"color: #000000;\"><strong>Stap 1: Laad de benodigde pakketten<\/strong><\/span><\/h3>\n<p> <span style=\"color: #000000;\">Eerst laden we de benodigde pakketten voor dit voorbeeld:<\/span><\/p>\n<pre style=\"background-color: #ececec; font-size: 15px;\"> <strong><span style=\"color: #993300;\">library<\/span> (dplyr) <span style=\"color: #008080;\">#for data wrangling<\/span>\n<span style=\"color: #993300;\">library<\/span> (e1071) <span style=\"color: #008080;\">#for calculating variable importance<\/span>\n<span style=\"color: #993300;\">library<\/span> (caret) <span style=\"color: #008080;\">#for general model fitting<\/span>\n<span style=\"color: #993300;\">library<\/span> (rpart) <span style=\"color: #008080;\">#for fitting decision trees<\/span>\n<span style=\"color: #993300;\">library<\/span> (ipred) <span style=\"color: #008080;\">#for fitting bagged decision trees\n<\/span><\/strong><\/pre>\n<h3> <span style=\"color: #000000;\"><strong>Stap 2: Monteer het model met zak<\/strong><\/span><\/h3>\n<p> <span style=\"color: #000000;\">Voor dit voorbeeld gebruiken we een ingebouwde R-dataset genaamd <strong>Air Quality<\/strong> , die metingen bevat van de luchtkwaliteit in New York City gedurende 153 afzonderlijke dagen.<\/span><\/p>\n<pre style=\"background-color: #ececec; font-size: 15px;\"> <strong><span style=\"color: #008080;\">#view structure of air quality dataset<\/span>\nstr(airquality)\n\n'data.frame': 153 obs. of 6 variables:\n $ Ozone: int 41 36 12 18 NA 28 23 19 8 NA ...\n $Solar.R: int 190 118 149 313 NA NA 299 99 19 194 ...\n $ Wind: num 7.4 8 12.6 11.5 14.3 14.9 8.6 13.8 20.1 8.6 ...\n $ Temp: int 67 72 74 62 56 66 65 59 61 69 ...\n $Month: int 5 5 5 5 5 5 5 5 5 5 ...\n $Day: int 1 2 3 4 5 6 7 8 9 10 ...\n<\/strong><\/pre>\n<p> <span style=\"color: #000000;\">De volgende code laat zien hoe u een in zakken verpakt model in R kunt passen met behulp van de functie <strong>bagging()<\/strong> uit de <strong>ipred-<\/strong> bibliotheek.<\/span><\/p>\n<pre style=\"background-color: #ececec; font-size: 15px;\"> <strong><span style=\"color: #008080;\">#make this example reproducible\n<\/span>set.seed(1)\n\n<span style=\"color: #008080;\">#fit the bagged model\n<\/span>bag &lt;- bagging(\n  formula = Ozone ~ .,\n  data = airquality,\n  nbagg = <span style=\"color: #008000;\">150<\/span> ,   \n  coob = <span style=\"color: #008000;\">TRUE<\/span> ,\n  control = rpart. <span style=\"color: #3366ff;\">control<\/span> (minsplit = <span style=\"color: #008000;\">2<\/span> , cp = <span style=\"color: #008000;\">0<\/span> )\n)\n\n<span style=\"color: #008080;\">#display fitted bagged model\n<\/span>bag\n\nBagging regression trees with 150 bootstrap replications \n\nCall: bagging.data.frame(formula = Ozone ~ ., data = airquality, nbagg = 150, \n    coob = TRUE, control = rpart.control(minsplit = 2, cp = 0))\n\nOut-of-bag estimate of root mean squared error: 17.4973<\/strong><\/pre>\n<p> <span style=\"color: #000000;\">Merk op dat we ervoor hebben gekozen om <strong>150<\/strong> bootstrapped-monsters te gebruiken om het in zakken verpakte model te bouwen en dat we hebben gespecificeerd dat <strong>coob<\/strong> <strong>WAAR<\/strong> is om de geschatte out-of-bag-fout te verkrijgen.<\/span><\/p>\n<p> <span style=\"color: #000000;\">We hebben ook de volgende specificaties gebruikt in de functie <strong>rpart.control()<\/strong> :<\/span><\/p>\n<ul>\n<li> <span style=\"color: #000000;\"><strong>minsplit = 2:<\/strong> Dit vertelt het model dat er slechts 2 waarnemingen in een knooppunt nodig zijn om te splitsen.<\/span><\/li>\n<li> <span style=\"color: #000000;\"><strong>cp = 0<\/strong> . Dit is de complexiteitsparameter. Door dit op 0 in te stellen, is het niet nodig dat het model de algehele pasvorm op enigerlei wijze kan verbeteren om een splitsing uit te voeren.<\/span><\/li>\n<\/ul>\n<p> <span style=\"color: #000000;\">In wezen zorgen deze twee argumenten ervoor dat individuele bomen extreem diep kunnen groeien, wat leidt tot bomen met een hoge variantie maar een lage bias. Wanneer we vervolgens bagging toepassen, kunnen we de variantie van het uiteindelijke model verkleinen, terwijl de bias laag blijft.<\/span><\/p>\n<p> <span style=\"color: #000000;\">Uit de modelresultaten kunnen we zien dat de geschatte out-of-bag RMSE <strong>17,4973<\/strong> bedraagt. Dit is het gemiddelde verschil tussen de voorspelde waarde voor ozon en de werkelijk waargenomen waarde.<\/span><\/p>\n<h3> <span style=\"color: #000000;\"><strong>Stap 3: Visualiseer het belang van de voorspellers<\/strong><\/span><\/h3>\n<p> <span style=\"color: #000000;\">Hoewel modellen met zakken vaak nauwkeurigere voorspellingen geven dan individuele beslissingsbomen, is het moeilijk om de resultaten van modellen met zakken te interpreteren en te visualiseren.<\/span><\/p>\n<p> <span style=\"color: #000000;\">We kunnen het belang van voorspellende variabelen echter visualiseren door de totale reductie in RSS (resterende som van kwadraten) als gevolg van de verdeling over een bepaalde voorspellende factor te berekenen, gemiddeld over alle bomen. Hoe groter de waarde, hoe belangrijker de voorspeller.<\/span><\/p>\n<p> <span style=\"color: #000000;\">De volgende code laat zien hoe u een variabele belangrijkheidsplot voor het passende tasmodel kunt maken, met behulp van de functie <strong>varImp()<\/strong> uit de <strong>caret-<\/strong> bibliotheek:<\/span> <\/p>\n<pre style=\"background-color: #ececec; font-size: 15px;\"> <strong><span style=\"color: #008080;\">#calculate variable importance\n<\/span>VI &lt;- data.frame(var= <span style=\"color: #3366ff;\">names<\/span> (airquality[,-1]), imp= <span style=\"color: #3366ff;\">varImp<\/span> (bag))\n\n<span style=\"color: #008080;\">#sort variable importance descending\n<\/span>VI_plot &lt;- VI[ <span style=\"color: #3366ff;\">order<\/span> (VI$Overall, decreasing= <span style=\"color: #008000;\">TRUE<\/span> ),]\n\n<span style=\"color: #008080;\">#visualize variable importance with horizontal bar plot\n<\/span>barplot(VI_plot$Overall,\n        names.arg= <span style=\"color: #3366ff;\">rownames<\/span> (VI_plot),\n        horiz= <span style=\"color: #008000;\">TRUE<\/span> ,\n        col=' <span style=\"color: #008000;\">steelblue<\/span> ',\n        xlab=' <span style=\"color: #008000;\">Variable Importance<\/span> ')\n<\/strong><\/pre>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter wp-image-12115 \" src=\"https:\/\/statorials.org\/wp-content\/uploads\/2023\/08\/sac1.png\" alt=\"Variabele belangrijkheidsgrafiek in R\" width=\"424\" height=\"392\" srcset=\"\" sizes=\"auto, \"><\/p>\n<p> <span style=\"color: #000000;\">We kunnen zien dat <strong>Solar.R<\/strong> de belangrijkste voorspellende variabele in het model is, terwijl <strong>Maand<\/strong> de minst belangrijke is.<\/span><\/p>\n<h3> <span style=\"color: #000000;\"><strong>Stap 4: Gebruik het model om voorspellingen te doen<\/strong><\/span><\/h3>\n<p> <span style=\"color: #000000;\">Tenslotte kunnen we met het \u2018fitting bag\u2019-model voorspellingen doen over nieuwe waarnemingen.<\/span><\/p>\n<pre style=\"background-color: #ececec; font-size: 15px;\"> <strong><span style=\"color: #008080;\">#define new observation\n<\/span>new &lt;- data.frame(Solar.R=150, Wind=8, Temp=70, Month=5, Day=5)\n\n<span style=\"color: #008080;\">#use fitted bagged model to predict Ozone value of new observation\n<\/span>predict(bag, newdata=new)\n\n24.4866666666667\n<\/strong><\/pre>\n<p> <span style=\"color: #000000;\">Op basis van de waarden van de voorspellende variabelen voorspelt het tasmodel dat de ozonwaarde op deze specifieke dag <strong>24.487<\/strong> zal zijn.<\/span><\/p>\n<p> <span style=\"color: #000000;\">De volledige R-code die in dit voorbeeld wordt gebruikt, vindt u <a href=\"https:\/\/github.com\/Statorials\/R-Guides\/blob\/main\/bagging.R\" target=\"_blank\" rel=\"noopener noreferrer\">hier<\/a> .<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Wanneer we een beslissingsboom maken voor een bepaalde dataset, gebruiken we slechts \u00e9\u00e9n trainingsdataset om het model te bouwen. Het nadeel van het gebruik van \u00e9\u00e9n enkele beslissingsboom is echter dat deze vaak te kampen heeft met een hoge variantie . Dat wil zeggen: als we de dataset in twee helften splitsen en de beslissingsboom [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[11],"tags":[],"class_list":["post-1222","post","type-post","status-publish","format-standard","hentry","category-gids"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v21.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>R inpakken (stap voor stap) - Statorials<\/title>\n<meta name=\"description\" content=\"In deze tutorial wordt uitgelegd hoe u R kunt inpakken, inclusief een stapsgewijs voorbeeld.\" \/>\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\/nl\/inpakken-in-r\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"R inpakken (stap voor stap) - Statorials\" \/>\n<meta property=\"og:description\" content=\"In deze tutorial wordt uitgelegd hoe u R kunt inpakken, inclusief een stapsgewijs voorbeeld.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/statorials.org\/nl\/inpakken-in-r\/\" \/>\n<meta property=\"og:site_name\" content=\"Statorials\" \/>\n<meta property=\"article:published_time\" content=\"2023-07-27T05:56:29+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/statorials.org\/wp-content\/uploads\/2023\/08\/sac1.png\" \/>\n<meta name=\"author\" content=\"Dr.benjamin anderson\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Dr.benjamin anderson\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"4\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/statorials.org\/nl\/inpakken-in-r\/\",\"url\":\"https:\/\/statorials.org\/nl\/inpakken-in-r\/\",\"name\":\"R inpakken (stap voor stap) - Statorials\",\"isPartOf\":{\"@id\":\"https:\/\/statorials.org\/nl\/#website\"},\"datePublished\":\"2023-07-27T05:56:29+00:00\",\"dateModified\":\"2023-07-27T05:56:29+00:00\",\"author\":{\"@id\":\"https:\/\/statorials.org\/nl\/#\/schema\/person\/d4b8842173cca1bb62cdec41860e4219\"},\"description\":\"In deze tutorial wordt uitgelegd hoe u R kunt inpakken, inclusief een stapsgewijs voorbeeld.\",\"breadcrumb\":{\"@id\":\"https:\/\/statorials.org\/nl\/inpakken-in-r\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/statorials.org\/nl\/inpakken-in-r\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/statorials.org\/nl\/inpakken-in-r\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Thuis\",\"item\":\"https:\/\/statorials.org\/nl\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Opzakken uitvoeren in r (stap voor stap)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/statorials.org\/nl\/#website\",\"url\":\"https:\/\/statorials.org\/nl\/\",\"name\":\"Statorials\",\"description\":\"Uw gids voor statistische competentie\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/statorials.org\/nl\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"de\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/statorials.org\/nl\/#\/schema\/person\/d4b8842173cca1bb62cdec41860e4219\",\"name\":\"Dr.benjamin anderson\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/statorials.org\/nl\/#\/schema\/person\/image\/\",\"url\":\"http:\/\/statorials.org\/nl\/wp-content\/uploads\/2023\/10\/Dr.-Benjamin-Anderson-96x96.jpg\",\"contentUrl\":\"http:\/\/statorials.org\/nl\/wp-content\/uploads\/2023\/10\/Dr.-Benjamin-Anderson-96x96.jpg\",\"caption\":\"Dr.benjamin anderson\"},\"description\":\"Ik ben Benjamin, een gepensioneerde hoogleraar statistiek die nu een toegewijde Statorials-lesgever is. Ik heb uitgebreide ervaring en expertise op het gebied van statistiek en ik ben vastbesloten om mijn kennis te delen met studenten via Statorials. Lees verder\",\"sameAs\":[\"http:\/\/statorials.org\/nl\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"R inpakken (stap voor stap) - Statorials","description":"In deze tutorial wordt uitgelegd hoe u R kunt inpakken, inclusief een stapsgewijs voorbeeld.","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\/nl\/inpakken-in-r\/","og_locale":"de_DE","og_type":"article","og_title":"R inpakken (stap voor stap) - Statorials","og_description":"In deze tutorial wordt uitgelegd hoe u R kunt inpakken, inclusief een stapsgewijs voorbeeld.","og_url":"https:\/\/statorials.org\/nl\/inpakken-in-r\/","og_site_name":"Statorials","article_published_time":"2023-07-27T05:56:29+00:00","og_image":[{"url":"https:\/\/statorials.org\/wp-content\/uploads\/2023\/08\/sac1.png"}],"author":"Dr.benjamin anderson","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Dr.benjamin anderson","Gesch\u00e4tzte Lesezeit":"4\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/statorials.org\/nl\/inpakken-in-r\/","url":"https:\/\/statorials.org\/nl\/inpakken-in-r\/","name":"R inpakken (stap voor stap) - Statorials","isPartOf":{"@id":"https:\/\/statorials.org\/nl\/#website"},"datePublished":"2023-07-27T05:56:29+00:00","dateModified":"2023-07-27T05:56:29+00:00","author":{"@id":"https:\/\/statorials.org\/nl\/#\/schema\/person\/d4b8842173cca1bb62cdec41860e4219"},"description":"In deze tutorial wordt uitgelegd hoe u R kunt inpakken, inclusief een stapsgewijs voorbeeld.","breadcrumb":{"@id":"https:\/\/statorials.org\/nl\/inpakken-in-r\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/statorials.org\/nl\/inpakken-in-r\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/statorials.org\/nl\/inpakken-in-r\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Thuis","item":"https:\/\/statorials.org\/nl\/"},{"@type":"ListItem","position":2,"name":"Opzakken uitvoeren in r (stap voor stap)"}]},{"@type":"WebSite","@id":"https:\/\/statorials.org\/nl\/#website","url":"https:\/\/statorials.org\/nl\/","name":"Statorials","description":"Uw gids voor statistische competentie","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/statorials.org\/nl\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"de"},{"@type":"Person","@id":"https:\/\/statorials.org\/nl\/#\/schema\/person\/d4b8842173cca1bb62cdec41860e4219","name":"Dr.benjamin anderson","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/statorials.org\/nl\/#\/schema\/person\/image\/","url":"http:\/\/statorials.org\/nl\/wp-content\/uploads\/2023\/10\/Dr.-Benjamin-Anderson-96x96.jpg","contentUrl":"http:\/\/statorials.org\/nl\/wp-content\/uploads\/2023\/10\/Dr.-Benjamin-Anderson-96x96.jpg","caption":"Dr.benjamin anderson"},"description":"Ik ben Benjamin, een gepensioneerde hoogleraar statistiek die nu een toegewijde Statorials-lesgever is. Ik heb uitgebreide ervaring en expertise op het gebied van statistiek en ik ben vastbesloten om mijn kennis te delen met studenten via Statorials. Lees verder","sameAs":["http:\/\/statorials.org\/nl"]}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"_links":{"self":[{"href":"https:\/\/statorials.org\/nl\/wp-json\/wp\/v2\/posts\/1222","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/statorials.org\/nl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/statorials.org\/nl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/statorials.org\/nl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/statorials.org\/nl\/wp-json\/wp\/v2\/comments?post=1222"}],"version-history":[{"count":0,"href":"https:\/\/statorials.org\/nl\/wp-json\/wp\/v2\/posts\/1222\/revisions"}],"wp:attachment":[{"href":"https:\/\/statorials.org\/nl\/wp-json\/wp\/v2\/media?parent=1222"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/statorials.org\/nl\/wp-json\/wp\/v2\/categories?post=1222"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/statorials.org\/nl\/wp-json\/wp\/v2\/tags?post=1222"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}