Particionando dados em conjuntos de treinamento e teste (Analysis Services - Mineração de dados)

A separação de dados em conjuntos de teste e treinamento é uma parte importante da avaliação de modelos de mineração de dados. Normalmente, quando você particiona um conjunto de dados em um conjunto de treinamentos e um conjunto de testes, a maior parte dos dados é usada para treinamento e uma parte menor dos dados é usada para teste. O Analysis Services faz a amostra aleatória dos dados para ajudas a garantir que as partições de teste e de treinamento são similares. Usando dados semelhantes para treinamento e teste, você pode minimizar os efeitos das discrepâncias de dados e entender melhor as características do modelo.

Depois que um modelo for processado usando o conjunto de treinamentos, você testa o modelo fazendo previsões contra o conjunto de testes. Como os dados no conjunto de teste já contêm valores conhecidos para o atributo que você deseja prever, é fácil determinar se a precisão das previsões do modelo está correta.

Normalmente, a precisão da previsão de um modelo de mineração é medida por comparação de precisão ou precisão de classificação. Para obter mais informações sobre como usar gráficos de comparação de precisão e outros gráficos de precisão, consulte Ferramentas para criar gráficos de precisão de modelos (Analysis Services - Mineração de dados).

Criando partições para estruturas de mineração de dados

No SQL Server 2008, você particiona os dados no nível da estrutura de mineração. As informações sobre o tamanho da partição e os dados em cada partição são armazenados com a estrutura e todos os modelos baseados nessa estrutura podem usar as partições para treinamento e teste.

Você pode definir uma partição em uma estrutura de mineração dos seguintes modos:

  • Usando o Assistente de Mineração de Dados para particionar uma estrutura de mineração quando você cria a estrutura de mineração.

  • Modificando as propriedades de estrutura na guia Estrutura de Mineração do Designer de Mineração de Dados.

  • Criando e modificando as estruturas programaticamente usando os Objetos de Gerenciamento de Análise (AMO) ou a linguagem de definição de dados DDL.

Usando o Assistente de Mineração de Dados para particionar uma estrutura de mineração

Por padrão, depois de definir as fontes de dados para uma estrutura de mineração, a Assistente de Mineração de Dados dividirá os dados em partições de 70% para treinamento e 30% para teste. Essa é uma proporção geralmente usada na mineração de dados, mas com o Analysis Services, você pode alterar essa proporção para adequar suas exigências.

Você também pode configurar o assistente para definir um número máximo de casos de treinamento de casos ou você pode combinar os limites para limitar uma porcentagem máxima de casos até um número máximo de casos especificados. Quando você especifica uma porcentagem máxima de casos e um número máximo de casos, o Analysis Services usa o menor dos dois limites como o tamanho do conjunto de teste. Por exemplo, se você especificar uma validação de 30% para testar casos e o número máximo de casos de teste como 1.000, o tamanho do conjunto de teste nunca excederá 1.000 casos. Isso pode ser útil se quiser garantir que o tamanho do seu conjunto de teste se mantenha consistente mesmo que mais dados de treinamento sejam adicionados ao modelo.

Se você usar a mesma exibição de fonte de dados para estruturas de mineração diferentes e quiser garantir que os dados sejam particionados aproximadamente da mesma forma para todas as estruturas de mineração e seus modelos, você deve especificar a semente usada para inicializar a amostragem aleatória. Quando você especificar um valor para HoldoutSeed, o Analysis Services usará esse valor para iniciar a amostragem. Caso contrário, a amostragem usa um algoritmo de hash no nome da estrutura de mineração para criar o valor de semente.

ObservaçãoObservação

Se você criar uma cópia da estrutura de mineração usando as instruções EXPORT e IMPORT, a nova estrutura de mineração terá a mesma definição de partição uma vez que o processo de exportação cria uma nova ID, mas usa o mesmo nome. No entanto, se duas estruturas de mineração usam a mesma fonte de dados subjacente, mas têm nomes diferentes, as partições criadas para cada estrutura de mineração serão diferentes.

Modificando as propriedades de estrutura

Se você criar e processar uma estrutura de mineração e posteriormente decidir que deseja adicionar uma partição de teste, poderá modificar as propriedades da estrutura de mineração. Para alterar a maneira que os dados são particionados, edite as seguintes propriedades:

Propriedade

Descrição

HoldoutMaxCases

Especifica o número máximo de casos a serem incluídos no conjunto de teste.

HoldoutMaxPercent

Especifica o número de casos a serem incluídos no conjunto de teste como uma porcentagem do conjunto de dados completo. Para não ter nenhum conjunto de dados, especifique 0.

HoldoutSeed

