Datauppsättningar för träning och testning

Gäller för: SQL Server 2019 och tidigare Analysis Services Azure Analysis Services Fabric/Power BI Premium

Viktigt!

Datautvinningen upphörde i SQL Server 2017 Analysis Services och upphörde nu i SQL Server 2022 Analysis Services. Dokumentationen uppdateras inte för inaktuella och utgångna funktioner. Mer information finns i Analysis Services bakåtkompatibilitet.

Att dela upp data i tränings- och testuppsättningar är en viktig del i utvärderingen av datautvinningsmodeller. När du separerar en datauppsättning i en träningsuppsättning och en testuppsättning används vanligtvis de flesta data för träning och en mindre del av data används för testning. SQL Server Analysis Services tar slumpmässiga exempel på data för att säkerställa att test- och träningsuppsättningarna är liknande. Genom att använda liknande data för träning och testning kan du minimera effekterna av dataavvikelser och bättre förstå modellens egenskaper.

När en modell har bearbetats med hjälp av träningsuppsättningen testar du modellen genom att göra förutsägelser mot testuppsättningen. Eftersom data i testuppsättningen redan innehåller kända värden för det attribut som du vill förutsäga är det enkelt att avgöra om modellens gissningar är korrekta.

Skapa test- och träningsuppsättningar för datautvinningsstrukturer

I SQL Server 2017 separerar du den ursprungliga datauppsättningen på nivån för gruvstrukturen. Informationen om storleken på datauppsättningarna för träning och testning och vilken rad som tillhör vilken uppsättning lagras med strukturen, och alla modeller som baseras på den strukturen kan använda uppsättningarna för träning och testning.

Du kan definiera en testdatauppsättning på en gruvstruktur på följande sätt:

  • Använd guiden för datautvinning för att dela upp datautvinningsstrukturen när du skapar den.

  • Ändra strukturegenskaper på fliken Gruvstruktur i Data Mining Designer.

  • Skapa och ändra strukturer programmatiskt med hjälp av Analysis Management Objects (AMO) eller XML Data Definition Language (DDL).

Använda guiden Datautvinning för att dela upp en gruvstruktur

Som standard delar datautvinningsguiden efter att du har definierat datakällorna för en datautvinningsstruktur in data i två uppsättningar: en som innehåller 70 procent av källdata för att träna modellen och en som innehåller 30 procent av källdata för att testa modellen. Den här standardinställningen valdes eftersom ett förhållande mellan 70 och 30 ofta används vid datautvinning, men med SQL Server Analysis Services kan du ändra det här förhållandet så att det passar dina behov.

Du kan också konfigurera guiden för att ange ett maximalt antal träningsfall, eller så kan du kombinera gränserna för att tillåta en maximal procentandel ärenden upp till ett angivet maximalt antal fall. När du anger både en maximal procentandel fall och ett maximalt antal fall använder SQL Server Analysis Services den mindre av de två gränserna som testuppsättningens storlek. Om du till exempel anger 30 procent undantag för testfallen och det maximala antalet testfall som 1 000, kommer storleken på testuppsättningen aldrig att överstiga 1 000 fall. Detta kan vara användbart om du vill se till att storleken på testuppsättningen förblir konsekvent även om fler träningsdata läggs till i modellen.

Om du använder samma datakällsvy för olika gruvstrukturer och vill se till att data delas upp på ungefär samma sätt för alla gruvstrukturer och deras modeller, bör du ange det frö som används för att initiera slumpmässig sampling. När du anger ett värde för HoldoutSeed använder SQL Server Analysis Services det värdet för att påbörja samplingen. Annars använder sampling en hash-algoritm på gruvstrukturens namn för att skapa frövärdet.

Anmärkning

Om du skapar en kopia av gruvstrukturen med hjälp av EXPORT - och IMPORT-uttrycken har den nya gruvstrukturen samma tränings- och testdatauppsättningar, eftersom exportprocessen skapar ett nytt ID men använder samma namn. Men om två gruvstrukturer använder samma underliggande datakälla men har olika namn, kommer de uppsättningar som skapas för varje gruvstruktur att vara olika.

Ändra strukturegenskaper för att skapa en testdatauppsättning

Om du skapar och bearbetar en gruvstruktur och senare bestämmer dig för att du vill avsätta en testdatauppsättning kan du ändra egenskaperna för gruvstrukturen. Om du vill ändra hur data partitioneras redigerar du följande egenskaper:

