Trénování a testování datových sad

Platí pro: SQL Server 2019 a starší služby Analysis Services Azure Analysis Services Fabric/ Power BI Premium

Důležité

Dolování dat bylo v SQL Serveru 2017 Analysis Services zastaralé a nyní ukončeno ve službě SQL Server 2022 Analysis Services. Dokumentace se neaktualizuje pro zastaralé a ukončené funkce. Další informace najdete v tématu Zpětná kompatibilita služby Analysis Services.

Oddělení dat do trénovacích a testovacích sad je důležitou součástí vyhodnocování modelů dolování dat. Obvykle platí, že když rozdělíte datovou sadu na trénovací sadu a testovací sadu, většina dat se používá k trénování a k testování se používá menší část dat. SQL Server Analysis Services náhodně vzorkuje data, aby se zajistilo, že testovací a trénovací sady jsou podobné. Pomocí podobných dat pro trénování a testování můžete minimalizovat účinky nesrovnalostí v datech a lépe porozumět charakteristikám modelu.

Po zpracování modelu pomocí trénovací sady otestujete model provedením předpovědí na testovací sadě. Vzhledem k tomu, že data v testovací sadě již obsahují známé hodnoty atributu, který chcete předpovědět, je snadné určit, zda jsou odhady modelu správné.

Vytváření testovacích a trénovacích sad pro struktury dolování dat

V SQL Serveru 2017 oddělíte původní sadu dat na úrovni struktury dolování. Informace o velikosti trénovacích a testovacích datových sad a o tom, který řádek patří do které sady, jsou uloženy ve struktuře a všechny modely založené na této struktuře mohou tyto sady použít pro trénování a testování.

Testovací datovou sadu pro dolování můžete definovat následujícími způsoby:

  • Pomocí Průvodce dolováním dat rozdělte strukturu dolování během jejího vytváření.

  • Úprava vlastností struktury na kartě Struktura dolování v Návrháři dolování dat.

  • Vytváření a úpravy struktur prostřednictvím kódu programu pomocí objektů AMO (Analysis Management Objects) nebo DDL (XML Data Definition Language).

Použití Průvodce dolováním dat k rozdělení struktury dolování

Ve výchozím nastavení po definování zdrojů dat pro dolování struktury Průvodce dolováním rozdělí data do dvou sad: jednu se 70 procenty zdrojových dat, pro trénování modelu a jednu s 30 procenty zdrojových dat pro testování modelu. Toto výchozí nastavení bylo zvoleno, protože při dolování dat se často používá poměr 70–30, ale u služby SQL Server Analysis Services můžete tento poměr změnit tak, aby vyhovoval vašim požadavkům.

Průvodce můžete také nakonfigurovat tak, aby nastavil maximální počet případů trénování, nebo můžete zkombinovat limity, abyste povolili maximální procento případů až do zadaného maximálního počtu případů. Když zadáte maximální procento případů i maximální počet případů, použije služba SQL Server Analysis Services menší ze dvou limitů jako velikost testovací sady. Pokud například zadáte 30% vynechání testovacích případů a maximální počet testovacích případů je 1000, velikost testovací sady nikdy nepřekročí 1000 testovacích případů. To může být užitečné, pokud chcete zajistit, aby velikost testovací sady zůstala konzistentní i v případě, že do modelu přidáte více trénovacích dat.

Pokud použijete stejné zobrazení zdroje dat pro různé dolování a chcete zajistit, aby byla data rozdělena zhruba stejným způsobem pro všechny dolování a jejich modely, měli byste určit počáteční hodnotu, která se použije k inicializaci náhodného vzorkování. Když zadáte hodnotu pro HoldoutSeed, služba SQL Server Analysis Services tuto hodnotu použije k zahájení vzorkování. V opačném případě vzorkování použije hashovací algoritmus na název dané struktury dolování k vytvoření počáteční hodnoty.

Poznámka:

Pokud vytvoříte kopii dolování pomocí příkazů EXPORT a IMPORT , nová struktura dolování bude mít stejné trénovací a testovací datové sady, protože proces exportu vytvoří nové ID, ale použije stejný název. Pokud však dvě struktury dolování dat používají stejný podkladový zdroj dat, ale mají různé názvy, sady vytvořené pro každou strukturu dolování dat budou odlišné.

Úprava vlastností struktury pro vytvoření testovací datové sady

Pokud vytvoříte a zpracujete strukturu dolování a později se rozhodnete, že chcete zvlášť vyčlenit data pro testování, můžete upravit vlastnosti této struktury dolování. Pokud chcete změnit způsob rozdělení dat, upravte následující vlastnosti:

Vlastnictví Description
HoldoutMaxCases Určuje maximální počet případů, které se mají zahrnout do testovací sady.
Holdoutmaxpercent Určuje počet případů, které mají být zahrnuty do testovací sady jako procento z celého datového souboru. Pokud nemáte žádnou sadu dat, zadáte hodnotu 0.
HoldoutSeed Určuje celočíselnou hodnotu, která se má použít jako počáteční při náhodném výběru dat pro oddíly. Tato hodnota nemá vliv na počet případů v tréninkové sadě; místo toho zajistí, aby se rozdělení mohlo opakovat.

