É necessário padronizar seus dados antes do cluster? No exemplo do scikit learn
DBSCAN, aqui eles fazem isso na linha:
X = StandardScaler().fit_transform(X)
Mas não entendo por que é necessário. Afinal, o clustering não assume nenhuma distribuição específica de dados - é um método de aprendizado não supervisionado, portanto seu objetivo é explorar os dados.
Por que seria necessário transformar os dados?
python
clustering
clusters
anomaly-detection
Candic3
fonte
fonte
Respostas:
A normalização nem sempre é necessária, mas raramente dói.
Alguns exemplos:
K-significa :
Exemplo no Matlab:
(FYI: Como posso detectar se meu conjunto de dados está em cluster ou não em cluster (por exemplo, formando um único cluster )
Armazenamento em cluster distribuído :
Rede neural artificial (entradas) :
Rede neural artificial (entradas / saídas)
Curiosamente, alterar as unidades de medida pode até levar a uma estrutura de agrupamento muito diferente: Kaufman, Leonard e Peter J. Rousseeuw .. "Encontrar grupos em dados: uma introdução à análise de agrupamentos". (2005).
Kaufman et al. continua com algumas considerações interessantes (página 11):
fonte
A padronização dos dados é recomendada porque, caso contrário, o intervalo de valores em cada recurso atuará como um peso ao determinar como agrupar dados, o que geralmente é indesejável.
Por exemplo, considere a métrica padrão para a maioria dos algoritmos de clustering (incluindo DBSCAN no sci-kit learn) -
euclidean
, também conhecida como norma L2. Se um dos seus recursos tiver um intervalo de valores muito maior que os outros, o cluster será completamente dominado por esse único recurso. Para ilustrar essa olhada no exemplo simples abaixo:A partir disso, você deve ver que as distâncias euclidianas entre as versões não padronizadas são dominadas pela terceira coluna, porque sua faixa de valores é muito maior que as outras duas. No entanto, quando os dados são padronizados, isso não se torna mais um problema e considera cada recurso igual ao calcular a distância entre cada ponto de dados.
fonte
Não é estritamente necessário padronizar, se é necessário ou não, pode depender da métrica da distância que você escolher.
Por exemplo, se você optar pela distância de Mahalanobis, a separação será baseada no número de desvios padrão que separam os pontos e não na distância absoluta entre eles, portanto, é uma métrica invariável da escala.
Como ocorre com muitas coisas no aprendizado de máquina, não há uma resposta rápida e difícil, e a única maneira de saber com certeza é aplicar uma variedade de técnicas, ver quais fornecem os resultados mais adequados para seus dados.
fonte
Em alguns casos, achei útil definir uma função de "avaliação de negócios", definindo a "importância" das dimensões usadas para agrupar. Por exemplo, para quitandas que agrupam os clientes, se as maçãs forem duas vezes mais caras que as laranjas, o número de maçãs será dobrado.
fonte