Fastighet Description
HoldoutMaxCases Anger det maximala antalet fall som ska inkluderas i testuppsättningen.
HoldoutMaxPercent Anger antalet fall som ska inkluderas i testuppsättningen som en procentandel av den fullständiga datamängden. Om du inte vill ha någon datauppsättning anger du 0.
HoldoutSeed Anger ett heltalsvärde som ska användas som startvärde när du slumpmässigt väljer data för partitionerna. Det här värdet påverkar inte antalet fall i träningsuppsättningen. i stället säkerställer det att partitionen kan upprepas.

Om du lägger till eller ändrar en testdatauppsättning till en befintlig struktur måste du bearbeta om strukturen och alla associerade modeller. Eftersom uppdelningen av källdata gör att modellen tränas på en annan delmängd av data kan du också se olika resultat från din modell.

Ange holdout programmatiskt

Du kan definiera test- och träningsdatauppsättningar i en gruvstruktur med hjälp av DMX-instruktioner, AMO eller XML DDL. ALTER MINING STRUCTURE-instruktionen stöder inte användning av undantagsparametrar.

  • DMX På dmx-språket (Data Mining Extensions) har instruktionen CREATE MINING STRUCTURE utökats till att omfatta en WITH HOLDOUT-sats..

  • ASSL Du kan antingen skapa en ny gruvstruktur eller lägga till en testdatauppsättning i en befintlig gruvstruktur med hjälp av SQL Server Analysis Services Scripting Language (ASSL)..

  • AMO Du kan också visa och ändra holdout-datauppsättningar med hjälp av AMO..

Du kan visa information om holdout-datauppsättningen i en befintlig gruvstruktur genom att köra frågor mot datautvinningsschemaraduppsättningen. Du kan göra detta genom att göra ett DISCOVER ROWSET-anrop, eller så kan du använda en DMX-fråga.

Hämtar information om Holdout-data

Som standard cachelagras all information om tränings- och testdatauppsättningarna så att du kan använda befintliga data för att träna och sedan testa nya modeller. Du kan också definiera filter som ska tillämpas på cachelagrade holdout-data så att du kan utvärdera modellen på delmängder av data.

Hur ärenden delas in i datauppsättningar för träning och testning beror på hur du konfigurerar holdout och de data som du anger. Om du vill fastställa antalet fall som används för träning eller testning, eller om du vill hitta ytterligare information om de fall som ingår i tränings- och testuppsättningarna, kan du fråga modellstrukturen genom att skapa en DMX-fråga. Följande fråga returnerar till exempel de fall som användes i modellens träningsuppsättning.

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

Om du bara vill hämta testfallen och dessutom filtrera testfallen på en av kolumnerna i gruvstrukturen använder du följande syntax:

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

Begränsningar i användningen av undantagsdata

  • Om du vill använda holdout MiningStructureCacheMode måste egenskapen för gruvstrukturen anges till standardvärdet KeepTrainingCases. Om du ändrar egenskapen CacheMode till ClearAfterProcessing och sedan bearbetar om gruvstrukturen går partitionen förlorad.

  • Du kan inte ta bort data från en tidsseriemodell. Därför kan du inte dela upp källdata i tränings- och testuppsättningar. Om du börjar skapa en gruvstruktur och modell och väljer Microsoft Time Series-algoritmen inaktiveras alternativet för att skapa en holdout-datauppsättning. Användning av holdout-data inaktiveras också om datautvinningsstrukturen innehåller en nyckeltidskolumn på antingen fall- eller kapslad tabellnivå.

  • Det är möjligt att oavsiktligt konfigurera datauppsättningen för undantag så att den fullständiga datauppsättningen används för testning och att inga data finns kvar för träning. Men om du gör det genererar SQL Server Analysis Services ett fel så att du kan åtgärda problemet. SQL Server Analysis Services varnar dig också när strukturen bearbetas om mer än 50 procent av data har hållits ute för testning.

  • I de flesta fall ger standardvärdet 30 en bra balans mellan tränings- och testdata. Det finns inget enkelt sätt att avgöra hur stor datamängden ska vara för att tillhandahålla tillräcklig träning, eller hur gles träningsuppsättningen kan vara och ändå undvika överanpassning. Men när du har skapat en modell kan du använda korsvalidering för att utvärdera datauppsättningen med avseende på en viss modell.

  • Förutom de egenskaper som anges i föregående tabell tillhandahålls en skrivskyddad egenskap, HoldoutActualSize, i AMO och XML DDL. Men eftersom den faktiska storleken på en partition inte kan fastställas korrekt förrän strukturen har bearbetats bör du kontrollera om modellen har bearbetats innan du hämtar värdet för egenskapen HoldoutActualSize .

Se även

Verktyg för datautvinning
Begrepp för datautvinning
Lösningar för datautvinning
Testning och validering (datautvinning)