Introdução
Neste laboratório, exploraremos modelos lineares no scikit-learn. Modelos lineares são um conjunto de métodos utilizados para tarefas de regressão e classificação. Eles assumem que a variável alvo é uma combinação linear das características. Estes modelos são amplamente utilizados em aprendizado de máquina devido à sua simplicidade e interpretabilidade.
Abordaremos os seguintes tópicos:
- Mínimos Quadrados Ordinários
- Regressão Ridge
- Lasso
- Regressão Logística
- Gradiente Descendente Estocástico
- Perceptron
Comece com Aprendizado Supervisionado: Regressão, se não tiver experiência prévia com Aprendizado de Máquina.
Dicas da Máquina Virtual
Após o arranque da máquina virtual, clique no canto superior esquerdo para mudar para a aba Notebook para aceder ao Jupyter Notebook para praticar.
Às vezes, pode ser necessário esperar alguns segundos para o Jupyter Notebook terminar de carregar. A validação das operações não pode ser automatizada devido a limitações no Jupyter Notebook.
Se tiver problemas durante o aprendizado, não hesite em contactar o Labby. Forneça feedback após a sessão e resolveremos prontamente o problema para si.
Mínimos Quadrados Ordinários
Comece com Aprendizado Supervisionado: Regressão, se não tiver experiência prévia com Aprendizado de Máquina.
Mínimos Quadrados Ordinários (MQO) é um método de regressão linear que minimiza a soma dos quadrados das diferenças entre os alvos observados e os alvos previstos. Matematicamente, resolve um problema da forma: $$\min_{w} || X w - y||_2^2$$
Vamos começar ajustando um modelo de regressão linear usando MQO.
from sklearn import linear_model
reg = linear_model.LinearRegression()
X = [[0, 0], [1, 1], [2, 2]]
y = [0, 1, 2]
reg.fit(X, y)
print(reg.coef_)
- Importamos o módulo
linear_modeldo scikit-learn. - Criamos uma instância de
LinearRegression. - Usamos o método
fitpara ajustar o modelo aos dados de treinamento. - Imprimimos os coeficientes do modelo linear.
Regressão Ridge
A regressão Ridge é um método de regressão linear que adiciona um termo de penalidade à função objetivo dos mínimos quadrados ordinários. Este termo de penalidade ajuda a reduzir o sobreajuste, encolhendo os coeficientes em direção a zero. A complexidade do modelo pode ser controlada pelo parâmetro de regularização.
Vamos ajustar um modelo de regressão Ridge.
reg = linear_model.Ridge(alpha=0.5)
reg.fit([[0, 0], [0, 0], [1, 1]], [0, 0.1, 1])
print(reg.coef_)
- Criamos uma instância de
Ridgecom o parâmetro de regularizaçãoalphadefinido como 0,5. - Usamos o método
fitpara ajustar o modelo aos dados de treinamento. - Imprimimos os coeficientes do modelo de regressão Ridge.
Lasso
Lasso é um método de regressão linear que adiciona um termo de penalidade à função objetivo dos mínimos quadrados ordinários. O termo de penalidade tem o efeito de definir alguns coeficientes exatamente em zero, realizando assim a seleção de características. Lasso pode ser usado para estimativa de modelos esparsos.
Vamos ajustar um modelo Lasso.
reg = linear_model.Lasso(alpha=0.1)
reg.fit([[0, 0], [1, 1]], [0, 1])
print(reg.coef_)
- Criamos uma instância de
Lassocom o parâmetro de regularizaçãoalphadefinido como 0,1. - Usamos o método
fitpara ajustar o modelo aos dados de treinamento. - Imprimimos os coeficientes do modelo Lasso.
Regressão Logística
A regressão logística é um método de classificação que estima as probabilidades dos possíveis resultados usando uma função logística. É comumente usada para tarefas de classificação binária. A regressão logística também pode ser estendida para lidar com problemas de classificação multiclasse.
Vamos ajustar um modelo de regressão logística.
clf = linear_model.LogisticRegression(random_state=0).fit(X, y)
print(clf.coef_)
- Criamos uma instância de
LogisticRegressioncom o parâmetrorandom_statedefinido como 0. - Usamos o método
fitpara ajustar o modelo aos dados de treinamento. - Imprimimos os coeficientes do modelo de regressão logística.
Gradiente Descendente Estocástico (SGD)
O Gradiente Descendente Estocástico (SGD) é uma abordagem simples, mas eficiente, para treinar modelos lineares. É particularmente útil quando o número de amostras e recursos é muito grande. O SGD atualiza os parâmetros do modelo usando um pequeno subconjunto dos dados de treinamento em cada iteração, o que o torna adequado para aprendizado online e aprendizado fora da memória.
Vamos ajustar um modelo de regressão logística usando SGD.
clf = linear_model.SGDClassifier(loss="log_loss", max_iter=1000)
clf.fit(X, y)
print(clf.coef_)
- Criamos uma instância de
SGDClassifiercom o parâmetrolossdefinido como "log_loss" para realizar regressão logística. - Usamos o método
fitpara ajustar o modelo aos dados de treinamento. - Imprimimos os coeficientes do modelo de regressão logística obtido usando SGD.
Perceptron
O Perceptron é um algoritmo de classificação linear simples, adequado para aprendizado em larga escala. Ele atualiza seu modelo apenas em erros, tornando-o mais rápido de treinar do que o gradiente descendente estocástico (SGD) com perda de dobradiça. Os modelos resultantes também são mais esparsos.
Vamos ajustar um modelo perceptron.
clf = linear_model.Perceptron(alpha=0.1)
clf.fit(X, y)
print(clf.coef_)
- Criamos uma instância de
Perceptroncom o parâmetro de regularizaçãoalphadefinido como 0,1. - Usamos o método
fitpara ajustar o modelo aos dados de treinamento. - Imprimimos os coeficientes do modelo perceptron.
Resumo
Neste laboratório, exploramos modelos lineares no scikit-learn. Aprendemos sobre mínimos quadrados ordinários, regressão de ridge, lasso, regressão logística, gradiente descendente estocástico e perceptron. Esses modelos podem ser usados para tarefas de regressão e classificação. Também vimos como ajustar esses modelos usando vários algoritmos e técnicas, como aprendizado online e seleção de recursos.