Boa noite Professor. Vi sua aula sobre k-means e esta agora sobre HCA. Quando aplicamos K-means temos a função para definir o melhor número de clusters. Gostaria de saber se no HCA teríamos alguma função semelhante para definir o número de cluster ou onde realizar o "corte" no dendograma para definir o número de agrupamentos.
Olá Wilson tudo bem ? Tem sim e você pode usar o pacote NbClust. Os métodos usados para cluster hierarquico podem ser ward.D, ward.D2, average etc. Exemplo usando o conjunto de dados mtcars library(NbClust) NbClust(mtcars, distance = "euclidean", min.nc = 2, max.nc = 4, method = "ward.D2") Se precisar de mais detalhes pode conseguir no Journal of Statistical Software: October 2014, Volume 61, Issue 6
Fico feliz que tenha sido útil. Um dos objetivos do canal é complementar o conteúdo da academia associado a prática. Sempre que tiverem dúvidas deixem aqui ou em outro canal mas não deixe sem resposta. A dúvida de vocês hoje, foi a minha a alguns anos e como diria Steve Jobs "stay hungry, stay foolish".
Oi Marcelo, o video ficou bom. Eu tenho uma pergunta. Minha matriz tem dados categóricos e quantitativos. Dando uma olhadas a distancia, em lugar de fazer a euclidiana usaria a distancia de Gower. Agora, to precisando fazer um corte, mas a seleção da linha de corte é subjetiva. Tem um critério para estabelecer s que altura é bom fazer aquela linha corte? OBRIGADO
Olá Gustavo dado que você já optou pelo método gower e o corte sendo o n de cluster uma sugestão seria o silhouette fazer testes usando o PAM e observar e ir avaliando. E uma resposta difícil no momento dado às características do gower e dos seus dados que eu não conheço.
Obrigado sempre pelos comentários Musta. A garganta estava uma detonada mas eu tinha que gravar mais pra frente darei uma atualizada. Um abraço agosto tem Stun game festival aqui
Você pode usar a função meus_dados %>% column_to_rownames(var = "nome_da_variavel") Mas note que a variável que irá para row_names não pode ter valores repeditos...exemplo se você tem banana, laranga, tomate e cebola vai funcionar, agora se você tiver banana, laranja, tomate, laranja não funciona
Acidentalmente apaguei um comentário com a pergunta sobre a linha de corte..mas a resposta está aqui Você pode usar a função cutree para adicionar o ponto de corte. cutree(my_dendog, h=3) #altura do corte cutree(my_dendog, k=3) #num de cluster Neste exemplo aí se você quiser mostrar apenas no gráfico o corte abline(h = 2, col = "red") ruclips.net/video/0kuwIH7fWzY/видео.html
Boa noite Marcelo! Sua didática é ótima..parabéns!!!! Eu tenho uma dúvida, se puder me judar agradeço. Eu não uso a versão R-Studio, uso a versão normal do R... ...mas minha dúvida é se eu sempre tenho que determinar o número de grupos (k=), ou existe alguma forma do programa inferir o número ideal de grupos a serem formados de acordo com o comportamento das minhas variáveis , o que vai depender da altura da linha de corte. Como determinar a altura da linha de corte e consequentemente o número de grupos formados?? É sempre subjetivo, ou a estatística pode inferir?? Grata desde já
Existe uma função na package factoextra chamada fviz_nbclust que determina pra você o número ótimo de cluster eu expliquei um pouco sobre ele no vídeo sobre kmeans ruclips.net/video/6qleqPsrBqI/видео.html, neste caso bastaria alterar de kmeans para hcut ou se preferir outro método de cluster também pode.
Como faz pra obter o coeficiente aglomerativo da HCA dessa forma? eu conheço HCA no R pelo pacote cluster usando o comando agnes, nesse o coeficiente aglomerativo é obtido por meio de cbind.
se você estiver se referindo as classes de cada grupo, da pra usar o cutree...se não for, da pra escolher o valor de saída que você quer assim....cluster$ quando fizer isso vai aparecer as opções. Você pode usar o tidyverse pacote também ficaria assim #vai sair esquisito aqui no youtube mas copie e cole pra dentro do R que tudo se ajeita install.packages("tidyverse") library(tidyverse) meu_cluster % #entenda esse cara %>% como "e então" e para adicionar com atalho ctrl + shift + M select(mpg, cyl, hp, qsec, gear, carb) %>% #e então selecionando as colunas que quero scale() %>% #e então transforme tudo na mesma medida dist(method = "euclidean") %>% #e então calcule a distancia euclidiana hclust(method = "ward.D2") %>% #e então faz hclust com algoritmo ward.D2 cutree(h=4) #e então corta a arvore em grupos #depois pra adicionar os grupos no dataset mtcars mtcars$cluster % head() #tiro um resumo pra ver como fica
Muito bom Marcelo!!!! Uma dúvida, como podemos fazer para extrair as bases de dados por grupo? Separar a base original em bases para cada grupo gerado.
Bom dia Marcelo, estou fazendo um estudo que utilzia clusterização hierárquica, na qual são é possível gerar 6 cenários. Mas senti dificuldade de saber qual é o melhor cenário. Você tem ideia como posso fazer isso?
Olá Jovani, a análise de cluste se trata de um modelo não supervisionado de machine learning. Neste caso não sei se seria adequado ou até possível trabalhar com cenários eu fiz um vídeo explicando mais aqui:ruclips.net/video/_Jo-9nBK3s0/видео.html
Professor, no caso apar cê na legenda "distância" entre os agrupamentos, essa distância eu também posso dizer que seriam as similaridades entre os grupos formados? E teria como eu dizer de quanto é essa similaridade entre eles?
Muito bacana Marcelo, obrigado pelo vídeo, ajudou muito!
valeu fico feliz que o conteúdo tenha sido útil pra você
Agora entendi bem como funciona a analise de agrupamentos pelo R.
Achei mais fácil do que pelo Python
fico feliz que o conteúdo tenha sido útil.
Muito bom, com excelente didática!!!
obrigado. fico feliz que o conteúdo tenha sido útil pra você
Parabéns, Marcelo. Conteúdo e didática excelente. Continue postando vídeos, assisto todos e aprendo muito. Obrigado.
Obrigado..fico feliz em saber que o conteúdo está sendo útil
Suas aulas são incríveis e estão me ajudando no doutorado. Como eu incluo uma legenda no estilo caixinha com a escala de cor e valores nesse heatmap?
Você consegue criar sim, aqui o código padrão e pra ajustar basta verificar as opções existentes na função *legend*
dados
Perfeita aula, bem didático!
que bom que foi util
Obrigado meu amigo pela sua colaboração no meu aprendizado.
Fico feliz que o conteúdo tenha sido útil pra você Davi
Queria poder dar 50 mil likes !! Muito obrigado por disponibilizar essa aula.
Que bom que foi útil
Excelente aula, Marcelo! Estou utilizando muito as análises e scripts aprendidos nos vídeos. Valeu, Abs!!!
Obrigado Guilherme, fico feliz que o conteúdo esteja sendo útil pra você
Boa noite Professor. Vi sua aula sobre k-means e esta agora sobre HCA. Quando aplicamos K-means temos a função para definir o melhor número de clusters.
Gostaria de saber se no HCA teríamos alguma função semelhante para definir o número de cluster ou onde realizar o "corte" no dendograma para definir o número de agrupamentos.
Olá Wilson tudo bem ? Tem sim e você pode usar o pacote NbClust. Os métodos usados para cluster hierarquico podem ser ward.D, ward.D2, average etc.
Exemplo usando o conjunto de dados mtcars
library(NbClust)
NbClust(mtcars, distance = "euclidean", min.nc = 2, max.nc = 4, method = "ward.D2")
Se precisar de mais detalhes pode conseguir no Journal of Statistical Software: October 2014, Volume 61, Issue 6
Esse vídeo substituiria duas aulas de 4h do meu professor, obrigada!
Fico feliz que tenha sido útil. Um dos objetivos do canal é complementar o conteúdo da academia associado a prática. Sempre que tiverem dúvidas deixem aqui ou em outro canal mas não deixe sem resposta. A dúvida de vocês hoje, foi a minha a alguns anos e como diria Steve Jobs "stay hungry, stay foolish".
Aula maravilhosa, super didático!
gostei bastante!
fico feliz que o conteúdo tenha sido útil
Muito bom, obrigado !
Para puxar outra base de dados, qual seria o comando ? Uma planilha do excel
isso vai depender de onde você quer buscar
Oi Marcelo, o video ficou bom. Eu tenho uma pergunta. Minha matriz tem dados categóricos e quantitativos. Dando uma olhadas a distancia, em lugar de fazer a euclidiana usaria a distancia de Gower. Agora, to precisando fazer um corte, mas a seleção da linha de corte é subjetiva. Tem um critério para estabelecer s que altura é bom fazer aquela linha corte? OBRIGADO
Olá Gustavo dado que você já optou pelo método gower e o corte sendo o n de cluster uma sugestão seria o silhouette fazer testes usando o PAM e observar e ir avaliando. E uma resposta difícil no momento dado às características do gower e dos seus dados que eu não conheço.
Boa Marcelo! O áudio ficou baixo, mas o conteúdo está bom. Parabéns!
Obrigado sempre pelos comentários Musta. A garganta estava uma detonada mas eu tinha que gravar mais pra frente darei uma atualizada. Um abraço agosto tem Stun game festival aqui
MUITO OBRIGADA!
Que bom que o conteúdo foi útil.
Tenho uma dúvida, quando eu importo uma planilha minha, ao inves dos meu dados ficarem no lugar do row names, eles ficam ocupando a coluna 1
e com isso não consigo proceder a analise do dendograma
Você pode usar a função
meus_dados %>%
column_to_rownames(var = "nome_da_variavel")
Mas note que a variável que irá para row_names não pode ter valores repeditos...exemplo se você tem banana, laranga, tomate e cebola vai funcionar, agora se você tiver banana, laranja, tomate, laranja não funciona
Acidentalmente apaguei um comentário com a pergunta sobre a linha de corte..mas a resposta está aqui
Você pode usar a função cutree para adicionar o ponto de corte.
cutree(my_dendog, h=3) #altura do corte
cutree(my_dendog, k=3) #num de cluster
Neste exemplo aí se você quiser mostrar apenas no gráfico o corte
abline(h = 2, col = "red")
ruclips.net/video/0kuwIH7fWzY/видео.html
Boa noite Marcelo! Sua didática é ótima..parabéns!!!! Eu tenho uma dúvida, se puder me judar agradeço. Eu não uso a versão R-Studio, uso a versão normal do R...
...mas minha dúvida é se eu sempre tenho que determinar o número de grupos (k=), ou existe alguma forma do programa inferir o número ideal de grupos a serem formados de acordo com o comportamento das minhas variáveis , o que vai depender da altura da linha de corte. Como determinar a altura da linha de corte e consequentemente o número de grupos formados?? É sempre subjetivo, ou a estatística pode inferir??
Grata desde já
Existe uma função na package factoextra chamada fviz_nbclust que determina pra você o número ótimo de cluster eu expliquei um pouco sobre ele no vídeo sobre kmeans ruclips.net/video/6qleqPsrBqI/видео.html, neste caso bastaria alterar de kmeans para hcut ou se preferir outro método de cluster também pode.
Como faz pra obter o coeficiente aglomerativo da HCA dessa forma? eu conheço HCA no R pelo pacote cluster usando o comando agnes, nesse o coeficiente aglomerativo é obtido por meio de cbind.
se você estiver se referindo as classes de cada grupo, da pra usar o cutree...se não for, da pra escolher o valor de saída que você quer assim....cluster$ quando fizer isso vai aparecer as opções. Você pode usar o tidyverse pacote também ficaria assim
#vai sair esquisito aqui no youtube mas copie e cole pra dentro do R que tudo se ajeita
install.packages("tidyverse")
library(tidyverse)
meu_cluster % #entenda esse cara %>% como "e então" e para adicionar com atalho ctrl + shift + M
select(mpg, cyl, hp, qsec, gear, carb) %>% #e então selecionando as colunas que quero
scale() %>% #e então transforme tudo na mesma medida
dist(method = "euclidean") %>% #e então calcule a distancia euclidiana
hclust(method = "ward.D2") %>% #e então faz hclust com algoritmo ward.D2
cutree(h=4) #e então corta a arvore em grupos
#depois pra adicionar os grupos no dataset mtcars
mtcars$cluster % head() #tiro um resumo pra ver como fica
Muito bom Marcelo!!!! Uma dúvida, como podemos fazer para extrair as bases de dados por grupo? Separar a base original em bases para cada grupo gerado.
Uma forma é colocar os dados dos grupos que você criou (retangulos) em uma variável por exemplo.... grupos
Bom dia Marcelo, estou fazendo um estudo que utilzia clusterização hierárquica, na qual são é possível gerar 6 cenários. Mas senti dificuldade de saber qual é o melhor cenário. Você tem ideia como posso fazer isso?
Se puder mandar seu contato para que eu possa te explicar melhor.
Olá Jovani, a análise de cluste se trata de um modelo não supervisionado de machine learning. Neste caso não sei se seria adequado ou até possível trabalhar com cenários eu fiz um vídeo explicando mais aqui:ruclips.net/video/_Jo-9nBK3s0/видео.html
Eu estou nas duas plataformas LinkedIn e Quora...se achar interessante, publique seu artigo lá e podemos ir ajustando direto nas plataformas.
Professor, no caso apar cê na legenda "distância" entre os agrupamentos, essa distância eu também posso dizer que seriam as similaridades entre os grupos formados? E teria como eu dizer de quanto é essa similaridade entre eles?
Quanto mais distante os grupos mais diferentes eles são. Quanto mais próximos os pontos dentro de cada cluster, mais parecidos eles são.