Como criar um modelo de aprendizagem não supervisionado com dbscan

DBSCAN (Densidade-Baseado aglomeração espacial de Aplicações com ruído) é um algoritmo de agrupamento popular usado como uma alternativa para a K-meio em análise preditiva. Ele não requer que você insira o número de clusters a fim de executar. Mas em troca, você tem que ajustar dois outros parâmetros.

A implementação scikit-learn fornece um padrão para os eps e parâmetros min_samples, mas você está geralmente esperado para sintonizar os. O parâmetro eps é a distância máxima entre dois pontos de dados a ser considerado no mesmo bairro. O parâmetro min_samples é a quantidade mínima de pontos de dados em um bairro para ser considerado um cluster.

Uma vantagem que DBSCAN tem sobre K-means é que DBSCAN não está restrita a um número de conjunto de aglomerados durante a inicialização. O algoritmo irá determinar um número de agrupamentos com base na densidade de uma região.

Tenha em mente, no entanto, que o algoritmo depende das eps e parâmetros min_samples para descobrir o que a densidade de cada cluster deve ser. A idéia é que esses dois parâmetros são muito mais fáceis de escolher para alguns problemas de clustering.

Na prática, você deve testar com vários algoritmos de agrupamento.

Porque o algoritmo DBSCAN tem um conceito built-in de ruído, é comumente usado para detectar valores atípicos nos dados - por exemplo, a atividade fraudulenta em cartões de crédito, e-commerce, ou créditos de seguros.

Como executar o conjunto de dados completo

Você vai precisar de carregar o conjunto de dados Iris em sua sessão Python. Aqui está o procedimento:

  1. Abra uma nova sessão do shell interativo do Python.

    Use uma nova sessão Python para que a memória é clara e você tem uma ardósia limpa para trabalhar.

  2. Cole o seguinte código no alerta e observar a saída:

    gt; gt; gt; de sklearn.datasets importar load_irisgt; gt; gt; íris = load_iris ()

    Depois de executar essas duas declarações, você não deve ver qualquer mensagens do intérprete. As íris variável deve conter todos os dados do arquivo iris.csv.

  3. Criar uma instância de DBSCAN. Digite o seguinte código para o intérprete:

    gt; gt; gt; de sklearn.cluster DBSCANgt importação; gt; gt; dbscan = DBSCAN (random_state = 111)

    A primeira linha de código importa a biblioteca DBSCAN na sessão para você usar. A segunda linha cria uma instância de DBSCAN com valores padrão para eps e min_samples.

  4. Confira o que os parâmetros foram utilizados, digitando o seguinte código para o intérprete:

    gt; gt; gt; dbscanDBSCAN (eps = 0,5, = métrica euclidiana ``, min_samples = 5, random_state = 111)


  5. Ajustar os dados da íris para o algoritmo de agrupamento DBSCAN digitando o seguinte código para o intérprete:

    gt; gt; gt; dbscan.fit (iris.data)
  6. Para verificar o resultado, digite o seguinte código para o intérprete:

    gt; gt; gt; dbscan.labels_array ([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0. , 0., 0., 0., 0., 0., 0., 0., 0., 0., -1., 0., 0., 0., 0., 0., 0., 0., 0., 1, 1., 1, 1., 1, 1., 1, -1, 1, 1, -.... 1, 1., 1, 1., 1., 1, 1., 1, -1., 1., 1., 1., 1, 1., 1, 1., 1, 1., 1, 1., 1 ., 1., 1, 1., 1, 1., 1, -1., 1., 1, 1., 1., 1, -1., 1., 1, 1 ., 1., -1., 1., 1., 1., 1, 1., 1, -1., -1., 1., -1., -1., 1., 1 ., 1., 1, 1., 1, 1., -1., -1., 1., 1., 1., -1., 1., 1, 1., 1, 1., 1, 1., 1., -1., 1., 1, -1., -1., 1., 1, 1., 1, 1., 1., 1. , 1., 1, 1., 1, 1., 1, 1.])

    Se você olhar bem de perto, você verá que DBSCAN produziu três grupos (-1, 0 e 1).

Como visualizar os cachos

Vamos obter um gráfico de dispersão da saída DBSCAN. Digite o seguinte código:

gt; gt; gt; de sklearn.decomposition PCAgt importação; gt; gt; pca = PCA (n_components = 2) .fit (iris.data) gt; gt; gt; pca_2d = pca.transform (iris.data) gt; gt; gt; para i na gama (0, pca_2d.shape [0]): gt; gt; gt; se dbscan.labels_ [i] == 0: gt; gt; gt; c1 = pl.scatter (pca_2d [i, 0], pca_2d [i, 1], c = r ``, marcador = `+`) gt; gt; gt; elif dbscan.labels_ [i] == 1: gt; gt; gt; c2 = pl.scatter (pca_2d [i, 0], pca_2d [i, 1], c = `g`, marcador = `o`) gt; gt; gt; elif dbscan.labels_ [i] == -1: gt; gt; gt; C3 = pl.scatter (pca_2d [i, 0], pca_2d [i, 1], c = `b`, marcador = `*`) gt; gt; gt; pl.legend ([C1, C2, C3], [ `Cluster 1`, `Cluster 2`, `Ruído`]) gt; gt; gt; pl.title ( `DBSCAN encontra 2 clusters e ruído) gt; gt; gt; pl.show ()

Aqui está o gráfico de dispersão que é a saída desse código:

Você pode ver que DBSCAN produziu três grupos. Note-se, no entanto, que a figura se assemelha de perto uma solução de dois cluster: Mostra apenas 17 casos de rótulo - 1. Isso é porque é um cluster de dois-solução- o terceiro grupo (-1) é ruído (outliers). Você pode aumentar o parâmetro de distância (EPS) a partir da configuração padrão de 0,5 a 0,9, e ele vai se tornar uma solução de dois cluster com nenhum ruído.

O parâmetro de distância é a distância máxima de uma observação é para o cluster mais próximo. Quanto maior o valor do parâmetro de distância, menos clusters são encontrados porque os clusters, eventualmente, fundir em outros clusters. Os rótulos -1 estão espalhados Cluster 1 e Cluster 2 em alguns locais:

  • Perto das arestas de Cluster 2 (classes Versicolor e virginica)

  • Perto do centro de Cluster 2 (classes Versicolor e virginica)

    O gráfico mostra apenas uma representação bidimensional dos dados. A distância pode também ser medido em dimensões superiores.

  • Um exemplo acima Cluster 1 (a classe setosa)

Como avaliar o modelo

Neste exemplo, DBSCAN não produziu o resultado ideal com os parâmetros padrão para o conjunto de dados Iris. O seu desempenho foi bastante consistente com outros algoritmos de agrupamento que acabam com uma solução de dois cluster.

O conjunto de dados Iris não tirar proveito dos recursos mais poderosos da DBSCAN - detecção de ruído ea capacidade de descobrir agrupamentos de formas arbitrárias. No entanto, DBSCAN é um algoritmo de agrupamento muito popular e investigação ainda está sendo feito na melhoria da sua performance.


Publicações relacionadas