Freigeben über


Trainings- und Testdatasets

Gilt für: SQL Server 2019 und früher Analysis Services Azure Analysis Services Fabric/Power BI Premium

Wichtig

Data Mining wurde in SQL Server 2017 Analysis Services als veraltet eingestuft und wurde jetzt in SQL Server 2022 Analysis Services eingestellt. Die Dokumentation wird für veraltete und eingestellte Features nicht aktualisiert. Weitere Informationen finden Sie unter Abwärtskompatibilität von Analysis Services.

Das Aufteilen von Daten in Trainings- und Testsätze ist ein wichtiger Bestandteil der Auswertung von Data Mining-Modellen. Wenn Sie ein Dataset in einen Trainings- und einen Testsatz unterteilen, wird der Großteil der Daten in der Regel für das Training und die restlichen Daten zum Testen verwendet. SQL Server Analysis Services stichprobenartig die Daten, um sicherzustellen, dass die Test- und Trainingssätze ähnlich sind. Durch die Verwendung der gleichen Daten für das Training und das Testen können Sie mögliche Datendiskrepanzen weitgehend ausschließen und die Eigenschaften des Modells leichter verstehen.

Nachdem ein Modell durch die Verwendung des Trainingssatzes bearbeitet wurde, können Sie das Modell testen, indem Sie Vorhersagen für den Testsatz erstellen. Da die Daten im Testsatz bereits bekannte Werte für das Attribut enthalten, das Sie vorhersagen möchten, ist es einfach, die Vorhersagegenauigkeit des Modells zu bestimmen.

Erstellen von Test- und Trainingsets für Data Mining-Strukturen

In SQL Server 2017 trennen Sie das ursprüngliche Dataset auf der Ebene der Miningstruktur. Die Informationen zur Größe des Trainings- und Testdatasets bzw. welche Zeile zu welchem Satz gehört, wird mit der Struktur gespeichert. Alle auf dieser Struktur basierenden Modelle können die Sätze für Trainings- und Testzwecke verwenden.

Testdatasets für eine Miningstruktur können auf folgende Weisen definiert werden:

  • Verwenden Sie den Data Mining-Assistenten, um die Miningstruktur bei der Erstellung zu unterteilen.

  • Ändern Sie die Struktureigenschaften auf der Registerkarte Miningstruktur des Data Mining-Designers.

  • Erstellen und ändern Sie die Strukturen programmgesteuert mithilfe von Analysis Management Objects (AMO) oder der XML-Datendefinitionssprache (DDL).

Verwenden des Data Mining-Assistenten zur Unterteilung einer Miningstruktur

Nachdem Sie die Datenquellen für eine Miningstruktur definiert haben, unterteilt der Data Mining-Assistent die Daten standardmäßig in zwei Sätze: einen mit 70 Prozent der Quelldaten zum Trainieren des Modells und einen zweiten mit 30 Prozent der Quelldaten zum Testen des Modells. Diese Standardeinstellung wurde gewählt, da im Data Mining häufig ein Verhältnis von 70 zu 30 verwendet wird. Mit SQL Server Analysis Services können Sie dieses Verhältnis jedoch an Ihre Anforderungen anpassen.

Sie können den Assistenten auch so konfigurieren, dass eine maximale Anzahl von Trainingsfällen festgelegt wird, oder Sie können die Grenzwerte kombinieren, um einen maximalen Prozentsatz von Fällen bis zu einer festgelegten maximalen Anzahl von Fällen zuzulassen. Wenn Sie sowohl einen maximalen Prozentsatz von Fällen als auch eine maximale Anzahl von Fällen angeben, verwendet SQL Server Analysis Services den kleineren der beiden Grenzwerte als Größe des Testsatzes. Wenn Sie beispielsweise für die Testfälle 30 Prozent zurückgehaltene Daten festlegen und für die maximale Anzahl der Testfälle 1000, wird die Größe des Testsatzes niemals 1000 Fälle überschreiten. Dies kann hilfreich sein, wenn Sie sicherstellen möchten, dass die Größe Ihres Testsatzes konsistent bleibt, selbst wenn dem Modell weitere Trainingsdaten hinzugefügt werden.

