A maximização da expectativa (EM) é um tipo de método probabilístico para classificar dados. Por favor, corrija-me se eu estiver errado se não for um classificador.
O que é uma explicação intuitiva desta técnica EM? O que está expectation
aqui e o que está sendo maximized
?
machine-learning
cluster-analysis
data-mining
mathematical-optimization
expectation-maximization
Cara londrino
fonte
fonte
Respostas:
Nota: o código por trás desta resposta pode ser encontrado aqui .
Suponha que temos alguns dados amostrados de dois grupos diferentes, vermelho e azul:
Aqui, podemos ver qual ponto de dados pertence ao grupo vermelho ou azul. Isso facilita encontrar os parâmetros que caracterizam cada grupo. Por exemplo, a média do grupo vermelho é cerca de 3, a média do grupo azul é cerca de 7 (e poderíamos encontrar a média exata se quiséssemos).
Geralmente, isso é conhecido como estimativa de máxima verossimilhança . Com alguns dados, calculamos o valor de um parâmetro (ou parâmetros) que melhor explica esses dados.
Agora imagine que não podemos ver qual valor foi amostrado de qual grupo. Tudo parece roxo para nós:
Aqui, sabemos que existem dois grupos de valores, mas não sabemos a qual grupo pertence um determinado valor.
Ainda podemos estimar as médias para o grupo vermelho e o grupo azul que melhor se ajustam a esses dados?
Sim, muitas vezes podemos! A maximização da expectativa nos dá uma maneira de fazer isso. A ideia geral por trás do algoritmo é esta:
Essas etapas precisam de mais explicações, portanto, examinarei o problema descrito acima.
Exemplo: estimativa de média e desvio padrão
Usarei Python neste exemplo, mas o código deve ser bem fácil de entender se você não estiver familiarizado com essa linguagem.
Suponha que temos dois grupos, vermelho e azul, com os valores distribuídos como na imagem acima. Especificamente, cada grupo contém um valor retirado de uma distribuição normal com os seguintes parâmetros:
Aqui está uma imagem desses grupos vermelho e azul novamente (para evitar que você tenha que rolar para cima):
Quando podemos ver a cor de cada ponto (ou seja, a qual grupo ele pertence), é muito fácil estimar a média e o desvio padrão para cada grupo. Apenas passamos os valores de vermelho e azul para as funções embutidas no NumPy. Por exemplo:
Mas e se não pudermos ver as cores dos pontos? Ou seja, em vez de vermelho ou azul, cada ponto foi colorido de roxo.
Para tentar recuperar os parâmetros de média e desvio padrão para os grupos vermelho e azul, podemos usar a maximização da expectativa.
Nossa primeira etapa ( etapa 1 acima) é adivinhar os valores dos parâmetros para a média e o desvio padrão de cada grupo. Não precisamos adivinhar de forma inteligente; podemos escolher qualquer número que quisermos:
Essas estimativas de parâmetro produzem curvas de sino que se parecem com isto:
Essas são estimativas ruins. Ambos os meios (as linhas pontilhadas verticais) parecem distantes de qualquer tipo de "meio" para grupos de pontos sensíveis, por exemplo. Queremos melhorar essas estimativas.
A próxima etapa ( etapa 2 ) é calcular a probabilidade de cada ponto de dados aparecer sob as estimativas dos parâmetros atuais:
Aqui, simplesmente colocamos cada ponto de dados na função de densidade de probabilidade para uma distribuição normal usando nossas estimativas atuais na média e no desvio padrão para vermelho e azul. Isso nos diz, por exemplo, que com nossas estimativas atuais, o ponto de dados em 1,761 tem muito mais probabilidade de ser vermelho (0,189) do que azul (0,00003).
Para cada ponto de dados, podemos transformar esses dois valores de verossimilhança em pesos ( etapa 3 ) para que somam 1 da seguinte forma:
Com nossas estimativas atuais e nossos pesos recém-calculados, agora podemos calcular novas estimativas para a média e o desvio padrão dos grupos vermelho e azul ( etapa 4 ).
Calculamos duas vezes a média e o desvio padrão usando todos os pontos de dados, mas com os pesos diferentes: uma vez para os pesos vermelhos e uma vez para os pesos azuis.
O ponto chave da intuição é que quanto maior o peso de uma cor em um ponto de dados, mais o ponto de dados influencia as próximas estimativas para os parâmetros dessa cor. Isso tem o efeito de "puxar" os parâmetros na direção certa.
Temos novas estimativas para os parâmetros. Para melhorá-los novamente, podemos voltar para a etapa 2 e repetir o processo. Fazemos isso até que as estimativas convirjam ou depois que algum número de iterações tiver sido executado ( etapa 5 ).
Para nossos dados, as primeiras cinco iterações desse processo são assim (as iterações recentes têm uma aparência mais forte):
Vemos que as médias já estão convergindo em alguns valores, e as formas das curvas (governadas pelo desvio padrão) também estão se tornando mais estáveis.
Se continuarmos por 20 iterações, terminaremos com o seguinte:
O processo EM convergiu para os seguintes valores, que se revelaram muito próximos dos valores reais (onde podemos ver as cores - sem variáveis ocultas):
No código acima, você deve ter notado que a nova estimativa para o desvio padrão foi calculada usando a estimativa da iteração anterior para a média. Em última análise, não importa se calcularmos primeiro um novo valor para a média, pois estamos apenas encontrando a variância (ponderada) dos valores em torno de algum ponto central. Ainda veremos as estimativas para os parâmetros convergirem.
fonte
EM é um algoritmo para maximizar uma função de verossimilhança quando algumas das variáveis em seu modelo não são observadas (ou seja, quando você tem variáveis latentes).
Você pode simplesmente perguntar, se estamos apenas tentando maximizar uma função, por que não usamos apenas o mecanismo existente para maximizar uma função. Bem, se você tentar maximizar isso pegando derivadas e definindo-as como zero, descobrirá que, em muitos casos, as condições de primeira ordem não têm solução. Há um problema da galinha e do ovo em que, para resolver os parâmetros do modelo, você precisa saber a distribuição dos dados não observados; mas a distribuição de seus dados não observados é uma função dos parâmetros do seu modelo.
EM tenta contornar isso adivinhando iterativamente uma distribuição para os dados não observados, em seguida, estimando os parâmetros do modelo, maximizando algo que é um limite inferior na função de verossimilhança real e repetindo até a convergência:
O algoritmo EM
Comece com suposições para os valores dos parâmetros do seu modelo
E-step: Para cada ponto de dados com valores ausentes, use a equação do modelo para resolver a distribuição dos dados ausentes, considerando sua estimativa atual dos parâmetros do modelo e dados observados (observe que você está resolvendo uma distribuição para cada um valor, não para o valor esperado). Agora que temos uma distribuição para cada valor ausente, podemos calcular a expectativa da função de verossimilhança com relação às variáveis não observadas. Se nossa estimativa para o parâmetro do modelo estava correta, essa probabilidade esperada será a probabilidade real de nossos dados observados; se os parâmetros não estiverem corretos, será apenas um limite inferior.
Passo M: Agora que temos uma função de verossimilhança esperada sem variáveis não observadas, maximize a função como faria no caso totalmente observado, para obter uma nova estimativa dos parâmetros do modelo.
Repita até a convergência.
fonte
Aqui está uma receita simples para entender o algoritmo de maximização da expectativa:
1- Leia este tutorial de EM por Do e Batzoglou.
2- Você pode ter pontos de interrogação em sua cabeça, dê uma olhada nas explicações nesta página de troca de pilha de matemática .
3- Olhe para este código que escrevi em Python que explica o exemplo no artigo do tutorial EM do item 1:
Aviso: o código pode ser confuso / abaixo do ideal, já que não sou um desenvolvedor Python. Mas isso faz o trabalho.
fonte
Tecnicamente, o termo "EM" é um pouco subespecificado, mas suponho que você se refere à técnica de análise de agrupamento de Modelagem de Mistura Gaussiana, que é uma instância do princípio EM geral.
Na verdade, a análise de cluster EM não é um classificador . Eu sei que algumas pessoas consideram o agrupamento como uma "classificação não supervisionada", mas na verdade a análise de agrupamento é algo bem diferente.
A principal diferença, e o grande mal-entendido de classificação que as pessoas sempre têm com a análise de cluster, é que: na análise de cluster, não existe uma "solução correta" . É um método de descoberta de conhecimento , na verdade serve para descobrir algo novo ! Isso torna a avaliação muito complicada. Muitas vezes é avaliada usando uma classificação conhecida como referência, mas isso nem sempre é apropriado: a classificação que você tem pode ou não refletir o que está nos dados.
Deixe-me dar um exemplo: você tem um grande conjunto de dados de clientes, incluindo dados de gênero. Um método que divide esse conjunto de dados em "masculino" e "feminino" é ideal quando você o compara com as classes existentes. Em uma forma de "previsão" de pensar isso é bom, pois para novos usuários agora você pode prever o sexo. Em uma maneira de pensar de "descoberta de conhecimento", isso é realmente ruim, porque você queria descobrir alguma estrutura nova nos dados. Um método que iria, por exemplo, dividir os dados em idosos e crianças, entretanto, teria uma pontuação tão pior quanto possível em relação à classe masculina / feminina. No entanto, esse seria um excelente resultado de agrupamento (se a idade não for fornecida).
Agora de volta ao EM. Basicamente, ele assume que seus dados são compostos de várias distribuições normais multivariadas (observe que esta é uma suposição muito forte, em particular quando você fixa o número de clusters!). Em seguida, ele tenta encontrar um modelo ideal local para isso, melhorando alternadamente o modelo e a atribuição de objeto ao modelo .
Para melhores resultados em um contexto de classificação, escolha o número de clusters maiores do que o número de classes, ou mesmo aplicar o clustering para solteiros classes somente (para descobrir se há alguma estrutura dentro da classe!).
Digamos que você queira treinar um classificador para distinguir "carros", "bicicletas" e "caminhões". É pouco útil assumir que os dados consistem em exatamente 3 distribuições normais. No entanto, você pode presumir que há mais de um tipo de carro (e caminhões e bicicletas). Então, em vez de treinar um classificador para essas três classes, você agrupa carros, caminhões e bicicletas em 10 grupos cada (ou talvez 10 carros, 3 caminhões e 3 bicicletas, o que for), em seguida, treina um classificador para distinguir essas 30 classes e, em seguida, mesclar o resultado da classe de volta às classes originais. Você também pode descobrir que existe um cluster que é particularmente difícil de classificar, por exemplo, Trikes. Eles são um pouco carros e um pouco bicicletas. Ou caminhões de entrega, que são mais carros superdimensionados do que caminhões.
fonte
Se outras respostas forem boas, tentarei fornecer outra perspectiva e abordar a parte intuitiva da pergunta.
O algoritmo EM (Expectation-Maximization) é uma variante de uma classe de algoritmos iterativos usando dualidade
Trecho (ênfase minha):
Normalmente, um B dual de um objeto A está relacionado a A de alguma forma que preserva alguma simetria ou compatibilidade . Por exemplo AB = const
Exemplos de algoritmos iterativos, empregando dualidade (no sentido anterior) são:
De forma semelhante, o algoritmo EM também pode ser visto como duas etapas de maximização dupla :
Em um algoritmo iterativo usando dualidade, há a suposição explícita (ou implícita) de um ponto de convergência de equilíbrio (ou fixo) (para EM, isso é provado usando a desigualdade de Jensen)
Portanto, o esboço de tais algoritmos é:
Observe que quando tal algoritmo converge para um ótimo (global), ele encontrou uma configuração que é a melhor em ambos os sentidos (isto é, tanto no domínio / parâmetros x quanto no domínio / parâmetros y ). No entanto, o algoritmo pode apenas encontrar um ótimo local e não o ótimo global .
eu diria que esta é a descrição intuitiva do esboço do algoritmo
Para os argumentos estatísticos e aplicações, outras respostas deram boas explicações (verifique também as referências nesta resposta)
fonte
A resposta aceita faz referência ao Papel EM da Chuong , que faz um trabalho decente ao explicar o EM. Há também um vídeo do youtube que explica o jornal com mais detalhes.
Para recapitular, aqui está o cenário:
No caso da pergunta da primeira tentativa, intuitivamente pensaríamos que B a gerou, já que a proporção de caras corresponde muito bem ao viés de B ... mas esse valor foi apenas um palpite, então não podemos ter certeza.
Com isso em mente, gosto de pensar na solução EM assim:
Isso pode ser uma simplificação exagerada (ou até mesmo fundamentalmente errado em alguns níveis), mas espero que isso ajude em um nível intuitivo!
fonte
EM é usado para maximizar a probabilidade de um modelo Q com variáveis latentes Z.
É uma otimização iterativa.
e-step: dada a estimativa atual de Z, calcule a função de log-verossimilhança esperada
m-step: encontre theta que maximiza este Q
Exemplo de GMM:
e-step: estimar atribuições de rótulo para cada ponto de dados, dada a estimativa do parâmetro gmm atual
passo m: maximizar um novo theta de acordo com as novas atribuições de rótulo
K-means também é um algoritmo EM e há muitas animações explicando no K-means.
fonte
Usando o mesmo artigo de Do e Batzoglou citado na resposta de Zhubarb, implementei o EM para esse problema em Java . Os comentários à sua resposta mostram que o algoritmo fica preso em um ótimo local, o que também ocorre com minha implementação se os parâmetros thetaA e thetaB forem iguais.
Abaixo está a saída padrão do meu código, mostrando a convergência dos parâmetros.
Abaixo está minha implementação Java do EM para resolver o problema em (Do e Batzoglou, 2008). A parte central da implementação é o loop para executar EM até que os parâmetros convirjam.
Abaixo está o código completo.
fonte