Aprendizado de máquina sem Python, Anaconda e outros répteis

Não, bem, claro, não estou falando sério. Deve haver um limite até que ponto é possível simplificar um assunto. Mas para os primeiros estágios, entender conceitos básicos e “entrar” rapidamente no tema, pode ser aceitável. Discutiremos como nomear corretamente este material (opções: “Aprendizado de máquina para manequins”, “Análise de dados de fraldas”, “Algoritmos para os mais pequenos”) no final.

Ao ponto. Escreveu diversos programas aplicativos em MS Excel para visualização e representação visual de processos que ocorrem em diferentes métodos de aprendizado de máquina na análise de dados. Afinal, ver para crer, como dizem os portadores da cultura, que desenvolveram a maioria desses métodos (aliás, nem todos. A mais poderosa “máquina de vetores de suporte”, ou SVM, máquina de vetores de suporte é a invenção de nosso compatriota Vladimir Vapnik, Instituto de Administração de Moscou. A propósito, 1963! Agora, porém, ele ensina e trabalha nos EUA).

Três arquivos para revisão

1. Agrupamento K-means

Problemas deste tipo referem-se à “aprendizagem não supervisionada”, quando precisamos dividir os dados iniciais em um certo número de categorias conhecidas antecipadamente, mas não temos nenhum número de “respostas corretas”; devemos extraí-las dos próprios dados . O problema clássico fundamental de encontrar subespécies de flores de íris (Ronald Fisher, 1936!), que é considerado o primeiro sinal deste campo do conhecimento, é justamente desta natureza.

O método é bastante simples. Temos um conjunto de objetos representados como vetores (conjuntos de N números). Nas íris, são conjuntos de 4 números que caracterizam a flor: o comprimento e a largura dos lobos externo e interno do perianto, respectivamente (Íris de Fischer - Wikipédia). A métrica cartesiana usual é escolhida como a distância ou medida de proximidade entre objetos.

A seguir, os centros dos clusters são selecionados aleatoriamente (ou não aleatoriamente, veja abaixo), e as distâncias de cada objeto aos centros dos clusters são calculadas. Cada objeto em uma determinada etapa da iteração é marcado como pertencente ao centro mais próximo. Em seguida, o centro de cada cluster é transferido para a média aritmética das coordenadas de seus membros (por analogia com a física, também é chamado de “centro de massa”), e o procedimento é repetido.

O processo converge rapidamente. Nas fotos em duas dimensões fica assim:

1. Distribuição aleatória inicial de pontos no plano e número de clusters

Aprendizado de máquina sem Python, Anaconda e outros répteis

2. Especificando centros de cluster e atribuindo pontos aos seus clusters

Aprendizado de máquina sem Python, Anaconda e outros répteis

3. Transferindo as coordenadas dos centros do cluster, recalculando a afiliação dos pontos até que os centros se estabilizem. A trajetória do centro do cluster movendo-se para sua posição final é visível.

Aprendizado de máquina sem Python, Anaconda e outros répteis

A qualquer momento, você pode definir novos centros de cluster (sem gerar uma nova distribuição de pontos!) e ver que o processo de particionamento nem sempre é inequívoco. Matematicamente, isso significa que para a função que está sendo otimizada (a soma dos quadrados das distâncias dos pontos aos centros de seus clusters), não encontramos um mínimo global, mas um mínimo local. Este problema pode ser superado tanto por uma escolha não aleatória dos centros iniciais do cluster, quanto pela enumeração de possíveis centros (às vezes é vantajoso colocá-los exatamente em um dos pontos, então pelo menos há uma garantia de que não ficaremos vazios aglomerados). Em qualquer caso, um conjunto finito sempre possui um ínfimo.

Você pode brincar com este arquivo neste link (não se esqueça de ativar o suporte a macros. Os arquivos foram verificados em busca de vírus)

Descrição do método na Wikipedia - método k-means

