Treinar um modelo de machine learning

Concluído

Treinar um modelo de aprendizado de máquina envolve o ajuste de um algoritmo de aprendizado de máquina aos seus dados de treinamento para determinar uma função com precisão aceitável que pode ser aplicada aos seus recursos e calcular os rótulos correspondentes. Isso pode parecer uma ideia conceitualmente simples; mas o processo real de treinamento de um modelo que produz previsões precisas sobre novos dados, não apenas os dados com os quais ele foi treinado, pode ser desafiador e envolve uma abordagem iterativa de treinamento e avaliação repetida de modelos usando vários algoritmos e parâmetros.

Dados de treinamento e validação

Uma abordagem comum ao treinar um modelo de aprendizado de máquina é dividir aleatoriamente os dados em subconjuntos para treinamento e validação. Em seguida, você pode usar o conjunto de dados de treinamento para se ajustar a um algoritmo e treinar um modelo e, em seguida, testar o desempenho do modelo com os dados de validação retidos. Isso ajuda a garantir que o modelo se sai bem de modo geral – Em outras palavras, ele gera previsões precisas para treinamentos diferentes daquele em que foi treinado.

Observação

Os modelos que preveem bem os dados nos quais foram treinados, mas que não funcionam bem com novos dados, são descritos como sobreajustados aos dados de treinamento.

Normalmente, você deve treinar o modelo com cerca de 70% dos dados e reter cerca de 30% para validação.

Algoritmos de aprendizado de máquina

Há muitos algoritmos de aprendizado de máquina, agrupados em diferentes tipos de algoritmo com base no tipo de problema de aprendizado de máquina que você precisa resolver. A maioria das estruturas de aprendizado de máquina inclui vários algoritmos para regressão e classificação e algoritmos para problemas de aprendizado de máquina não supervisionados, como clustering.

Depois de identificar o tipo de problema que você deseja criar um modelo para resolver, você pode escolher entre vários algoritmos desse tipo. Dentro de cada tipo, pode haver vários algoritmos para escolher, muitas vezes com base em diferentes tipos de operação matemática. Por exemplo, dentro do conjunto de algoritmos para classificação, há algoritmos do seguinte tipo:

  • Algoritmos de regressão logística que aplicam iterativamente funções logísticas para calcular um valor entre 0 e 1 que representa a probabilidade de cada classe possível e otimizar os coeficientes da função com base nas diferenças entre a classe prevista e o valor real do rótulo conhecido.
  • Funções baseadas em árvore que definem uma árvore de decisão na qual um recurso individual é considerado; e com base no valor, outro recurso é considerado e assim por diante, até que um rótulo de classe apropriado seja determinado.
  • Algoritmos ensemble que combinam várias técnicas para encontrar a função preditiva geral ideal.

O algoritmo "melhor" depende de seus dados e geralmente requer avaliação iterativa e erro para determinar.

Hiperparâmetros

Os parâmetros de um algoritmo de aprendizado de máquina são os recursos de dados (e rótulos) nos quais ele é treinado. Além disso, a maioria dos algoritmos de aprendizado de máquina fornece hiperparâmetros que podem ser usados para influenciar a maneira como o algoritmo funciona. Os hiperparâmetros permitem controlar coisas como o nível de aleatoriedade que você deseja permitir no modelo (portanto, ele generaliza bem, mas ainda produz previsões com precisão aceitável), o número de iterações executadas para encontrar um modelo ideal (permitindo que você evite sobreajuste e otimize o tempo de treinamento), o número de branches considerados em um modelo de árvore e outros fatores específicos do algoritmo.

Como ajustar um modelo

Para realmente treinar um modelo, você precisa ajustar o algoritmo aos dados. A sintaxe específica e os formatos de dados usados para fazer isso podem variar entre estruturas de aprendizado de máquina, mas o princípio é sempre o mesmo. Para aprendizado de máquina supervisionado, você ajusta o algoritmo aos recursos com base nos rótulos conhecidos. Para aprendizado de máquina não supervisionado, você fornece os recursos e o algoritmo tenta separá-los em clusters discretos.

O exemplo a seguir mostra o código usado para iniciar o treinamento de um modelo de regressão logística usando a estrutura MLlib do Spark. Os dados de treinamento são fornecidos como um dataframe no qual os rótulos estão em uma coluna de valores inteiros e os recursos correspondentes são representados como um só vetor (matriz) de valores. Neste exemplo, dois hiperparâmetros (maxIter e regParam) também foram especificados.

from pyspark.ml.classification import LogisticRegression

lr = LogisticRegression(labelCol="label", featuresCol="features", maxIter=10, regParam=0.3)
model = lr.fit(training_df)