Definição de destino
Publicados: 2015-08-21Os métodos de aprendizado de máquina podem ser classificados em duas grandes categorias: supervisionados e não supervisionados. O aprendizado supervisionado aprende a partir de um conjunto rotulado de observações, onde se sabe que as observações pertencem a certas classes (para problemas de classificação) ou possuem certos valores (problema de regressão). O aprendizado não supervisionado aprende a partir de um conjunto de observações não rotuladas, onde nada mais é conhecido além das próprias observações.
Para métodos de aprendizado supervisionado, dizemos essencialmente que “olhe para esses dados 'verdadeiros' e diga-me saber saber 'verdade' de dados não vistos”. Para métodos de aprendizado não supervisionados, isso é equivalente a “olhar para esses dados e me dizer algo interessante que não conheço”. Embora a dicotomia clara seja útil, neste post falaremos sobre variantes interessantes em que definir o alvo pode se tornar uma tarefa muito interessante!
Semi-supervisionado
Este é um meio termo entre dados supervisionados e não supervisionados, onde rótulos 'verdadeiros' existem apenas para algumas das observações, mas não para todas. Ignorar as informações disponíveis é uma injustiça para a qualidade dos modelos analíticos, mas o uso dessas informações pode tornar o problema incomum. No mundo onde a geração de dados é fácil – pense na internet – e a rotulagem é cara, muitos problemas caem no domínio semi-supervisionado.
Uma abordagem poderia ser não incluir informações de rótulo para modelagem, mas apenas para validação de modelo e comparação de desempenho. Por exemplo, podemos segmentar dados em k clusters usando clustering não supervisionado e, em seguida, verificar a competência do nosso modelo comparando o cluster previsto com o cluster real. Isso pode nos ajudar a decidir melhor entre várias soluções de cluster.
Outra abordagem poderia ser usar essas informações para modelagem. Discutimos sobre clustering semi-supervisionado na postagem anterior do blog.
Discreto versus Contínuo
Enquanto muitas situações obviamente se enquadram em categorias de classificação ou regressão – onde o valor 'verdadeiro' é uma classe discreta ou um valor contínuo – há casos em que a transformação de destino faz sentido.
Considere a receita no nível do cliente em função do comportamento demográfico e de transações anteriores do cliente. Este é um problema bastante comum nas indústrias de varejo, bancos, seguros e telecomunicações. A receita, muitas vezes dos últimos N meses, é obviamente um número contínuo. Uma regressão (linear, talvez) pode caber aqui, você diz! Mas existem métodos mais complexos e sofisticados disponíveis para problemas de classificação, como Redes Neurais, que podem fazer um trabalho melhor, mas não se aplicam a alvos contínuos. Dependendo do contexto de negócios, talvez você não precise prever a receita real, mas apenas se a receita for alta, média ou baixa. Nesse caso, você pode revisar a distribuição de receita para todos os clientes e definir limites para alto-médio e médio-baixo, e pronto! Você converteu um problema de destino contínuo em um problema de classificação discreta de três classes.
Se sua meta contínua é uma porcentagem – digamos, fração de alunos que passam no exame por escolas – e você deseja prever a porcentagem também para a escola nova/não vista, então você tem outra opção além do modelo de regressão. Você pode parcelar os dados! O parcelamento converte frações contínuas em classes binárias replicando as observações. Para uma observação com valor alvo de 40%, você replica a observação 100 vezes e para 40 delas atribui a classe 1 e para as 60 restantes atribui a classe 60. Dado que a observação é a mesma e o conjunto de recursos é o mesmo, o modelo tentará diferenciar 1 de 0 e conclua que este tipo de observação tem 40% de probabilidade de ser 1 e 60% de probabilidade de ser 0. Você pode fazer o mesmo para todas as observações. (Sim, isso aumentará o tamanho do coletor de dados de treinamento.) Os modelos de classificação mais comuns produzem probabilidade de class=1 como resultado, e esse é o resultado que você deseja de qualquer maneira!
Poderia haver um caso para converter classes discretas em valor contínuo? Na maioria das vezes não, mas há exemplos. Quando você está tentando prever a idade de alguém em anos – que é essencialmente um número inteiro discreto de 0-100 (mais ou menos) – você pode tratar a idade como um alvo contínuo. Da mesma forma, se você tiver categorias de renda granulares o suficiente, digamos, 0-50k, 50k-100k, 100k-150k, etc., você pode se beneficiar ao tratar a renda como variável contínua em vez de resolver o problema de 20 classes.
Caso Sem Classe
Todos os dados são rotulados ou não rotulados. Quando os dados são rotulados (suponha que sejam binários), eles pertencem a uma classe ou a outra. Mas, na prática, os dados podem não pertencer a nenhuma classe.
Por exemplo, entre vários sinistros de seguros, você pode saber com certeza que certos sinistros são fraudes e outros não são fraudes, mas você pode não saber sobre muitos que nunca foram investigados. Considere, entre os solicitantes de cartão de crédito que são aceitos ou e que foram rejeitados como parte do modelo de pontuação de aplicativos no setor bancário. Mas há muitos clientes que não se inscreveram e você não sabe se eles seriam aceitos ou não. Muitas vezes, não podemos lidar com dados sem rótulo e devemos excluí-los de nossa população de desenvolvimento. No entanto, devemos ter em mente se isso induz viés na modelagem. No exemplo de seguro acima, talvez as reivindicações que foram investigadas fossem suspeitas para começar (mesmo aquelas consideradas não-fraude), ou no exemplo bancário, os clientes que não se inscreveram não foram solicitados pela força de vendas, o que excluiu completamente uma categoria demográfica.
Se você fizer a transformação de destino conforme descrito na seção anterior, você mesmo poderá criar dados sem classe. Suponha que você defina uma receita de mais de 5.000/- por ano como alta e menos de 5.000/- por ano como baixa para converter a meta contínua em meta binária. Este será, no entanto, um projeto ruim, porque há um corte arbitrário em 5.000. Um cliente com receita de 4.999/- não é muito diferente daquele com receita de 5.001/-, mas você os separa em mundos diferentes. Sua definição implicará que a receita de 5.001/- é mais semelhante à receita de 10.000/- do que a de 4.999/-. Você vê o problema? Você pode fazer isso, tecnicamente, mas o modelo resultante não será bom e robusto, pois você está pedindo que ele aprenda as diferenças de clientes semelhantes.
O que geralmente é uma boa prática é incluir uma zona de buffer/sem classe. Portanto, você pode definir a receita de 6.000/- ou mais como alta e 4.000/- ou menos como baixa e ignorar as observações com receita entre 4.000/- e 6.000/-. Enquanto você perde alguns dados, o modelo fará um trabalho muito melhor, pois o que você define como diferente é realmente diferente.
Embora muito foco esteja merecidamente na preparação de dados, geração de recursos e método de aprendizado de máquina, definir o alvo certo também pode ser útil para a qualidade do resultado analítico geral.