Path: blob/master/site/pt-br/tutorials/estimator/linear.ipynb
25118 views
Copyright 2019 The TensorFlow Authors.
Crie um modelo linear com Estimadores
Aviso: os Estimadores não são recomendados para novos códigos. Os Estimadores executam código
v1.Session
, que é mais difícil de escrever corretamente e pode se comportar de forma inesperada, ainda mais quando usado em conjunto com código do TF 2. Os Estimadores são abarcados pelas garantias de compatibilidade, mas não recebem mais correções, exceto para vulnerabilidades de segurança. Confira mais detalhes no guia de migração.
Visão geral
Este tutorial de ponta a ponta treina um modelo de regressão logística usando a API tf.estimator
. Esse modelo é geralmente usado como linha de base para outros algoritmos mais complexos.
Observação: um exemplo de regressão logística do Keras está disponível e é recomendado neste tutorial.
Configuração
Carregue o dataset Titanic
Você usará o dataset Titanic com o objetivo (bastante mórbido) de prever a sobrevivência dos passageiros, considerando características como gênero, idade, classe, etc.
Explore os dados
O dataset contém as seguintes características:
Há 627 e 264 exemplos nos datasets de treinamento e avaliação, respectivamente.
A maioria dos passageiros tem cerca de 20 e 30 anos.
Há aproximadamente duas vezes mais homens que mulheres a bordo.
A maioria dos passageiros está na "terceira" classe.
As mulheres têm uma chance muito mais alta de sobrevivência em comparação com os homens. Isso é claramente uma característica preditiva para o modelo.
Engenharia de características para o modelo
Aviso: o módulo tf.feature_columns descrito neste tutorial não é recomendado para novos códigos. As camadas de pré-processamento do Keras abrangem essa funcionalidade. Para instruções de como migrar, confira o Guia de migração das colunas de características. O módulo tf.feature_columns foi feito para ser usado com Estimadores TF1. Ele é abarcado pelas garantias de compatibilidade, mas não recebe mais correções, exceto para vulnerabilidades de segurança.
Os Estimadores usam um sistema chamado de colunas de características para descrever como o modelo deve interpretar cada uma das características de entrada brutas. Um Estimador espera um vetor de entradas numéricas, e as colunas de características descrevem como o modelo deve converter cada característica.
A seleção e a criação do conjunto ideal de colunas de características são fundamentais para o aprendizado eficaz de um modelo. Uma coluna de características pode ser uma das entradas brutas no dict
das características originais (uma coluna de características base) ou qualquer coluna nova criada usando transformações definidas em uma ou mais colunas base (uma coluna de características derivadas).
O estimador linear usa tanto características numéricas quanto categóricas. As colunas de características funcionam com todos os estimadores do TensorFlow e o objetivo delas é definir as características usadas para a modelagem. Além disso, elas oferecem alguns recursos de engenharia de características para one-hot-encoding, normalização e bucketization.
Colunas de características base
A input_function
especifica como os dados são convertidos em um tf.data.Dataset
que alimenta o pipeline de entrada como um streaming. tf.data.Dataset
aceita várias origens, como um dataframe, um arquivo formatado em CSV e muito mais.
Você pode inspecionar o dataset:
Você também pode inspecionar o resultado de uma determinada coluna de características usando a camada tf.keras.layers.DenseFeatures
:
DenseFeatures
só aceita tensores densos. Para inspecionar uma coluna categórica, você precisa primeiro transformá-la em uma coluna indicadora:
Depois de adicionar todos os recursos base ao modelo, vamos treiná-lo. O treinamento de um modelo é apenas um único comando usando a API tf.estimator
:
Colunas de características derivadas
Agora, você alcançou uma exatidão de 75%. Usar cada coluna de características base separadamente pode não ser o suficiente para explicar os dados. Por exemplo, a correlação entre a idade e o rótulo pode ser diferente para cada gênero. Portanto, se você aprender um único peso de modelo para gender="Male"
e gender="Female"
, não vai capturar todas as combinações de idade e gênero (por exemplo, distinguindo entre gender="Male"
E age="30"
E gender="Male"
E age="40"
).
Para aprender as diferenças entre as combinações de características, você pode adicionar colunas cruzadas de características ao modelo (você também pode fazer o bucketization da coluna de idade antes da coluna cruzada):
Depois de adicionar as características de combinação ao modelo, vamos treiná-lo novamente:
Ele agora alcança uma exatidão de 77,6%, que é um pouco melhor do que somente com o treinamento de características base. Você pode tentar usar mais características e transformações para ver se consegue melhorá-lo!
Agora, você pode usar o modelo de treinamento para fazer previsões sobre um passageiro a partir do dataset de avaliação. Os modelos do TensorFlow são otimizados para fazer previsões em um lote, ou coleção, de exemplos ao mesmo tempo. Antes, o eval_input_fn
era definido usando todo o dataset de avaliação.
Por fim, confira a característica de operação do receptor (ROC) dos resultados, que dará uma ideia melhor do trade-off entre a taxa de positivo verdadeiro e falso positivo.