	{"id":21214,"date":"2020-11-25T09:21:16","date_gmt":"2020-11-25T09:21:16","guid":{"rendered":"https:\/\/www.artefact.com\/?post_type=news&#038;p=21214"},"modified":"2024-09-20T17:45:14","modified_gmt":"2024-09-20T16:45:14","slug":"how-did-we-put-our-sales-forecasting-solution-for-croissants-into-production","status":"publish","type":"blog","link":"https:\/\/www.artefact.com\/de\/blog\/how-did-we-put-our-sales-forecasting-solution-for-croissants-into-production\/","title":{"rendered":"Wie haben wir unsere L\u00f6sung zur Absatzprognose f\u00fcr Croissants in die Produktion gebracht?"},"content":{"rendered":"<p><div class=\"fusion-fullwidth fullwidth-box fusion-builder-row-1 fusion-flex-container nonhundred-percent-fullwidth non-hundred-percent-height-scrolling\" style=\"--awb-border-radius-top-left:0px;--awb-border-radius-top-right:0px;--awb-border-radius-bottom-right:0px;--awb-border-radius-bottom-left:0px;--awb-padding-top:0px;--awb-padding-right:0px;--awb-padding-bottom:0px;--awb-padding-left:0px;--awb-margin-bottom:40px;--awb-flex-wrap:wrap;\" ><div class=\"fusion-builder-row fusion-row fusion-flex-align-items-flex-start fusion-flex-content-wrap\" style=\"max-width:calc( 1440px + 20px );margin-left: calc(-20px \/ 2 );margin-right: calc(-20px \/ 2 );\"><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-0 fusion_builder_column_1_2 1_2 fusion-flex-column avada-news-bloc-image\" style=\"--awb-bg-size:cover;--awb-width-large:50%;--awb-margin-top-large:0px;--awb-spacing-right-large:10px;--awb-margin-bottom-large:0px;--awb-spacing-left-large:10px;--awb-width-medium:50%;--awb-order-medium:0;--awb-spacing-right-medium:10px;--awb-spacing-left-medium:10px;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:10px;--awb-spacing-left-small:10px;\"><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-flex-start fusion-content-layout-column\"><div class=\"fusion-image-element\" style=\"text-align:left;--awb-caption-title-font-family:var(--h2_typography-font-family);--awb-caption-title-font-weight:var(--h2_typography-font-weight);--awb-caption-title-font-style:var(--h2_typography-font-style);--awb-caption-title-size:var(--h2_typography-font-size);--awb-caption-title-transform:var(--h2_typography-text-transform);--awb-caption-title-line-height:var(--h2_typography-line-height);--awb-caption-title-letter-spacing:var(--h2_typography-letter-spacing);\"><span class=\"fusion-imageframe imageframe-none imageframe-1 hover-type-none\"><img decoding=\"async\" width=\"300\" height=\"74\" title=\"Mittel Blog\" src=\"https:\/\/www.artefact.com\/\/wp-content\/uploads\/2021\/04\/Medium-Blog.png\" data-orig-src=\"https:\/\/www.artefact.com\/\/wp-content\/uploads\/2021\/04\/Medium-Blog-300x74.png\" alt class=\"lazyload img-responsive wp-image-60582\" srcset=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%274000%27%20height%3D%27992%27%20viewBox%3D%270%200%204000%20992%27%3E%3Crect%20width%3D%274000%27%20height%3D%27992%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-srcset=\"https:\/\/www.artefact.com\/\/wp-content\/uploads\/2021\/04\/Medium-Blog-200x50.png 200w, https:\/\/www.artefact.com\/\/wp-content\/uploads\/2021\/04\/Medium-Blog-400x99.png 400w, https:\/\/www.artefact.com\/\/wp-content\/uploads\/2021\/04\/Medium-Blog-600x149.png 600w, https:\/\/www.artefact.com\/\/wp-content\/uploads\/2021\/04\/Medium-Blog-800x198.png 800w, https:\/\/www.artefact.com\/\/wp-content\/uploads\/2021\/04\/Medium-Blog-1200x298.png 1200w\" data-sizes=\"auto\" data-orig-sizes=\"(max-width: 640px) 100vw, 800px\" \/><\/span><\/div><\/div><\/div><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-1 fusion_builder_column_1_2 1_2 fusion-flex-column\" style=\"--awb-padding-top:10px;--awb-padding-right:10px;--awb-padding-bottom:10px;--awb-padding-left:10px;--awb-bg-size:cover;--awb-width-large:50%;--awb-margin-top-large:0px;--awb-spacing-right-large:10px;--awb-margin-bottom-large:0px;--awb-spacing-left-large:10px;--awb-width-medium:50%;--awb-order-medium:0;--awb-spacing-right-medium:10px;--awb-spacing-left-medium:10px;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:10px;--awb-spacing-left-small:10px;\"><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-flex-start fusion-content-layout-column\"><div class=\"fusion-text fusion-text-1\"><p>NACHRICHTEN \/ KI-TECHNOLOGIE<\/p>\n<\/div><div class=\"fusion-text fusion-text-2\"><p>25. November 2020<br \/>\nWir bei Artefact sind so franz\u00f6sisch, dass wir beschlossen haben, Machine Learning auf Croissants anzuwenden. Dieser erste von zwei Artikeln erkl\u00e4rt, wie wir beschlossen haben, Catboost zu verwenden, um die Verk\u00e4ufe von \u201cviennoiseries\u201d vorherzusagen. Die wichtigsten Merkmale, die den Umsatz beeinflussen, sind die letzten w\u00f6chentlichen Verk\u00e4ufe, die Tatsache, ob das Produkt im Sonderangebot ist oder nicht und der Preis. Wir stellen Ihnen einige nette technische Funktionen vor, darunter die Kannibalisierung und warum Sie Ihre Zielvariable manchmal aktualisieren m\u00fcssen.<\/p>\n<\/div><\/div><\/div><\/div><\/div><div class=\"fusion-fullwidth fullwidth-box fusion-builder-row-2 fusion-flex-container nonhundred-percent-fullwidth non-hundred-percent-height-scrolling\" style=\"--awb-border-radius-top-left:0px;--awb-border-radius-top-right:0px;--awb-border-radius-bottom-right:0px;--awb-border-radius-bottom-left:0px;--awb-background-color:#ffffff;--awb-flex-wrap:wrap;\" ><div class=\"fusion-builder-row fusion-row fusion-flex-align-items-flex-start fusion-flex-content-wrap\" style=\"max-width:calc( 1440px + 20px );margin-left: calc(-20px \/ 2 );margin-right: calc(-20px \/ 2 );\"><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-2 fusion_builder_column_1_1 1_1 fusion-flex-column\" style=\"--awb-bg-color:#ffffff;--awb-bg-color-hover:#ffffff;--awb-bg-size:cover;--awb-width-large:100%;--awb-margin-top-large:0px;--awb-spacing-right-large:10px;--awb-margin-bottom-large:0px;--awb-spacing-left-large:10px;--awb-width-medium:100%;--awb-order-medium:0;--awb-spacing-right-medium:10px;--awb-spacing-left-medium:10px;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:10px;--awb-spacing-left-small:10px;\"><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-flex-start fusion-content-layout-column\"><div class=\"fusion-text fusion-text-3\" style=\"--awb-text-color:#000000;\"><p><span style=\"color: #ff0066;\"><strong class=\"jl kd\">Was ist das?<\/strong><\/span><\/p>\n<p>Wir bei Artefact sind so franz\u00f6sisch, dass wir beschlossen haben, Machine Learning auf Croissants anzuwenden. Dieser erste von zwei Artikeln erkl\u00e4rt, wie wir beschlossen haben, Catboost zu verwenden, um die Verk\u00e4ufe von \u201cviennoiseries\u201d vorherzusagen. Die wichtigsten Merkmale, die den Umsatz beeinflussen, sind die letzten w\u00f6chentlichen Verk\u00e4ufe, die Tatsache, ob das Produkt im Sonderangebot ist oder nicht, und der Preis.<\/p>\n<p>Wir stellen Ihnen einige nette Funktionen vor, darunter Kannibalisierung und warum Sie manchmal Ihre Zielvariable aktualisieren m\u00fcssen. Wir haben die Vorhersagegenauigkeit und die Biais als Bewertungsmetriken gew\u00e4hlt. In unserem zweiten Artikel werden wir Ihnen erkl\u00e4ren, wie wir dieses Modell in die Produktion gebracht haben und einige Best Practices von ML Ops.<\/p>\n<p><span style=\"color: #ff0066;\"><strong class=\"jl kd\">F\u00fcr wen?<\/strong><\/span><\/p>\n<ul>\n<li>Data Wissenschaftler, ML Ingenieur oder Data Liebhaber<\/li>\n<\/ul>\n<p id=\"cb94\" class=\"jj jk dn jl b em ke iq jn ep kf iu jp jq kg js jt ju kh jw jx jy ki ka kb kc df ek\" data-selectable-paragraph=\"\"><span style=\"color: #ff0066;\"><strong class=\"jl kd\">Mitnehmen?<\/strong><\/span><\/p>\n<ul class=\"\">\n<li id=\"ead1\" class=\"jj jk dn jl b em ke iq jn ep kf iu jp jq kg js jt ju kh jw jx jy ki ka kb kc kj kk kl ek\" data-selectable-paragraph=\"\">Boosting-Algorithmen f\u00fcr die Vorhersage von Zeitreihen<\/li>\n<li id=\"2597\" class=\"jj jk dn jl b em km iq jn ep kn iu jp jq ko js jt ju kp jw jx jy kq ka kb kc kj kk kl ek\" data-selectable-paragraph=\"\">Wie Sie ein Prognoseproblem mit verrauschten data beantworten<\/li>\n<li id=\"a441\" class=\"jj jk dn jl b em km iq jn ep kn iu jp jq ko js jt ju kp jw jx jy kq ka kb kc kj kk kl ek\" data-selectable-paragraph=\"\">Wie man mit betrieblichen Einschr\u00e4nkungen in der Produktion umgeht<\/li>\n<\/ul>\n<p id=\"d9f7\" class=\"il im dn ce in io ip iq ir is it iu iv iw ix iy iz ja jb jc jd je jf jg jh ji ek\"><span style=\"color: #ff0066;\"><strong>Kontext<\/strong><\/span><\/p>\n<p id=\"730b\" class=\"jj jk dn jl b em jm iq jn ep jo iu jp jq jr js jt ju jv jw jx jy jz ka kb kc df ek\" data-selectable-paragraph=\"\">Wir haben k\u00fcrzlich an einem wirklich interessanten und herausfordernden Thema f\u00fcr einen gro\u00dfen Einzelh\u00e4ndler in Frankreich gearbeitet: Wie kann man die t\u00e4gliche Nachfrage nach frischen, verderblichen Produkten wie Geb\u00e4ck, einschlie\u00dflich unserer geliebten Croissants, vorhersagen?.<\/p>\n<p class=\"jj jk dn jl b em jm iq jn ep jo iu jp jq jr js jt ju jv jw jx jy jz ka kb kc df ek\" data-selectable-paragraph=\"\">Dieser Einzelh\u00e4ndler stand vor einem klassischen Problem der Lieferkette: Jeden Tag m\u00fcssen seine B\u00e4cker eine bestimmte Menge frischer, leicht verderblicher Produkte backen: Croissants, Schokoladenbrote, Baguettes, Zitronenkuchen usw. Die meisten dieser Produkte sind nicht l\u00e4nger als einen Tag haltbar, und wenn sie nicht verkauft werden, gelten sie als verlorene Einnahmen. Wenn sie nicht verkauft werden, gelten sie als verlorene Einnahmen. Sind sie hingegen tags\u00fcber nicht im Regal verf\u00fcgbar, f\u00fchrt dies zu unzufriedenen Verbrauchern und einem Geldverlust. Die Herausforderung besteht darin, die Menge jedes verderblichen Produkts f\u00fcr jede Filiale sieben Tage im Voraus vorherzusagen. Ziel dieses Projekts war es daher, die Regalverf\u00fcgbarkeit zu verbessern und gleichzeitig die Lebensmittelverschwendung zu reduzieren.<\/p>\n<p class=\"jj jk dn jl b em jm iq jn ep jo iu jp jq jr js jt ju jv jw jx jy jz ka kb kc df ek\" data-selectable-paragraph=\"\">Um die Verk\u00e4ufe einige Tage im Voraus zu prognostizieren, wurde bereits eine interne L\u00f6sung mit einfachen statistischen Ma\u00dfnahmen verwendet. Nachdem wir uns jedoch mit den Managern der B\u00e4ckerei getroffen hatten, wurde uns klar, dass es ein deutliches Verbesserungspotenzial gab, indem wir mehr data und Funktionen wie saisonale Effekte, Wetter, Feiertage, Produktsubstitutionseffekte usw. nutzten. Wir haben daher beschlossen, die aktuelle L\u00f6sung als Basis zu verwenden und neuere Algorithmen auszuprobieren, um die Prognosegenauigkeit zu verbessern.<\/p>\n<p class=\"jj jk dn jl b em jm iq jn ep jo iu jp jq jr js jt ju jv jw jx jy jz ka kb kc df ek\" data-selectable-paragraph=\"\">Und zum Abschluss dieser Einf\u00fchrung eine Illustration der Herausforderung und dessen, was wir erreichen wollen.<\/p>\n<p data-selectable-paragraph=\"\"><img decoding=\"async\" class=\"lazyload size-full wp-image-21368 aligncenter\" src=\"https:\/\/www.artefact.com\/\/wp-content\/uploads\/2020\/11\/0_tmryqg1LTyu3u_b8.jpeg\" data-orig-src=\"https:\/\/www.artefact.com\/\/wp-content\/uploads\/2020\/11\/0_tmryqg1LTyu3u_b8.jpeg\" alt=\"\" width=\"700\" height=\"393\" srcset=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%27700%27%20height%3D%27393%27%20viewBox%3D%270%200%20700%20393%27%3E%3Crect%20width%3D%27700%27%20height%3D%27393%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-srcset=\"https:\/\/www.artefact.com\/\/wp-content\/uploads\/2020\/11\/0_tmryqg1LTyu3u_b8-200x112.jpeg 200w, https:\/\/www.artefact.com\/\/wp-content\/uploads\/2020\/11\/0_tmryqg1LTyu3u_b8.jpeg 700w\" data-sizes=\"auto\" data-orig-sizes=\"(max-width: 700px) 100vw, 700px\" \/><\/p>\n<figure class=\"hn ho hp hq hr hd cx cy paragraph-image\">\n<div class=\"hu hv hw hx aj hy\" tabindex=\"0\" role=\"button\">\n<div class=\"cx cy kr\">\n<div class=\"ie s hw if\">\n<div class=\"ig ih s\">\n<div class=\"hz ia t u v ib aj bm ic id\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/figure>\n<\/div><\/div><\/div><\/div><\/div><div class=\"fusion-fullwidth fullwidth-box fusion-builder-row-3 fusion-flex-container nonhundred-percent-fullwidth non-hundred-percent-height-scrolling\" style=\"--awb-border-radius-top-left:0px;--awb-border-radius-top-right:0px;--awb-border-radius-bottom-right:0px;--awb-border-radius-bottom-left:0px;--awb-background-color:#ffffff;--awb-flex-wrap:wrap;\" ><div class=\"fusion-builder-row fusion-row fusion-flex-align-items-flex-start fusion-flex-content-wrap\" style=\"max-width:calc( 1440px + 20px );margin-left: calc(-20px \/ 2 );margin-right: calc(-20px \/ 2 );\"><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-3 fusion_builder_column_1_1 1_1 fusion-flex-column\" style=\"--awb-bg-color:#ffffff;--awb-bg-color-hover:#ffffff;--awb-bg-size:cover;--awb-width-large:100%;--awb-margin-top-large:0px;--awb-spacing-right-large:10px;--awb-margin-bottom-large:0px;--awb-spacing-left-large:10px;--awb-width-medium:100%;--awb-order-medium:0;--awb-spacing-right-medium:10px;--awb-spacing-left-medium:10px;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:10px;--awb-spacing-left-small:10px;\"><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-flex-start fusion-content-layout-column\"><div class=\"fusion-text fusion-text-4\" style=\"--awb-text-color:#000000;\"><p><span style=\"color: #ff0066;\"><strong>Entwicklung von Modellen<\/strong><\/span><\/p>\n<p>Jetzt, da wir ein gut definiertes Problem und einige Ziele haben, k\u00f6nnen wir endlich damit beginnen, sch\u00f6nen Python-Code in unseren Notizb\u00fcchern zu schreiben - der Spa\u00df kann beginnen!<\/p>\n<p><span style=\"color: #ff0066;\"><strong>Data Anfrage<\/strong><\/span><\/p>\n<p>Wie bei jedem wissenschaftlichen data-Projekt beginnt alles mit data. Aus Erfahrung empfehlen wir dringend, die data-Anfrage so fr\u00fch wie m\u00f6glich zu stellen. Scheuen Sie sich nicht, viele data anzufordern und stellen Sie sicher, dass Sie f\u00fcr jede data-Quelle einen Ansprechpartner finden, an den Sie sich wenden k\u00f6nnen, um Ihre Fragen zur data-Sammlung oder zum Aufbau des data zu stellen.<\/p>\n<p>Dank der verschiedenen Treffen konnten wir eine Liste der data erstellen, die wir verwenden konnten:<\/p>\n<ul>\n<li>Transaktionelle data einschlie\u00dflich Preis der Produkte.<\/li>\n<li>Promotions: eine Liste aller zuk\u00fcnftigen Promotions und der dazugeh\u00f6rigen Preise.<\/li>\n<li>Produktinformation: verschiedene Eigenschaften der Produkte.<\/li>\n<li id=\"8e84\" class=\"jj jk dn jl b em km iq jn ep kn iu jp jq ko js jt ju kp jw jx jy kq ka kb kc kj kk kl ek\" data-selectable-paragraph=\"\">Informationen zum Gesch\u00e4ft: Standort, Gr\u00f6\u00dfe der Gesch\u00e4fte, Wettbewerber.<\/li>\n<li id=\"c5b6\" class=\"jj jk dn jl b em km iq jn ep kn iu jp jq ko js jt ju kp jw jx jy kq ka kb kc kj kk kl ek\" data-selectable-paragraph=\"\">Wetter data.<\/li>\n<li id=\"ca97\" class=\"jj jk dn jl b em km iq jn ep kn iu jp jq ko js jt ju kp jw jx jy kq ka kb kc kj kk kl ek\" data-selectable-paragraph=\"\">Abfall data: am Ende jedes Tages, wie viele Produkte weggeworfen wurden.<\/li>\n<\/ul>\n<p id=\"aa80\" class=\"il im dn ce in io ip iq ir is it iu iv iw ix iy iz ja jb jc jd je jf jg jh ji ek\"><span style=\"color: #ff0066;\"><strong>Explorative Data-Analyse (EDA) und Erkennung von Ausrei\u00dfern<\/strong><\/span><\/p>\n<p id=\"67bb\" class=\"jj jk dn jl b em jm iq jn ep jo iu jp jq jr js jt ju jv jw jx jy jz ka kb kc df ek\" data-selectable-paragraph=\"\">Sobald das data gesammelt war, haben wir mit der Analyse begonnen. Gibt es eine Saisonalit\u00e4t in meinem data? Ein Trend? Wie viele Produkte habe ich? Sind sie im Laufe der Zeit gleichbleibend? Gibt es saisonale Produkte?<\/p>\n<p class=\"jj jk dn jl b em jm iq jn ep jo iu jp jq jr js jt ju jv jw jx jy jz ka kb kc df ek\" data-selectable-paragraph=\"\">Bei der Aufzeichnung der verschiedenen Zeitreihen haben wir auch einige interessante Merkmale entdeckt:<\/p>\n<ul class=\"\">\n<li id=\"80a9\" class=\"jj jk dn jl b em ke iq jn ep kf iu jp jq kg js jt ju kh jw jx jy ki ka kb kc kj kk kl ek\" data-selectable-paragraph=\"\">Saisonalit\u00e4t im Laufe des Jahres, aber auch w\u00e4hrend der Woche.<\/li>\n<li id=\"d0ce\" class=\"jj jk dn jl b em km iq jn ep kn iu jp jq ko js jt ju kp jw jx jy kq ka kb kc kj kk kl ek\" data-selectable-paragraph=\"\">Preise und ob das Produkt im Angebot ist oder nicht.<\/li>\n<li id=\"c317\" class=\"jj jk dn jl b em km iq jn ep kn iu jp jq ko js jt ju kp jw jx jy kq ka kb kc kj kk kl ek\" data-selectable-paragraph=\"\">Kannibalisierung von Produkten und aufgeschobene Verk\u00e4ufe bei Nichtverf\u00fcgbarkeit.<\/li>\n<li id=\"dd82\" class=\"jj jk dn jl b em km iq jn ep kn iu jp jq ko js jt ju kp jw jx jy kq ka kb kc kj kk kl ek\" data-selectable-paragraph=\"\">Das Verkaufsverhalten ist von Gesch\u00e4ft zu Gesch\u00e4ft unterschiedlich.<\/li>\n<\/ul>\n<p id=\"e6a0\" class=\"jj jk dn jl b em ke iq jn ep kf iu jp jq kg js jt ju kh jw jx jy ki ka kb kc df ek\" data-selectable-paragraph=\"\">Beachten Sie, dass wir verschiedene Funktionen in Bezug auf die Preisgestaltung erstellt haben. Den absoluten Preis, aber auch die relativen Preise im Vergleich zu anderen Produkten in der gleichen Unterfamilie, Familie oder im gleichen Gesch\u00e4ft. Der relative Preis ist eine M\u00f6glichkeit, die Preiskannibalisierung zwischen Produkten zu quantifizieren. Wir haben auch Merkmale erstellt, die die Preisschwankungen eines Produkts im Laufe der Zeit darstellen.<\/p>\n<p class=\"jj jk dn jl b em ke iq jn ep kf iu jp jq kg js jt ju kh jw jx jy ki ka kb kc df ek\" data-selectable-paragraph=\"\">Bei solch bodenst\u00e4ndigen Vorhersageaufgaben steckt der Teufel im Detail und es ist wirklich wichtig, nach Ausrei\u00dfern und Anomalien zu suchen, sich die Zeit zu nehmen, Ihr data zu crunchen.<\/p>\n<p id=\"3dfd\" class=\"jj jk dn jl b em ke iq jn ep kf iu jp jq kg js jt ju kh jw jx jy ki ka kb kc df ek\" data-selectable-paragraph=\"\">Aber zun\u00e4chst einmal: Warum sollten wir uns \u00fcberhaupt die M\u00fche machen, Ausrei\u00dfer zu erkennen? Daf\u00fcr gibt es viele Gr\u00fcnde. Sie k\u00f6nnen auf schlechte data, Fehler in den ETLs oder Gesch\u00e4ftsprozesse hinweisen, die Sie nicht kannten. Zweitens ist es sehr wahrscheinlich, dass es sich auf Ihren Algorithmus und den Inferenzteil auswirkt, so dass es definitiv ein wichtiger Teil der Entwicklung ist.<\/p>\n<p class=\"jj jk dn jl b em ke iq jn ep kf iu jp jq kg js jt ju kh jw jx jy ki ka kb kc df ek\" data-selectable-paragraph=\"\">Sie k\u00f6nnen Ausrei\u00dfer zu verschiedenen Zeitpunkten des Projekts erkennen, entweder w\u00e4hrend der explorativen data-Analyse (EDA) oder durch Analyse der gr\u00f6\u00dften Fehler Ihrer Modelle.<\/p>\n<p class=\"jj jk dn jl b em ke iq jn ep kf iu jp jq kg js jt ju kh jw jx jy ki ka kb kc df ek\" data-selectable-paragraph=\"\">Bei der EDA haben wir einige seltsame data entdeckt, wie z.B. B2B-Verk\u00e4ufe, z.B. 1800 Verk\u00e4ufe eines einzigen Artikels auf einem einzigen Kaufbeleg. Ausrei\u00dfer im Zusammenhang mit der Preisgestaltung, die meist auf manuelle Fehler der Kassiererin zur\u00fcckzuf\u00fchren sind: negative Preise oder ein Croissant, das 250 Euro kostet!<\/p>\n<figure class=\"hn ho hp hq hr hd cx cy paragraph-image\">\n<div class=\"hu hv hw hx aj hy\" tabindex=\"0\" role=\"button\">\n<div class=\"cx cy ks\">\n<div class=\"ie s hw if\">\n<div class=\"kt ih s\">\n<div class=\"hz ia t u v ib aj bm ic id\"><\/div>\n<p><img decoding=\"async\" class=\"lazyload vl vm t u v ib aj c aligncenter\" src=\"https:\/\/www.artefact.com\/\/wp-content\/uploads\/2024\/09\/01TAXEHqr9CLKkcfH.png\" data-orig-src=\"https:\/\/www.artefact.com\/\/wp-content\/uploads\/2024\/09\/01TAXEHqr9CLKkcfH.png\" data-sizes=\"auto\" data-orig-sizes=\"700px\" srcset=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%27709%27%20height%3D%27348%27%20viewBox%3D%270%200%20709%20348%27%3E%3Crect%20width%3D%27709%27%20height%3D%27348%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-srcset=\"https:\/\/www.artefact.com\/\/wp-content\/uploads\/2024\/09\/01TAXEHqr9CLKkcfH.png 276w, https:\/\/www.artefact.com\/\/wp-content\/uploads\/2024\/09\/01TAXEHqr9CLKkcfH.png 552w, https:\/\/www.artefact.com\/\/wp-content\/uploads\/2024\/09\/01TAXEHqr9CLKkcfH.png 640w, https:\/\/www.artefact.com\/\/wp-content\/uploads\/2024\/09\/01TAXEHqr9CLKkcfH.png 700w\" alt=\"Image for post\" width=\"709\" height=\"348\" \/><\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/figure>\n<p id=\"fd19\" class=\"jj jk dn jl b em ke iq jn ep kf iu jp jq kg js jt ju kh jw jx jy ki ka kb kc df ek\" data-selectable-paragraph=\"\">Wir haben festgestellt, dass unsere Vorhersagen an den ersten Tagen der Aktionszeitr\u00e4ume manchmal v\u00f6llig daneben lagen. Nach einiger Analyse stellten wir fest, dass dies darauf zur\u00fcckzuf\u00fchren war, dass die Aktion einen Tag vor oder nach dem offiziellen Tag gestartet wurde. In der Tat hat sich der Manager manchmal die Freiheit genommen, den Beginn oder das Ende der Werbeaktionen zu \u00e4ndern. Diese \u00c4nderungen k\u00f6nnen im Trainingsset data erkannt und korrigiert werden, k\u00f6nnen aber zu gro\u00dfen Fehlern bei der Vorhersage f\u00fchren. In der Tat k\u00f6nnen Werbeaktionen ein 4- bis 5-mal gr\u00f6\u00dferes Volumen erreichen als eine Nicht-Werbeaktion.<\/p>\n<p class=\"jj jk dn jl b em ke iq jn ep kf iu jp jq kg js jt ju kh jw jx jy ki ka kb kc df ek\" data-selectable-paragraph=\"\">Hier eine Liste mit weiteren interessanten Beispielen f\u00fcr Prozesse und Mechanismen, die wir dank dieser Analyse entdeckt haben und die Sie vielleicht in Ihren Projekten finden:<\/p>\n<ul class=\"\">\n<li id=\"2720\" class=\"jj jk dn jl b em ke iq jn ep kf iu jp jq kg js jt ju kh jw jx jy ki ka kb kc kj kk kl ek\" data-selectable-paragraph=\"\">Das Sortiment ist aufgrund von betrieblichen Zw\u00e4ngen, Fehlern und der Lagerverwaltung nicht immer \u00fcber Tage hinweg konsistent.<\/li>\n<li id=\"1132\" class=\"jj jk dn jl b em km iq jn ep kn iu jp jq ko js jt ju kp jw jx jy kq ka kb kc kj kk kl ek\" data-selectable-paragraph=\"\">Bei einigen data-Quellen waren die angegebenen Daten die Tage, an denen das data geladen wurde. Daher m\u00fcssen Sie einen Tag entfernen, um den tats\u00e4chlichen Tag zu erhalten.<\/li>\n<\/ul>\n<\/div><\/div><\/div><\/div><\/div><div class=\"fusion-fullwidth fullwidth-box fusion-builder-row-4 fusion-flex-container nonhundred-percent-fullwidth non-hundred-percent-height-scrolling\" style=\"--awb-border-radius-top-left:0px;--awb-border-radius-top-right:0px;--awb-border-radius-bottom-right:0px;--awb-border-radius-bottom-left:0px;--awb-background-color:#ffffff;--awb-flex-wrap:wrap;\" ><div class=\"fusion-builder-row fusion-row fusion-flex-align-items-flex-start fusion-flex-content-wrap\" style=\"max-width:calc( 1440px + 20px );margin-left: calc(-20px \/ 2 );margin-right: calc(-20px \/ 2 );\"><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-4 fusion_builder_column_1_1 1_1 fusion-flex-column\" style=\"--awb-bg-color:#ffffff;--awb-bg-color-hover:#ffffff;--awb-bg-size:cover;--awb-width-large:100%;--awb-margin-top-large:0px;--awb-spacing-right-large:10px;--awb-margin-bottom-large:0px;--awb-spacing-left-large:10px;--awb-width-medium:100%;--awb-order-medium:0;--awb-spacing-right-medium:10px;--awb-spacing-left-medium:10px;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:10px;--awb-spacing-left-small:10px;\"><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-flex-start fusion-content-layout-column\"><div class=\"fusion-text fusion-text-5\" style=\"--awb-text-color:#000000;\"><p><span style=\"color: #ff0066;\"><strong>Von der Absatzprognose zur optimalen Absatzprognose<\/strong><\/span><\/p>\n<p>Eine Herausforderung veranlasste uns, unsere Zielvariable zu aktualisieren. Manchmal erwartete die Abteilung aufgrund eines unerwarteten Einflusses oder einer schlechten Vorhersage einen Mangel an Produkten vor Ende des Tages. Dann k\u00f6nnen zwei Ph\u00e4nomene auftreten: Der Kunde, der sein Produkt nicht finden kann, kauft nichts oder er kauft ein \u00e4hnliches Produkt. Anhand der historischen data haben wir einige Verteilungsgesetze (grundlegende Statistiken) abgeleitet, die uns geholfen haben, diese Auswirkungen zu modellieren und unsere Zielvariable zu aktualisieren, um nicht die historischen Verk\u00e4ufe, sondern die optimalen Verk\u00e4ufe f\u00fcr ein bestimmtes Produkt vorherzusagen.<\/p>\n<p>Diese Aktualisierung der Zielvariablen ist heikel, denn es ist wirklich schwer zu sagen, ob die Aktualisierung sinnvoll war. Haben Sie die Qualit\u00e4t des data wirklich verbessert oder verschlechtert? Eine M\u00f6glichkeit, unsere Auswirkungen zu quantifizieren, bestand darin, Verk\u00e4ufe zu nehmen, die nicht auf Lager waren, und einen falschen Mangel zu erzeugen, z.B. alle Verk\u00e4ufe nach 17 oder 18 Uhr zu entfernen und dann zu versuchen, die Verk\u00e4ufe zu rekonstruieren. Diese Methode hilft uns, zu einem klassischen \u00fcberwachten Problem zur\u00fcckzukehren, das wir objektiv bewerten k\u00f6nnen.<\/p>\n<p>So konnten wir die optimalen Verk\u00e4ufe vorhersagen und vermeiden, dass unser Algorithmus Knappheitsmuster lernt.<\/p>\n<p><span style=\"color: #ff0066;\"><strong>Unsere Modelle<\/strong><\/span><\/p>\n<p>Nachdem wir unser data gr\u00fcndlich gereinigt haben, k\u00f6nnen wir endlich ein paar Modelle testen und ausprobieren.<\/p>\n<p id=\"7083\" class=\"jj jk dn jl b em ke iq jn ep kf iu jp jq kg js jt ju kh jw jx jy ki ka kb kc df ek\" data-selectable-paragraph=\"\">Sie haben viele verschiedene M\u00f6glichkeiten, ein Prognoseproblem anzugehen: klassische statistische Ans\u00e4tze (SARIMA, Exponential Smoothing, Prophet usw.), Ans\u00e4tze des maschinellen Lernens (lineare Regression, Boosting-Algorithmen) oder Deep Learning (RNN, LSTM, CNN). Die Wahl des richtigen Ansatzes ist eine knifflige Frage. Hier sind einige Elemente, die uns bei der Auswahl geholfen haben:<\/p>\n<ul class=\"\">\n<li id=\"8a12\" class=\"jj jk dn jl b em ke iq jn ep kf iu jp jq kg js jt ju kh jw jx jy ki ka kb kc kj kk kl ek\" data-selectable-paragraph=\"\">Nicht eine, sondern viele Zeitreihen: ~10 000<\/li>\n<li id=\"80b8\" class=\"jj jk dn jl b em km iq jn ep kn iu jp jq ko js jt ju kp jw jx jy kq ka kb kc kj kk kl ek\" data-selectable-paragraph=\"\">Unregelm\u00e4\u00dfige Zeitreihen: Es kann vorkommen, dass aufgrund von Managerentscheidungen, gesch\u00e4ftlichen oder betrieblichen Zw\u00e4ngen an einigen Tagen keine Verk\u00e4ufe get\u00e4tigt werden.<\/li>\n<li id=\"6ae9\" class=\"jj jk dn jl b em km iq jn ep kn iu jp jq ko js jt ju kp jw jx jy kq ka kb kc kj kk kl ek\" data-selectable-paragraph=\"\">Werbeaktionen haben eine gro\u00dfe Wirkung und sind nicht saisonal oder zyklisch.<\/li>\n<li id=\"6ba6\" class=\"jj jk dn jl b em km iq jn ep kn iu jp jq ko js jt ju kp jw jx jy kq ka kb kc kj kk kl ek\" data-selectable-paragraph=\"\">Wir haben eine enorme Korrelation zwischen den Ums\u00e4tzen bei J-0 und den Ums\u00e4tzen bei J-7, J-14, J-21 f\u00fcr Artikel pro Gesch\u00e4ft und dem Zustand, ob sie sich in einer Werbeaktion befinden oder nicht, festgestellt.<\/li>\n<li id=\"6a82\" class=\"jj jk dn jl b em km iq jn ep kn iu jp jq ko js jt ju kp jw jx jy kq ka kb kc kj kk kl ek\" data-selectable-paragraph=\"\">Exogene data wirken sich auf den Verkauf aus: Preise, Sondertage usw.<\/li>\n<\/ul>\n<p id=\"638a\" class=\"jj jk dn jl b em ke iq jn ep kf iu jp jq kg js jt ju kh jw jx jy ki ka kb kc df ek\" data-selectable-paragraph=\"\">Aus diesen Gr\u00fcnden haben wir uns f\u00fcr Catboost als Modell entschieden. Catboost hat viele Vorteile, wie z.B. die native Verarbeitung von kategorischen und fehlenden Werten, die Verarbeitung vieler Merkmale, die gute Skalierung und die Ableitung vieler Zeitreihen innerhalb desselben Modells. Au\u00dferdem bietet es eine sch\u00f6ne Darstellung w\u00e4hrend des Trainings und l\u00e4sst sich sehr leicht mit\u00a0<em class=\"ku\">SHAP<\/em>\u00a0f\u00fcr die Bedeutung des Merkmals.<\/p>\n<p class=\"jj jk dn jl b em ke iq jn ep kf iu jp jq kg js jt ju kh jw jx jy ki ka kb kc df ek\" data-selectable-paragraph=\"\">Hier zum Beispiel ein Screenshot der interaktiven Darstellung des Algorithmus w\u00e4hrend seines Trainings:<\/p>\n<figure class=\"hn ho hp hq hr hd cx cy paragraph-image\">\n<div class=\"hu hv hw hx aj hy\" tabindex=\"0\" role=\"button\">\n<div class=\"cx cy kv\">\n<div class=\"ie s hw if\">\n<div class=\"kw ih s\">\n<div class=\"hz ia t u v ib aj bm ic id\"><\/div>\n<p><img decoding=\"async\" class=\"lazyload vl vm t u v ib aj c aligncenter\" src=\"https:\/\/www.artefact.com\/\/wp-content\/uploads\/2024\/09\/0IHYfQrWymxriIbmh.png\" data-orig-src=\"https:\/\/www.artefact.com\/\/wp-content\/uploads\/2024\/09\/0IHYfQrWymxriIbmh.png\" data-sizes=\"auto\" data-orig-sizes=\"700px\" srcset=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%27714%27%20height%3D%27355%27%20viewBox%3D%270%200%20714%20355%27%3E%3Crect%20width%3D%27714%27%20height%3D%27355%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-srcset=\"https:\/\/www.artefact.com\/\/wp-content\/uploads\/2024\/09\/0IHYfQrWymxriIbmh.png 276w, https:\/\/www.artefact.com\/\/wp-content\/uploads\/2024\/09\/0IHYfQrWymxriIbmh.png 552w, https:\/\/www.artefact.com\/\/wp-content\/uploads\/2024\/09\/0IHYfQrWymxriIbmh.png 640w, https:\/\/www.artefact.com\/\/wp-content\/uploads\/2024\/09\/0IHYfQrWymxriIbmh.png 700w\" alt=\"Image for post\" width=\"714\" height=\"355\" \/><\/p>\n<\/div>\n<div><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/figure>\n<p id=\"e5ba\" class=\"jj jk dn jl b em ke iq jn ep kf iu jp jq kg js jt ju kh jw jx jy ki ka kb kc df ek\" data-selectable-paragraph=\"\">Einer der Nachteile der reinen ML-Ans\u00e4tze ist jedoch die Notwendigkeit, alle Merkmale selbst zu kodieren, insbesondere die zeitlichen. Ohne ein starkes Feature-Engineering sind diese Algorithmen nicht in der Lage, die Zeitmuster zu erkennen. Au\u00dferdem k\u00f6nnen sie nur einen festen Zeitrahmen ableiten, im Gegensatz zu Sarima oder Prophet, bei denen Sie die Anzahl der zu prognostizierenden Tage \u00fcber den Parameter Perioden festlegen k\u00f6nnen.<\/p>\n<p class=\"jj jk dn jl b em ke iq jn ep kf iu jp jq kg js jt ju kh jw jx jy ki ka kb kc df ek\" data-selectable-paragraph=\"\">Schlie\u00dflich m\u00fcssen Sie sehr vorsichtig mit data Leckagen sein, besonders wenn Sie Ihr Lag-Feature bauen.<\/p>\n<p class=\"jj jk dn jl b em ke iq jn ep kf iu jp jq kg js jt ju kh jw jx jy ki ka kb kc df ek\" data-selectable-paragraph=\"\">Eines der wichtigsten Merkmale war nicht die w\u00f6chentliche Verz\u00f6gerung, sondern der Durchschnitt der Verz\u00f6gerungen: D-7, D-14, D-21, ... usw. die letzten sechs Wochen. Die unregelm\u00e4\u00dfige Charakteristik unserer Zeitreihen in Verbindung mit dem Einsatz von Werbeaktionen von Zeit zu Zeit f\u00fchrt zu einer unscharfen Saisonalit\u00e4t, daher die Verwendung eines Durchschnitts. Es ist wichtig zu wissen, dass die Verwendung dieses Durchschnitts als einziges Modell bereits eine sehr gute Leistung erbringt!<\/p>\n<p id=\"8cf2\" class=\"il im dn ce in io ip iq ir is it iu iv iw ix iy iz ja jb jc jd je jf jg jh ji ek\"><span style=\"color: #ff0066;\"><strong>Ein Modell gegen viele Modelle<\/strong><\/span><\/p>\n<p class=\"il im dn ce in io ip iq ir is it iu iv iw ix iy iz ja jb jc jd je jf jg jh ji ek\">Zusammenfassend haben wir einen Algorithmus verwendet: Catboost, um alle unsere 10 000 Zeitreihen f\u00fcr jedes Produkt und jedes Gesch\u00e4ft vorherzusagen. Aber was ist, wenn ein Artikel ein ganz bestimmtes Verkaufsmuster oder eine bestimmte Filiale hat? W\u00fcrde der Algorithmus dieses Muster erkennen und lernen?<\/p>\n<p class=\"il im dn ce in io ip iq ir is it iu iv iw ix iy iz ja jb jc jd je jf jg jh ji ek\">Diese Fragen f\u00fchren uns zu der Frage, ob wir unsere Produkte und Gesch\u00e4fte clustern und einen Algorithmus pro Cluster trainieren sollten. Auch wenn die Verwendung von Entscheidungsbaum-Algorithmen diese Herausforderung bew\u00e4ltigen sollte, haben wir in einigen spezifischen F\u00e4llen Einschr\u00e4nkungen festgestellt.<\/p>\n<p class=\"il im dn ce in io ip iq ir is it iu iv iw ix iy iz ja jb jc jd je jf jg jh ji ek\">Boosting-Algorithmen sind iterative Algorithmen, die auf schwachen Lernern basieren, die sich auf ihre gr\u00f6\u00dften Fehler konzentrieren werden. Das ist nat\u00fcrlich etwas zu vereinfacht, aber es hilft mir, auf eine ihrer Einschr\u00e4nkungen hinzuweisen. Wenn Sie Ihre Zielvariable nicht normalisiert haben, wird sich Ihr Algorithmus \u201cnur\u201d auf die Produkte mit den gr\u00f6\u00dften Fehlern konzentrieren, die mit gr\u00f6\u00dferer Wahrscheinlichkeit auch die umsatzst\u00e4rksten sind. Infolgedessen konzentriert sich der Algorithmus m\u00f6glicherweise mehr auf die Produkte oder Gesch\u00e4fte mit dem gr\u00f6\u00dften Umsatzvolumen.<\/p>\n<p class=\"il im dn ce in io ip iq ir is it iu iv iw ix iy iz ja jb jc jd je jf jg jh ji ek\">Wir haben keine perfekte L\u00f6sung f\u00fcr dieses Problem gefunden, aber wir konnten einige Verbesserungen feststellen, indem wir unsere Produkte\/L\u00e4den nach Familie oder Verkaufsfrequenz gruppiert haben.<\/p>\n<p id=\"b5a4\" class=\"jj jk dn jl b em ke iq jn ep kf iu jp jq kg js jt ju kh jw jx jy ki ka kb kc df ek\" data-selectable-paragraph=\"\">Einer der Vorteile des Trainings mehrerer Algorithmen sind:<\/p>\n<ul class=\"\">\n<li id=\"6fdc\" class=\"jj jk dn jl b em ke iq jn ep kf iu jp jq kg js jt ju kh jw jx jy ki ka kb kc kj kk kl ek\" data-selectable-paragraph=\"\">Schneller zu trainieren<\/li>\n<li id=\"9f1e\" class=\"jj jk dn jl b em km iq jn ep kn iu jp jq ko js jt ju kp jw jx jy kq ka kb kc kj kk kl ek\" data-selectable-paragraph=\"\">Leichtere Feinabstimmung<\/li>\n<li id=\"25e8\" class=\"jj jk dn jl b em km iq jn ep kn iu jp jq ko js jt ju kp jw jx jy kq ka kb kc kj kk kl ek\" data-selectable-paragraph=\"\">Leichtere Fehlersuche<\/li>\n<li id=\"9727\" class=\"jj jk dn jl b em km iq jn ep kn iu jp jq ko js jt ju kp jw jx jy kq ka kb kc kj kk kl ek\" data-selectable-paragraph=\"\">Im Falle von data-Anomalien gehen nicht alle Modelle schief<\/li>\n<li id=\"812c\" class=\"jj jk dn jl b em km iq jn ep kn iu jp jq ko js jt ju kp jw jx jy kq ka kb kc kj kk kl ek\" data-selectable-paragraph=\"\">Je nach Produkt k\u00f6nnen Sie mit der Verlustfunktion spielen und Knappheit oder \u00dcberproduktion f\u00f6rdern.<\/li>\n<\/ul>\n<p id=\"6381\" class=\"jj jk dn jl b em ke iq jn ep kf iu jp jq kg js jt ju kh jw jx jy ki ka kb kc df ek\" data-selectable-paragraph=\"\">Auf der anderen Seite wird es aber auch schwieriger sein, sie zu pflegen!<\/p>\n<p class=\"jj jk dn jl b em ke iq jn ep kf iu jp jq kg js jt ju kh jw jx jy ki ka kb kc df ek\" data-selectable-paragraph=\"\">Schlie\u00dflich entschieden wir uns f\u00fcr diesen Ansatz, da er bessere Ergebnisse brachte.<\/p>\n<\/div><\/div><\/div><\/div><\/div><div class=\"fusion-fullwidth fullwidth-box fusion-builder-row-5 fusion-flex-container nonhundred-percent-fullwidth non-hundred-percent-height-scrolling\" style=\"--awb-border-radius-top-left:0px;--awb-border-radius-top-right:0px;--awb-border-radius-bottom-right:0px;--awb-border-radius-bottom-left:0px;--awb-background-color:#ffffff;--awb-flex-wrap:wrap;\" ><div class=\"fusion-builder-row fusion-row fusion-flex-align-items-flex-start fusion-flex-content-wrap\" style=\"max-width:calc( 1440px + 20px );margin-left: calc(-20px \/ 2 );margin-right: calc(-20px \/ 2 );\"><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-5 fusion_builder_column_1_1 1_1 fusion-flex-column\" style=\"--awb-bg-color:#ffffff;--awb-bg-color-hover:#ffffff;--awb-bg-size:cover;--awb-width-large:100%;--awb-margin-top-large:0px;--awb-spacing-right-large:10px;--awb-margin-bottom-large:0px;--awb-spacing-left-large:10px;--awb-width-medium:100%;--awb-order-medium:0;--awb-spacing-right-medium:10px;--awb-spacing-left-medium:10px;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:10px;--awb-spacing-left-small:10px;\"><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-flex-start fusion-content-layout-column\"><div class=\"fusion-text fusion-text-6\" style=\"--awb-text-color:#000000;\"><p id=\"9fc2\" class=\"il im dn ce in io ip iq ir is it iu iv iw ix iy iz ja jb jc jd je jf jg jh ji ek\"><span style=\"color: #ff0066;\"><strong>Wie k\u00f6nnen Sie unser Modell bewerten?<\/strong><\/span><\/p>\n<p id=\"66f9\" class=\"jj jk dn jl b em jm iq jn ep jo iu jp jq jr js jt ju jv jw jx jy jz ka kb kc df ek\" data-selectable-paragraph=\"\">In den vorangegangenen Abschnitten haben wir viele Modelle und ihre Leistungen besprochen. Aber wie bewertet man einen Prognosealgorithmus? Offensichtlich ist es \u00e4hnlich wie bei allen Problemen des maschinellen Lernens, aber dennoch hat es seine eigenen Besonderheiten:<\/p>\n<ol>\n<li>\u00a0Kreuzvalidierung<\/li>\n<\/ol>\n<p id=\"2a03\" class=\"jj jk dn jl b em jm iq jn ep jo iu jp jq jr js jt ju jv jw jx jy jz ka kb kc df ek\" data-selectable-paragraph=\"\">Wie bereits erw\u00e4hnt, besteht eine der Herausforderungen bei der Prognose von Zeitreihen darin, data-Lecks zu vermeiden. Das kann bei der Erstellung unserer Merkmale passieren: Lags, Normalisierung unserer Variablen usw...<\/p>\n<p id=\"8fa3\" class=\"jj jk dn jl b em ke iq jn ep kf iu jp jq kg js jt ju kh jw jx jy ki ka kb kc df ek\" data-selectable-paragraph=\"\">Es kann aber auch bei der Kreuzvalidierung passieren, wenn Sie die data-Sets f\u00fcr Training, Validierung und Test aufteilen.<\/p>\n<p id=\"bc69\" class=\"jj jk dn jl b em ke iq jn ep kf iu jp jq kg js jt ju kh jw jx jy ki ka kb kc df ek\" data-selectable-paragraph=\"\">Sie k\u00f6nnen nicht die klassische\u00a0<em class=\"ku\">train_test_split()<\/em>\u00a0von sklearn. Warum? Stellen Sie sich vor, Ihr data-Set sind die Verk\u00e4ufe von 2019. Wenn Sie zuf\u00e4llig aufteilen, trainieren Sie auf data von Januar, Februar, ..., Dezember 2019 und Ihr Test data hat Verk\u00e4ufe von denselben Daten! Infolgedessen wird Ihr Algorithmus mit Mustern trainieren, die er in der Produktion nicht haben wird, was zu einem data Leckproblem f\u00fchrt. Um dieses Problem zu l\u00f6sen, gibt es andere M\u00f6glichkeiten, Ihre data aufzuteilen, z.B. die Funktion T<em class=\"ku\">imeSeriesSplit()<\/em>\u00a0auch von sklearn.<\/p>\n<p id=\"8558\" class=\"kx im dn ce in ky kz eo ir la lb er iv es lc eu iz ev ld ex jd ey le fa jh lf ek\">2. Die Wahl der Metrik:<\/p>\n<p id=\"22a7\" class=\"jj jk dn jl b em jm iq jn ep jo iu jp jq jr js jt ju jv jw jx jy jz ka kb kc df ek\" data-selectable-paragraph=\"\">Bei der Zeitreihenprognose handelt es sich um ein Regressionsproblem. Daher k\u00f6nnen wir die klassischen Metriken wie MSE, RMSE verwenden, aber es gibt auch noch andere, hier eine nicht ersch\u00f6pfende Liste:<\/p>\n<ul class=\"\">\n<li id=\"08a5\" class=\"jj jk dn jl b em ke iq jn ep kf iu jp jq kg js jt ju kh jw jx jy ki ka kb kc kj kk kl ek\" data-selectable-paragraph=\"\">MAPE oder Vorhersage-Genauigkeit<\/li>\n<li id=\"2012\" class=\"jj jk dn jl b em km iq jn ep kn iu jp jq ko js jt ju kp jw jx jy kq ka kb kc kj kk kl ek\" data-selectable-paragraph=\"\">Ein gewichteter MAPE<\/li>\n<li id=\"7dfa\" class=\"jj jk dn jl b em km iq jn ep kn iu jp jq ko js jt ju kp jw jx jy kq ka kb kc kj kk kl ek\" data-selectable-paragraph=\"\">Dynamisches Time Warping<\/li>\n<\/ul>\n<p id=\"2f5b\" class=\"jj jk dn jl b em ke iq jn ep kf iu jp jq kg js jt ju kh jw jx jy ki ka kb kc df ek\" data-selectable-paragraph=\"\">Wir haben unseren Algorithmus anhand des RMSE optimiert, aber zur Kommunikation mit unseren Gesch\u00e4ftsinhabern eine gewichtete Prognosegenauigkeit verwendet:<\/p>\n<figure class=\"hn ho hp hq hr hd cx cy paragraph-image\">\n<div class=\"cx cy lg\">\n<div class=\"ie s hw if\">\n<div class=\"lh ih s\">\n<div class=\"hz ia t u v ib aj bm ic id\"><\/div>\n<p><img decoding=\"async\" class=\"lazyload vl vm t u v ib aj c aligncenter\" src=\"https:\/\/www.artefact.com\/\/wp-content\/uploads\/2024\/09\/1TMosktPGqo5c6MG4bQVw8g.png\" data-orig-src=\"https:\/\/www.artefact.com\/\/wp-content\/uploads\/2024\/09\/1TMosktPGqo5c6MG4bQVw8g.png\" data-sizes=\"auto\" data-orig-sizes=\"342px\" srcset=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%27342%27%20height%3D%2750%27%20viewBox%3D%270%200%20342%2050%27%3E%3Crect%20width%3D%27342%27%20height%3D%2750%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-srcset=\"https:\/\/www.artefact.com\/\/wp-content\/uploads\/2024\/09\/1TMosktPGqo5c6MG4bQVw8g.png 276w, https:\/\/www.artefact.com\/\/wp-content\/uploads\/2024\/09\/1TMosktPGqo5c6MG4bQVw8g.png 342w\" alt=\"Image for post\" width=\"342\" height=\"50\" \/><\/p>\n<\/div>\n<div><\/div>\n<\/div>\n<\/div>\n<\/figure>\n<p id=\"5685\" class=\"jj jk dn jl b em ke iq jn ep kf iu jp jq kg js jt ju kh jw jx jy ki ka kb kc df ek\" data-selectable-paragraph=\"\">Wir haben ihn zun\u00e4chst auf Tages-\/Filialebene berechnet und ihn dann nach Filiale anhand eines gewichteten Durchschnitts aggregiert, wobei die Gewichtung den Tagesums\u00e4tzen der verschiedenen Filialen entspricht. Diese Kennzahl kann nat\u00fcrlich in Frage gestellt werden, aber sie hat den Vorteil, dass sie einen Wert f\u00fcr jede Filiale hat und dass sie nicht \u00fcbersch\u00e4tzt wird, wenn der Manager an einem Tag wirklich \u00fcberdurchschnittliche Leistungen erbringt (ob schlecht oder gut). Au\u00dferdem ist FA eine wirklich interpretierbare Kennzahl, die im Gegensatz zum RMSE etwas \u00fcber das Gesch\u00e4ft aussagt.<\/p>\n<p id=\"9603\" class=\"jj jk dn jl b em ke iq jn ep kf iu jp jq kg js jt ju kh jw jx jy ki ka kb kc df ek\" data-selectable-paragraph=\"\">Eine weitere interessante Metrik, die Sie im Auge behalten sollten, ist der Biais, der die allgemeine Tendenz des Algorithmus zur \u00dcber- oder Unterprognose angibt. Je nach Gesch\u00e4ftsvorfall k\u00f6nnen Sie das eine oder das andere vorziehen. In unserem Fall haben wir eine leicht \u00fcberh\u00f6hte Vorhersage getroffen, um sicher zu gehen, dass das Produkt im Regal steht und unsere Kunden zufrieden sind!<\/p>\n<p id=\"f905\" class=\"il im dn ce in io ip iq ir is it iu iv iw ix iy iz ja jb jc jd je jf jg jh ji ek\"><span style=\"color: #ff0066;\"><strong>Abschlie\u00dfende Worte, einige Ratschl\u00e4ge f\u00fcr alle data-Projekte<\/strong><\/span><\/p>\n<p id=\"8308\" class=\"jj jk dn jl b em jm iq jn ep jo iu jp jq jr js jt ju jv jw jx jy jz ka kb kc df ek\" data-selectable-paragraph=\"\">Ich dachte, es w\u00e4re auch sch\u00f6n, mit Ihnen einige Tipps und Fehler zu teilen, die wir auf Projektebene machen.<\/p>\n<p id=\"8ff5\" class=\"jj jk dn jl b em ke iq jn ep kf iu jp jq kg js jt ju kh jw jx jy ki ka kb kc df ek\" data-selectable-paragraph=\"\">Zun\u00e4chst einmal, wie haben wir unsere Modelle entwickelt, Feature Engineering?<\/p>\n<p id=\"14f4\" class=\"jj jk dn jl b em ke iq jn ep kf iu jp jq kg js jt ju kh jw jx jy ki ka kb kc df ek\" data-selectable-paragraph=\"\">All diese verschiedenen Schritte und Experimente wurden in Notizb\u00fcchern durchgef\u00fchrt, aber die Verwendung von Notizb\u00fcchern bedeutet nicht, dass der Code unsauber ist! Im Gegenteil, wir empfehlen Ihnen dringend, sich die Zeit zu nehmen, ordentliche Notizb\u00fccher mit Titeln, Eigennamen und Funktionen zu schreiben und \u00fcberfl\u00fcssige Zeilen zu faktorisieren.<\/p>\n<p id=\"5708\" class=\"jj jk dn jl b em ke iq jn ep kf iu jp jq kg js jt ju kh jw jx jy ki ka kb kc df ek\" data-selectable-paragraph=\"\">Die Verwendung von Notebooks bringt einige Herausforderungen mit sich, vor allem wenn viele Entwickler zusammenarbeiten: Konflikte auf Github, kein replizierbarer Code usw...<\/p>\n<p id=\"bc94\" class=\"jj jk dn jl b em ke iq jn ep kf iu jp jq kg js jt ju kh jw jx jy ki ka kb kc df ek\" data-selectable-paragraph=\"\">Hier sind einige Tipps, um diese Probleme zu verringern:<\/p>\n<ul class=\"\">\n<li id=\"e4b4\" class=\"jj jk dn jl b em ke iq jn ep kf iu jp jq kg js jt ju kh jw jx jy ki ka kb kc kj kk kl ek\" data-selectable-paragraph=\"\">Versionieren Sie Ihre Notizb\u00fccher mit Abschl\u00e4gen<\/li>\n<li id=\"2bc5\" class=\"jj jk dn jl b em km iq jn ep kn iu jp jq ko js jt ju kp jw jx jy kq ka kb kc kj kk kl ek\" data-selectable-paragraph=\"\">Vermeiden Sie die gemeinsame Arbeit an denselben Notebooks<\/li>\n<li id=\"8f73\" class=\"jj jk dn jl b em km iq jn ep kn iu jp jq ko js jt ju kp jw jx jy kq ka kb kc kj kk kl ek\" data-selectable-paragraph=\"\">Wenn Sie dies dennoch tun, verwenden Sie zur Behandlung von Konflikten in Notebooks die\u00a0<em class=\"ku\">nbdev<\/em>\u00a0Bibliothek von fastai<\/li>\n<li id=\"684e\" class=\"jj jk dn jl b em km iq jn ep kn iu jp jq ko js jt ju kp jw jx jy kq ka kb kc kj kk kl ek\" data-selectable-paragraph=\"\">Packen Sie g\u00e4ngige Funktionen in .py-Dateien, so dass alle dieselben Funktionen verwenden.<\/li>\n<li id=\"bec5\" class=\"jj jk dn jl b em km iq jn ep kn iu jp jq ko js jt ju kp jw jx jy kq ka kb kc kj kk kl ek\" data-selectable-paragraph=\"\">Verwenden Sie zur Versionierung Ihres Experiments Tools wie\u00a0<a class=\"ck li\" href=\"https:\/\/mlflow.org\/\" rel=\"noopener nofollow\" target=\"_blank\">ML Flow<\/a><\/li>\n<li id=\"1688\" class=\"jj jk dn jl b em km iq jn ep kn iu jp jq ko js jt ju kp jw jx jy kq ka kb kc kj kk kl ek\" data-selectable-paragraph=\"\">Vermeiden Sie print() und verwenden Sie stattdessen einen Logger, der nur n\u00fctzliche Informationen protokolliert. Pr\u00fcfen Sie\u00a0<a class=\"ck li\" href=\"https:\/\/scikit-lego.readthedocs.io\/en\/latest\/pandas_pipeline.html#Logging-in-method-chaining\" rel=\"noopener nofollow\" target=\"_blank\">scikit-lego<\/a>\u00a0die ziemlich coole Funktionen hat, Dekorateure.<\/li>\n<li id=\"3dbf\" class=\"jj jk dn jl b em km iq jn ep kn iu jp jq ko js jt ju kp jw jx jy kq ka kb kc kj kk kl ek\" data-selectable-paragraph=\"\">Wenn Sie wirklich etwas ausdrucken m\u00f6chten, gehen Sie in die Bibliothek.\u00a0<a class=\"ck li\" href=\"https:\/\/github.com\/willmcgugan\/rich\" rel=\"noopener nofollow\" target=\"_blank\">reich<\/a>\u00a0was es sch\u00f6ner macht und auch als Protokollierungswerkzeug verwendet werden kann. Hier ein\u00a0<a class=\"ck li\" href=\"https:\/\/calmcode.io\/rich\/introduction.html\" rel=\"noopener nofollow\" target=\"_blank\">Schnelle Demo<\/a>\u00a0von rich by calmcode.io<\/li>\n<\/ul>\n<p id=\"3ec0\" class=\"il im dn ce in io ip iq ir is it iu iv iw ix iy iz ja jb jc jd je jf jg jh ji ek\"><span style=\"color: #ff0066;\"><strong>Wichtigste Erkenntnisse<\/strong><\/span><\/p>\n<p id=\"1370\" class=\"jj jk dn jl b em jm iq jn ep jo iu jp jq jr js jt ju jv jw jx jy jz ka kb kc df ek\" data-selectable-paragraph=\"\">Wir h\u00e4tten unsere Ergebnisse gerne mit Ihnen geteilt, aber aus Gr\u00fcnden des Datenschutzes durften wir das nicht, aber wir k\u00f6nnen sagen, dass wir mit dieser Methodik in der Lage waren:<\/p>\n<ul class=\"\">\n<li id=\"b9cf\" class=\"jj jk dn jl b em ke iq jn ep kf iu jp jq kg js jt ju kh jw jx jy ki ka kb kc kj kk kl ek\" data-selectable-paragraph=\"\">Seien Sie so gut wie ihr bester Bedarfsplaner<\/li>\n<li id=\"2351\" class=\"jj jk dn jl b em km iq jn ep kn iu jp jq ko js jt ju kp jw jx jy kq ka kb kc kj kk kl ek\" data-selectable-paragraph=\"\">Erh\u00f6hen Sie die FA von einigen Gesch\u00e4ften auf bis zu 30%<\/li>\n<\/ul>\n<p id=\"5540\" class=\"jj jk dn jl b em ke iq jn ep kf iu jp jq kg js jt ju kh jw jx jy ki ka kb kc df ek\" data-selectable-paragraph=\"\">Aber auf der anderen Seite, hier die Liste unserer wichtigsten Erkenntnisse, die Ihnen hoffentlich helfen, Ihre eigene L\u00f6sung zu entwickeln:<\/p>\n<ul class=\"\">\n<li id=\"f872\" class=\"jj jk dn jl b em ke iq jn ep kf iu jp jq kg js jt ju kh jw jx jy ki ka kb kc kj kk kl ek\" data-selectable-paragraph=\"\">Nehmen Sie sich die Zeit, Ihr Problem zu verstehen, definieren Sie ein klares, messbares Ziel, eine Bewertungsmetrik<\/li>\n<li id=\"683c\" class=\"jj jk dn jl b em km iq jn ep kn iu jp jq ko js jt ju kp jw jx jy kq ka kb kc kj kk kl ek\" data-selectable-paragraph=\"\">Knacken und untersuchen Sie Ihren data. Wenn Sie keine Anomalien gefunden haben, haben Sie nicht genug gesucht!<\/li>\n<li id=\"f77b\" class=\"jj jk dn jl b em km iq jn ep kn iu jp jq ko js jt ju kp jw jx jy kq ka kb kc kj kk kl ek\" data-selectable-paragraph=\"\">Verfolgen Sie Ihre Experimente genauestens<\/li>\n<li id=\"7685\" class=\"jj jk dn jl b em km iq jn ep kn iu jp jq ko js jt ju kp jw jx jy kq ka kb kc kj kk kl ek\" data-selectable-paragraph=\"\">Schreiben Sie sauberen Code, vor allem in Notizb\u00fcchern, das wird Ihnen das Leben bei der Implementierung sehr erleichtern.<\/li>\n<li id=\"e5e1\" class=\"jj jk dn jl b em km iq jn ep kn iu jp jq ko js jt ju kp jw jx jy kq ka kb kc kj kk kl ek\" data-selectable-paragraph=\"\">Denken Sie immer an die Produktion: data-Leckagen sind Ihr schlimmster Feind bei Zeitreihenprognosen<\/li>\n<li id=\"2864\" class=\"jj jk dn jl b em km iq jn ep kn iu jp jq ko js jt ju kp jw jx jy kq ka kb kc kj kk kl ek\" data-selectable-paragraph=\"\">Beginnen Sie mit einem kleinen Umfang, mit einfachen Modellen, testen Sie, scheitern Sie, lernen Sie, verbessern Sie sich und haben Sie Erfolg!<\/li>\n<\/ul>\n<\/div><\/div><\/div><\/div><\/div><div class=\"fusion-fullwidth fullwidth-box fusion-builder-row-6 fusion-flex-container nonhundred-percent-fullwidth non-hundred-percent-height-scrolling\" style=\"--link_hover_color: #ff0066;--awb-border-radius-top-left:0px;--awb-border-radius-top-right:0px;--awb-border-radius-bottom-right:0px;--awb-border-radius-bottom-left:0px;--awb-padding-top:0px;--awb-padding-right:0px;--awb-padding-bottom:0px;--awb-padding-left:0px;--awb-flex-wrap:wrap;\" ><div class=\"fusion-builder-row fusion-row fusion-flex-align-items-flex-start fusion-flex-content-wrap\" style=\"max-width:calc( 1440px + 20px );margin-left: calc(-20px \/ 2 );margin-right: calc(-20px \/ 2 );\"><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-6 fusion_builder_column_1_2 1_2 fusion-flex-column\" style=\"--awb-bg-size:cover;--awb-width-large:50%;--awb-margin-top-large:0px;--awb-spacing-right-large:10px;--awb-margin-bottom-large:0px;--awb-spacing-left-large:10px;--awb-width-medium:50%;--awb-order-medium:0;--awb-spacing-right-medium:10px;--awb-spacing-left-medium:10px;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:10px;--awb-spacing-left-small:10px;\"><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-flex-start fusion-content-layout-column\"><div class=\"fusion-image-element\" style=\"text-align:center;--awb-margin-top:0px;--awb-margin-right:0px;--awb-margin-bottom:0px;--awb-margin-left:0px;--awb-caption-title-font-family:var(--h2_typography-font-family);--awb-caption-title-font-weight:var(--h2_typography-font-weight);--awb-caption-title-font-style:var(--h2_typography-font-style);--awb-caption-title-size:var(--h2_typography-font-size);--awb-caption-title-transform:var(--h2_typography-text-transform);--awb-caption-title-line-height:var(--h2_typography-line-height);--awb-caption-title-letter-spacing:var(--h2_typography-letter-spacing);\"><span class=\"fusion-imageframe imageframe-none imageframe-2 hover-type-none\"><img decoding=\"async\" width=\"1057\" height=\"591\" title=\"data-driven\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%271057%27%20height%3D%27591%27%20viewBox%3D%270%200%201057%20591%27%3E%3Crect%20width%3D%271057%27%20height%3D%27591%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-orig-src=\"https:\/\/www.artefact.com\/wp-content\/uploads\/2020\/06\/Global-Newsletter-Data-Digest_LinkedIn_600x315_april.jpg\" alt class=\"lazyload img-responsive wp-image-30246\"\/><\/span><\/div><\/div><\/div><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-7 fusion_builder_column_1_2 1_2 fusion-flex-column fusion-flex-align-self-center fusion-column-inner-bg-wrapper\" style=\"--awb-inner-bg-size:cover;--awb-width-large:50%;--awb-margin-top-large:0px;--awb-spacing-right-large:10px;--awb-margin-bottom-large:0px;--awb-spacing-left-large:10px;--awb-width-medium:50%;--awb-order-medium:0;--awb-spacing-right-medium:10px;--awb-spacing-left-medium:10px;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:10px;--awb-spacing-left-small:10px;\"><span class=\"fusion-column-inner-bg hover-type-none\"><a class=\"fusion-column-anchor\" href=\"https:\/\/go.pardot.com\/l\/597421\/2020-05-06\/2k5zzj\" target=\"_blank\" rel=\"noopener\"><span class=\"fusion-column-inner-bg-image\"><\/span><\/a><\/span><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-center fusion-content-layout-column\"><div class=\"fusion-text fusion-text-7\"><p><b>Interessieren Sie sich f\u00fcr Digital und data marketing?<\/b><\/p>\n<p>Abonnieren Sie den Data Digest, den Newsletter von Artefact, und Sie erhalten jeden Monat praktische Ratschl\u00e4ge, Einblicke und Meinungen in Ihren Posteingang.<\/p>\n<p><b>Melden Sie mich an!<\/b><\/p>\n<\/div><\/div><\/div><\/div><\/div><\/p>","protected":false},"excerpt":{"rendered":"<p>25. November 2020<br \/>\nWir bei Artefact sind so franz\u00f6sisch, dass wir beschlossen haben, Machine Learning auf Croissants anzuwenden. Dieser erste von zwei Artikeln erkl\u00e4rt, wie wir beschlossen haben, Catboost zu verwenden, um die Verk\u00e4ufe von \u201cviennoiseries\u201d vorherzusagen. Die wichtigsten Merkmale, die den Umsatz beeinflussen, sind die letzten w\u00f6chentlichen Verk\u00e4ufe, die Tatsache, ob das Produkt im Sonderangebot ist oder nicht und der Preis. Wir stellen Ihnen einige nette technische Funktionen vor, darunter die Kannibalisierung und warum Sie Ihre Zielvariable manchmal aktualisieren m\u00fcssen.<\/p>","protected":false},"featured_media":21373,"parent":0,"template":"","meta":{"_acf_changed":false,"ep_exclude_from_search":false},"blog-category":[2995],"blog-language":[2991],"class_list":["post-21214","blog","type-blog","status-publish","has-post-thumbnail","hentry","blog-category-ai-technology","blog-language-en"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.artefact.com\/de\/wp-json\/wp\/v2\/blog\/21214","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.artefact.com\/de\/wp-json\/wp\/v2\/blog"}],"about":[{"href":"https:\/\/www.artefact.com\/de\/wp-json\/wp\/v2\/types\/blog"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.artefact.com\/de\/wp-json\/wp\/v2\/media\/21373"}],"wp:attachment":[{"href":"https:\/\/www.artefact.com\/de\/wp-json\/wp\/v2\/media?parent=21214"}],"wp:term":[{"taxonomy":"blog-category","embeddable":true,"href":"https:\/\/www.artefact.com\/de\/wp-json\/wp\/v2\/blog-category?post=21214"},{"taxonomy":"blog-language","embeddable":true,"href":"https:\/\/www.artefact.com\/de\/wp-json\/wp\/v2\/blog-language?post=21214"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}