Como gerar um conjunto de dados sintético usando o modelo de aprendizado de máquina aprendido com o conjunto de dados original?

19

Geralmente, o modelo de aprendizado de máquina é construído em conjuntos de dados. Gostaria de saber se existe alguma maneira de gerar um conjunto de dados sintético usando esse modelo de aprendizado de máquina treinado, preservando as características originais do conjunto de dados?

[dados originais -> construir modelo de aprendizado de máquina -> use o modelo ml para gerar dados sintéticos .... !!!]

É possível ? Por favor, aponte-me para o recurso relacionado, se possível.

hadooper
fonte

Respostas:

27

A abordagem geral é fazer a análise estatística tradicional em seu conjunto de dados para definir um processo aleatório multidimensional que irá gerar dados com as mesmas características estatísticas. A virtude dessa abordagem é que seus dados sintéticos são independentes do seu modelo de ML, mas estatisticamente "próximos" dos seus dados. (veja abaixo a discussão de sua alternativa)

Em essência, você está estimando a distribuição de probabilidade multivariada associada ao processo. Depois de estimar a distribuição, é possível gerar dados sintéticos por meio do método Monte Carlo ou métodos de amostragem repetida semelhantes. Se seus dados se assemelham a alguma distribuição paramétrica (por exemplo, lognormal), essa abordagem é direta e confiável. A parte complicada é estimar a dependência entre variáveis. Veja: https://www.encyclopediaofmath.org/index.php/Multi-dimensional_statistical_analysis .

Se seus dados forem irregulares, os métodos não paramétricos serão mais fáceis e provavelmente mais robustos. A estimativa da densidade kernal multivariada é um método acessível e atraente para pessoas com antecedentes de ML. Para uma introdução geral e links para métodos específicos, consulte: https://en.wikipedia.org/wiki/Nonparametric_statistics .

Para validar que esse processo funcionou para você, você passa pelo processo de aprendizado de máquina novamente com os dados sintetizados e deve terminar com um modelo bastante próximo do original. Da mesma forma, se você colocar os dados sintetizados no seu modelo de ML, deverá obter saídas com distribuição semelhante à das saídas originais.

Por outro lado, você está propondo isso:

[dados originais -> construir modelo de aprendizado de máquina -> use o modelo ml para gerar dados sintéticos .... !!!]

Isso realiza algo diferente do método que acabei de descrever. Isso resolveria o problema inverso : "que entradas poderiam gerar qualquer conjunto de saídas do modelo". A menos que seu modelo de ML esteja super ajustado aos dados originais, esses dados sintetizados não serão parecidos com os dados originais em todos os aspectos, ou mesmo na maioria.

Considere um modelo de regressão linear. O mesmo modelo de regressão linear pode ter um ajuste idêntico aos dados que possuem características muito diferentes. Uma demonstração famosa disso é através do quarteto de Anscombe .

Todos os quatro conjuntos são idênticos quando examinados usando estatísticas resumidas simples, mas variam consideravelmente quando representados graficamente

Embora eu não tenha referências, acredito que esse problema também possa surgir em regressão logística, modelos lineares generalizados, SVM e agrupamento K-means.

Existem alguns tipos de modelo de ML (por exemplo, árvore de decisão) em que é possível invertê-los para gerar dados sintéticos, embora isso dê algum trabalho. Consulte: Gerando dados sintéticos para corresponder aos padrões de mineração de dados .

MrMeritology
fonte
tempo para ler mais sobre Monte-Carlo e análise estatística multidimensional ... obrigado pela boa explicação .. !!!
hadooper
2

Existe uma abordagem muito comum para lidar com conjuntos de dados desequilibrados, chamados SMOTE, que gera amostras sintéticas da classe minoritária. Ele funciona perturbando amostras minoritárias usando as diferenças com seus vizinhos (multiplicado por algum número aleatório entre 0 e 1)

Aqui está uma citação do artigo original:

As amostras sintéticas são geradas da seguinte maneira: Considere a diferença entre o vetor de característica (amostra) e seu vizinho mais próximo. Multiplique essa diferença por um número aleatório entre 0 e 1 e adicione-o ao vetor de recurso em consideração.

Você pode encontrar mais informações aqui .

AlexPnt
fonte
1

O aumento de dados é o processo de criação sintética de amostras com base nos dados existentes. Os dados existentes são levemente perturbados para gerar novos dados que retêm muitas das propriedades dos dados originais. Por exemplo, se os dados são imagens. Os pixels da imagem podem ser trocados. Muitos exemplos de técnicas de aumento de dados podem ser encontrados aqui .

Brian Spiering
fonte