Aprendizado de máquina: como as máquinas de vetor de suporte podem ser usadas na negociação.
O que é uma máquina de vetores de suporte?
Uma máquina de vetores de suporte é um método de aprendizado de máquina que tenta obter dados de entrada e classificar em uma das duas categorias. Para que uma máquina de vetores de suporte seja eficaz, é necessário primeiro usar um conjunto de dados de entrada e saída de treinamento para construir o modelo de máquina de vetores de suporte que pode ser usado para classificar novos dados.
Uma máquina de vetores de suporte desenvolve esse modelo pegando as entradas de treinamento, mapeando-as em um espaço multidimensional e usando regressão para encontrar um hiperplano (um hiperplano é uma superfície no espaço n-dimensional que separa o espaço em dois meio espaços) que separa melhor as duas classes de entradas. Uma vez que a máquina de vetores de suporte tenha sido treinada, ela é capaz de avaliar novas entradas em relação ao hiperplano de separação e classificá-lo em uma das duas categorias.
Uma máquina de vetores de suporte é essencialmente uma máquina de entrada / saída. Um usuário pode inserir uma entrada e, com base no modelo desenvolvido por meio de treinamento, retornará uma saída. O número de entradas para qualquer dada máquina de vetores de suporte teoricamente varia de um a infinito, no entanto, em termos práticos, a capacidade de computação limita o número de entradas que podem ser usadas. Se, por exemplo, N entradas forem usadas para uma determinada máquina de vetores de suporte (o valor inteiro de N pode variar de um a infinito), a máquina de vetores de suporte deve mapear cada conjunto de entradas no espaço N-dimensional e encontrar um (N-1 hiper-plano que melhor separa os dados de treinamento.
Figura 1. Support Vector Machines são máquinas de entrada / saída.
A melhor maneira de conceituar como uma máquina de vetores de suporte funciona é considerando o caso bidimensional. Suponha que queremos criar uma máquina de vetores de suporte que tenha duas entradas e retorne uma única saída que classifique o ponto de dados como pertencente a uma das duas categorias. Podemos visualizá-lo plotando-o em um gráfico bidimensional, como o gráfico abaixo.
Figura 2. Esquerda: Entradas da máquina de vetor de suporte mapeadas para um gráfico 2D. Os círculos vermelhos e as cruzes azuis são usados para denotar as duas classes de entradas.
Figura 3. Direita: Entradas da máquina de vetor de suporte mapeadas para um gráfico 2D. Os círculos vermelhos e as cruzes azuis são usados para denotar as duas classes de entradas com uma linha preta indicando o hiperplano de separação.
Neste exemplo, os cruzamentos azuis indicam pontos de dados que pertencem à categoria 1 e os círculos vermelhos que representam pontos de dados que pertencem à categoria 2. Cada um dos pontos de dados individuais possui um valor de entrada único 1 (representado por sua posição no eixo x ) e um valor único de entrada 2 (representado por sua posição no eixo y) e todos esses pontos foram mapeados para o espaço bidimensional.
Uma máquina de vetores de suporte é capaz de classificar dados criando um modelo desses pontos no espaço bidimensional. A máquina de vetores de suporte observa os dados no espaço bidimensional e usa um algoritmo de regressão para encontrar um hiperplano de 1 dimensão (linha aka) que separa com mais precisão os dados em suas duas categorias. Essa linha de separação é então usada pela máquina de vetores de suporte para classificar novos pontos de dados na categoria 1 ou na categoria 2.
A animação abaixo ilustra o processo de treinamento de uma nova máquina de vetores de suporte. O algoritmo começará fazendo uma tentativa aleatória de encontrar um hiperplano de separação e, em seguida, melhorará iterativamente a precisão do hiperplano. Como você pode ver, o algoritmo começa de forma bastante agressiva, mas depois diminui à medida que começa a se aproximar da solução de desejos.
Figura 4. Uma animação mostrando um treinamento de máquina de vetores de suporte. O hiperplano converge progressivamente na geometria ideal para separar as duas classes de dados.
O cenário bidimensional apresentado acima nos permite visualizar o processo de uma máquina de vetores de suporte, porém só é capaz de classificar um ponto de dados usando duas entradas. E se quisermos usar mais entradas? Felizmente, o algoritmo de máquina de vetores de suporte nos permite fazer o mesmo em dimensões mais altas, embora se torne muito mais difícil de conceituar.
Considere isso, você deseja criar uma máquina de vetores de suporte que consuma 20 entradas e possa classificar qualquer ponto de dados usando essas entradas na categoria 1 ou na categoria 2. Para fazer isso, a máquina de vetores de suporte precisa modelar os dados no espaço 20 dimensional e use um algoritmo de regressão para encontrar um hiperplano de 19 dimensões que separa os pontos de dados em duas categorias. Isso fica extremamente difícil de visualizar, pois é difícil para nós compreendermos qualquer coisa acima de 3 dimensões, no entanto, tudo o que você precisa saber é que funciona exatamente da mesma maneira que para o caso bidimensional.
Como funcionam as máquinas de vetor de suporte? Exemplo: É um Schnick?
Imagine este cenário hipotético, você é um pesquisador que está investigando um animal raro encontrado apenas nas profundezas do Ártico chamado Shnicks. Dado o afastamento destes animais, apenas um pequeno punhado foi encontrado (digamos, cerca de 5000). Como pesquisador, você está preso à questão. Como posso identificar um Schnick?
Tudo o que você tem à sua disposição são os trabalhos de pesquisa publicados anteriormente por um punhado de pesquisadores que viram um. Nestes trabalhos, os autores descrevem certas características sobre os Schnicks que encontraram, ou seja, altura, peso, número de pernas, etc. Mas todas essas características variam entre os trabalhos de pesquisa sem padrão discernível.
Como podemos usar esses dados para identificar um novo animal como um schnick?
Uma possível solução para nosso problema é usar uma máquina de vetores de suporte para identificar os padrões nos dados e criar uma estrutura que possa ser usada para classificar os animais como schnick ou não schnick. O primeiro passo é criar um conjunto de dados que possam ser usados para treinar sua máquina de vetores de suporte para identificar schnicks. Os dados de treinamento são um conjunto de entradas e saídas correspondentes para a máquina de vetores de suporte para analisar e extrair um padrão.
Portanto, devemos decidir quais entradas serão usadas e quantas serão usadas. Teoricamente, podemos ter quantas entradas quisermos, mas isso pode levar a lentidão no treinamento (quanto mais entradas você tiver, mais tempo levará a máquina de vetores de suporte para extrair padrões). Além disso, você deseja escolher valores de entrada que tenderão a ser relativamente consistentes em todos os schnicks. Por exemplo, altura ou peso do animal seria um bom exemplo de uma entrada porque você esperaria que isso fosse relativamente consistente em todos os schnicks. No entanto, a idade média de um animal seria uma má escolha de insumo, porque você esperaria que a idade dos animais identificados variaria consideravelmente.
Por esse motivo, as seguintes entradas foram escolhidas:
Altura Peso O número de pernas O número de olhos O comprimento dos braços do animal A velocidade média dos animais A freqüência dos animais que se acasalam chamam.
Com as entradas escolhidas, podemos começar a compilar nossos dados de treinamento. Dados de treinamento efetivos para uma máquina de vetores de suporte devem atender a certos requisitos:
Os dados devem ter exemplos de animais que são schnicks Os dados devem ter exemplos de animais que não são schnicks.
Neste caso, temos os documentos de pesquisa do cientista que identificaram com sucesso um schnick e listaram suas propriedades. Portanto, podemos ler esses documentos de pesquisa e extrair os dados em cada uma das entradas e alocar uma saída de true ou false para cada um dos exemplos. Os dados de treinamento, neste caso, podem ser semelhantes à tabela abaixo.
Tabela 1. Tabela de exemplo de observações schnick.
Depois de reunir os dados para todas as entradas e saídas de treinamento, podemos usá-lo para treinar nossa máquina de vetores de suporte. Durante o processo de treinamento, a máquina de vetores de suporte criará um modelo no espaço de sete dimensões que pode ser usado para classificar cada um dos exemplos de treinamento em verdadeiro ou falso. A máquina de vetores de suporte continuará a fazer isso até que tenha um modelo que represente com precisão os dados de treinamento (dentro da tolerância de erro especificada). Quando o treinamento estiver concluído, esse modelo poderá ser usado para classificar novos pontos de dados como verdadeiros ou falsos.
A máquina de vetores de suporte funciona realmente?
Usando o cenário Schnick, escrevi um script que testa como uma máquina de vetores de suporte pode realmente identificar novos schnicks. Para fazer isso, usei a biblioteca de ferramentas “Ferramenta de Aprendizado de Máquina de Vetor de Suporte” que pode ser baixada do Market.
Para modelar esse cenário efetivamente, precisamos primeiro decidir quais são as propriedades reais de um Schnick. As propriedades que assumi neste caso foram listadas na tabela abaixo. Se um animal satisfaz todos os critérios abaixo, então é um Schnick.
Tabela 2. Resumo dos parâmetros que definem um schnick.
Agora que definimos nosso Schnick, podemos usar essa definição para experimentar máquinas de vetores de suporte. O primeiro passo é criar uma função que seja capaz de obter as sete entradas para qualquer animal e retornar a classificação real do animal como um schnick ou não. Esta função será usada para gerar dados de treinamento para a máquina de vetores de suporte, bem como para avaliar o desempenho do mesmo no final. Isso pode ser feito usando a função abaixo;
O próximo passo no processo é criar uma função que possa gerar as entradas e saídas de treinamento. Entradas neste caso serão geradas através da criação de números aleatórios dentro de um intervalo definido para cada um dos sete valores de entrada. Então, para cada um dos conjuntos de entradas aleatórias geradas, a função isItASchnick () acima será usada para gerar a saída desejada correspondente. Isso é feito na função abaixo:
Agora temos um conjunto de entradas e saídas de treinamento, agora é hora de criar nossas máquinas de vetores de suporte usando a 'Ferramenta de Aprendizagem de Máquina de Vetor de Suporte' disponível no Market. Uma vez criada uma nova máquina de vetores de suporte, é necessário passar as entradas e saídas de treinamento para ela e executar o treinamento.
Agora temos uma máquina de vetores de suporte que foi treinada com sucesso na identificação de Scnhicks. Para verificar isso, podemos testar a máquina de vetores de suporte final pedindo que ela classifique novos pontos de dados. Isso é feito primeiro gerando entradas aleatórias e, em seguida, usando a função isItASchnick () para determinar se essas entradas correspondem a um Schnick real, use a máquina de vetores de suporte para classificar as entradas e determinar se o resultado previsto corresponde ao resultado real. Isso é feito na função abaixo:
Eu recomendo jogar com os valores dentro das funções acima para ver como a máquina de vetores de suporte se comporta sob diferentes condições.
Por que a máquina de vetores de suporte é tão útil?
O benefício de usar uma máquina de vetores de suporte para extrair um padrão complexo dos dados é que não é necessário um entendimento prévio do comportamento dos dados. Uma máquina de vetores de suporte é capaz de analisar os dados e extrair seus únicos conhecimentos e relacionamentos. Desta forma, funciona como uma caixa preta recebendo entradas e gerando uma saída que pode ser muito útil para encontrar padrões nos dados que são muito complexos e não óbvios.
Uma das melhores características das máquinas de vetores de suporte é que elas são capazes de lidar com erros e ruído nos dados muito bem. Eles geralmente conseguem ver o padrão subjacente dentro dos dados e filtram outliers de dados e outras complexidades. Considere o seguinte cenário, ao realizar sua pesquisa sobre Schnicks, você se depara com vários trabalhos de pesquisa que descrevem Schnicks com características massivamente diferentes (como um schnick de 200kg e 15000mm de altura).
Erros como esse podem levar a distorções em seu modelo do que é um Schnick, o que poderia fazer com que você cometa um erro ao classificar novas descobertas de Schnick. O benefício da máquina de vetores de suporte é que ela desenvolverá um modelo que esteja de acordo com o padrão subjacente, oposto a um modelo que se encaixa em todos os pontos de dados de treinamento. Isso é feito permitindo-se um certo nível de erro no modelo para permitir que a máquina de vetores de suporte ignore qualquer erro nos dados.
No caso da máquina de vetores de suporte Schnick, se permitirmos uma tolerância de erro de 5%, o treinamento tentará apenas desenvolver um modelo que corresponda a 95% dos dados de treinamento. Isso pode ser útil porque permite que o treinamento ignore a pequena porcentagem de outliers.
Podemos investigar ainda mais essa propriedade da máquina de vetores de suporte modificando nosso script Schnick. A função abaixo foi adicionada para introduzir erros aleatórios deliberados em nosso conjunto de dados de treinamento. Esta função selecionará pontos de treinamento aleatoriamente e substituirá as entradas e a saída correspondente por variáveis aleatórias.
Essa função nos permite introduzir erros deliberados em nossos dados de treinamento. Usando esses dados preenchidos com erros, podemos criar e treinar uma nova máquina de vetores de suporte e comparar seu desempenho com o original.
Quando o script é executado, ele produz os seguintes resultados no registro de especialistas. Dentro de um conjunto de dados de treinamento com 5000 pontos de treinamento, conseguimos introduzir 500 erros aleatórios. Ao comparar o desempenho dessa máquina de vetores de suporte preenchida por erros com a original, o desempenho é reduzido apenas em & lt; 1%. Isso ocorre porque a máquina de vetores de suporte é capaz de ignorar os valores discrepantes no conjunto de dados durante o treinamento e ainda é capaz de produzir um modelo impressionantemente preciso dos dados verdadeiros. Isso sugere que as máquinas de vetores de suporte podem ser uma ferramenta mais útil na extração de padrões complexos e insights de conjuntos de dados ruidosos.
Figura 5. O log do especialista resultante após a execução do script "Schnick" no MetaTrader 5.
Uma versão completa do código acima pode ser baixada do Code Base, entretanto este script só pode ser executado no seu terminal se você comprou uma versão completa da ferramenta Support Vector Machine Learning do Market. Se você tiver apenas uma versão de demonstração desta ferramenta baixada, você estará limitado a usar a ferramenta através do testador de estratégia. Para permitir o teste do código "Schnick" usando a versão demo da ferramenta, reescrevi uma cópia do script em um Expert Advisor que pode ser implantado usando o testador de estratégia. Ambas as versões do código podem ser baixadas seguindo os links abaixo:
Versão Completa - Usando um Script que é implementado no terminal MetaTrader 5 (requer uma versão comprada da Ferramenta de Aprendizagem de Máquina de Vetor de Suporte)
Versão de Demonstração - Usando um Expert Advisor que é implementado no testador de estratégia do MetaTrader 5 (requer apenas uma versão demo da Ferramenta de Aprendizado de Máquina de Vetor de Suporte)
Como as máquinas de vetores de suporte podem ser usadas no mercado?
É certo que o exemplo de Schnick discutido acima é bastante simples, no entanto, existem algumas semelhanças que podem ser traçadas entre este exemplo e usando as máquinas de vetores de suporte para análise técnica de mercado.
A análise técnica é fundamentalmente sobre o uso de dados históricos de mercado para prever movimentos futuros de preços. Da mesma forma, dentro do exemplo do schnick, estávamos usando as observações feitas por cientistas do passado para prever se um novo animal é um schnick ou não. Além disso, o mercado está repleto de ruído, erros e erros estatísticos que tornam o uso de uma máquina de vetores de suporte um conceito interessante.
A base para um número significativo de abordagens de negociação de análise técnica envolve as seguintes etapas:
Monitorando vários indicadores Identificando quais condições para cada indicador se correlacionam com um comércio potencialmente bem-sucedido Observe cada um dos indicadores e avalie quando todos (ou a maioria) estão sinalizando uma negociação.
É possível adotar uma abordagem semelhante para usar máquinas de vetores de suporte para sinalizar novos negócios de maneira semelhante. A ferramenta de aprendizado de máquina de vetor de suporte foi desenvolvida com isso em mente. Uma descrição completa de como usar essa ferramenta pode ser encontrada no Market, por isso só darei uma rápida visão geral. O processo para usar essa ferramenta é o seguinte:
Figura 6. O diagrama de blocos mostrando o processo para implementar a ferramenta de máquina de vetores de suporte em um Expert Advisor.
Antes de poder usar a Ferramenta de Aprendizado de Máquina de Vetor de Suporte, é importante primeiro entender como as entradas e saídas de treinamento são geradas.
Como as Entradas de Treinamento são Geradas?
Portanto, os indicadores que você deseja usar como entradas já foram inicializados, bem como sua nova máquina de vetores de suporte. A próxima etapa é passar as alças do indicador para sua nova máquina de vetores de suporte e instruí-la sobre como gerar os dados de treinamento. Isso é feito chamando a função setIndicatorHandles (). Essa função permite que você passe as alças dos indicadores inicializados para a máquina de vetores de suporte. Isso é feito passando um array inteiro contendo as alças. As outras duas entradas para esta função são o valor de deslocamento e o número de pontos de dados.
O valor de deslocamento denota o deslocamento entre a barra atual e a barra inicial a ser usada na geração das entradas de treinamento e o número de pontos de treinamento (indicado por N) define o tamanho dos dados de treinamento. O diagrama abaixo ilustra como usar esses valores. Um valor de deslocamento de 4 e um valor N de 6 dirão à máquina de vetores de suporte para usar somente as barras capturadas no quadrado branco para gerar entradas e saídas de treinamento. Da mesma forma, um valor de deslocamento de 8 e um valor N de 8 dirão à máquina de vetores de suporte para usar somente as barras capturadas no quadrado azul para gerar entradas e saídas de treinamento.
Uma vez que a função setIndicatorHandles () tenha sido chamada, é possível chamar a função genInputs (). Essa função usará as alças do indicador para passar para gerar uma matriz de dados de entrada a serem usados para treinamento.
Figura 7. Gráfico de velas que ilustra os valores de Offset e N.
Como as saídas de treinamento são geradas?
As saídas de treinamento são geradas pela simulação de negociações hipotéticas com base em dados históricos de preços e na determinação de se essa negociação teria sido bem-sucedida ou malsucedida. Para fazer isso, existem alguns parâmetros que são usados para instruir a ferramenta de aprendizado de máquina de vetor de suporte como avaliar um comércio hipotético como bem-sucedido ou malsucedido.
A primeira variável é OP_TRADE. O valor disso pode ser COMPRA ou VENDA e corresponderá a negociações hipotéticas de compra ou venda. Se o valor deste for BUY, então, ao gerar os outputs, ele irá apenas olhar para o sucesso potencial de negociações de compra hipotéticas. Alternativamente, se o valor disso for VENDER, então, ao gerar as saídas, ele apenas examinará o sucesso potencial de negociações de venda hipotéticas.
Os próximos valores usados são o Stop Loss e Take Profit para esses negócios hipotéticos. Os valores são definidos em pips e definirão os níveis de parada e limite para cada uma das negociações hipotéticas.
O parâmetro final é a duração da negociação. Essa variável é medida em horas e garantirá que somente negociações concluídas dentro dessa duração máxima serão consideradas bem-sucedidas. A razão para incluir esta variável é evitar as transações de sinalização de máquina de vetor de suporte em um mercado lateral lento.
Considerações a serem feitas ao escolher entradas.
É importante colocar algum pensamento na seleção de entrada ao implementar máquinas de vetores de suporte em sua negociação. Similar ao exemplo de Schnick, é importante escolher uma entrada que seria esperada ter similar entre incidências de diferença. Por exemplo, você pode se sentir tentado a usar uma média móvel como entrada, mas como o preço médio de longo prazo tende a mudar drasticamente com o tempo, uma média móvel isolada pode não ser a melhor entrada para usar. Isso ocorre porque não haverá semelhança significativa entre o valor médio móvel hoje e os valores médios móveis de seis meses atrás.
Suponha que estamos negociando EURUSD e usando uma máquina de vetores de suporte com uma entrada de média móvel para sinalizar negociações de 'compra'. Digamos que o preço atual é de 1,10, no entanto, está gerando dados de treinamento de seis meses atrás, quando o preço era 0,55. Ao treinar a máquina de vetores de suporte, o padrão encontrado pode levar apenas a uma negociação sendo sinalizada quando o preço estiver em torno de 0,55, já que esses são os únicos dados que ele conhece. Portanto, sua máquina de vetores de suporte nunca pode sinalizar uma negociação até que o preço caia para 0.55.
Em vez disso, uma entrada melhor para usar na máquina de vetores de suporte pode ser um MACD ou um oscilador semelhante, porque o valor do MACD é independente do nível médio de preço e apenas sinaliza o movimento relativo. Eu recomendo que você experimente isso para ver o que produz os melhores resultados para você.
Outra consideração a ser feita ao escolher entradas é garantir que a máquina de vetores de suporte tenha um instantâneo adequado de um indicador para sinalizar um novo comércio. Você pode descobrir em sua própria experiência de negociação que um MACD só é útil quando você tem as cinco últimas barras para olhar, pois isso mostrará uma tendência. Uma única barra do MACD pode ser inútil em isolamento, a menos que você possa dizer se está indo para cima ou para baixo. Portanto, pode ser necessário passar as últimas barras do indicador MACD para a máquina de vetores de suporte. Há duas maneiras possíveis de fazer isso:
Você pode criar um novo indicador personalizado que use as cinco barras anteriores do indicador MACD para calcular uma tendência como um único valor. Esse indicador personalizado pode ser passado para a máquina de vetores de suporte como uma única entrada ou.
Você pode usar as cinco barras anteriores do indicador MACD na máquina de vetores de suporte como cinco entradas separadas. A maneira de fazer isso é inicializar cinco instâncias diferentes do indicador MACD. Cada um dos indicadores pode ser inicializado com um deslocamento diferente da barra atual. Em seguida, as cinco alças dos indicadores separados podem ser passadas para a máquina de vetores de suporte. Deve-se notar que a opção 2 tenderá a causar tempos de execução mais longos para o seu Expert Advisor. Quanto mais entradas você tiver, mais tempo levará para treinar com sucesso.
Implementando Support Vector Machines e Expert Advisor.
Eu preparei um Expert Advisor que é um exemplo de como alguém poderia potencialmente usar máquinas de vetores de suporte em sua própria negociação (uma cópia deste pode ser baixada seguindo este link mql5 / en / code / 1229). Espero que o Expert Advisor permita que você experimente um pouco com as máquinas de vetores de suporte. Eu recomendo que você copie / altere / modifique o Expert Advisor para se adequar ao seu próprio estilo de negociação. O EA funciona da seguinte maneira:
Duas novas máquinas de vetores de suporte são criadas usando a biblioteca svMachineTool. Uma é configurada para sinalizar novas negociações 'Comprar' e a outra é configurada para sinalizar novas negociações 'Venda'.
Sete indicadores padrão são inicializados com cada uma de suas alças armazenadas em um array inteiro (Nota: qualquer combinação de indicadores pode ser usada como entrada, eles precisam apenas ser passados para o SVM em um único array inteiro).
A matriz de identificadores de indicador é passada para as novas máquinas de vetores de suporte.
Utilizando o conjunto de indicadores e outros parâmetros, os dados de preços históricos são usados para gerar entradas e saídas precisas a serem usadas no treinamento das máquinas de vetores de suporte.
Uma vez que todas as entradas e saídas tenham sido geradas, ambas as máquinas de vetores de suporte são treinadas.
As máquinas de vetores de suporte treinadas são usadas no EA para sinalizar novas negociações de 'compra' e 'venda'. Quando uma nova transação de 'compra' ou 'venda' é sinalizada, a negociação é aberta juntamente com ordens manuais de Stop Loss e Take Profit.
A inicialização e o treinamento da máquina de vetores de suporte são executados dentro da função onInit (). Para sua referência, este segmento do EA do svTrader foi incluído abaixo com notas.
Suporte Avançado Negociação de Máquina de Vetor.
Capacidade adicional foi construída na ferramenta de aprendizado de máquina de vetor de suporte para os usuários mais avançados. A ferramenta permite que os usuários passem seus próprios dados de entrada e dados de saída personalizados (como no exemplo da Schnick). Isso permite que você crie seus próprios critérios personalizados para as entradas e saídas da máquina de vetores de suporte e passe manualmente esses dados para treiná-los. Isso abre a oportunidade de usar máquinas de vetores de suporte em qualquer aspecto de sua negociação.
Não é apenas possível usar máquinas de vetores de suporte para sinalizar novos negócios, mas também pode ser usado para sinalizar o fechamento de negociações, gerenciamento de dinheiro, novos indicadores avançados etc. No entanto, para garantir que você não receba erros, é importante entender como essas entradas e saídas devem ser estruturadas.
Entradas: As entradas são passadas para o SVM como uma matriz unidimensional de valores duplos. Por favor, note que qualquer entrada que você criar deve ser passada como um valor duplo. Boolean, integer, etc. devem ser todos convertidos em um valor duplo antes de serem passados para a máquina de vetores de suporte. As entradas são necessárias no seguinte formato. Por exemplo, suponha que estamos passando entradas com 3 entradas x 5 pontos de treinamento. Para conseguir isso, nossa matriz dupla deve ter 15 unidades de comprimento no formato:
| A 1 | B 1 | C 1 | A 2 | B 2 | C 2 | A 3 | B 3 | C 3 | A 4 | B 4 | C 4 | A 5 | B 5 | C 5 |
Também é necessário passar um valor para o número de entradas. No caso, N_Inputs = 3.
Saídas: as saídas são passadas como uma matriz de valores booleanos. Esses valores booleanos são a saída desejada do SVM correspondente a cada um dos conjuntos de entradas passados. Seguindo o exemplo acima, digamos que temos 5 pontos de treinamento. Nesse cenário, passaremos em uma matriz booleana de valores de saída com 5 unidades de comprimento.
Ao gerar suas próprias entradas e saídas, verifique se o tamanho de suas matrizes corresponde aos valores que você passa. Se eles não corresponderem, será gerado um erro para notificá-lo da discrepância. Por exemplo, se tivermos passado em N_Inputs = 3 e as entradas forem uma matriz de tamanho 16, será gerado um erro (uma vez que, um valor de N_inputs de 3 significará que o comprimento de qualquer array de entrada precisará ser um múltiplo de 3). Da mesma forma, certifique-se de que o número de conjuntos de entradas e o número de saídas transmitidas sejam iguais. Novamente, se você tiver N_Inputs = 3, comprimento de entradas de 15 e um comprimento de saídas de 6, outro erro será lançado (como você tem 5 conjuntos de entradas e 6 saídas).
Tente garantir que você tenha variação suficiente em suas saídas de treinamento. Por exemplo, se você passar 100 pontos de treinamento, o que significa uma matriz de saída de comprimento 100, e todos os valores são falsos com apenas um verdadeiro, a diferenciação entre o caso verdadeiro e o caso falso não é suficiente. Isso tenderá a levar o treinamento SVM muito rápido, mas a solução final é muito ruim. Um conjunto de treinamento mais diversificado freqüentemente levará a um SVM mais afetivo.
Negociação com Support Vector Machines (SVM)
Finalmente todas as estrelas se alinharam e eu posso dedicar algum tempo para o back-testing de novos sistemas de negociação, e o Support Vector Machines (SVM) é o novo “brinquedo” que vai me manter ocupado por um tempo.
As SVMs são uma ferramenta bem conhecida da área de Aprendizado de Máquina supervisionado e são usadas para classificação e regressão. Para mais detalhes, consulte a literatura.
Parece-me que a aplicação mais intuitiva para negociação é a regressão, por isso vamos começar construindo um modelo de regressão SVM.
Seguindo nossa experiência com modelos ARMA + GARCH, começaremos tentando prever retornos, em vez de preços. Da mesma forma, em nossos primeiros testes, usaremos apenas os retornos dos cinco dias anteriores como os recursos que determinam o retorno de um determinado dia. Vamos começar com a história de 500 dias como o conjunto de treinamento.
Em termos mais matemáticos, para o conjunto de treinamento, temos recursos N, para cada um deles temos amostras M. Nós também temos respostas M.
Dada uma linha de valores de recurso, a matriz da esquerda, o SVM é treinado para produzir o valor de resposta. Em nosso exemplo específico, temos cinco colunas (recursos), cada coluna correspondendo aos retornos com um atraso diferente (de 1 a 5). Nós temos 500 amostras e as respostas correspondentes.
Uma vez que o SVM é treinado neste conjunto, podemos começar a alimentá-lo com conjuntos de cinco recursos, correspondentes aos retornos dos cinco dias anteriores, e o SVM nos fornecerá a resposta, que é o retorno previsto. Por exemplo, após treinar o SVM nos 500 dias anteriores, usaremos os retornos para os dias 500, 499, 498, 497 e 496 (estes são os nossos como entrada para obter o retorno previsto para o dia 501.
De todos os pacotes disponíveis em R, decidi escolher o pacote e1071. Uma segunda escolha próxima foi o pacote kernlab, que ainda estou planejando experimentar no futuro.
Então eu tentei algumas estratégias. Primeiro, tentei algo muito semelhante à abordagem ARMA + GARCH - os retornos defasados dos cinco dias anteriores. Fiquei bastante surpreso ao ver essa estratégia ter um desempenho melhor do que o ARMA + GARCH (essa é a terra natal do ARMA + GARCH e eu ficaria muito feliz apenas com desempenho comparável)!
Em seguida, tentei os mesmos cinco recursos, mas tentando selecionar o melhor subconjunto. A seleção foi feita usando uma abordagem gananciosa, começando com 0 recursos e adicionando interativamente o recurso que minimiza o erro. Essa abordagem melhorou ainda mais as coisas.
Finalmente, tentei uma abordagem diferente com cerca de uma dúzia de recursos. Os recursos incluíram retornos em diferentes períodos de tempo (1 dia, 2 dias, 5 dias, etc), algumas estatísticas (média, mediana, sd, etc) e volume. Eu usei a mesma abordagem gananciosa para selecionar recursos. Este sistema final também mostrou um desempenho muito bom, mas levou um bom tempo para ser executado.
Hora de terminar este post, os resultados do teste de volta têm que esperar. Até lá você pode jogar com o código fonte completo. Aqui está um exemplo de usá-lo:
Comentários estão fechados.
Posts populares recentes.
Artigos mais visitados da semana.
Jobs para usuários de R.
É alimentado por WordPress usando um design bavotasan.
Direitos autorais & copy; 2017 R-blogueiros. Todos os direitos reservados. Termos e Condições para este site.
Lista de aplicativos SVM.
Suporte ao controle preditivo generalizado baseado em máquinas vetoriais.
“Controle preditivo baseado em máquinas de vetores de suporte”, Serdar Iplikci, REVISTA INTERNACIONAL DE CONTROLE NÃO-LINEAR E ROBUSTO, vol. 16, págs. 843-862, 2006.
Reconstrução Dinâmica de Sistemas Caóticos a partir de Intervalos Entre Partidas Utilizando Máquinas de Vetores de Suporte de Mínimos Quadrados.
Physica D, vol. 216, págs. 282-293, 2006.
Aplicação do Método do Kernel ao Problema de Geossonqueamento Inverso.
"Aplicação do método kernel ao problema de geosounding inverso", Hugo Hidalgo, Sonia Sosa e E. Gómez-Treviño, Neural Networks, vol. 16, pp. 349-353, 2003.
Modelagem Baseada em Máquinas de Suporte Vetorial do Potencial de Liquefação Sísmica.
Goh ATC. Potencial de liquefação sísmica avaliado por redes neurais. Journal of Geotechnical Engineering 1994; 120 (9): 1467-1480.
Goh ATC. Modelagem de Redes Neurais de Dados de Liquefação Sísmica CPT. Journal of Geotechnical Engineering 1996; 122 (1): 70-73.
Aceito para publicação no Jornal Internacional de Métodos Numéricos e Analíticos em Geomecânica.
Inserida por: Mahesh Pal & lt; mpce_pal@yahoo. co. uk> - Quarta-feira, 22 de fevereiro de 2006 às 06:50:07 (GMT)
SVM para Ciências Geoambientais.
1. N. Gilardi, M. Kanevski, M. Maignan e E. Mayoraz. Classificação de Dados Espaciais Ambientais e Poluição com Máquinas de Vetores de Suporte e Geoestatística. Workshop W07 “Técnicas Inteligentes para Análise de Dados Espaço-Temporais em Aplicações Ambientais”. ACAI99, Grécia, julho de 1999. pp. 43-51. idiap. ch.
2. M Kanevski, N. Gilardi, E Mayoraz, M Maignan. Classificação de dados espaciais com máquinas de vetores de suporte. Congresso Geostat 2000. África do Sul, abril de 2000.
3. Kanevski M., Wong P., Canu S. Mapeamento de Dados Espaciais com Regressão de Vetores de Suporte e Geoestatística. 7ª Conferência Internacional sobre Processamento de Informação Neural, Taepon, Coréia. 14 a 18 de novembro de 2000. Pp. 1307-1311.
4. N GILARDI, Alex GAMMERMAN, Mikhail KANEVSKI, Michel MAIGNAN, Tom MELLUISH, Craig SAUNDERS, Volodia VOVK. Aplicação de termos de aprovação para o tema dos riscos de poluição no Lac Léman. 5e Colloque transfrontalier CLUSE. Marqueses de risco: percepção, globalização e gestão. Université de Genève, 2000.
5. M. Kanevski. Avaliação da classificação binária de SVM com simulações estocásticas não paramétricas. Relatório de Pesquisa IDIAP, IDIAP-RR-01-07, 17 p. 2001. idiap. ch.
6. M. Kanevski, A. Pozdnukhov, S. Canu, M. Maignan. Análise Avançada de Dados Espaciais e Modelagem com Máquinas de Vetores de Suporte. Revista Internacional de Sistemas Difusos 2002. p. 606-615.
7. M. Kanevski, A. Pozdnukhov, S. Canu, M. Maignan, P. M. Wong, S. A.R. Shibli “Support Vector Machines para classificação e mapeamento de dados de reservatórios”. Em: “Soft Computing para Modelagem e Modelagem de Reservatórios”. P. Wong, F. Aminzadeh, M. Nikravesh (Eds.). Physica-Verlag, Heidelberg, N. Y. pp. 531-558, 2002.
8. Kanevski M., Pozdnukhov A., McKenna S., Murray Ch., Maignan M. Teoria de Aprendizagem Estatística para Dados Espaciais. Nos anais da conferência GeoENV2002. Barcelona, 2002.
9. M. Kanevski et al. Mineração e modelagem de dados ambientais com base em algoritmos de aprendizado de máquina e geoestatística. Journal of Environmental Modeling and Software, 2004. vol. 19, pp. 845-855.
10. M. Kanevski, M. Maignan et al. Modelos avançados de geoestatística e aprendizado de máquina para análise de dados espaciais de territórios radioativamente contaminados. Revista de Ciências Ambientais e Pesquisa de Poluição, pp.137-149, 2003.
11. Kanevski M., Maignan M. e Piller G. Análise avançada e ferramentas de modelagem para dados ambientais espaciais. Estudo de caso: dados de radônio interno na Suíça. Conferência internacional EnviroInfo, 2004. enviroinfo2004 / cdrom / Datas / Kanevski. htm.
12. Kanevski M., Maignan M. e Pozdnukhov A. Aprendizado Ativo de Dados Ambientais Usando Máquinas de Vetores de Suporte. Conferência da Associação Internacional de Geologia Matemática, Toronto 2005. iamgconference /
13. M. Kanevski, A. Pozdnukhov, M. Tonini, M. Motelica, E. Savelieva, M. Maignan. Teoria Estatística da Aprendizagem para Dados Geoespaciais. Estudo de caso: Mar de Aral. 14º Colóquio Europeu de Geografia Teórica e Quantitativa. Portugal, Setembro de 2005.
14. Pozdnukhov A., Kanevski M. Monitoramento da otimização de redes usando máquinas de vetores de suporte. Em: Geoestatística para aplicações ambientais. (Renard Ph., Demougeot-Renard H e Froidevaux, Eds.). Springer, 2005. pp. 39-50.
15. Pozdnukhov A. e Kanevski M. Monitoramento de otimização de rede para classificação de dados espaciais usando máquinas de vetores de suporte. (2006). Revista Internacional de Meio Ambiente e Poluição. Vol.28. 20 pp.
SVM para Deteção de Proteína e Detecção Remota de Homologia.
Kernels diretos baseados em perfis para detecção remota de homologia e reconhecimento de dobras por Huzefa Rangwala e George Karypis (Bioinformatics 2005)
Recuperação de imagem baseada em conteúdo.
Dacheng Tao, Xiaoou Tang, Li Xuelong e Xindong Wu, Ensacamento Assimétrico e Subespacial Aleatório para Feedback de Relevância baseado em Máquinas de Vetores de Suporte em Recuperação de Imagem, Transações IEEE em Análise de Padrão e Inteligência de Máquina, aceito, para aparecer.
Classificação de dados com o SSVM.
[2] O. L. Mangasarian. Uma máquina de vetor de suporte suave para classificação.
[3] K. P. Tão homem . XSVMs e Aplicativos.
Introduzido por: Aduru. Venkateswarlu & lt; venkatsherma @ yahoo & gt; - segunda-feira, 19 de setembro de 2005 às 04:35:39 (GMT)
DTREG SVM e modelagem da árvore de decisão.
DTREG - SVM e Modelagem Preditiva da Árvore de Decisão.
Comentários: O DTREG suporta as funções de kernel Linear, Polinomial, Sigmoid e Radial Basis. Ele pode lidar com problemas com milhões de linhas de dados e centenas de variáveis.
Classificação de expressão facial.
J. Ghent e J. McDonald, "Classificação de Expressão Facial usando uma Máquina de Vetor de Suporte One-Against-All", atas da Conferência de Visão de Máquina Irlandesa e Processamento de Imagem, agosto de 2005.
Profundidade final e previsão de descarga em canais semicirculares e circulares.
C. Cortes e V. N. Vapnik, redes de vetores de suporte, Machine Learning 20 (1995), pp. 273–297.
S. Dey, queda livre em canais circulares com base plana: um método de medição de vazão de canal aberto, Flow Meas. Instrum 13 (2002), pp. 209-221.
S. Dey, queda livre em canais abertos: revisão de última geração, Flow Meas. Instrum 13 (2002), pp. 247-264.
Y. B. Dibike, S. Velickov, D. P. Solomatine e M. B. Abbott, indução de modelos com máquinas de vetores de suporte: Introdução e aplicações, J. Comput. Engenheiro civil. 15 (2001), pp. 208-216.
D. Leunberger, Programação Linear e Não Linear, Addison-Wesley (1984).
H. Rouse, características de descarga da queda livre, Engenharia Civil, ASCE 6 (1936) (4), pp. 257-260.
R. V. Raikar, D. Nagesh Kumar e S. Dey, cálculo da profundidade final em canais semicirculares invertidos usando RNAs, Flow Meas. Instrum 15 (2004), pp. 285-293.
A. J. Smola, estimação de regressão com máquinas de aprendizagem de vetores de apoio, Tese de Mestrado, Technische Universität MÜnchen, Alemanha, 1996.
M. Sterling e D. W. Knight, A queda livre como um dispositivo de medição de vazão em um canal circular, Água e Procedimentos de Engenharia Marítima da Instituição de Engenheiros Civis Londres 148 (Dezembro) (2001), pp. 235-243.
V. N. Vapnik, Teoria Estatística da Aprendizagem, John Wiley and Sons, Nova Iorque (1998).
Inserida por: mahesh pal & lt; mpce_pal@yahoo. co. uk> - segunda-feira, 1 de agosto de 2005 às 10:20:34 (GMT)
Identificação de exons alternativos usando SVM.
Dror G., Sorek R. e Shamir S.
Identificação precisa de exons alternativamente emendados usando Support Vector Machine.
Bioinformática. 1 de Abril de 2005; 21 (7): 897-901.
Epub 2004 5 de novembro.
Comentários: 2 classes, 243 positivas, 1753 instâncias negativas. total 228 possui kernel gaussiano. Sistemas de linha de base: redes neurais e Naive Bayes. SVM superou-los em termos de área sob curva ROC, mas mais importante, em sua capacidade de obter taxa de positivos muito alta (50%) para muito baixa taxa de falsos positivos (0,5%). Este desempenho permitiria a varredura efetiva de bancos de dados de exons em busca de novos exons alternativamente emendados, no humano ou em outros genomas.
Máquinas de vetor de suporte para classificação de textura.
Máquinas do vetor 1.Support para a classificação da textura.
Kwang Em Kim, Keechul Jung, Se Hyun Park e.
Hang Joon Kim, IEEE TRANSACTIONS ANÁLISE DE PADRÕES E INTELIGÊNCIA DE MÁQUINAS, VOL. 24, NO. 11 de novembro de 2002,
2. “Uma introdução ao Support Vector Machines e outras aprendizagens baseadas no kernel.
métodos ”por Nello Cristianini & John Shawe-Taylor. (suporte supportvector.
Inserida por: sathishkumar & lt; sathishkumar. maddy@gmail> - quinta-feira, 2 de junho de 2005 às 05:02:34 (GMT)
Aplicação SVM em E-learning.
Introduzido por: sandeep dixit & lt; sandeepdixit2004 @ yahoo & gt; - quinta-feira, 31 de março de 2005, às 15:14:17 (GMT)
classificação de texto com SVMs.
Inserida por: Duong DInh DUng & lt; dungngtq8 @ yahoo & gt; - quinta-feira, 24 de março de 2005 às 06:03:04 (GMT)
Categorização de caracteres Jawi manuscrita isolada usando Support Vector Machines (SVM).
Inserida por: Suhaimi Abd Latif & lt; suhaimie@iiu. edu. my> - quarta-feira, 19 de janeiro de 2005, às 06:02:27 (GMT)
Cluster de imagem.
Introduzido por: Ahmed Yousuf Sabre & lt; sabre_uap @ yahoo & gt; - quarta-feira, 19 de janeiro de 2005, às 02:16:09 (GMT)
ewsRec, um sistema de recomendação pessoal orientado por SVM para sites de notícias.
Bomhardt, C. (2004): NewsRec, um sistema de recomendação pessoal orientado por SVM para sites de notícias.
In: Web Intelligence, Conferência Internacional IEEE / WIC / ACM em (WI'04)
Palavras-chave: Recomendação Pessoal, Suporte-Vetor-Máquina, Personalização, Classificação de Texto.
Comentários: cerca de 1200 conjuntos de dados, cerca de 30000 recursos, kernel linear, SVMs são muito rápidos em comparação com outros métodos e podem lidar com o grande número de recursos.
Equity Foresight.
SPEAKER / RECONHECIMENTO DE DISCURSO.
CARTAS ELETRÔNICAS, VOL.37, PP.527-529, (2001)
IEEE INT. CONFERENCE SOBRE ACÚSTICA, FALA E PROCESSAMENTO DE SINAL VOL.1, PP.381-384, (2001)
WORKSHOP IEEE SOBRE REDES NEURAIS PARA PROCESSAMENTO DE SINAIS X, VOL.2, (2000)
Introduzido por: MEHDI GHAYOUMI & lt; M_GHAYOUMI @ YAHOO & gt; - Terça-feira, 09 de março de 2004 às 06:25:10 (GMT)
ESTUDANTE EM AI.
CARTAS ELETRÔNICAS, VOL.37, PP.527-529, (2001)
IEEE INT. CONFERENCE SOBRE ACÚSTICA, FALA E PROCESSAMENTO DE SINAL VOL.1, PP.381-384, (2001)
WORKSHOP IEEE SOBRE REDES NEURAIS PARA PROCESSAMENTO DE SINAIS X, VOL.2, (2000)
Introduzido por: MEHDI GHAYOUMI & lt; M_GHAYOUMI @ YAHOO & gt; - Terça-feira, 09 de março de 2004 às 06:23:03 (GMT)
Análise e Aplicações do Modelo de Previsão Vetorial de Suporte Baseado na Teoria do Caos.
[1] ВАЅр »ўµ.» МгзК ± јдРтБР · ЦОцј ° ЖдУ¦УГ [M]. Одєє: ОдєєґуС§іц ° жЙз, 2001.
[2] Stefania Tronci, Massimiliano Giona, Roberto Baratti, Ў ° Reconstrução de séries temporais caóticas por modelos neurais: um estudo de caso, Ў ± Neurocomputing, vol. 55, pp. 581-591, 2003.
[3] «М «ёЩ, ЦЈізС«. »МгзРтБ ДД · ЗПЯРФФ¤Ів [J]., 19, 1: 10-13, 2001.
[4] Аà ·, НхХэЕ ·. »ЩУЪRBFНшВзµ» мгзК ± јдРтБРµДЅЁДЈУл¶аІЅФ¤Ів [J].ПµНіĀ¤¤МУлµзЧУјјКх, 24 (6): 81-83, 2002.
[5] ЅЄМО. ъґХ Ї Ї Ї / / / / / / / / / / / ї ї ї ї ї ї ї ї ї ї ї ї ї ї ї ї ї ї ї ї ї ї ї ї ї D D D D їХ їХ їХ їХ їХ їХ їХ їХ їХ їХ їХ Фє Фє Фє Фє Фє Фє 2002 2002 2002 2002 2002 2002 2002 2002
[6] НхєЈСа, КўХСе «. »МгзК ± јдРтБРПаїХјдЦШĀ№ІОКэµДСЎИЎ · Ѕ · Ё [J].« ДПґуС ± ± Ё, 30 (5): 113-117, 2000.
[7] L.-Y. Cao, Pract ° Método prático para determinar a dimensão mínima de incorporação de uma série temporal escalar, Ў ± Physica D, vol. 110, pp. 43-52, 1997.
[8] Eckmann J. P, Kamphorst S. O, Ў ° expoente Lyapunov da série temporal, Ў ± Phys. Rev. A, vol. 34, n. 6, pp.
[9] Oiwa N. N, Fiedler-Ferrara N, Ў ° Um algoritmo rápido para estimar expoentes lyapunov de séries temporais, Ў ± Física Carta A, vol.246, pp.117-121, set. 1998.
[10] Fabio Sattin, Ly ° Lyap: Um programa FORTRAN 90 para calcular os expoentes de Lyapunov de um sistema dinâmico a partir de uma série temporal, Ў ± Computer Physics Communications, vol.107, pp.253-257. 1997.
[11] K. R.MЁ№ler, A. J. Smola, G. R & auml; tsch, Ў ° Previsão de séries temporais com máquinas de vetores de suporte, in ± em Procedimento da ICANN 97ЎЇ, Berlim: Springer LNCS, vol. 1327, pp. 999-1004. 1997.
[12] B.-J. Chen, Ў ° Carregar previsão usando máquinas de vetores de suporte: Um estudo sobre o EUNITE Competition 2001, un ± inédito.
[13] L.-J. Cao, Q.-M. Gu, Ў ° Máquinas de vetores de suporte dinâmico para previsão de séries temporais não estacionárias, Ў ± Análise Inteligente de Dados. vol. 6, não. 1, pp. 67-83, 2002.
[14] F. E.H. Tay, L.-J. Cao, Ў ° Aplicações de máquinas de vetores de suporte na previsão financeira, Ў ± Omega, vol. 9, não. 4, pp. 309-317, agosto de 2001.
[15] K. W.Lau, Q.-H. Wu, Ў ° Previsão local de séries temporais caóticas baseadas em processos Gaussianos, in ± em Proceeding of the 2002 IEEE International Conference on Control Applications, Glasgow, Escócia, Reino Unido, pp. 1309-1313, 18 a 20 de setembro de 2002.
[16] Sayan Mukherjee, Edgar Osuna, Frederico Girosi, Ў ° Previsão não-linear de séries temporais caóticas usando máquinas de vetores de suporte, in ± no Proc. of IEEE NNSP 97, Amelia Island, FL, set. 1997.
Processo do WCICA 2004.
Comentários: Parece impossível, mas o SVM está perfeito!
Uma comparação do desempenho de redes neurais artificiais e máquinas de vetores de suporte para a previsão da velocidade do tráfego e do tempo de viagem.
V. Kecman, Aprendizagem e Soft Computing: Máquinas de Vetores de Suporte, Redes Neurais e Modelos de Lógica Difusa, The MIT press, Cambridge, Massachusetts, Londres, Inglaterra.
Introduzido por: Lelitha Vanajakshi & lt; lelitha @ yahoo & gt; - sexta-feira, 30 de janeiro de 2004, às 17:39:08 (GMT)
Comentários: Quando os dados de treinamento eram menos SVM, superaram a RNA, quando havia dados suficientes disponíveis, ambos eram mais ou menos iguais.
Inserida por: leechs & lt; leechs @ sohu & gt; - domingo, 25 de janeiro de 2004, às 13:44:16 (GMT)
svm learning.
Previsão de estrutura proteica.
1. Kim, H. e H. Park, "Previsão da acessibilidade relativa de solvente de proteína com máquinas de vetores de suporte e interação local de longo alcance 3D descritor",
Proteínas: estrutura, função e genética para aparecer. (download em pdf)
2. Kim, H. e H. Park, "Predição da estrutura secundária de proteínas por máquinas de vetores de suporte e matrizes de pontuação específicas de posição",
Engenharia de Proteínas, para aparecer. (download em pdf)
Classificadores de vetores de suporte para classificação de cobertura da terra.
Mahesh Pal concluiu recentemente seu doutorado na universidade de Nottingham, Reino Unido e atualmente trabalha como professor no departamento de engenharia civil NIT kurukshetra, haryana, Índia.
Inserida por: Mahesh Pal & lt; mpce_pal@yahoo. co. uk> - Quarta-feira, 21 de maio de 2003 às 07:17:46 (GMT)
Detecção de intruso.
Srinivas Mukkamala ingressou no programa de pós-graduação em Ciência da Computação da New Mexico Tech em 2000 e atualmente é Ph. D. aluna. Ele recebeu seu B. E. Licenciatura em Ciências da Computação e Engenharia em 1999 pela Universidade de Madras. Seus interesses são garantia de informação, ocultação de informações, inteligência artificial, técnicas de soft computing para segurança de computadores.
Comentários: SVMs são superiores às RNAs para detecção de intrusão em três aspectos críticos: SVMs treinam e são executados em uma ordem de magnitude mais rápida; SVMs escalam muito melhor; e SVMs dão maior precisão de classificação. Para obter detalhes sobre o número de classes, kernels usados, recursos de entrada, número de vetores de suporte, seleção de recursos de entrada e métodos de classificação. Por favor, leia as nossas últimas versões. Se você precisar de nossas versões mais recentes ou precisar de alguma ajuda, por favor envie um e-mail para o autor: srinivas@cs. nmt. edu Sinceramente Srinivas Mukkamala.
O kernel Gaussian Dynamic Time Warping (GDTW) para reconhecimento de manuscrito on-line.
Durante os últimos anos, a tarefa de reconhecimento de manuscrito on-line ganhou uma imensa importância em aplicações durante todo o dia, principalmente devido à crescente popularidade do assistente digital pessoal (PDA). Atualmente, uma próxima geração de "smartphones" e PCs estilo tablet, que também dependem de entrada de texto manuscrito, está visando ainda mais o mercado consumidor. No entanto, na maioria desses dispositivos, o método de entrada de texto manuscrito ainda não é satisfatório. Em pdas atuais, as pessoas ainda usam métodos de entrada, que são abstratos a partir do estilo de escrita natural, por exemplo no Graffiti generalizado.
Assim, existe uma demanda por um sistema de reconhecimento de escrita que seja preciso, eficiente e que possa lidar com a caligrafia natural de uma ampla gama de diferentes escritores.
Os kernels usuais do SVM são projetados para lidar com dados de dimensão fixa. No entanto, os dados de manuscrito on-line não são de uma dimensão fixa, mas de um formato seqüencial de tamanho variável. A este respeito, as SVMs não podem ser aplicadas diretamente ao HWR.
Abordamos esse problema desenvolvendo um kernel SVM apropriado para dados sequenciais, o kernel Gaussian Dynamic Time Warping (GDTW). A ideia básica do kernel GDTW é que, em vez da distância euclidiana ao quadrado no kernel Gaussiano usual, ele usa a distância dinâmica de deformação de tempo. Além do reconhecimento de manuscrito on-line, o kernel GDTW pode ser aplicado diretamente a todos os problemas de classificação, onde o DTW fornece uma medida de distância razoável, por exemplo, reconhecimento de fala ou processamento de genoma.
Os experimentos mostraram uma taxa de reconhecimento superior em comparação a um classificador baseado em HMM para conjuntos de treinamento relativamente pequenos (
6000) e taxas comparáveis para conjuntos de treinamento maiores.
O kernel Gaussian Dynamic Time Warping (GDTW) para reconhecimento de manuscrito on-line.
Durante os últimos anos, a tarefa de reconhecimento de manuscrito on-line ganhou uma imensa importância em aplicações durante todo o dia, principalmente devido à crescente popularidade do assistente digital pessoal (PDA). Atualmente, uma próxima geração de "smartphones" e PCs estilo tablet, que também dependem de entrada de texto manuscrito, está visando ainda mais o mercado consumidor. No entanto, na maioria desses dispositivos, o método de entrada de texto manuscrito ainda não é satisfatório. Em pdas atuais, as pessoas ainda usam métodos de entrada, que são abstratos a partir do estilo de escrita natural, por exemplo no Graffiti generalizado.
Assim, existe uma demanda por um sistema de reconhecimento de escrita que seja preciso, eficiente e que possa lidar com a caligrafia natural de uma ampla gama de diferentes escritores.
Haasdonk e href = "lmb. informatik. uni-freiburg. de/people/burkhardt /"> Hans.
Reconhecimento de manuscrito usando Support Vector Machines - Um kernel.
abordagem. Na int. Workshop on Frontiers in Handwriting.
Reconhecimento (IWFHR) 2002, Niagara-on-the-Lake, agosto de 2002.
Os kernels usuais do SVM são projetados para lidar com dados de dimensão fixa. No entanto, os dados de manuscrito on-line não são de uma dimensão fixa, mas de um formato seqüencial de tamanho variável. A este respeito, as SVMs não podem ser aplicadas diretamente ao HWR.
Abordamos esse problema desenvolvendo um kernel SVM apropriado para dados sequenciais, o kernel Gaussian Dynamic Time Warping (GDTW). A ideia básica do kernel GDTW é que, em vez da distância euclidiana ao quadrado no kernel Gaussiano usual, ele usa a distância dinâmica de deformação de tempo. Além do reconhecimento de manuscrito on-line, o kernel GDTW pode ser aplicado diretamente a todos os problemas de classificação, onde o DTW fornece uma medida de distância razoável, por exemplo, reconhecimento de fala ou processamento de genoma.
Os experimentos mostraram uma taxa de reconhecimento superior em comparação a um classificador baseado em HMM para conjuntos de treinamento relativamente pequenos (
6000) e taxas comparáveis para conjuntos de treinamento maiores.
Inserida por: shen & lt; shen0204@yahoo. tw> - quinta-feira, 5 de setembro de 2002 às 07:24:00 (GMT)
Detectando esteganografia em imagens digitais.
Detectando mensagens ocultas usando estatísticas de ordem mais alta e máquinas de vetores de suporte.
5º Workshop Internacional sobre Escondimento de Informações, Noordwijkerhout, Holanda, 2002.
Comentários: 2 classes 3600 exemplos de treinamento, mais de 18.000 amostras de teste 1100 SVs RBF kernel LibSVM.
Detectando esteganografia em imagens digitais.
Comentários: 2 classes 3600 exemplos de treinamento, mais de 18.000 amostras de teste 1100 SVs RBF kernel LibSVM.
Cluster Fuzzy Rápido.
Prognóstico do Câncer de Mama: Efeito da Quimioterapia na Taxa de Sobrevivência.
Yuh-Jye Lee, O. L. Mangasarian e W. H. Wolberg: S§Classificação do Tempo de Sobrevivência de Pacientes com Câncer de Mama, Relatório Técnico do Data Mining Institute 01-03, março de 2001.
WPBCC: Banco de dados de quimioterapia para câncer de mama prognóstico de Wisconsin.
Previsão da temperatura do cabo subterrâneo.
Inserida por: Robin Willis & lt; rew198@soton. ac. uk> - sexta-feira, 4 de maio de 2001, às 08:31:41 (PDT)
Classificação de imagem.
Inserida por: Olivier Chapelle & lt; chapelle@research. att> - Terça-feira, 04 de abril de 2000 às 13:50:39 (PDT)
Comentários: Número de classes = 6 ou 14 Dimensão dos recursos de entrada = 4096 Kernel = RBF com várias distâncias SVM supera o KNN. A escolha da distância no kernel RBF é crítica.
Identificação de Partículas e Sabor Quark em Física de Altas Energias.
Comparamos o desempenho de SVMs (kernel RBF) com NNs (treinados com backprop). As quantidades de dados disponíveis são muito grandes, testamos em padrões de 3x100k para o problema de sabor de quark.
Classificando Dados LEP com Algoritmos de Vetor de Suporte.
submetido a Anais da AIHENP'99.
Inserida por: Philippe Vannerem & lt; philippe. vannerem@cern. ch> - Terça-feira, 19 de outubro de 1999, às 16:17:56 (PDT)
Comentários: Vimos apenas pequenas diferenças no desempenho entre NNs e SVMs.
Detecção de Objetos.
Constantine Papageorgiou, Tomaso Poggio.
Proceedings of ICCV, 1999, pp. 1223-1228.
CBCL Paper # 178 / AI Memo # 1664, Instituto de Tecnologia de Massachusetts.
Constantine Papageorgiou, Theodoros Evgeniou, Tomaso Poggio.
Proceedings of Intelligent Vehicles, 1998, pp. 241-246.
Constantine P. Papageorgiou, Michael Oren e Tomaso Poggio.
Proceedings of ICCV, 1998, pp. 555-562.
Comentários (inserido por Isabelle Guyon): Em Papageorgiou-Oren-Poggio-98, os autores investigam a detecção de rostos e a detecção de pedestres. Do ponto de vista das imagens estáticas, eles obtêm 75% de detecção de rosto correta para uma taxa de 1 falsa detecção em 7500 janelas e 70% de detecção de pedestres correta para uma taxa de detecção falsa de 1 falsa detecção em 15000 janelas. De particular interesse é o método para aumentar o número de exemplos negativos com um "método bootstrap": eles começam com um conjunto de treinamento composto de exemplos positivos (faces ou pedestres) e um pequeno número de exemplos negativos que são imagens "sem sentido". Após uma primeira rodada de treinamento e testes em novos exemplos, os exemplos negativos correspondentes a falsas detecções são adicionados ao conjunto de treinamento. A ampliação do conjunto de treinamento / teste é iterada. O sistema dinâmico que usa movimento para refinar o desempenho é aproximadamente 20% melhor. Neste primeiro artigo, os autores reduzem a dimensionalidade do espaço de entrada antes do treinamento com SVM, até 20-30 recursos de entrada. Milhares de exemplos são usados para treinamento. Em contraste, em Papageorgiou-Poggio-99, usando novamente o problema da detecção de pedestres em filmes, os autores treinam um SVM com 5201 exemplos diretamente em um espaço de entrada dimensional 6630 que consiste em recursos wavelet em etapas de tempo sucessivas. Eles acham que seu sistema é mais simples e mais rápido do que os sistemas tradicionais de filtros HMM ou Kalman e tem taxas de falsos positivos mais baixos do que os sistemas estáticos.
Detecção de batidas do motor de combustão.
M. Rychetsky, S. Ortmann, M. Glesner: Construção de uma máquina de vetores de suporte com especialistas locais. Workshop sobre Support Vector Machines na Conferência Conjunta Internacional sobre Inteligência Artificial (IJCAI 99), agosto de 1999, Estocolmo, Suécia.
M. Rychetsky, S. Ortmann, M. Glesner: Abordagens de vetores de suporte para detecção de batidas de motores. Conferência Conjunta Internacional sobre Redes Neurais (IJCNN 99), julho de 1999, Washington, EUA.
Comentários: Nós comparamos para nosso banco de dados (infelizmente não de domínio público) abordagens SVM, redes MLP e Adaboost. O SV Machines superou todas as outras abordagens de forma significativa. Para esta aplicação, o cálculo em tempo real é um problema; portanto, atualmente examinamos métodos para reduzir a carga computacional na fase de rechamada (por exemplo, algoritmos de conjunto reduzido ou abordagens baseadas em inteiros).
Kernels de máquina de vetor de suporte de engenharia que reconhecem sites de iniciação de tradução.
A. Zien e G. R & auml; tsch e S. Mika e B. Sch & ouml; lkopf e C. Lemmen e A. Smola e T. Lengauer e K.-R. M & uuml; ller.
Kernels de máquina de vetor de suporte de engenharia que reconhecem sites de iniciação de tradução.
Conferência Alemã de Bioinformática 1999.
Os conjuntos de dados que usamos foram gentilmente fornecidos pela Pedersen e Nielsen.
(Centro de Análise de Seqüências Biológicas, Dinamarca; cbs. dtu. dk/). Inserida por: Alexander Zien & lt; Alexander. Zien@gmd. de> - Sexta-feira, 24 de setembro de 1999 às 02:27:26 (PDT)
Comentários: os SVMs vencem uma rede neural.
Detecção de Homologias Proteicas Remotas.
Um quadro discriminativo para detectar homologias de proteínas remotas.
Tommi Jaakkola, Mark Diekhans e David Haussler Reference link (s):
Comentários: Jaakkola et al combinam SVMs com HMMs e mostram a superioridade desta abordagem em comparação com vários sistemas de linha de base.
Função Aproximação e Regressão.
Drucker, H .; Burges, C; Kaufman, L; Smola, A .; Vapnik, V. 1997.
Em: M. Mozer, M. Jordan, e T. Petsche (eds.):
Sistemas de Processamento de Informação Neural, vol. 9. MIT Press, Cambridge, MA,
1997. Suporte a regressão vetorial com Kernels de decomposição ANOVA.
Mark O. Stitson, Alex Gammerman, Vladimir Vapnik, Volodya Vovk, Chris Watkins e Jason Weston.
em Avanços em Métodos de Kernel, B. Sch & ouml; lkopf, C. J.C. Burges e A. J. Smola Eds.
Páginas 285-291, MIT Press, 1999. ISBN 0-262-19416-3. Link (es) de referência:
Comentários: Drucker-97 descobre que SVMs superam o sistema de linha de base (ensacamento) no problema da habitação em Boston. Note-se que as SVMs podem fazer uma diferença real quando a dimensionalidade do espaço de entrada e a ordem da aproximação criam uma dimensionalidade do espaço de características que não pode ser tracionada com outros métodos. Os resultados de Drucker et al são melhorados em Stitson-99 (35% melhor do que o método de referência).
Problemas de reconhecimento de objeto 3-D.
H. Murase e S. K. Nayar
Int. J. Comput. Visão, vol. 14, 1995, pp. 5--24. Comparação de algoritmos de reconhecimento de objetos baseados em visualização usando modelos 3D realistas.
V. Blanz, B. Schlouf; lkopf, H. B & uuml; lthoff, C. Burges, V. Vapnik, T. & amp; Vetter,
Em: C. von der Malsburg, W. von Seelen, J. C. Vorbr & gum, e B. Sendhoff (eds.): Redes Neurais Artificiais - ICANN'96.
Notas de Palestra Springer em Ciência da Computação vol. 1112, Berlim, 251-256.
(também publicado em Proc da ICANN'96,
LNCS vol. 1112, 1996, pp. 251--256.) Máquinas de Vetor de Suporte de Treinamento: uma Aplicação para Detecção de Rosto,
Edgar Osuna, Robert Freund e Federico Girosi.
Proceedings of CVPR'97, Puerto Rico,
1997. Análise de Componentes Principais do Kernel.
Processos ICANN'97, p.583. Notas de Palestra Springer em Ciência da Computação.
1997. Sch & ouml; lkopf, B .; 1997. Suporte Vector Learning. Tese de doutorado. Publicado por: R. Oldenbourg Verlag, Munique, 1997.
Proc. Int. Conf em Análise e Processamento de Imagens, Firenze,
1997. Reconhecimento Automático de Alvos com Máquinas de Vetores de Suporte,
Qun Zhao e Jose Principe,
Workshop NIPS-98 sobre Classificadores de Grandes Margens,
1998. O algoritmo kernel adatron: um procedimento de aprendizado rápido e simples para máquinas de vetores de suporte.
15 Intl. Conf. Aprendizado de Máquina, Morgan Kaufman Publishers.
1998. Reconhecimento de objetos 3D baseado em visualização com Support Vector Machines.
Proc. Redes Neurais IEEE para Workshop de Processamento de Sinais.
Proc. Workshop sobre Support Vector Machines na 16ª Conferência Internacional Conjunta sobre Inteligência Artificial, julho.
31 de agosto 6 de Estocolmo, Suécia, p. 29-33.
Editado por Isabelle Guyon - quinta-feira, 14 de outubro de 1999.
Comentários: Os SVMs foram utilizados no estágio de classificação ou no pré-processamento (Kernel Principal Component Analysis).
Em Blanz-96. Classificadores de vetores de suporte mostram excelente desempenho, deixando para trás outros métodos. Osuna-97 demonstra que os SVCs podem ser treinados em conjuntos de dados muito grandes (50.000 exemplos). O desempenho da classificação atinge um dos sistemas mais conhecidos e 30 vezes mais rápido em tempo de execução.
Em Sch & Oml; lkopf-97, a vantagem do KPCA é mais medida em termos de simplicidade, convergência garantida e facilidade de compreensão das não-linearidades.
Zhao-98 observa que os SVCs com núcleos gaussianos lidam particularmente bem com a rejeição de "confusores" desconhecidos. Friess-98 relata o desempenho nos dados de sonar de Gorman e Sejnowski (1988). Seu kernel adatron SVMs tem 95,2% de sucesso, comparado a 90,2% para as melhores redes neurais de retropropagação.
O Papageorgiou-98 aplica o SVM com um pré-processamento de wavelets para enfrentar e detectar pessoas, mostrando melhorias em relação ao seu sistema base.
O Roobaert-99 mostra que um sistema SVM trabalhando em dados brutos, não incorporando qualquer conhecimento de domínio sobre a tarefa, corresponde ao desempenho de seu sistema de linha de base que incorpora tal conhecimento.
Massimiliano Pontil aponta que, como mostra a comparação com outras técnicas, parece que as SVMs podem ser efetivamente treinadas mesmo que o número de exemplos seja muito menor que a dimensionalidade do espaço de objetos. No papel Pontil-Verri-97, SVMs lineares são usados para reconhecimento de objetos 3D. O potencial das SVMs é ilustrado em um banco de dados de 7200 imagens de 100 objetos diferentes. O sistema proposto não requer extração de características e realiza reconhecimento em imagens consideradas como pontos de um espaço de alta dimensão sem estimar pose. As excelentes taxas de reconhecimento alcançadas em todos os experimentos realizados indicam que as SVMs são adequadas para o reconhecimento baseado em aspectos.
Em Roobaert-99, 3 métodos para o aprimoramento de Linear Support Vector Machines são apresentados no caso do Pattern Recognition com um número de dimensões irrelevantes. Um método para reconhecimento de objetos 3D sem segmentação é proposto.
Categorização de texto.
Conferência Europeia sobre Aprendizagem de Máquina (ECML),
1998. Algoritmos de Aprendizagem Indutiva e Representações para Categorização de Texto,
S. Dumais, J. Platt, D. Heckerman, M. Sahami,
7ª Conferência Internacional sobre Gestão da Informação e Conhecimento,
1998. Support Vector Machines para Categorização de Spam. H. Drucker, com D. Wu e V. Vapnik. IEEE Trans. on Neural Networks, volume 10, número 5, páginas 1048-1054. 1999. Inferência Transdutiva para Classificação de Texto usando Máquinas de Vetores de Suporte.
Conferência Internacional sobre Aprendizagem de Máquina (ICML),
Comentários: O Joachims-98 relata que as SVMs são adequadas para aprender em espaços dimensionais muito altos (> 10000 entradas). Eles alcançam melhorias substanciais em relação aos métodos atualmente de melhor desempenho, eliminando a necessidade de seleção de recursos. Os testes foram realizados no corpus de Oshumed, William Hersh e Reuter-21578. Dumais et al relatam que usam SVMs lineares porque são precisas e rápidas (para treinar e usar). Eles são 35 vezes mais rápidos para treinar o próximo classificador mais preciso que eles testaram (Árvores de Decisão). Eles aplicaram SVMs à coleção Reuter-21578, e-mails e páginas da web. Drucker classifica e-mails como spam e não spam. Eles descobrem que o aumento de árvores e SVMs tem desempenho similar em termos de precisão e velocidade. SVMs train significatly faster. Joachims-99 report that transduction is a very natural setting for many text classification and information retrieval tasks. Transductive SVMs improve performance especially in cases with very small amounts of labelled training data.
Time Series Prediction and Dynamic Resconstruction of Chaotic Systems.
Predicting Time Series with Support Vector Machines.
Proceedings ICANN'97, p.999.
Springer Lecture Notes in Computer Science, 1997.
Nonlinear Prediction of Chaotic Time Series using a Support Vector Machine.
S. Mukherjee, E. Osuna, and F. Girosi NNSP'97, 1997.
Using Support Vector Machines for Time Series Prediction.
Müller, K.-R.; Smola, A.; Rätsch, G.; Schölkopf, B.; Kohlmorgen, J.; Vapnik, V.
in Advances in Kernel Methods, B. Schölkopf, C. J.C. Burges, and A. J. Smola Eds.
Pages 242-253, MIT Press, 1999. ISBN 0-262-19416-3.
Support Vector Machines for Dynamic Reconstruction of a Chaotic System.
in Advances in Kernel Methods, B. Schölkopf, C. J.C. Burges, and A. J. Smola Eds.
Pages 211-241, MIT Press, 1999. ISBN 0-262-19416-3. Reference link(s):
Synthetic data used: Mackey-Glass, Ikewda Map and Lorenz, and.
Comments: Müller et al report excellent performance of SVM. They set a new record on the Santa Fe competition data set D, 37% better than the winning approach during the competition. Mattera et al report that SVM are effective for such tasks and that their main advantage is the possibility of trading off the required accuracy with the number of Support Vectors.
Support Vector Machine Classification of Microarray Gene Expression Data.
Support Vector Machine Classification of Microarray Gene Expression Data.
M. Brown, W. Grundy, D. Lin, N. Cristianini C. Sugnet, M. Ares Jr., D. Haussler.
University of California, Santa Cruz,
technical report UCSC-CRL-99-09. Reference link(s):
cse. ucsc. edu/research/compbio/genex/genex. tech. html Data link(s):
Comments: SVMs outperformed all other classifers, when provided with a specifically designed kernel to deal with very imbalanced data.
Handwritten digit recognition problems.
In Fifth Annual Workshop on Computational Learning Theory, pages 144--152, Pittsburgh, ACM.
1992. Writer adaptation for on-line handwritten character recognition.
N. Matic , I. Guyon, J. Denker, and V. Vapnik.
In Second International Conference on Pattern Recognition and Document Analysis , pages 187--191, Tsukuba, Japan, IEEE Computer Society Press,
1993. Support Vector Networks.
Machine Learning, 20:273-297,
1995. Learning algorithms for classification: A comparison on handwritten digit recognition.
Y. Le Cun, L. D. Jackel, L. Bottou, C. Cortes, J. Denker, H. Drucker, I. Guyon, U. A. Muller, E.
Sackinger, P. Simard, and V. Vapnik.
In J. H. Kwon and S. Cho, editors, Neural Networks: The Statistical Mechanics Perspective, pages.
261--276. World Scientific.
1995. Discovering informative patterns and data cleaning.
I. Guyon, N. Matic , and V. Vapnik,
In U. M. Fayyad, G. Piatetsky-Shapiro, P. Smyth, and R. Uthurusamy, editors, Advances in Knowledge Discovery and Data Mining, pages 181--203. MIT Press.
1996. Incorporating Invariances in Support Vector Learning Machines.
In: C. von der Malsburg, W. von Seelen, J. C. Vorbr|ggen, and B. Sendhoff (eds.): Artificial Neural Networks - ICANN'96. Springer Lecture Notes in Computer Science Vol. 1112, Berlin,47-52.
1996. Prior Knowledge in Support Vector Kernels.
B. Schölkopf, P. Simard, A. Smola, and V. Vapnik,
1997. Pairwise Classification and Support Vector Machines.
in Advances in Kernel Methods, B. Schölkopf , C. J.C. Burges, and A. J. Smola Eds.
Pages 255-268, MIT Press, 1999. ISBN 0-262-19416-3. The kernel adatron algorithm: a fast and simple learning procedure for support vector machines.
15th Intl. Conf. Machine Learning, Morgan Kaufman Publishers.
Comments: This is one of the first applications of SVCs. It was demonstrated that SCVs could be applied directly to pixel maps and nearly match or outperform other techniques requiring elaborate pre-processing, architecture design (structured neural networks), and/or a metric incorporating prior knowledge of the task (tangent distance) -- see e. g. Lecun-95. Elaborate metrics such as tangent distance can be used in combination with SVCs (Schölkopf-96-97) and yield improved performance. SVCs are also attractive for handwriting recognition tasks because they lend themself to easy writer adaptation and data cleaning, by making use of the support vectors (Matic-93 and Guyon-96). In Friess-98, the kernel Adatron SVM slightly outperforms the original SVM on the USPS character recognition benchmark.
Breast cancer diagnosis and prognosis.
O. L. Mangasarian, W. Nick Street and W. H. Wolberg: ``Breast cancer diagnosis and prognosis via linear programming", Operations Research, 43(4), July-August 1995, 570-577.
P. S. Bradley, O. L. Mangasarian and W. Nick Street: ``Feature selection via mathematical programming", INFORMS Journal on Computing 10, 1998, 209-217.
P. S. Bradley, O. L. Mangasarian and W. Nick Street: ``Clustering via concave minimization", in ``Advances in Neural Information Processing Systems -9-", (NIPS*96), M. C. Mozer and M. I. Jordan and T. Petsche, editors, MIT Press, Cambridge, MA, 1997, 368-374.
The kernel adatron algorithm: a fast and simple learning procedure for support vector machines.
15th Intl. Conf. Machine Learning, Morgan Kaufman Publishers.
svm. first. gmd. de/papers/FriCriCam98.ps. gz Data link(s):
Modified by: Isabelle Guyon <isabelle@clopinet> - Monday, September 20, 1999 at 9:30 (PDT)
Comments: Mangasarian et al use a linear programming formulation underlying that can be interpreted as an SVM. Their system (XCYT) is a highly accurate non-invasive breast cancer diagnostic program currently in use at University of Wisconsin Hospital. Friess et al report that the Wisconsin breat cancer dataset has been extensively studied. Their system, which uses Adatron SVMs, has 99.48% success rate, compared to 94.2% (CART), 95.9% (RBF), 96% (linear discriminant), 96.6% (Backpropagation network), all results reported elsewhere in the literature.
Support Vector Decision Tree Methods for Database Marketing.
On Support Vector Decision Trees for Database Marketing K. P. Bennett, D. Wu, and L. Auslender Report No. 98-100, Rensselaer Polytechnic Institute, Troy, NY, 1998. Reference link(s):
Data is proprietary. Entered by: Kristin P Bennett <bennek@rpi. edu> - Thursday, September 09, 1999 at 15:16:07 (PDT)
Comments: The support vector decision tree performed better than C4.5. SVDT produced very simple trees using few attributes. Add a new entry to the SVM Application List. Read more about SVM applications on the Kernel Machines website. This page was powered by Matt Wright Other resources: Artificial Intelligence resources - directory of Artificial Intelligence related websites.
Negociação Algorítmica.
Desenvolva sistemas de negociação com o MATLAB.
A negociação algorítmica é uma estratégia de negociação que usa algoritmos computacionais para orientar decisões de negociação, geralmente em mercados financeiros eletrônicos. Aplicada em instituições de buy-side e sell-side, a negociação algorítmica forma a base de negociação de alta frequência, negociação de FOREX e análise associada de risco e execução.
Os desenvolvedores e usuários de aplicativos de comércio algorítmico precisam desenvolver, fazer backtest e implantar modelos matemáticos que detectem e explorem os movimentos do mercado. Um fluxo de trabalho efetivo envolve:
Desenvolvendo estratégias de negociação, usando técnicas de séries temporais técnicas, aprendizado de máquina e séries temporais não lineares Aplicando computação paralela e de GPU para backtesting e identificação de parâmetros com eficiência de tempo Calculando lucros e perdas e conduzindo análises de risco Executando análises de execução, como modelagem de impacto de mercado análise de custos de transação e detecção de icebergs Incorporando estratégias e análises em ambientes de negociação de produção.
Exemplos e como.
Análise Walk-Forward: Usando o MATLAB para Backtest sua estratégia de negociação (35:15) - Webinar Introdução ao Trading Toolbox, Parte 1: Conectar-se a corretores interativos (7:22) - Cointegração de vídeo e negociação de pares com o Econometrics Toolbox (1:01) : 27) - Webinar Backtesting Trading Strategies em apenas 8 linhas de código (4:13) - Video CalPERS analisa a dinâmica do mercado de moeda para identificar oportunidades de negociação intraday - História do usuário Quantitative Trading: Como construir o seu próprio negócio de negociação algorítmica, por Ernest Chan - Reserve o Código de Negociação Algorítmica e Outros Recursos - Troca de Arquivos.
Referência de software.
Funções de Caixa de Ferramentas de Negociação - Classificação de Documentação App de Aprendizagem - Estatísticas e Machine Learning Toolbox App movavg: Gráfico de médias móveis atrasadas e atrasadas - Caixa de Ferramentas Financeiras Função sharpe: Compute Sharpe ratio - Caixa de Ferramentas Financeira Função gaoptimset: Criar estrutura de opções de algoritmos genéticos - Global Optimization Toolbox Function Cointegration Testing - Ferramentas de Caixa de Ferramentas da Econometria Ferramenta de Séries Temporais de Rede Neural - Documentação de Ferramentas de Rede Neural.
Escolha o seu país.
Escolha o seu país para obter conteúdo traduzido onde estiver disponível e veja eventos e ofertas locais. Com base na sua localização, recomendamos que você selecione:.
Você também pode selecionar um local na lista a seguir:
América Latina (Español) Canadá (inglês) Estados Unidos (inglês)
Bélgica (inglês) Dinamarca (inglês) Deutschland (Deutsch) España (Español) Finland (inglês) France (Français) Ireland (inglês) Italia (Italiano) Luxembourg (inglês)
Holanda (inglês) Noruega (inglês) Österreich (Deutsch) Portugal (inglês) Sweden (inglês) Switzerland Deutsch English Français Reino Unido (inglês)
Ásia-Pacífico.
Austrália (inglês) Índia (inglês) Nova Zelândia (inglês) 中国 (简体 中文) 日本 (日本語) 한국 (한국어)
Explorar produtos.
Experimente ou compre.
Aprenda a usar.
Obtenha suporte.
Sobre o MathWorks.
Acelerando o ritmo da engenharia e da ciência.
MathWorks é o desenvolvedor líder de software de computação matemática para engenheiros e cientistas.
Uma única estratégia de negociação de SVM.
As Support Vector Machines (SVM) estão ganhando popularidade nos sistemas de negociação de aprendizado de máquina. Eles têm vantagens de redes neurais (NN), como eles são garantidos para encontrar a solução ideal. O NN pode ser pego em um mínimo local, então, enquanto você obtém um resultado usando o NN, nunca pode ter certeza de que é o ideal. Além disso, se o NN for iniciado com pesos aleatórios, você provavelmente obterá um conjunto diferente de pesos sempre que executar a propagação no mesmo conjunto de dados.
SVMs também têm suas desvantagens. Especificamente, a seleção do & # 8216; hyper & # 8217; parâmetros. Estas são a penalidade (C), largura gaussiana (g) se estiver usando um kernel RBF e insensibilidade a epsilon (e) se estiver usando SVR (Support Vector Regression).
Meu uso de SVMs até agora foi usá-los na classificação, então eu só preciso selecionar os parâmetros C e g & # 8211; Eu uso o kernel RBF padrão. É difícil tentar prever se o mercado vai subir ou descer, quanto mais quanto.
Podemos selecionar esses parâmetros usando uma pesquisa de grade. Isso significa que simplesmente tentamos cada combinação de parâmetros e vemos qual funcionou melhor. A maneira como os parâmetros são avaliados é através da validação cruzada de n-fold.
Validação cruzada.
Isso é melhor explicado com um exemplo. Se tivermos 1000 instâncias de treinamento rotuladas e usarmos validação cruzada de 10 vezes, para cada combinação de C, g, fazemos o seguinte:
Aleatoriamente tire 10% das amostras. Este é o nosso conjunto de 100 instâncias de treinamento. Treine o SVM nos 90% restantes e crie um modelo. Use o modelo para testar a precisão no conjunto de espera. Repita o exercício 10 vezes e obtenha a precisão média.
O acima é uma validação cruzada de 10 vezes. Poderíamos levar isso à conclusão lógica e ter apenas uma única ocorrência em "hold-out" definida. Esta é uma validação cruzada de deixar uma saída. Isso nos daria a avaliação mais precisa da combinação de parâmetros, mas, na prática, 10 vezes ou mesmo 5 vezes é bom o suficiente.
Então, como nós realmente fazemos uma validação cruzada?
O pacote libSVM em csie. ntu. edu. tw/
cjlin / libsvm / contém alguns scripts Python no diretório de ferramentas. Você precisará instalar o Python e o Gnuplot.
Você também pode usar DeepThought disponível em deep-thought. co. Nos exemplos abaixo, eu uso DeepThought.
A primeira coisa que precisamos é de alguns dados. Vou usar um conjunto de treinamento com os seguintes recursos.
Hora do dia Diferença de preço médio entre as 30 barras anteriores Diferenças médias móveis entre as barras 1,2,3,4,5,7,9,13,16,20,25,31,45,55,70,100 anteriores com MA períodos de 5, 10, 20, 50 e 100.
O alvo é -1, pois o preço vai cair no fechamento da próxima barra, 1 para o preço subir no fechamento da próxima barra. Depois de definir isso na configuração, executo o comando.
para extrair o conjunto de treinamento. Eu também uso escalonamento min-max. Discutirei a preparação de recursos e o dimensionamento em outro artigo. O comando acima criará arquivos de treinamento de todos os modelos definidos na configuração DeepThought. Depois que o comando concluir um arquivo h4-features. training. data, será criado o mesmo diretório do qual executei o comando. Isso está no formato libSVM, portanto, podemos usar as ferramentas libSVM para executar a pesquisa de grade ou usar a pesquisa de grade incorporada no DeepThought. Também é criado o arquivo h4-features. training. data. csv que contém os mesmos dados, mas no formato CSV, para que você possa usá-lo em outras ferramentas, como R, Python, Excel etc.
Para executar a pesquisa de grade no DeepThought, uso o comando:
Os resultados estão no arquivo de log em que Resultado: é a precisão percentual:
Os resultados (desinteressantes) no meio foram removidos por brevidade. Podemos ver que o SVM parece favorecer gamas menores e o C parece ser um valor sensível. Devemos nos preocupar se o melhor gama é grande e o C pequeno, o que provavelmente significa algum tipo de erro de dados. Os próximos valores mais altos são aproximadamente os mesmos que os melhores parâmetros, o que indica que a seleção de parâmetros é relativamente insensível. Devemos nos preocupar se os valores que dão o melhor resultado são outliers.
Backtesting a única estratégia de SVM.
A etapa final é avaliar como um único SVM executa em um backtest. Neste backtest, simplesmente compramos com uma previsão +1 e vendemos com uma previsão -1. Se formos longos e recebermos um sinal de compra, adicionamos outra posição a um tamanho máximo de posição de 10. Por outro lado, para os sinais de venda.
Usando o melhor C de 128 e gama de 0.00195313, podemos cortar e passar o seguinte fragmento de XML do arquivo de log de pesquisa da grade para o arquivo de configuração DeepThought:
O backtest é executado com o seguinte comando:
O backtest DeepThought opera criando um conjunto de treinamento no final de cada barra, o EURUSD H4 neste caso. Quando o fechamento da próxima barra é atingido, uma previsão é feita e as operações são entradas e / ou fechadas, então o modelo é novamente treinado pronto para a próxima barra. Assim, está continuamente se adaptando às condições mais recentes e todos os testes estão fora de amostra, evitando o excesso de ajuste.
Os resultados do backtest foram:
e um gráfico do PnL (plotado usando R):
Parece que está tudo bem, mas provavelmente não é algo que nós trocamos como está.
O próximo artigo discutirá os conjuntos para ver se podemos melhorar este resultado.
Understanding Support Vector Machine algorithm from examples (along with code)
Note: This article was originally published on Oct 6th, 2015 and updated on Sept 13th, 2017.
Introdução.
Mastering machine learning algorithms isn’t a myth at all. Most of the beginners start by learning regression. It is simple to learn and use, but does that solve our purpose? Claro que não! Because, you can do so much more than just Regression!
Think of machine learning algorithms as an armory packed with axes, sword, blades, bow, dagger etc. You have various tools, but you ought to learn to use them at the right time. As an analogy, think of ‘Regression’ as a sword capable of slicing and dicing data efficiently, but incapable of dealing with highly complex data. On the contrary, ‘Support Vector Machines’ is like a sharp knife – it works on smaller datasets, but on them, it can be much more stronger and powerful in building models.
By now, I hope you’ve now mastered Random Forest, Naive Bayes Algorithm and Ensemble Modeling. If not, I’d suggest you to take out few minutes and read about them as well. In this article, I shall guide you through the basics to advanced knowledge of a crucial machine learning algorithm, support vector machines.
Índice.
What is Support Vector Machine? Como funciona? How to implement SVM in Python and R? How to tune Parameters of SVM? Pros and Cons associated with SVM.
What is Support Vector Machine?
“Support Vector Machine” (SVM) is a supervised machine learning algorithm which can be used for both classification or regression challenges. However, it is mostly used in classification problems. In this algorithm, we plot each data item as a point in n-dimensional space (where n is number of features you have) with the value of each feature being the value of a particular coordinate. Then, we perform classification by finding the hyper-plane that differentiate the two classes very well (look at the below snapshot).
Support Vectors are simply the co-ordinates of individual observation. Support Vector Machine is a frontier which best segregates the two classes (hyper-plane/ line).
You can look at definition of support vectors and a few examples of its working here.
Como funciona?
Above, we got accustomed to the process of segregating the two classes with a hyper-plane. Now the burning question is “How can we identify the right hyper-plane?”. Don’t worry, it’s not as hard as you think!
Identify the right hyper-plane (Scenario-1): Here, we have three hyper-planes (A, B and C). Now, identify the right hyper-plane to classify star and circle.
You need to remember a thumb rule to identify the right hyper-plane: “Select the hyper-plane which segregates the two classes better”. In this scenario, hyper-plane “B” has excellently performed this job. Identify the right hyper-plane (Scenario-2): Here, we have three hyper-planes (A, B and C) and all are segregating the classes well. Now, How can we identify the right hyper-plane?
Here, maximizing the distances between nearest data point (either class) and hyper-plane will help us to decide the right hyper-plane. This distance is called as Margin . Let’s look at the below snapshot:
Some of you may have selected the hyper-plane B as it has higher margin compared to A. But, here is the catch, SVM selects the hyper-plane which classifies the classes accurately prior to maximizing margin. Here, hyper-plane B has a classification error and A has classified all correctly. Therefore, the right hyper-plane is A.
Can we classify two classes (Scenario-4)?: Below, I am unable to segregate the two classes using a straight line, as one of star lies in the territory of other(circle) class as an outlier.
All values for z would be positive always because z is the squared sum of both x and y In the original plot, red circles appear close to the origin of x and y axes, leading to lower value of z and star relatively away from the origin result to higher value of z.
In SVM, it is easy to have a linear hyper-plane between these two classes. But, another burning question which arises is, should we need to add this feature manually to have a hyper-plane. No, SVM has a technique called the kernel trick . These are functions which takes low dimensional input space and transform it to a higher dimensional space i. e. it converts not separable problem to separable problem, these functions are called kernels. It is mostly useful in non-linear separation problem. Simply put, it does some extremely complex data transformations, then find out the process to separate the data based on the labels or outputs you’ve defined.
When we look at the hyper-plane in original input space it looks like a circle:
Now, let’s look at the methods to apply SVM algorithm in a data science challenge.
How to implement SVM in Python and R?
In Python, scikit-learn is a widely used library for implementing machine learning algorithms, SVM is also available in scikit-learn library and follow the same structure (Import library, object creation, fitting model and prediction). Let’s look at the below code:
The e1071 package in R is used to create Support Vector Machines with ease. It has helper functions as well as code for the Naive Bayes Classifier. The creation of a support vector machine in R and Python follow similar approaches, let’s take a look now at the following code:
How to tune Parameters of SVM?
Tuning parameters value for machine learning algorithms effectively improves the model performance. Let’s look at the list of parameters available with SVM.
I am going to discuss about some important parameters having higher impact on model performance, “kernel”, “gamma” and “C”.
kernel : We have already discussed about it. Here, we have various options available with kernel like, “linear”, “rbf”,”poly” and others (default value is “rbf”). Here “rbf” and “poly” are useful for non-linear hyper-plane. Let’s look at the example, where we’ve used linear kernel on two feature of iris data set to classify their class.
Example: Have linear kernel.
Change the kernel type to rbf in below line and look at the impact.
I would suggest you to go for linear kernel if you have large number of features (>1000) because it is more likely that the data is linearly separable in high dimensional space. Also, you can RBF but do not forget to cross validate for its parameters as to avoid over-fitting.
gamma : Kernel coefficient for ‘rbf’, ‘poly’ and ‘sigmoid’. Higher the value of gamma, will try to exact fit the as per training data set i. e. generalization error and cause over-fitting problem.
Example: Let’s difference if we have gamma different gamma values like 0, 10 or 100.
C: Penalty parameter C of the error term. It also controls the trade off between smooth decision boundary and classifying the training points correctly.
We should always look at the cross validation score to have effective combination of these parameters and avoid over-fitting.
In R, SVMs can be tuned in a similar fashion as they are in Python. Mentioned below are the respective parameters for e1071 package:
The kernel parameter can be tuned to take “Linear”,”Poly”,”rbf” etc. The gamma value can be tuned by setting the “Gamma” parameter. The C value in Python is tuned by the “Cost” parameter in R.
Pros and Cons associated with SVM.
Pros: It works really well with clear margin of separation It is effective in high dimensional spaces. It is effective in cases where number of dimensions is greater than the number of samples. It uses a subset of training points in the decision function (called support vectors), so it is also memory efficient. Cons: It doesn’t perform well, when we have large data set because the required training time is higher It also doesn’t perform very well, when the data set has more noise i. e. target classes are overlapping SVM doesn’t directly provide probability estimates, these are calculated using an expensive five-fold cross-validation. It is related SVC method of Python scikit-learn library.
Practice Problem.
Find right additional feature to have a hyper-plane for segregating the classes in below snapshot:
Answer the variable name in the comments section below. I’ll shall then reveal the answer.
In this article, we looked at the machine learning algorithm, Support Vector Machine in detail. I discussed its concept of working, process of implementation in python, the tricks to make the model efficient by tuning its parameters, Pros and Cons, and finally a problem to solve. I would suggest you to use SVM and analyse the power of this model by tuning the parameters. I also want to hear your experience with SVM, how have you tuned parameters to avoid over-fitting and reduce the training time?
Did you find this article helpful? Please share your opinions / thoughts in the comments section below.
If you like what you just read & want to continue your analytics learning, subscribe to our emails, follow us on twitter or like our facebook page.
Compartilhar isso:
I am a Business Analytics and Intelligence professional with deep experience in the Indian Insurance industry. I have worked for various multi-national Insurance companies in last 7 years.
74 Comments.
gr8 articles..explaining the nuances of SVM…hope u can reproduce the same with R…..it would be gr8 help to all R junkies like me.
NEW VARIABLE (Z) = SQRT(X) + SQRT (Y)
Given problem Data points looks like y=x^2+c. So i guess z=x^2-y OR z=y-x^2.
i think x coodinates must increase after sqrt.
I mean kernel will add the new feature automatically.
The hyperplane to separate the classes for the above problem can be imagined as 3-D Parabola.
Thanks a lot for this great hands-on article!
Really impressive content. Simples e eficaz. It could be more efficient if you can describe each of the parameters and practical application where you faced non-trivial problem examples.
How does the python code look like if we are using LSSVM instead of SVM?
Polynomial kernel function?!
for exzmple : Z= A(x^2) + B(y^2) + Cx + Dy + E.
However, there’s an issue in the code you’ve provided. When i compiled the code, i got the following error:
Name error: name ‘h’ não está definido.
I’ve faced this error at line 16, which is: “xx, yy = np. meshgrid(np. arange(x_min, x_min, h), …).
Could you look into it and let me know how to fix it?
great explanation 🙂 I think new variable Z should be x^2 + y.
The solution is analogue to scenario-5 if you replace y by y-k.
Your SVM explanation and kernel definition is very simple, and easy to understand. Kudos for that effort.
Most intuitive explanation of multidimensional svm I have seen. Obrigado!
what is ‘h’ in the code of SVM .
xx, yy = np. meshgrid(np. arange(x_min, x_max, h),
np. arange(y_min, y_max, h))
z > 0, red circles.
very neat explaination to SVC.
For the proposed problem, my answers are:
(1) z = a* x^2 + b y + c, a parabola.
(2) z = a (x-0)^2 + b (y - y0)^2 – R^2, a circle or an ellipse enclosing red stars.
Great article.. I think the below formula would give a new variable that help to separate the points in hyper plane.
THANKS FOR EASY EXPLANATION.
Useful article for Machine learners.. Why can’t you discuss about effect of kernel functions.
The explanation is really impressive. Can you also provide some information about how to determine the theoretical limits for the parameter’s optimal accuracy.
how can we use SVM for regression? can someone please explain..
hi please if you have an idiea about how it work for regression can you help me ?
That was a really good explanation! Muito obrigado. I read many explanations about SVM but this one help me to understand the basics which I really needed it.
please give us the answer.
This is very useful for understanding easily.
just substitude x with |x|
Same goes with Diana. This really help me a lot to figure out things from basic. I hope you would also share any computation example using R provided with simple dataset, so that anyone can practice with their own after referring to your article.
I have a question, if i have time-series dataset containing mixed linear and nonlinear data, (for example oxygen saturation data ; SaO2), by using svm to do classification for diseased vs health subjects, do i have to separate those data into linear and non-linear fisrt, or can svm just performed the analysis without considering the differences between the linearity of those data?
Could you please explain how SVM works for multiple classes? How would it work for 9 classes? I used a function called multisvm here: mathworks/matlabcentral/fileexchange/39352-multi-class-svm.
but I’m not sure how it’s working behind the scenes. Everything I’ve read online is rather confusing.
NEW VARIABLE (Z) = SQRT(X) + SQRT (Y)
Obrigado pelo ótimo artigo. There are even cool shirts for anyone who became SVM fan 😉
great explanation!! Thanks for posting it.
I think this is |X|
It is very nicely written and understandable.
nice explanations with scenarios and margin values.
Uau. excellent explanation..
only now i understood the concepts clearly.
(Z) = SQRT(X) + SQRT (Y)
thanks, and well done for the good article.
it’s magnific your explanation.
simple and refreshed the core concepts in just 5 mins! kudos Mr. Sunil.
Best starters material for SVM, really appreciate the simple and comprehensive writing style. Expecting more such articles from you.
Hey Sunil, Nice job of explaining it concisely and intuitively! Easy to follow and covers many aspects in a short space. Obrigado!
Very well written – concise, clear, well-organized. Obrigado.
Excellent explanation..Can you please also tell what are the parameter values one should start with – like C, gamma ..Also, again a very basic question.. Can we say that lesser the % of support vectors (count of SVs/total records) better my model/richer my data is - assuming the datasize to be the same.. Waiting for more on parameter tuning..Really appreciate the knowledge shared..
Hi could you please explain why SVM perform well on small dataset?
Another nice kernel for the problem stated in the article is the radial basis kernel.
[…] 资源:阅读这篇文章来理解SVM support vector machines。 […]
very appreciating for explaining.
Nice tutorial. The new feature to separate data would be something like z = y – x^2 as most dots following the parabola will have lower z than stars.
Very intuitive explanation. Obrigado!
Good to add SVM for Regression of Continuous variables.
this is so simple method that anyone can get easily thnx for that.
but also explain the 4 senario of svm.
Great article for understanding of SVM:
But, When and Why do we use the SVM algorithm can anyone make that help me understand because until this thing is clear there may not be use of this article.
Desde já, obrigado.
It is one of best explanation of machine learning technique that i have seen!
and new variable:
i think Z=|x| and new Axis are Z and Y.
higher degree polynomial will separate the points in the problem,
I guess the required feature is z = x^2 / y^2.
For the red points, z will be close to 1 but for the blue points z values will be significantly more than 1.
amazing article no doubt! It makes me clear all the concept and deep points regarding SVM.
The best explanation ever! Obrigado!
[…] [1] Naive Bayes and Text Classification. [2]Naive Bayes by Example. [3] Andrew Ng explanation of Naive Bayes video 1 and video 2 [4] Please explain SVM like I am 5 years old. [5] Understanding Support Vector Machines from examples. [& # 8230;]
new variable = ABS(Y)
Man, I was looking for definition of SVM for my diploma, but I got interested in explanation part of this article. Mantenha bom trabalho!
we can use ‘poly’ kernel with degree=2.
No comments:
Post a Comment