Wenn Sie dieselbe Datenquellensicht für unterschiedliche Miningstrukturen verwenden und sicherstellen möchten, dass die Daten für alle Miningstrukturen und ihre Modelle weitestgehend auf die gleiche Weise unterteilt werden, sollten Sie den Ausgangswert festlegen, der für die Initialisierung der zufälligen Stichprobe verwendet wird. Wenn Sie einen Wert für HoldoutSeed angeben, verwenden SQL Server Analysis Services diesen Wert, um mit der Stichprobenerstellung zu beginnen. Andernfalls verwendet die Stichprobe einen Hashalgorithmus auf den Namen der Miningstruktur, um den Ausgangswert zu erstellen.

Hinweis

Wenn Sie mithilfe der EXPORT -Anweisung und der IMPORT -Anweisung eine Kopie der Miningstruktur erstellen, besitzt die neue Miningstruktur die gleichen Trainings- und Testdatasets, weil durch den Exportvorgang eine neue ID erstellt wird, die den gleichen Namen verwendet. Wenn jedoch zwei Miningstrukturen dieselbe zugrunde liegende Datenquelle verwenden, aber unterschiedliche Namen besitzen, sind die Sätze, die für jede Miningstruktur erstellt werden, unterschiedlich.

Ändern von Struktureigenschaften zum Erstellen eines Testdatasets

Wenn Sie eine Miningstruktur erstellen und verarbeiten und zu einem späteren Zeitpunkt ein Testdataset separieren möchten, können Sie die Eigenschaften der Miningstruktur ändern. Um die Methode zu ändern, mit der die Daten partitioniert werden, bearbeiten Sie die folgenden Eigenschaften:

Eigenschaft Beschreibung
HoldoutMaxCases Gibt die maximale Anzahl der Fälle an, die in dem Testsatz enthalten sein soll.
HoldoutMaxPercent Gibt die Anzahl der Fälle, die in dem Testsatz enthalten sein soll, als Prozentsatz des gesamten Datasets an. Um kein Dataset zu verwenden, geben Sie 0 an.
HoldoutSeed Gibt einen ganzzahligen Wert an, der als Ausgangswert für die stichprobenartige Auswahl der Daten für die Partition verwendet werden soll. Dieser Wert hat keinen Einfluss auf die Anzahl der Fälle in dem Trainingssatz, er stellt lediglich sicher, dass die Partition wiederholt werden kann.

Wenn Sie einer vorhandenen Struktur ein Testdataset hinzufügen bzw. ein vorhandenes Testdataset ändern, müssen Sie die Struktur und alle zugeordneten Modelle neu verarbeiten. Da das Unterteilen der Quelldaten dazu führt, dass das Modell mit einer anderen Teilmenge der Daten trainiert wird, liefert das Modell möglicherweise unterschiedliche Ergebnisse.

Programmgesteuertes Festlegen zurückgehaltener Daten

Test- und Trainingsdatasets für eine Miningstruktur können mithilfe von DMX-Anweisungen, AMO oder XML DDL definiert werden. Die ALTER MINING STRUCTURE-Anweisung unterstützt nicht die Verwendung von Zurückhaltungsparametern.

  • DMX In der Sprache Data Mining-Erweiterungen (Data Mining Extensions, DMX) wurde die CREATE MINING STRUCTURE-Anweisung um eine WITH HOLDOUT-Klausel erweitert.

  • ASSL Sie können entweder eine neue Miningstruktur erstellen oder einer vorhandenen Miningstruktur ein Testdatensatz hinzufügen, indem Sie die SQL Server Analysis Services Scripting Language (ASSL) verwenden.

  • AMO Sie können auch Haltedatensätze mit AMO anzeigen und ändern.

Sie können Informationen über zurückgehaltene Datasets in einer bestehenden Miningstruktur anzeigen. Dazu wird das Data Mining-Schemarowset abgefragt. Führen Sie hierzu einen DISCOVER ROWSET-Aufruf aus, oder verwenden Sie eine DMX-Abfrage.

