Introdução
Neste tutorial, aprenderemos sobre Máquinas de Vetores de Suporte (SVM), que são um conjunto de métodos de aprendizagem supervisionada usados para classificação, regressão e detecção de valores discrepantes. As SVM são eficazes em espaços de alta dimensionalidade e podem ter um bom desempenho mesmo quando o número de dimensões é maior que o número de amostras.
As vantagens das SVM incluem sua eficácia em espaços de alta dimensionalidade, eficiência de memória e versatilidade em termos de diferentes funções kernel. No entanto, é importante evitar o overfitting e escolher o kernel e o termo de regularização corretos para o problema em questão.
Neste tutorial, abordaremos os seguintes tópicos:
- Classificação com SVM
- Classificação multiclasse
- Pontuações e probabilidades
- Problemas desequilibrados
- Regressão com SVM
- Estimativa de densidade e detecção de novidades
Dicas de 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 que o Jupyter Notebook termine de carregar. A validação das operações não pode ser automatizada devido a limitações no Jupyter Notebook.
Se tiver problemas durante a aprendizagem, não hesite em contactar o Labby. Forneça feedback após a sessão e resolveremos o problema rapidamente para si.
Classificação com SVM
- Comece importando as bibliotecas necessárias:
from sklearn import svm
- Defina as amostras de treino
Xe as etiquetas das classesy:
X = [[0, 0], [1, 1]]
y = [0, 1]
- Crie uma instância do classificador
SVCe ajuste os dados:
clf = svm.SVC()
clf.fit(X, y)
- Utilize o modelo treinado para prever novos valores:
clf.predict([[2., 2.]])
Classificação Multi-classe
- Os classificadores
SVCeNuSVCpodem ser usados para classificação multi-classe utilizando a abordagem "um-contra-um":
X = [[0], [1], [2], [3]]
Y = [0, 1, 2, 3]
clf = svm.SVC(decision_function_shape='ovo')
clf.fit(X, Y)
dec = clf.decision_function([[1]])
Pontuações e Probabilidades
- As máquinas de vetores de suporte (SVMs) não fornecem diretamente estimativas de probabilidade, mas você pode habilitar a estimativa de probabilidade definindo o parâmetro
probabilitycomoTrue:
clf = svm.SVC(probability=True)
clf.fit(X, y)
- Em seguida, você pode usar o método
predict_probapara obter as probabilidades de cada classe:
clf.predict_proba([[2., 2.]])
- Observe que a estimativa de probabilidade é cara e requer validação cruzada, portanto, utilize-a criteriosamente.
Problemas Desbalanceados
- As máquinas de vetores de suporte (SVMs) podem lidar com problemas desbalanceados ajustando o parâmetro
class_weight:
clf = svm.SVC(class_weight={1: 10})
clf.fit(X, y)
Regressão com SVM
- Para problemas de regressão, as máquinas de vetores de suporte (SVMs) podem ser usadas com a classe
SVR:
X = [[0, 0], [1, 1]]
y = [0.5, 2.5]
regr = svm.SVR()
regr.fit(X, y)
regr.predict([[1, 1]])
Estimativa de Densidade e Detecção de Novidades
- As máquinas de vetores de suporte (SVMs) também podem ser usadas para estimativa de densidade e detecção de novidades com a classe
OneClassSVM:
clf = svm.OneClassSVM()
clf.fit(X)
clf.predict(X)
Resumo
Neste tutorial, aprendemos sobre Máquinas de Vetores de Suporte (SVM) e suas aplicações em classificação, regressão, estimativa de densidade e detecção de novidades. Cobrimos os passos para classificação, classificação multiclasse, pontuações e probabilidades, problemas desbalanceados, regressão e estimativa de densidade. As SVMs são ferramentas poderosas para aprendizado de máquina e podem ser usadas em diversos cenários para alcançar previsões precisas.