Transformando distribuições para a aprendizagem de máquina
Embora as estatísticas são baseadas na expectativa de que recursos têm determinadas distribuições de valor, aprendizado de máquina geralmente não tem tais restrições. Um algoritmo de aprendizagem de máquina não precisa saber de antemão o tipo de distribuição de dados que vai funcionar, mas aprende-lo diretamente a partir dos dados utilizados para o treinamento.
Em probabilidade, uma distribuição é uma tabela de valores ou uma função matemática que liga a cada valor possível de uma variável para a probabilidade de que este valor poderia ocorrer. As distribuições de probabilidade são geralmente (mas não exclusivamente) representada em gráficos cujos eixos das abcissas representa os valores possíveis da variável e cujo eixo ordinal representa a probabilidade de ocorrência. A maioria dos modelos estatísticos dependem de uma distribuição normal, uma distribuição que é simétrica e tem uma forma de sino característica.
Mesmo quando se utiliza algoritmos de aprendizagem emprestados a partir de estatísticas, você nunca precisa se transformar uma distribuição real para se assemelhar a uma distribuição normal ou de qualquer outra distribuição estatística notável (como distribuições de Poisson uniforme ou). algoritmos de aprendizado de máquina são geralmente inteligente o suficiente para descobrir como lidar com qualquer distribuição presente nas características por si mesmos. No entanto, mesmo se transformar as distribuições reais não é necessário para um algoritmo de aprendizado de máquina para funcionar corretamente, ele ainda pode ser benéfica para estas razões:
- Para tornar a função custo minimizar melhor o erro das previsões
- Para fazer com que o algoritmo convergir corretamente e mais rápido
Você pode aplicar transformações para a variável resposta para minimizar o peso de qualquer caso extremo. Quando você prever valores (como em um problema de regressão), e alguns dos valores são muito extremas em relação à maioria dos valores, você pode aplicar transformações que tendem a encurtar a distância entre os valores.
Consequentemente, quando se esforçando para minimizar o erro, o algoritmo não focar muito sobre os erros extremas e vai obter uma solução geral. Nesses casos, você normalmente escolher a transformação logarítmica, mas essa transformação requer valores positivos. Se você trabalha com números apenas positivos e o problema é a zero, adicionar 1 a seus valores de modo que nenhum deles será zero. (O resultado do registo (1) é, na verdade, nula, tornando-o uma nova conveniente ponto de partida).
Se você não pode usar uma transformação logarítmica, aplique uma raiz cúbica, que preserva o sinal. Em certos casos (quando os valores extremos são enormes), você pode querer aplicar a transformação inversa em vez (ou seja, divisão 1 pelo valor de sua resposta).
Alguns algoritmos de aprendizagem automática com base no gradiente descendente ou em medidas de distância (como algoritmos, tais como K-means e K-vizinhos mais próximos) são bastante sensíveis para a escala dos valores numéricos fornecidos. Consequentemente, a fim de que o algoritmo convergir mais rapidamente ou para fornecer uma solução mais exata, redimensionando a distribuição é necessária. Rescaling transforma a gama dos valores dos elementos e pode afetar variância também. Você pode executar funções rescaling de duas maneiras:
- Usando normalização estatística (z-pontuação normalização): Centrar a média a zero (subtraindo a média) e depois dividir o resultado pelo desvio padrão. Após esta transformação, você encontrará a maioria dos valores no intervalo de -3 a +3.
- Utilizando a transformação min-max (ou normalização): Remova o valor mínimo do recurso e, em seguida, dividir pelo intervalo (valor máximo valor negativo). Este ato rescales todos os valores de 0 a 1. É preferível à normalização quando o desvio padrão original é muito pequeno (valores originais estão muito perto, como se todos eles se unem em torno da média) ou quando você quiser preservar os valores zero em uma matriz esparsa que explora a matemática de aprendizagem de máquina).
Ambos os R e Python proporcionar funções para a transformação de distribuição. Além das funções matemáticas log e exp, que estão imediatamente disponíveis em R e exigem a importação do pacote NumPy em Python, padronização e normalização min-max exigir um pouco mais de trabalho.
Video: Vídeos Saint Paul
Em R, você atingir a padronização usando a função de escala (experimente ajuda (escala)
em R), mas a normalização min-max requer que você defina sua própria função:
mínimo máximo lt; - função (x)
Video: Descobrir a versão e distribuição do seu Linux via terminal
{Return ((x - min (x, na.rm = TRUE)) /
(Max (x, na.rm = TRUE) - min (x, na.rm = TRUE)))}
Em Python, você pode usar funções e classes de Scikit-learn módulo de pré-processamento, tal como: sklearn.preprocessing.scale, sklearn.preprocessing.StandardScaler
, e sklearn.preprocessing.MinMaxScaler
.