Treinar um modelo de machine learning
Treinar um modelo de aprendizado de máquina envolve ajustar um algoritmo de aprendizado de máquina aos dados de treinamento para determinar uma função aceitavelmente precisa que pode ser aplicada às suas características 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 em novos dados, não apenas os dados com os quais ele foi treinado, pode ser desafiador e envolve uma abordagem iterativa de treinar e avaliar modelos repetidamente usando vários algoritmos e parâmetros.
Dados de treinamento e validação
Uma abordagem comum ao treinar um modelo de machine learning é dividir aleatoriamente os dados em subconjuntos para treinamento e validação. Em seguida, você pode usar o conjunto de dados de treinamento para ajustar 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 generalize bem - em outras palavras, ele gera previsões precisas para treinamentos nos quais não 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 machine learning inclui vários algoritmos para regressão e classificação e algoritmos para problemas de machine learning não supervisionados, como clustering.
Tendo identificado 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, geralmente 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 para 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 em seu valor, outro recurso é considerado, e assim por diante, até que um rótulo de classe apropriado seja determinado.
- Algoritmos de conjunto 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 para um algoritmo de machine learning são os recursos de dados (e rótulos) nos quais ele é treinado. Além disso, a maioria dos algoritmos de machine learning fornece hiperparâmetros que você pode usar 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 aceitamente precisas), o número de iterações executadas para encontrar um modelo ideal (permitindo que você evite o 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.
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 machine learning, 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 do Spark MLlib. 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 único 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)