Algoritmos de clustering para dados esparsos binários de alta dimensão

7

Eu tenho um conjunto de dados com 10.000 genes como abaixo

person gene1 gene2 ... gene10000  ethnic
  1       0      1         1       asian
  2       1      0         1       European

Cada linha significa se uma pessoa tem um gene em seu DNA ou não. Estamos tentando classificar diferentes grupos étnicos com base nos dados acima. Mas primeiro queremos usar alguns algoritmos de agrupamento para visualizar como o cluster seria para diferentes grupos étnicos. Não usaremos esses algoritmos de agrupamento para classificar grupos, eles serão usados ​​apenas para visualizar como seria, se tivermos clusters separados agradáveis ​​ou sobrepostos, etc.

Por favor, recomende alguns algoritmos de cluster para esse tipo de conjunto de dados. Além disso, a dimensão é 10000. Isso será um problema para o armazenamento em cluster? Devo usar alguns algoritmos de redução de dimensionalidade primeiro? Se sim, por favor, dê suas recomendações. Desde já, obrigado.

asdlfkjlkj
fonte
11
Mesmo se não houver um problema ao agrupar 10000 dimensões (alguns algoritmos têm, outros nem tanto), você não poderá visualizá-lo após o cluster. Não vejo uma maneira de não reduzir a dimensionalidade, seja por técnicas comuns (PCA e outras) ou selecionando 2-3 recursos por vez.
Mephy
Conforme respondido anteriormente, primeiro resolva seu problema de visualização e considere o armazenamento em cluster quando estiver funcionando. O agrupamento torna a visualização um pouco mais difícil, não mais fácil.
QuIT - Anony-Mousse 7/07
Você poderia me dar algum link para recursos para problemas de visualização?
Asdlfkjlkj # 7/17

Respostas:

1

Quantos grupos étnicos você identificou?

Se eu tivesse que visualizar seu problema, determinaria os principais influenciadores para cada um dos grupos étnicos em uma abordagem semelhante ao Naive Bayes. Esses genes (combinações de genes ?!) (incluindo seus valores) podem se correlacionar fortemente com algum grupo étnico, enquanto não (ou inverso) se correlacionam com outro.

Coloque-os em cima de um gráfico de pirâmide. Coloque as barras à esquerda e à direita para os valores de correlação.

Pieter21
fonte
0

'Agrupar diferentes grupos étnicos para visualização' parece mais que você está tentando fazer uma redução supervisionada da dimensionalidade, já que você já conhece as variáveis-alvo neste caso.

Como você o usará para classificação posteriormente, presumo que você já saiba o número de grupos étnicos. Isso pode ser feito usando a Análise Discriminante Linear (LDA). Confira esta publicação: /stats/161362/supervised-dimensionality-reduction

tomar__
fonte
0

Procedimento-1 :

Eu acho que seria melhor se você tentar combinar alguns geradores, é mais provável que alguns sigam uma tendência semelhante, depois que você os identificar, tente combiná-los.

Você pode usar alguma redução de dimensionalidade e, a partir de agora, fazer mais sentido com os dados, mesmo que você forneça diretamente, pode levar algum tempo para o modelo entender e fornecer alguns resultados úteis.

Depois de obter o resultado da redução de dimensionalidade, você pode aplicar diretamente algoritmos de classificação de várias classes, como SVM , RF e muito mais.

Procedimento-2 :

Outra coisa que você pode tentar é: Você pode concatenar todos os recursos (Geradores) em um único recurso e tentar entender e ver se faz algum sentido / obter algumas boas idéias (Análise Exploratória).

Entre em contato se tiver alguma dúvida.

SVM: Máquina de vetores de suporte

RF: Floresta aleatória

Toros91
fonte
Minha resposta foi útil?
Toros91
0

Suspeito que o número de grupos étnicos seja grande e você receba uma amostra suficientemente grande de pessoas aleatórias de diferentes origens étnicas para trabalhar. Então, proponho o seguinte:

Em vez de usar cluster (segmentação não supervisionada), você pode usar um agrupamento étnico menos granular existente. Digamos que seus grupos étnicos únicos no seu conjunto de dados brutos sejam os de https://en.wikipedia.org/wiki/List_of_contemporary_ethnic_groups, então você pode usar um agrupamento de alto nível com grupos menores, como o https://www.google. com / search? q = grupo étnico + no + mundo + rlz = 1C1CHBF_enUS810US810 & oq = grupo étnico + no + mundo + aqs = chrome..69i57.10445j0j8 & sourceid = chrome & ie = UTF-8 com o objetivo de entender os perfis dos grupos de alto nível : por exemplo, analisando a classificação decrescente da contagem de frequências de características genéticas mais prevalentes em cada grupo. Tecnicamente, você pode fazer o mesmo usando os grupos étnicos mais granulares originais.