2. Aproximação por polinómios e decomposição de dados. Retreinamento

Notável cientista e divulgador da ciência de dados K.V. Vorontsov descreve brevemente os métodos de aprendizado de máquina como “a ciência de desenhar curvas através de pontos”. Neste exemplo, encontraremos um padrão nos dados usando o método dos mínimos quadrados.

É mostrada a técnica de divisão dos dados iniciais em “treinamento” e “controle”, bem como um fenômeno como retreinamento ou “reajuste” aos dados. Com a aproximação correta, teremos um certo erro nos dados de treinamento e um erro um pouco maior nos dados de controle. Se incorreto, resulta em um ajuste preciso nos dados de treinamento e em um enorme erro nos dados de teste.

(É sabido que através de N pontos pode-se traçar uma única curva de N-1º grau, e este método no caso geral não dá o resultado desejado. Polinômio de interpolação de Lagrange na Wikipedia)

1. Defina a distribuição inicial

Aprendizado de máquina sem Python, Anaconda e outros répteis

2. Dividimos os pontos em “treinamento” e “controle” na proporção de 70 para 30.

Aprendizado de máquina sem Python, Anaconda e outros répteis

3. Desenhamos a curva de aproximação ao longo dos pontos de treinamento, vemos o erro que ela dá nos dados de controle

Aprendizado de máquina sem Python, Anaconda e outros répteis

4. Desenhamos uma curva exata através dos pontos de treinamento e vemos um erro monstruoso nos dados de controle (e zero nos dados de treinamento, mas qual é o objetivo?).

Aprendizado de máquina sem Python, Anaconda e outros répteis

É mostrada, é claro, a opção mais simples com uma única divisão em subconjuntos de “treinamento” e “controle”; no caso geral, isso é feito muitas vezes para o melhor ajuste dos coeficientes.

O arquivo está disponível aqui, verificado por antivírus. Habilite macros para operação correta

3. Gradiente descendente e dinâmica de mudança de erro

Haverá um caso quadridimensional e regressão linear. Os coeficientes de regressão linear serão determinados passo a passo usando o método gradiente descendente, inicialmente todos os coeficientes são zero. Um gráfico separado mostra a dinâmica da redução de erros à medida que os coeficientes são ajustados com cada vez mais precisão. É possível visualizar todas as quatro projeções bidimensionais.

Se você definir o passo de descida do gradiente muito grande, poderá ver que toda vez pularemos o mínimo e chegaremos ao resultado em um número maior de passos, embora no final ainda chegaremos (a menos que atrasemos o passo de descida também muito - então o algoritmo irá “em espadas"). E o gráfico do erro dependendo da etapa da iteração não será suave, mas “espasmódico”.

1. Gere dados, defina a etapa de descida do gradiente

Aprendizado de máquina sem Python, Anaconda e outros répteis

2. Com a seleção correta do degrau de descida do gradiente, atingimos suave e rapidamente o mínimo

Aprendizado de máquina sem Python, Anaconda e outros répteis

3. Se o passo de descida do gradiente for selecionado incorretamente, ultrapassamos o máximo, o gráfico de erro é “espasmódico”, a convergência leva um número maior de passos

Aprendizado de máquina sem Python, Anaconda e outros répteis
и

Aprendizado de máquina sem Python, Anaconda e outros répteis

4. Se selecionarmos o passo de descida do gradiente de forma completamente incorreta, nos afastaremos do mínimo

Aprendizado de máquina sem Python, Anaconda e outros répteis

(Para reproduzir o processo usando os valores do passo de descida do gradiente mostrados nas imagens, marque a caixa “dados de referência”).

O arquivo está neste link, é necessário habilitar macros, não há vírus.

Segundo a respeitada comunidade, tal simplificação e método de apresentação do material são aceitáveis? Vale a pena traduzir o artigo para o inglês?

Fonte: habr.com

Adicionar um comentário