Quero aprender (deduzir) os pesos dos atributos para a minha medida de dissimilaridade que posso usar para agrupar.
Tenho alguns exemplos de pares de objetos que são "semelhantes" (devem estar no mesmo cluster), bem como alguns exemplos ( c i , d i ) de pares de objetos que "não são semelhantes "(não deve estar no mesmo cluster). Cada objeto tem uma série de atributos: se você quiser, podemos pensar em cada objeto como um d -dimensional vetor de características, onde cada recurso é um inteiro não-negativo. Existem técnicas para usar exemplos de objetos semelhantes / diferentes para estimar a partir deles pesos ótimos para uma medida de dissimilaridade?
Se ajudar, no meu aplicativo, provavelmente seria razoável se concentrar em aprender uma medida de dissimilaridade que seja uma norma L2 ponderada:
onde os pesos não são conhecidos e devem ser aprendidos. (Ou, algum tipo de medida ponderada de similaridade de cosseno também pode ser razoável.) Existem bons algoritmos para aprender os pesos α j de tal medida, dados os exemplos? Ou existem outros métodos para aprender uma medida de similaridade / dissimilaridade que devo considerar?
Infelizmente, o número de dimensões é muito grande (milhares ou mais; é derivado de recursos de palavras-chave). No entanto, tenho muitas dezenas de milhares de exemplos. Depois, tenho centenas de milhares de objetos que quero agrupar, por isso é importante generalizar a partir dos exemplos para aprender uma boa métrica de dissimilaridade.
Entendo que isso se enquadra na rubrica de agrupamento semi-supervisionado e parece que pode ser do tipo "adaptação de similaridade", mas não consegui encontrar descrições claras de algoritmos a serem usados para esse fim.
Respostas:
Esse é um grande problema em algumas áreas do aprendizado de máquina. Não estou tão familiarizado com o assunto quanto gostaria, mas acho que isso deve ajudá-lo a começar.
A redução de dimensionalidade aprendendo um mapeamento invariável (DrLIM) parece funcionar muito bem em alguns conjuntos de dados.
A análise de componentes de vizinhança é um algoritmo linear muito bom, e versões não lineares também foram desenvolvidas.
Existe toda uma literatura que lida com esse problema da perspectiva de "aprender um kernel". Não sei muito sobre isso, mas este artigo é altamente citado.
fonte
Em outras palavras, você está perguntando sobre pré-processamento e dimensionamento de dados. Isso é amplo demais para ser bem respondido em uma única pergunta. Olhe para:
Há uma quantidade enorme de literatura e até faixas de conferência dedicadas a isso. Alguns métodos para você começar:
fonte