Algoritmo de classificação com base nas distâncias médias de um ponto de teste aos pontos de cada classe

7

Existe algum algoritmo de classificação que atribua um novo vetor de teste ao cluster de pontos cuja distância média é mínima?

Deixe-me escrever melhor: vamos imaginar que temos K aglomerados de Tkaponta cada. Para cada cluster k, calculo a média de todas as distâncias entrex(0) e x(i), Onde x(i) é um ponto no cluster k.

O ponto de teste é atribuído ao cluster com o mínimo dessas distâncias.

Você acha que esse é um algoritmo de classificação válido? Em teoria, se o cluster for "bem formado" como você tem após um mapeamento discriminante de pesca linear, poderemos ter uma boa precisão de classificação.

O que você acha desse algo? Eu tentei, mas o resultado é que a classificação é fortemente influenciada pelo cluster com o maior número de elementos.

def classify_avg_y_space(logging, y_train, y_tests, labels_indices):
    my_labels=[]
    distances=dict()
    avg_dist=dict()
    for key, value in labels_indices.items():
        distances[key] = sk.metrics.pairwise.euclidean_distances(y_tests, y_train[value])
        avg_dist[key]=np.average(distances[key], axis=1)

    for index, value in enumerate(y_tests):
      average_distances_test_cluster = { key : avg_dist[key][index] for key in labels_indices.keys() }
      my_labels.append(min(average_distances_test_cluster, key=average_distances_test_cluster.get))
    return my_labels
asdf
fonte
Isso é chamado de atribuição. Qualquer função de distância entre um ponto e uma função de ligação de classe (consulte stats.stackexchange.com/a/217742/3277 ) pode ser usada, não apenas entre a ligação média que você está usando. Eu implementei uma função para o SPSS que atribui várias funções de ligação.
ttnphns

Respostas:

9

É uma boa idéia, mas tem uma falha importante - é muito sensível à disseminação dos dados.

Para esclarecer a questão, dado k clusters disjuntos C1,,Ck, você pergunta se faz sentido classificar uma nova amostra x de acordo com a regra

argmini[k]1|Ci|xCixx

Observe que essa regra é realmente semelhante às regras que existem como algoritmos conhecidos, como que é de fato um dos vizinhos mais próximos, ou que é chamado , mas é usado pelo k-Means para atribuição de cluster e pode ser visto no LDA no caso em que a covariância subjacente matriz é a identidade (até escalar). (Observe que, em geral, o LDA também leva em consideração a forma [propagação + orientação] dos clusters).

argmini[k]minxCixx
argmini[k]1|Ci|xCixx
sklearnNearestCentroid

Em muitos casos, a regra proposta se comportará de maneira semelhante a NearestCentroid, especialmente se os clusters estiverem bem separados e tiverem variações semelhantes (nesse caso, acho que é possível limitar a distância média em termos da distância do centróide).

No entanto, como calcula a média das distâncias em todos os pontos do cluster, ele é flagrantemente tendencioso em relação aos clusters de baixa variação. Eu acredito que é a verdadeira fonte do rótulo incorreto que você notou.

Para ilustrar esse efeito, podemos traçar o limite de decisão de nossos classificadores. Parcelas são descaradamente baseado em sklearn's exemplo .

insira a descrição da imagem aqui

No gráfico anterior, eu gerei dois conjuntos de dados de diferentes distribuições normais. O violeta veio de e o amarelo veio de Então, cada ponto no espaço é colorido de acordo com a regra. A linha que separa as regiões é o limite da decisão. Existem 200 pontos no cluster violeta e 50 no cluster amarelo. As marcas do centróide de cada cluster. Observe que o cluster violeta não está alinhado com os eixos para enfatizar a diferença entre o LDA e o centróide mais próximo.

N((03),(10221)2)
N((03),(1001))
+
tmrlvi
fonte
Esta é uma excelente ilustração de um ponto não intuitivo. Obrigado e bem-vindo ao CV!
Stephan Kolassa
+1 Muito bom, no entanto, estou confuso com o seu enredo superior esquerdo. O Centroid mais próximo deve ter um limite de decisão perpendicular à linha que liga os dois centróides. Este não parece ser o caso.
Ameba
Por favor, descreva a figura na resposta, em particular, qual é a linha de fronteira entre as duas áreas.
ttnphns
@amoeba Você está certo. Mas observe que o eixo não está na mesma escala (pelo mesmo motivo, o cluster amarelo não tem a forma de um círculo).
tmrlvi
@ttnphns A linha de fronteira entre as duas áreas é a de decisão. Eu adicionei mais descrição no post.
tmrlvi