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.
fonte
Respostas:
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.
fonte
'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
fonte
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
fonte
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:
fonte
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 10000 recursos. 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 -Means ambos estão em O(n) definir K de 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.
fonte
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! :-)
fonte