Vejo que muitos algoritmos de aprendizado de máquina funcionam melhor com cancelamento médio e equalização de covariância. Por exemplo, as Redes Neurais tendem a convergir mais rapidamente, e o K-Means geralmente oferece melhores agrupamentos com recursos pré-processados. Não vejo a intuição por trás dessas etapas de pré-processamento levar a um desempenho aprimorado. Alguém pode me explicar isso?
61
É verdade que o pré-processamento no aprendizado de máquina é uma arte bastante negra. Não está muito escrito em artigos por que várias etapas de pré-processamento são essenciais para fazê-lo funcionar. Também não tenho certeza se isso é entendido em todos os casos. Para tornar as coisas mais complicadas, isso depende muito do método usado e também do domínio do problema.
Alguns métodos, por exemplo, são invariantes na transformação afim. Se você possui uma rede neural e apenas aplica uma transformação afiada aos seus dados, a rede não perde nem ganha nada em teoria. Na prática, no entanto, uma rede neural funciona melhor se as entradas estiverem centralizadas e brancas. Isso significa que sua covariância é diagonal e a média é o vetor zero. Por que isso melhora as coisas? Isso ocorre apenas porque a otimização da rede neural funciona mais graciosamente, já que as funções ocultas de ativação não se saturam tão rapidamente e, portanto, não fornecem gradientes próximos de zero desde o início do aprendizado.
Outros métodos, por exemplo, K-Means, podem fornecer soluções totalmente diferentes, dependendo do pré-processamento. Isso ocorre porque uma transformação afim implica uma mudança no espaço métrico: a distância euclidiana entre duas amostras será diferente após essa transformação.
No final do dia, você deseja entender o que está fazendo com os dados. Por exemplo, o clareamento da visão computacional e a normalização sábia das amostras são algo que o cérebro humano também faz em seu pipeline de visão.
fonte
Algumas idéias, referências e gráficos sobre por que a normalização de entrada pode ser útil para RNA e k-means:
K-significa :
Exemplo no Matlab:
(FYI: Como posso detectar se meu conjunto de dados está em cluster ou não em cluster (por exemplo, formando um único cluster )
Armazenamento em cluster distribuído :
Rede neural artificial (entradas) :
Rede neural artificial (entradas / saídas)
Curiosamente, alterar as unidades de medida pode até levar a uma estrutura de agrupamento muito diferente: Kaufman, Leonard e Peter J. Rousseeuw .. "Encontrar grupos em dados: uma introdução à análise de agrupamentos". (2005).
Kaufman et al. continua com algumas considerações interessantes (página 11):
fonte
Por que o dimensionamento de recursos funciona? Eu posso te dar um exemplo (do Quora )
fonte
Existem dois problemas separados:
a) aprendendo a função correta, por exemplo, k-means: a escala de entrada especifica basicamente a semelhança; portanto, os clusters encontrados dependem da escala. regularização - por exemplo, regularização de pesos com l2 - você assume que cada peso deve ser "igualmente pequeno" - se seus dados não forem dimensionados "adequadamente", esse não será o caso
b) otimização, nomeadamente por descida gradiente (por exemplo, a maioria das redes neurais). Para descida gradiente, você precisa escolher a taxa de aprendizado ... mas uma boa taxa de aprendizado (pelo menos na 1ª camada oculta) depende da escala de entrada: entradas pequenas [relevantes] normalmente exigem pesos maiores, portanto, você deseja uma aprendizagem maior taxa para esse peso (para chegar mais rápido) e vv para entradas grandes ... como você deseja usar apenas uma única taxa de aprendizado, você redimensiona suas entradas. (e clareamento, ou seja, decorar também é importante pela mesma razão)
fonte
Estou terminando as Redes Neurais de Geoffrey Hinton para aprendizado de máquina no Coursera, e ele explica isso na aula 6b: "Um pacote de truques para a descida do gradiente de mini lotes". Você pode visualizar o vídeo sem se inscrever ou fazer login.
fonte
Este artigo trata apenas de k-means, mas explica e comprova bastante bem o requisito de pré-processamento de dados.
.
.
Fonte: http://maxwellsci.com/print/rjaset/v6-3299-3303.pdf
fonte
O pré-processamento geralmente funciona porque remove recursos dos dados que não estão relacionados ao problema de classificação que você está tentando resolver. Pense, por exemplo, na classificação de dados de som de diferentes alto-falantes. As flutuações no volume (amplitude) podem ser irrelevantes, enquanto o espectro de frequências é o aspecto realmente relevante. Portanto, neste caso, normalizar a amplitude será realmente útil para a maioria dos algoritmos de ML, porque remove um aspecto dos dados que é irrelevante e causaria uma rede neural se superajustando a padrões espúrios.
fonte
Eu acho que isso é feito simplesmente para que o recurso com um valor maior não ofusque os efeitos do recurso com um valor menor ao aprender um classificador. Isso se torna particularmente importante se o recurso com valores menores realmente contribuir para a separabilidade de classe. Os classificadores, como a regressão logística, teriam dificuldade em aprender o limite de decisão, por exemplo, se ele existir no nível micro de um recurso e tivermos outros recursos da ordem de milhões .Também ajuda o algoritmo a convergir melhor. Portanto, não nos arriscamos ao codificá-los em nossos algoritmos. É muito mais fácil para um classificador aprender as contribuições (pesos) dos recursos dessa maneira. Também é verdade para K significa usar normas euclidianas (confusão por causa da escala). Alguns algoritmos também podem funcionar sem normalizar.
fonte