Abrufen von Informationen über zurückgehaltene Daten

Alle Informationen über die Trainings- und Testdatasets werden standardmäßig zwischengespeichert, damit Sie zum Trainieren und anschließenden Testen neuer Modelle vorhandener Daten verwenden können. Sie können auch Filter festlegen, die auf die zwischengespeicherten zurückgehaltenen Daten angewendet werden, um so das Modell anhand von Datenteilmengen auszuwerten.

Die Art und Weise, wie Fälle in Trainings- und Testdatasets unterteilt werden, hängt davon ab, wie Sie die Zurückhaltung von Daten konfigurieren und welche Daten Sie angeben. Wenn Sie die Anzahl der Fälle festlegen möchten, die zum Trainieren oder Testen verwendet werden, oder wenn Sie zusätzliche Details zu den Fällen in den Trainings- und Testsätzen erhalten möchten, können Sie die Modellstruktur abfragen, indem Sie eine DMX-Abfrage erstellen. Die folgende Abfrage gibt beispielsweise die Fälle zurück, die im Trainingssatz des Modells verwendet wurden.

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

Verwenden Sie die folgende Syntax, um nur die Testfälle abzurufen und um die Testfälle außerdem nach einer der Spalten in der Miningstruktur zu filtern:

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

Einschränkungen bei der Verwendung zurückgehaltener Daten

  • Um zurückgehaltene Daten verwenden zu können, muss für die MiningStructureCacheMode -Eigenschaft der Miningstruktur der Standardwert KeepTrainingCasesfestgelegt werden. Wenn Sie die CacheMode -Eigenschaft zu ClearAfterProcessingändern und die Miningstruktur anschließend neu verarbeiten, geht die Partition verloren.

  • Aus einem Zeitreihenmodell können keine Daten entfernt werden; deshalb ist es nicht möglich, Quelldaten in Trainings- und Testsätze zu unterteilen. Wenn Sie mit dem Erstellen einer Miningstruktur und eines Modells beginnen und den Microsoft Time Series-Algorithmus auswählen, ist die Option zum Erstellen eines Holdout-Datasets deaktiviert. Die Verwendung zurückgehaltener Daten ist ebenfalls deaktiviert, wenn die Miningstruktur auf der Fallebene oder auf der Ebene geschachtelter Tabellen eine KEY TIME-Spalte enthält.

  • Manchmal wird das zurückgehaltene Dataset auch versehentlich erstellt. In diesem Fall wird das gesamte Dataset für Tests verwendet, und es bleiben keine Daten für Trainingszwecke übrig. Wenn Sie dies tun, löst SQL Server Analysis Services jedoch einen Fehler aus, sodass Sie das Problem beheben können. SQL Server Analysis Services warnt Sie auch, wenn die Struktur verarbeitet wird, wenn mehr als 50 Prozent der Daten zu Testzwecken vorgehalten wurden.

  • In den meisten Fällen stellt der Wert von 30 Prozent für zurückgehaltene Daten ein gutes Gleichgewicht zwischen Trainings- und Testdaten dar. Es lässt sich schwer sagen, wie groß das Dataset sein soll, um ein ausreichendes Training zu gewährleisten, oder wie gering die Dichte des Trainingssatzes sein und trotzdem eine Überanpassung vermieden werden kann. Nach der Erstellung eines Modells können Sie jedoch eine Kreuzvalidierung durchführen, um das Dataset im Hinblick auf ein bestimmtes Modell zu testen.

  • Zusätzlich zu den in der vorstehenden Tabelle aufgeführten Eigenschaften enthalten AMO und XML DDL die schreibgeschützte HoldoutActualSize-Eigenschaft. Da die tatsächliche Größe einer Partition jedoch nicht präzise ermittelt werden kann, bevor die Struktur nicht verarbeitet wurde, sollten Sie überprüfen, ob das Modell verarbeitet wurde, bevor Sie den Wert der HoldoutActualSize -Eigenschaft abrufen.

Weitere Informationen

Data Mining-Tools
Data Mining-Konzepte
Data Mining-Projektmappen
Tests und Überprüfung (Data Mining)