Pokud přidáte nebo změníte testovací sadu dat do existující struktury, musíte znovu zpracovat strukturu a všechny přidružené modely. Protože dělení zdrojových dat způsobí, že se model vytrénuje na jiné podmnožině dat, může se zobrazit jiné výsledky z modelu.

Programatická specifikace holdoutu

Testovací a trénovací datové sady můžete definovat ve struktuře dolování pomocí příkazů DMX, AMO nebo XML DDL. Příkaz ALTER MINING STRUCTURE nepodporuje použití parametrů blokování.

  • DMX V jazyce DMX (Data Mining Extensions) byl příkaz CREATE MINING STRUCTURE rozšířen tak, aby zahrnoval klauzuli WITH HOLDOUT..

  • ASSL Můžete buď vytvořit novou strukturu dolování dat, nebo přidat testovací datový soubor do existující struktury dolování dat pomocí jazyka SQL Server Analysis Services Scripting Language (ASSL).

  • AMO Testovací datové sady můžete také zobrazit a upravit pomocí AMO.

Informace o sadě vyčleněných dat v existující struktuře dolování můžete zobrazit dotazováním na řádkovou sadu schématu dolování dat. Můžete to udělat tak, že provedete volání DISCOVER ROWSET nebo můžete použít dotaz DMX.

Načítání informací o uložených datech

Ve výchozím nastavení se všechny informace o trénovacích a testovacích sadách dat ukládají do mezipaměti, takže můžete použít existující data k trénování a testování nových modelů. Můžete také definovat filtry, které se použijí na data blokování uložené v mezipaměti, abyste mohli model vyhodnotit na podmnožině dat.

Způsob, jakým jsou instance rozděleny do trénovacích a testovacích datových sad, závisí na způsobu konfigurace holdoutu a na datech, která poskytnete. Pokud chcete určit počet případů používaných pro trénování nebo testování, nebo pokud chcete najít další podrobnosti o případech zahrnutých v trénovacích a testovacích sadách, můžete dotazovat strukturu modelu vytvořením dotazu DMX. Například následující dotaz vrátí případy, které byly použity v trénovací sadě modelu.

SELECT * from <structure>.CASES WHERE IsTrainingCase()  

Pokud chcete načíst pouze testovací případy a dále filtrovat testovací případy na jednom ze sloupců ve struktuře dolování, použijte následující syntaxi:

SELECT * from <structure>.CASES WHERE IsTestCase() AND <structure column name> = '<value>'  

Omezení použití testovacích dat

  • Chcete-li použít blokování, vlastnost důlní struktury MiningStructureCacheMode musí být nastavena na výchozí hodnotu KeepTrainingCases. Pokud změníte vlastnost CacheMode na ClearAfterProcessing a pak znovu zpracujete strukturu dolování, oddíl bude ztracen.

  • Nelze odebrat data z modelu časové řady; zdrojová data proto nelze oddělit do trénovacích a testovacích sad. Pokud začnete vytvářet těžbu struktury a modelu a zvolíte algoritmus Microsoft Time Series, možnost vytvořit sadu dat pro držení je deaktivována. Použití dat pro vynechání je také zakázáno, pokud struktura dolování obsahuje sloupec KEY TIME na úrovni případové nebo vnořené tabulky.

  • Je možné neúmyslně nakonfigurovat sadu dat pro vyhrazování tak, aby se celá sada dat používala k testování a žádná data nezůstanou pro trénování. Pokud to ale uděláte, služba SQL Server Analysis Services vyvolá chybu, abyste mohli problém opravit. SQL Server Analysis Services vás také upozorní, když je struktura zpracována, pokud bylo pro testování rezervováno více než 50 procent dat.

  • Ve většině případů výchozí hodnota blokování 30 poskytuje dobrou rovnováhu mezi trénovacími a testovacími daty. Neexistuje žádný jednoduchý způsob, jak určit, jak velká by měla být datová sada, aby poskytla dostatečné vstupní informace pro trénink, nebo jak řídká může být trénovací sada a přitom se stále vyhnout overfittingu. Po vytvoření modelu však můžete použít křížové ověření k vyhodnocení datové sady s ohledem na konkrétní model.

  • Kromě vlastností uvedených v předchozí tabulce je v AMO a XML DDL k dispozici jen pro čtení vlastnost HoldoutActualSize. Vzhledem k tomu, že skutečnou velikost oddílu nelze přesně určit, dokud nebude struktura zpracována, měli byste zkontrolovat, zda byl model zpracován, před načtením hodnoty vlastnosti HoldoutActualSize.

Viz také

Nástroje pro dolování dat
Koncepty dolování dat
Řešení pro dolování dat
Testování a ověřování (dolování dat)