Reconhecimento de Padrões::Support Vector Machines

svm3d

 

Links

Tutoriais

Apenas com Exemplos de Código em Python

  1. Analytics Vidhya::Understanding Support Vector Machine algorithm from examples (com muitos exemplos em Python)
  2. scikit-learn::Support Vector Machines (SVM)

Com Jupyters

  1. Python Data Science Handbook::In-Depth: Support Vector Machines
  2. IPython Cookbook::Using support vector machines for classification tasks
  3. O’Reilly Learning Platform::Introduction to Support Vector Machines
  4. Accelebrate::Getting Started with Machine Learning Using Python and Jupyter Notebooks (com exemplos de como instalar com Anaconda em Windows…)
  5. (Git com Jupyter) Support-Vector-Machines-SVMA series of documented Jupyter notebooks implementing SVM and SVC’s.
  6. (Git com Jupyter) Learn to use Support Vector Machines in Python(sklearn)
  7. Kaggle::Niraj Verma – Support Vector Machine detail analysis (avançado!) – Run Support Vector machine with different kernels(linear,gaussian,polynomial) and also tune the various parameters such as C ,gamma and degree to find out the best performing model

Material de Referência e Discussão

Páginas de Manual do OpenCV

  1. Introduction to Support Vector Machines (2.4, C++)
  2. Support Vector Machines (3.0, C++)
  3. Introduction to Support Vector Machines (3.4, C++, Java, Python)

Páginas de Manual de SciKit-Learn (sklearn)

O que é SciKit-Learn? É outra biblioteca de AM que implementa SVN e muitas outras coisas:

  • Simple and efficient tools for data mining and data analysis
  • Accessible to everybody, and reusable in various contexts
  • Built on NumPy, SciPy, and matplotlib
  • Open source, commercially usable – BSD license
  1. Página principal de SciKit-Learn
  2. Manual: 1.4. Support Vector Machines

Abaixo um exemplo de código de SVM com SciKit-Learn. O código part eda premissa que você possui três funções: X, Y e x_test para gerar respectivamente os dados de treino, resultados_para_treino e teste.

#Import Library
from sklearn import svm
#Assumed you have, X (predictor) and Y (target) for training data set and x_test(predictor) of test_dataset
# Create SVM classification object 
model = svm.svc(kernel='linear', c=1, gamma=1) 
# there is various option associated with it, like changing kernel, gamma and C value. Will discuss more # about it in next section.Train the model using the training sets and check score
model.fit(X, y)
model.score(X, y)
#Predict Output
predicted= model.predict(x_test)

Páginas de Manual de mlpy

O que é mlpy? mlpy is a Python module for Machine Learning built on top of NumPy/SciPy and the GNU Scientific Libraries. mlpy provides a wide range of state-of-the-art machine learning methods for supervised and unsupervised problems and it is aimed at finding a reasonable compromise among modularity, maintainability, reproducibility, usability and efficiency.

  1. Página principal de mlpy
  2. SVMs em mlpy

SVMs e Conjuntos não-Linearmente Separáveis: a Espiral Dupla

Exemplo usando mlpy.

Código-exemplo da figura acima (spiral.data pode ser obtido aqui)(ou de nosso site):

import numpy as np
import matplotlib.pyplot as plt
import mlpy # sudo pip install mlpy
f = np.loadtxt("spiral.data")
x, y = f[:, :2], f[:, 2]
svm = mlpy.LibSvm(svm_type='c_svc', kernel_type='rbf', gamma=100)
svm.learn(x, y)
xmin, xmax = x[:,0].min()-0.1, x[:,0].max()+0.1
ymin, ymax = x[:,1].min()-0.1, x[:,1].max()+0.1
xx, yy = np.meshgrid(np.arange(xmin, xmax, 0.01), np.arange(ymin, ymax, 0.01))
xnew = np.c_[xx.ravel(), yy.ravel()]
ynew = svm.pred(xnew).reshape(xx.shape)
fig = plt.figure(1)
plt.set_cmap(plt.cm.Paired)
plt.pcolormesh(xx, yy, ynew)
plt.scatter(x[:,0], x[:,1], c=y)
plt.show()

Como já discutimos em Redes Nuerais Tradicionais (Backpropagation simples) e em IBL, o problema da espiral dupla é um problema muito usado para testar métodos de AM. SVMs podem ser usadas com sucesso para resolver o problema da espiral dupla, se fizermos algumas escolhas específicas, por exemplo o uso de kernels com RBFs. Abaixo vários artigos que discutem este assunto, com exemplos em Python:

  1. Stackexchange/Cross-Validate: How to classify data which is spiral in shape?
  2. Há um exemplo na documentação padrão de MLPy: Support Vector Machines (SVMs)
  3. Exercício de Cornell(em Octave) sobre SVMs e espirais duplas: http://www.cs.cornell.edu/courses/cs4780/2015fa/web/projects/06kernels/06kernelsvm.html

Descrição e Discussão

  1. Medium::Machine Learning – Support Vector Machines
  2. Analytics Vidhya::Support Vector Machine – Simplified
  3. Towards Data Science::Support Vector Machine — Introduction to Machine Learning Algorithms

Disciplinas em Outras Universidades

  1. Stanford CS229: Machine Learning
    1. Apostila de SVM: http://cs229.stanford.edu/notes/cs229-notes3.pdf
  2. Exercício de Cornell (em Octave) sobre SVMs e espirais duplas: http://www.cs.cornell.edu/courses/cs4780/2015fa/web/projects/06kernels/06kernelsvm.html

Sobre o Autor

possui graduação em Ciências da Computação pela Universidade Federal de Santa Catarina (1989) e Doutorado Acadêmico (Dr. rer.nat.) em Ciências da Computação pela Universidade de Kaiserslautern (1996). Atualmente é professor Titular da Universidade Federal de Santa Catarina, onde é professor do Programa de Pós-graduação em Ciência da Computação e dos cursos de graduação em Ciências da Computação e Sistemas de Informação. Tem experiência nas áreas de Informática em Saúde, Processamento e Análise de Imagens e Engenharia Biomédica, com ênfase em Telemedicina, Telerradiologia, Sistemas de Auxílio ao Diagnóstico por Imagem e Processamento de Imagens Médicas, com foco nos seguintes temas: analise inteligente de imagens, DICOM, CBIR, informática médica, visão computacional e PACS. Coordena o Instituto Nacional de Ciência e Tecnologia para Convergência Digital - INCoD. Foi o criador e primeiro Coordenador do Núcleo de Telessaúde de Santa Catarina no âmbito do Programa Telessaúde Brasil do Ministério da Saúde e da OPAS - Organização Pan-Americana de Saúde e criador do Núcleo Santa Catarina da RUTE - Rede Universitária de Telemedicina.