Ciência de dados: como configurar um modelo preditivo máquina de vetores de suporte em python

Video: Máquina de Vetor de Suporte

cientistas de dados considerem Support Vector Machines (SVM) para ser uma das técnicas de aprendizado de máquina mais complexos e poderosos em sua caixa de ferramentas, para que você geralmente encontrar este tema apenas em manuais avançados. No entanto, você não deve afastar-se este algoritmo de aprendizagem grande porque o scikit-learn biblioteca oferece uma ampla e acessível gama de classes SVM-supervisionado para regressão e classificação.

Embora SVM é complexa, é uma grande ferramenta. Depois de encontrar a versão SVM mais adequada para o seu problema, você tem que aplicá-la aos seus dados e trabalhar um pouco para otimizar alguns dos muitos parâmetros disponíveis e melhorar seus resultados. A criação de um modelo preditivo SVM trabalho envolve estas etapas gerais:

  1. Escolha a classe SVM você vai usar.

  2. Treine seu modelo com os dados.

  3. Verifique se o seu erro de validação e torná-la sua linha de base.

  4. Tente valores diferentes para os parâmetros SVM.

  5. Verifique se o seu erro de validação melhora.

  6. Treine seu modelo usando novamente os dados com os melhores parâmetros.

Tanto quanto escolher a classe SVM direito vai, você tem que pensar sobre o seu problema. Por exemplo, você poderia escolher uma classificação (acho que uma classe) ou regressão (acho que um número). Ao trabalhar com uma classificação, você deve considerar se você precisa de classificar apenas dois grupos (de classificação binária) ou mais do que dois (classificação multiclasse).



Outro aspecto importante a considerar é a quantidade de dados que você tem que processar. Depois de tomar notas de todas as suas necessidades em uma lista, uma rápida olhada abaixo irá ajudá-lo a estreitar suas escolhas.

Video: Marcos Prates - Estudo Online da dinâmica espaço-temporal de dados de crime a partir de dados da ..

Classeuso característicaparâmetros-chave
sklearn.svm.SVCclassificação binária e multiclasse quando o número de
exemplos é inferior a 10.000
C, de amêndoa, grau, gama
sklearn.svm.NuSVCSemelhante ao SVCnu, de amêndoa, grau, gama
sklearn.svm.LinearSVCclassificação binária e multiclasse quando o número de
exemplos é mais de 10.000 dados esparsos
Penalidade, perda, C
sklearn.svm.SVRproblemas de regressãoC, de amêndoa, grau, gama, epsilon
sklearn.svm.NuSVRSemelhante ao SVRNu, C, núcleo, grau, gama
sklearn.svm.OneClassSVMdetecção de outliersnu, de amêndoa, grau, gama

O primeiro passo é verificar o número de exemplos em seus dados. Quando você tem mais de 10.000 exemplos, a fim de evitar cálculos muito lento e pesado, você pode usar SVM e ainda obter um desempenho aceitável apenas para problemas de classificação usando sklearn.svm.LinearSVC. Se em vez disso você precisa para resolver um problema de regressão ou a LinearSVC não é rápido o suficiente, você precisa usar uma solução estocástico para SVM.

O módulo scikit-learn SVM envolve duas bibliotecas poderosos escritos em C, LIBSVM e liblinear. Ao montar um modelo, existe um fluxo de dados entre o Python e as duas bibliotecas externas. Um cache suaviza as operações de troca de dados. No entanto, se o cache é muito pequeno e você tem muitos pontos de dados, o cache se torna um gargalo!

Se você tem memória suficiente, é uma boa idéia para definir um tamanho de cache maior do que o de 200MB padrão (1000MB, se possível) usando a classe SVM tamanho da memória cache parâmetro. números menores de exemplos exigem apenas que você decidir entre classificação e regressão.

Em cada caso, você terá dois algoritmos alternativos. Por exemplo, para a classificação, você pode usar sklearn.svm.SVC ou sklearn.svm.NuSVC. A única diferença com a versão Nu são os parâmetros que leva e o uso de um algoritmo ligeiramente diferente. No final, ele recebe basicamente os mesmos resultados, então você normalmente escolher a versão não-Nu.

Depois de decidir sobre qual algoritmo de usar, você descobrir que você tem um monte de parâmetros para escolher, eo parâmetro C é sempre entre eles. O parâmetro C indica o quanto o algoritmo tem que adaptar-se a pontos de treinamento.

Video: EDV (Estruturas de Dados sob Vetores) um protótipo de aplicativo Educacional

Quando C é pequena, o SVM adapta menos para os pontos e tende a assumir uma direcção média, utilizando apenas alguns dos pontos e variáveis ​​disponíveis. Valores maiores C tendem a forçar o processo de aprendizagem a seguir mais dos pontos de treinamento disponíveis e se envolver com muitas variáveis.

O direito C é geralmente um valor médio, e você pode encontrá-lo depois de um pouco de experimentação. Se o seu C é muito grande, você corre o risco overfitting, uma situação em que o SVM adapta muito aos seus dados e não pode tratar adequadamente novos problemas. Se o seu C é muito pequeno, a sua previsão será mais áspero e imprecisa. Você vai experimentar uma situação chamada underfitting - o seu modelo é muito simples para o problema que você quer resolver.

Depois de decidir o valor C de usar, o bloco importante de parâmetros a correção é kernel, grau e gama. Todos os três interconexão e seu valor depende da especificação do kernel (por exemplo, o kernel linear não exigem um grau ou gama, assim você pode usar qualquer valor). A especificação do kernel determina se o seu modelo SVM usa uma linha ou uma curva, a fim de adivinhar a classe ou a medida de ponto.

modelos lineares são mais simples e tendem a acho bem em novos dados, mas às vezes um desempenho inferior quando as variáveis ​​nos dados se relacionam entre si de forma complexa. Porque você não pode saber antecipadamente se um modelo linear funciona para o seu problema, é uma boa prática para começar com um kernel linear, corrigir o seu valor C, e usar esse modelo e seu desempenho como base para testar soluções não-lineares depois.


Publicações relacionadas