Normalmente, você não pode aplicar a análise tradicional de componentes principais nos recursos de genes, pois eles são categóricos com valores 0 ou 1, mas você pode aplicar um método mais apropriado que não exija entrada contínua de variáveis, como o método usado neste pacote R: https: //cran.r-project.org/web/packages/FactoMineR/index.html

Clustering e recomendação de uma só vez:

Você também pode tentar a filtragem colaborativa explícita, que exige que os dados estejam no formato de usuário por item, da seguinte maneira:

  1. como os recursos genéticos são todos binários, você pode usar o ID numérico do seu grupo étnico como classificação, mas é necessário convertê-lo para numérico de 1 a N grupos étnicos distintos
  2. define pessoa como a dimensão do usuário e o ID de cada característica do gene como a dimensão do item
  3. reorganize os dados como [Pessoa, genes, grupo], onde genes = [1,2, ..., N_genes] e grupo = [1,2, ..., N_ethnic] mantendo linhas onde o recurso genético = 1 apenas nesse formato, o valor zero assumido onde a combinação não existe, separa os dados nos conjuntos de dados de treinamento e validação
  4. Aplique o Alternativo Mínimo Quadrado ( https://spark.apache.org/docs/2.2.0/ml-collaborative-filtering.html ) nos dados de treinamento e use os dados de validação para validar o quão bem o ALS prevê o grupo étnico, pode usar o número de elementos no grupo étnico menor acima como o número inicial de componentes no processo ALS
  5. se o número de previsões corretas de cada grupo étnico com características genéticas para todas as pessoas for razoavelmente mais alto do que as previsões incorretas, use o modelo para prever a associação a grupos étnicos, você também pode observar a mistura de características genéticas que são características de cada grupo étnico. esse resultado.
okossial
fonte
0

Se você conhece a verdade dos dados, os étnicos aqui. Você pode visualizar seu cluster binário da seguinte maneira. Calcule protótipos de cada cluster usando voto majoritário por recurso, que possui uma complexidade linear no número de observações e no número de recursos. Em seguida, visualize cada protótipo binário como uma grade binária de tamanho100×100 Para o seu 10000recursos. Selecione duas de suas cores favoritas e aproveite. Você verá se os centróides se sobrepõem aos outros quando compartilham a mesma cor nos mesmos pixels. Se você deseja agrupar seus dados rapidamente, aconselho você a começarK-Modes qual é o equivalente binário de K-Meansambos estão em O(n)definir Kde acordo com o seu número de etnia e, uma vez que você tenha clusters, aplique novamente o voto majoritário para extrair protótipos, visualize-os e observe se há semelhança com a verdade do terreno. Você pode encontrar uma versão fácil de usar do algoritmo aqui, com um exemplo prático de inicialização, com visualização, neste SparkNotebook.

KyBe
fonte
0

Você já sabe a qual cluster cada pessoa pertence, portanto, é necessário executar um algoritmo de cluster que faça essa previsão para você. Sua pergunta é sobre exploração de dados: você está tentando entender seus dados. Seu problema real é um problema de classificação supervisionada (multi-classe) e os algoritmos de cluster não são adequados para isso, porque não são supervisionados.

Eu recomendaria fazer duas coisas: primeiro, reduza a dimensionalidade para poder visualizar. Segundo, calcule as métricas no conjunto de dados de alta dimensão original para obter mais entendimento.

Para visualizar os dados, recomendo usar o t-SNE para visualizar em duas dimensões e cores com o grupo étnico . Isso lhe dará uma idéia se seus dados formarem clusters no espaço 10k-dimensional.

Então, se você deseja melhorar ainda mais seu sentimento ou intuição sobre seus dados, pensando em termos de clusters no espaço de 10k dimensional, é possível calcular métricas de cluster, como a pontuação Silhouette , a compactação do cluster (distância média ao centro) ou exiba a distância entre os clusters em um mapa de calor . Você pode mesclar dois clusters atribuindo a eles o mesmo rótulo e ver como seus resultados são alterados.

Não posso prever os resultados que você pode obter, por isso pode ser muito esclarecedor, o que significa que você pode dizer que certos clusters são muito compactos, outros muito extensos, alguns são muito parecidos com outros e assim por diante. Mas talvez, usando os métodos acima, você não consiga entender seus dados. Se isso acontecer, diria que é hora de parar de pensar nos seus dados como pontos no "espaço genético", com diferenças entre as pessoas indicando uma "distância" etc. etc. Nesse caso, pode ser que o mapeamento de genes para etnia o agrupamento é mais complexo (não linear) do que um agrupamento espacial, portanto, é necessário usar um algoritmo de classificação capaz de codificar essa não linearidade.

O aprendizado profundo não tem muitos pré-requisitos, mas um deles é que ele só pode codificar funções contínuas. As redes neurais também exigem recursos de entrada numéricos e com valor real. Como seu problema possui dados binários e não há razão para pensar que o mapeamento de genes para etnias seja uma função suave, talvez algoritmos baseados em árvores de decisão sejam um bom ponto de partida.

Boa sorte! :-)

Paulo
fonte