Partitionieren von Daten in Trainings- und Testsätze (Analysis Services - Data Mining)

Das Aufteilen von Daten in Trainings- und Testsätze ist ein wichtiger Bestandteil der Auswertung von Data Mining-Modellen. Wenn Sie eine solche Aufteilung vornehmen, werden der Großteil der Daten in der Regel für das Training und die restlichen Daten zum Testen verwendet. Analysis Services prüft die Daten nach dem Zufallsprinzip, um sicherzustellen, dass die Test- und die Trainingspartitionen identisch 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.

In der Regel wird die Vorhersagegenauigkeit eines Miningmodells mit dem Lift oder der Klassifizierungsgenauigkeit gemessen. Weitere Informationen zum Verwenden von Lift- und anderen Genauigkeitsdiagrammen finden Sie unter Tools zum Auswerten der Modellgenauigkeit (Analysis Services - Data Mining).

Erstellen von Partitionen für Data Mining-Strukturen

In SQL Server 2008 partitionieren Sie Daten auf der Ebene der Miningstruktur. Die Informationen über die Partitionsgröße und die Daten in jeder Partition werden mit der Struktur gespeichert, und alle auf dieser Struktur basierenden Modelle können die Partition zu Trainings- und Testzwecken verwenden.

Gehen Sie folgendermaßen vor, um eine Partition für eine Miningstruktur zu definieren:

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

  • Ä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, um eine Miningstruktur zu partitionieren

Nachdem Sie die Datenquellen für eine Miningstruktur definiert haben, teilt der Data Mining-Assistent die Daten standardmäßig in Partitionen mit 70 Prozent für das Training und 30 Prozent für das Testen auf. Dieses Verhältnis wird häufig für das Data Mining verwendet, Sie können das Verhältnis mithilfe von Analysis Services jedoch auch entsprechend Ihren Anforderungen ändern.

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 festlegen, verwendet Analysis Services den kleineren der beiden Grenzwerte für die 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 die gleiche 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 partitioniert 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, verwendet Analysis Services diesen Wert für den Beginn der Stichprobe. Andernfalls verwendet die Stichprobe einen Hashalgorithmus auf den Namen der Miningstruktur, um den Ausgangswert zu erstellen.

HinweisHinweis

Wenn Sie mithilfe der EXPORT- und der IMPORT-Anweisung eine Kopie der Miningstruktur erstellen, besitzt die neue Miningstruktur die gleiche Partitionsdefinition, da der Exportvorgang eine neue ID erstellt, jedoch den gleichen Namen verwendet. Wenn jedoch zwei Miningstrukturen die gleiche zugrunde liegende Datenquelle verwenden, aber unterschiedliche Namen besitzen, sind die Partitionen, die für jede Miningstruktur erstellt werden, unterschiedlich.

Ändern von Struktureigenschaften

Wenn Sie eine Miningstruktur erstellen und verarbeiten und zu einem späteren Zeitpunkt eine Testpartition hinzufügen 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 eine Partition hinzufügen oder eine Partition in einer vorhandenen Struktur ändern, müssen Sie die Struktur und alle zugeordneten Modelle neu verarbeiten. Da das Hinzufügen einer Partition dazu führt, dass das Modell mit einer anderen Untermenge von Daten trainiert wird, erhalten Sie möglicherweise unterschiedliche Ergebnisse von Ihrem Modell.

Programmgesteuertes Festlegen von zurückgehaltenen Daten

Sie können eine partitionierte Data Mining-Struktur mithilfe von DMX-Anweisungen, AMO oder XML-DDL erstellen.

  • DMX   In der Sprache Data Mining-Erweiterungen (Data Mining Extensions, DMX) wurde die CREATE MINING STRUCTURE-Anweisung um eine WITH HOLDOUT-Klausel erweitert. Die Syntax und Beispiele für die CREATE STRUCTURE-Anweisung finden Sie unter CREATE MINING STRUCTURE (DMX).

    HinweisHinweis

    Die ALTER MINING STRUCTURE-Anweisung unterstützt nicht die Verwendung von Zurückhaltungsparametern.

  • ASSL   Mithilfe der Analysis Services Scripting Language (ASSL) können Sie sowohl neu partitionierte Miningstrukturen erstellen als auch Partitionen zu vorhandenen Data Mining-Strukturen hinzufügen. Weitere Informationen finden Sie unter MiningStructure-Element (ASSL).

  • AMO   Mithilfe von AMO können Sie Partitionen auch anzeigen und ändern. Weitere Informationen finden Sie unter AMO-Konzepte und -Objektmodell.

Sie können Informationen über die Partitionen einer bestehenden Miningstruktur anzeigen, indem Sie das Data Mining-Schemarowset abfragen. Führen Sie hierzu einen DISCOVER ROWSET-Aufruf aus, oder verwenden Sie eine DMX-Abfrage. Weitere Informationen finden Sie unter Data Mining-Schemarowsets oder Abfragen des Data Mining-Schemarowsets (Analysis Services - Data Mining).

Verwenden von Partitionsinformationen

Standardmäßig werden alle Informationen über die Trainings- und Testpartitionen zwischengespeichert, damit Sie vorhandene Partitionen für Trainingszwecke sowie zum Testen neuer Modelle verwenden können. Sie können auch Filter festlegen, die auf die zwischengespeicherten Zurückhaltungspartitionen angewendet werden, um so das Modell mit einer Teilmenge der Daten auszuwerten. Weitere Informationen finden Sie unter Erstellen von Filtern für Miningmodelle (Analysis Services - Data Mining).

Die Art und Weise, wie Fälle in der Partition aufgeteilt werden, hängt davon ab, wie Sie die Zurückhaltung konfigurieren und welche Daten Sie angeben. Wenn Sie die Anzahl der Fälle in jeder Partition oder Details der Fälle in den Trainings- oder Testsätzen bestimmen 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 von zurückgehaltenen Daten

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

  • Sie können keine Partitionen mit Zeitreihenmodellen verwenden. Wenn Sie also eine Partition erstellen und festlegen, dass zur Erstellung des Modells der Microsoft Time Series-Algorithmus verwendet werden soll, wird die Partitionierung deaktiviert. Die Partitionierung wird genauso deaktiviert, wenn die Miningstruktur auf der Ebene der Fall- oder geschachtelten Tabelle eine KEY TIME-Spalte enthält.

  • Sie können die Partitionen versehentlich so konfigurieren, dass das vollständige Dataset für den Test und keine Daten für das Training verwendet werden. Analysis Services gibt jedoch einen Fehler aus, sodass Sie das Problem beheben können. Analysis Services gibt bei der Verarbeitung der Struktur ebenfalls eine Warnung aus, wenn mehr als 50 Prozent der Daten für Testzwecke zurückgehalten werden.

  • 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 klein der Trainingssatz sein soll, um eine Überanpassung zu vermeiden. Nach der Erstellung eines Modells können Sie jedoch eine Kreuzvalidierung durchführen, um das Dataset im Hinblick auf ein bestimmtes Modell zu testen. Weitere Informationen finden Sie unter Übergreifende Überprüfung (Analysis Services - Data Mining).

  • 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 verarbeitet wurde, sollten Sie überprüfen, ob das Modell verarbeitet wurde, bevor Sie den Wert der HoldoutActualSize-Eigenschaft abrufen.