Especifica um valor inteiro a ser usado como semente ao selecionar dados aleatoriamente para as partições. Esse valor não afeta o número de casos no conjunto de treinamento; ao contrário, ele garante que a partição pode ser repetida.

Se você adicionar ou alterar uma partição para uma estrutura existente, deverá reprocessar a estrutura e todos os modelos associados. Além disso, uma vez que adicionar uma partição faz com que o modelo seja treinamento em um subconjunto diferente de dados, você deve ver resultados diferentes a partir do seu modelo.

Especificando HOLDOUT programaticamente

Você pode criar uma estrutura de mineração de dados particionados usando as instruções DMX, AMO ou XML DDL.

  • DMX Na linguagem de extensões de mineração de dados (DMX), a instrução CREATE MINING STRUCTURE foi ampliada para incluir uma cláusula WITH HOLDOUT. Para obter sintaxe e exemplos da instrução CREATE STRUCTURE, consulte CRIAR UMA ESTRUTURA DE MINERAÇÃO (DMX).

    ObservaçãoObservação

    A instrução ALTER MINING STRUCTURE não oferece suporte ao uso dos parâmetros de validação.

  • ASSL Você pode criar novas estruturas de mineração particionadas e adicionar partições em estruturas de mineração de dados existentes, usando a ASSL (Analysis Services Scripting Language). Para obter mais informações, consulte Elemento MiningStructures (ASSL).

  • AMO Você também pode exibir e modificar as partições usando AMO. Para obter mais informações, consulte Conceitos e modelo de objeto AMO.

Você pode exibir informações sobre as partições em uma estrutura de mineração existente consultando o conjunto de linhas do esquema de mineração de dados. Você pode fazer isso através de uma chamada DISCOVER ROWSET ou usando uma consulta DMX. Para obter mais informações, consulte Conjuntos de linhas do esquema de mineração de dados ou Consultando os conjuntos de linhas do esquema de mineração de dados (Analysis Services - Mineração de Dados).

Usando informações de partição

Por padrão, todas as informações sobre as partições de treinamento e de teste estão armazenadas em cache, assim você pode usar as partições para treinamento e depois testar os novos modelos. Você também pode definir os filtros a serem aplicados às partições de validação armazenadas em cache, assim pode avaliar o modelo nos subconjuntos de dados. Para obter mais informações, consulte Criando filtros para modelos de mineração (Analysis Services - Mineração de dados).

O modo que os casos são divididos em partições depende de como você configura a validação e dos dados que você fornece. Se você quiser determinar o número de casos em cada partição ou descobrir detalhes sobre os casos incluídos nos conjuntos de treinamento e teste, você pode consultar a estrutura de modelo criando uma consulta DMX. Por exemplo, a consulta a seguir retorna os casos usados no conjunto de treinamento do modelo.

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

Para recuperar somente os casos de teste e filtrar adicionalmente os casos de teste em uma das colunas na estrutura de mineração, use a seguinte sintaxe:

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

Limitações no uso da validação

  • Para usar a validação, a propriedade MiningStructureCacheMode da estrutura de mineração deve ser definida no valor padrão, KeepTrainingCases. Se você alterar a propriedade CacheMode para ClearAfterProcessing e, em seguida, reprocessar a estrutura de mineração, a partição será perdida.

  • Você não pode usar partições com modelos de série temporal. Portanto, o particionamento será desabilitado se você criar uma partição e especificar que o algoritmo Microsoft Time Series deve ser usado para criar o modelo. O particionamento também será desabilitado se a estrutura de mineração contiver uma coluna KEY TIME no caso ou no nível de tabela aninhada.

  • Você pode configurar inadvertidamente as partições para usar o conjunto de dados inteiro em testes e ficar sem dados para usar em treinamento. No entanto, oAnalysis Services retornará um erro para que você possa corrigir o problema. O Analysis Services também avisa você quando a estrutura é processada se mais de 50% dos dados tiverem sido validados para teste.

  • Na maioria dos casos, o valor de validação padrão de 30 fornece um bom equilíbrio entre os dados de treinamento e teste. Não há nenhuma maneira simples de determinar o quão grande o conjunto de dados deve ser para fornecer treinamento suficiente ou o quão pequeno o conjunto de treinamento deve ser para evitar o superajuste. Porém, depois que você criar um modelo, pode usar validação cruzada para avaliar o conjunto de dados em relação a um modelo específico. Para obter mais informações, consulte Validação cruzada (Analysis Services - Mineração de dados).

  • Além das propriedades listadas na tabela anterior, uma propriedade somente leitura HoldoutActualSize é fornecida no AMO e XML DDL. No entanto, como o tamanho real de uma partição não pode ser determinado precisamente até que a estrutura tenha sido processada, você deve verificar se o modelo foi processado antes de recuperar o valor da propriedade HoldoutActualSize.