[Machine Learning] - Trabalhando com dados reais
Quando você estiver aprendendo sobre aprendizado de máquina, é melhor fazer experiências com dados do mundo real, não com conjuntos de dados artificiais.
Felizmente, existem milhares de conjuntos de dados abertos para escolher, abrangendo todos os tipos de domínios. Aqui estão alguns lugares onde você pode procurar para obter dados:
Repositórios de datasets opensource
Meta portais (lista de datasets open source)
Outras páginas listando muitos repositórios de dados abertos populares
Neste artigo, usaremos o conjunto de dados California Housing Price do repositório StatLib2 (consulte a Figura 1-1). Este conjunto de dados é baseado em dados do censo de 1990 da Califórnia. Não é exatamente recente (uma bela casa na Bay Area ainda era acessível na época), mas tem muitas qualidades para o aprendizado, então vamos fingir que são dados recentes. Para fins de ensino, adicionei um atributo categórico e removi alguns recursos
Figura 1-1 |
Olhando a Big Picture
Bem-vindo à Machine Learning Housing Corporation! Sua primeira tarefa é usar os dados do censo da Califórnia para construir um modelo de preços de habitação no estado.
Esses dados incluem métricas como população, renda média e preço médio da habitação para cada grupo de quarteirões na Califórnia. Grupos de quarteirões são a menor unidade geográfica para a qual o US Census Bureau publica dados de amostra (um grupo de quarteirões normalmente tem uma população de 600 a 3.000 pessoas). Vamos chamá-los de “distritos”, para abreviar.
Seu modelo deve aprender com esses dados e ser capaz de prever o preço médio da habitação em qualquer distrito, dadas todas as outras métricas.
Analise o problema
A primeira pergunta a fazer ao seu chefe é qual é exatamente o objetivo do negócio. Construir um modelo provavelmente não é o objetivo final. Como a empresa espera usar e se beneficiar desse modelo?
Saber o objetivo é importante porque determinará como você enquadrará o problema, quais algoritmos você selecionará, qual medida de desempenho usará para avaliar seu modelo e quanto esforço você gastará ajustando-o.
Seu chefe responde que a saída de seu modelo ( uma previsão do preço médio da habitação de um distrito) será fornecida a outro sistema de Aprendizado de Máquina (veja a Figura 1-2), junto com muitos outros sinais.3 Este sistema a jusante determinará se vale a pena investir em uma determinada área ou não. Fazer isso da maneira certa é fundamental, pois afeta diretamente a receita.
A próxima pergunta a fazer ao seu chefe é como é a solução atual (se houver).
A solução atual geralmente fornece uma referência de desempenho, bem como percepções sobre como resolver o problema. Seu chefe responde que os preços das residências do distrito são estimados manualmente por especialistas: uma equipe reúne informações atualizadas sobre um distrito e, quando não conseguem obter o preço médio das residências, eles o estimam usando regras complexas.
Isso é caro e demorado - consumindo, e suas estimativas não são grandes; nos casos em que conseguem descobrir o preço médio real da habitação, muitas vezes percebem que suas estimativas estavam erradas em mais de 20%.
É por isso que a empresa pensa que seria útil treinar um modelo para prever o preço médio da habitação de um distrito, dados outros dados sobre aquele distrito. Os dados do censo parecem um ótimo conjunto de dados a ser explorado para esse fim, uma vez que incluem os preços médios de habitação de milhares de distritos, bem como outros dados.
Com todas essas informações, você agora está pronto para começar a projetar seu sistema.
Primeiro, você precisa enquadrar o problema:
- É um aprendizado supervisionado, não supervisionado ou por reforço?
- É uma tarefa de classificação, uma tarefa de regressão ou outra coisa?
- Você deve usar técnicas de aprendizagem em lote ou online?
Antes de continuar lendo, faça uma pausa e tente responder a essas perguntas você mesmo. Você encontrou as respostas?
Vejamos: é claramente uma tarefa típica de aprendizagem supervisionada, uma vez que você recebe exemplos de treinamento rotulados (cada instância vem com a produção esperada, ou seja, o preço médio da habitação do distrito).
Também é uma tarefa típica de regressão, já que é solicitado que você preveja um valor. Mais especificamente, este é um problema de regressão múltipla, uma vez que o sistema usará vários recursos para fazer uma previsão (ele usará a população do distrito, a renda média, etc.).
É também um problema de regressão univariada, uma vez que estamos apenas tentando prever um único valor para cada distrito. Se estivéssemos tentando prever valores múltiplos por distrito, seria um problema de regressão multivariada.
Finalmente, não há fluxo contínuo de dados entrando no sistema, não há necessidade particular de se ajustar a dados variáveis rapidamente e os dados são pequenos o suficiente para caber na memória, portanto, o aprendizado em lote simples deve funcionar bem.
Selecione uma medida de desempenho
Sua próxima etapa é selecionar uma medida de desempenho. Uma medida de desempenho típica para problemas de regressão é o Root Mean Square Error (RMSE). Ele dá uma ideia de quanto erro o sistema normalmente comete em suas previsões, com um peso maior para erros grandes. A Equação abaixo mostra a fórmula matemática para calcular o RMSE.
Embora o RMSE seja geralmente a medida de desempenho preferida para tarefas de regressão, em alguns contextos você pode preferir usar outra função. Por exemplo, suponha que haja muitos distritos discrepantes. Nesse caso, você pode considerar o uso do erro absoluto médio (MAE, também chamado de desvio absoluto médio)
Tanto o RMSE quanto o MAE são formas de medir a distância entre dois vetores: o vetor de previsões e o vetor de valores alvo. Várias medidas de distância, ou normas, são possíveis:
- Calcular a raiz de uma soma de quadrados (RMSE) corresponde à norma euclidiana: esta é a noção de distância com a qual você está familiarizado. É também chamada de norma ℓ2, conhecida como ∥ · ∥2 (ou apenas ∥ · ∥).
- O cálculo da soma dos absolutos (MAE) corresponde à norma ℓ1, observada ∥ · ∥1. Isso às vezes é chamado de norma de Manhattan porque mede a distância entre dois pontos em uma cidade se você só puder viajar ao longo de quarteirões ortogonais.
- De maneira mais geral, a norma ℓk de um vetor v contendo n elementos é definida como ∥v∥k = (| v0 | k + | v1 | k + ... + | vn | k) 1 / k. ℓ0 fornece o número de elementos diferentes de zero no vetor e ℓ∞ fornece o valor absoluto máximo no vetor.
- Quanto mais alto o índice de norma, mais ele se concentra em valores grandes e negligencia os pequenos. É por isso que o RMSE é mais sensível a outliers do que o MAE. Mas quando os valores discrepantes são exponencialmente raros (como em uma curva em forma de sino), o RMSE tem um desempenho muito bom e geralmente é o preferido.
Verifique as premissas
Por último, é uma boa prática listar e verificar as premissas que foram feitas até agora (por você ou outras pessoas); isso pode ajudá-lo a detectar problemas sérios desde o início.
Por exemplo, os preços distritais que as saídas do seu sistema serão inseridos em um sistema de aprendizado de máquina downstream, e você assume que esses preços serão usados como tal. Mas e se o sistema downstream converter os preços em categorias (por exemplo, "barato", "médio" ou "caro") e usar essas categorias em vez dos próprios preços?
Nesse caso, acertar o preço perfeitamente não é importante; seu sistema só precisa acertar a categoria. Se for assim, então o problema deveria ter sido enquadrado como uma tarefa de classificação, não uma tarefa de regressão.
Você não quer descobrir isso depois de trabalhar em um sistema de regressão por meses.
Felizmente, depois de conversar com a equipe responsável pelo sistema downstream, você está confiante de que eles realmente precisam dos preços reais, não apenas das categorias.
Ótimo! Está tudo pronto, as luzes estão verdes e você pode começar a programar agora!
No próximo artigo vamos usar o Jupyter Notebook para analisarmos esses dados.
Nenhum comentário:
Postar um comentário