0Pricing
AI Engineering Academy · Ders

Gömme Kümelendirme ve Görselleştirme

Bir gömme kümesine k-means kümeleme uygulayın ve verilerinizdeki doğal konu gruplarını keşfetmek için bunları UMAP kullanarak 2B ortamda görselleştirin.

Gömme Kümelendirme ve Görselleştirme, CoddyKit'te ücretsiz bir AI Engineering Academy dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, AI Engineering Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. AI Engineering Academy kursu toplamda 4 dersten oluşur.

Vektörleştirmeler Neden Kümelenir?

Yüzlerce veya binlerce belgeniz olduğunda, her şeyi elle okumadan hangi konuların bulunduğunu keşfetmek isteyebilirsiniz. Vektörleştirmeleri kümelemek, anlamsal açıdan benzer belgeleri otomatik olarak bir araya getirerek verilerinizin doğal yapısını ortaya çıkarır.

Yaygın uygulamalar arasında destek taleplerini otomatik etiketleme, içerik kategorilerini keşfetme, yinelenen belgeleri bulma ve kullanıcıların en çok ne hakkında soru sorduğunu anlama yer alır.

K-Means Kümelemesine Genel Bakış

K-means, her noktayı en yakın merkeze yinelemeli olarak atayıp ardından merkezleri atanan noktaların ortalaması olarak yeniden hesaplayarak n veri noktasını k kümeye ayırır. Atamalar değişmeyi bıraktığında yakınsar.

Vektörleştirmeler için k-means, yüksek boyutlu vektörleştirme uzayında birbirine yakın belgeleri bulur ve bunları anlamsal benzerliklerine göre etkili biçimde gruplandırır.

from sklearn.cluster import KMeans
import numpy as np

# corpus_embeddings: (n_docs, 1536) — pre-computed
corpus_embeddings = np.random.randn(200, 1536)  # placeholder

kmeans = KMeans(n_clusters=5, random_state=42, n_init='auto')
kmeans.fit(corpus_embeddings)

labels = kmeans.labels_
print(f'Cluster assignments: {labels[:10]}')
print(f'Unique clusters: {set(labels)}')

Doğru Küme Sayısını Seçme

k'yi (küme sayısını) seçmek en zor kısımdır. Dirsek yöntemi, farklı k değerleri için atalet değerini (merkezlere olan uzaklıkların kareleri toplamını) grafiğe döker ve daha fazla küme eklemenin ataleti önemli ölçüde azaltmayı bıraktığı noktayı arar.

Silüet puanı, bir noktanın kendi kümesine ne kadar daha iyi uyduğunu en yakın diğer kümeye uyumuyla karşılaştırarak ölçer — 1'e daha yakın puanlar daha iyidir. 3 ile 20 arasındaki k değerlerini deneyin ve en iyi puanı seçin.

from sklearn.cluster import KMeans
from sklearn.metrics import silhouette_score
import numpy as np

corpus_embeddings = np.random.randn(200, 50)  # placeholder (50D for speed)

best_k, best_score = 2, -1
for k in range(2, 11):
    km = KMeans(n_clusters=k, random_state=42, n_init='auto')
    labels = km.fit_predict(corpus_embeddings)
    score = silhouette_score(corpus_embeddings, labels, sample_size=100)
    print(f'k={k}: silhouette={score:.3f}')
    if score > best_score:
        best_score, best_k = score, k

print(f'Best k: {best_k}')

Kümeleri Bir LLM ile Etiketleme

Kümeleme sonrasında, o kümeden birkaç temsili belgeyi modele göndererek bir LLM'den her küme için insanların okuyabileceği bir etiket oluşturmasını isteyebilirsiniz. Böylece ham küme numaraları otomatik olarak anlamlı kategori adlarına dönüştürülür.

from openai import OpenAI

client = OpenAI()

def label_cluster(cluster_docs, n_examples=3):
    examples = '\n'.join(f'- {d}' for d in cluster_docs[:n_examples])
    prompt = f'Given these documents, provide a 3-word category label:\n{examples}\nLabel:'
    response = client.chat.completions.create(
        model='gpt-4o-mini',
        messages=[{'role': 'user', 'content': prompt}],
        max_tokens=20
    )
    return response.choices[0].message.content.strip()

# Example usage:
# cluster_0_docs = [documents[i] for i in range(len(documents)) if labels[i] == 0]
# print(label_cluster(cluster_0_docs))

UMAP ile Boyut Azaltma

1536 boyutlu vektörler doğrudan grafiğe dökülemez. UMAP (Uniform Manifold Approximation and Projection), yerel komşuluk yapısını korurken yüksek boyutlu verileri 2B veya 3B'ye indirger. PCA'nın aksine UMAP doğrusal değildir ve kümeleri korumada çok daha başarılıdır.

Benzer belgeler 2B grafikte birbirine yakın kalacağından UMAP, metin vektörleştirmelerini görselleştirmek için standart tercihtir.

import umap
import numpy as np

corpus_embeddings = np.random.randn(200, 1536)  # placeholder

reducer = umap.UMAP(
    n_components=2,
    metric='cosine',   # important for text embeddings
    random_state=42
)

embeddings_2d = reducer.fit_transform(corpus_embeddings)
print(f'Reduced shape: {embeddings_2d.shape}')  # (200, 2)

Kümeleri Matplotlib ile Görselleştirme

UMAP'ten 2B koordinatları ve k-means'ten küme etiketlerini elde ettiğinizde, basit bir dağılım grafiği küme yapısını görünür kılar. Her noktayı küme etiketine göre renklendirin ve grafiğin anlaşılabilmesi için temsili belge başlıklarını metin açıklamaları olarak ekleyin.

import matplotlib.pyplot as plt
import numpy as np

# Assume: embeddings_2d (n, 2), labels (n,), documents list
# Placeholder data:
np.random.seed(42)
embeddings_2d = np.random.randn(50, 2)
labels = np.random.randint(0, 5, 50)

fig, ax = plt.subplots(figsize=(10, 7))
scatter = ax.scatter(
    embeddings_2d[:, 0],
    embeddings_2d[:, 1],
    c=labels,
    cmap='tab10',
    s=60,
    alpha=0.8
)
plt.colorbar(scatter, label='Cluster')
ax.set_title('Document Embedding Clusters (UMAP)')
plt.tight_layout()
plt.savefig('/tmp/clusters.png', dpi=150)
print('Saved cluster plot')

Önemli UMAP Parametreleri

Görselleştirme kalitesini etkileyen temel UMAP hiperparametreleri:

  • n_neighbors (varsayılan 15): daha büyük değerler daha fazla küresel yapı yakalar, daha küçük değerler yerel kümeleri ortaya çıkarır
  • min_dist (varsayılan 0,1): noktaların ne kadar sıkı kümelendiğini belirler; daha küçük değerler daha sıkı kümeler, ancak kümeler arasında daha fazla örtüşme oluşturur
  • metric: metin vektörleştirmeleri için her zaman 'cosine' kullanın — Öklid uzaklığı uygun değildir

Verilerinizin yapısını en iyi ortaya çıkaran görselleştirmeyi bulmak için n_neighbors değerini 5 ile 50 arasında deneyin.

Hiyerarşik Kümeleme Alternatifi

Agglomerative hiyerarşik kümeleme, k'yi önceden belirtmenizi gerektirmeden iç içe kümelerden oluşan bir ağaç oluşturur. Nihai kümelerinizi elde etmek için ağacı seçtiğiniz bir uzaklık eşiğinde kesersiniz. Verilerinizdeki doğal konu sayısını bilmediğinizde bu yöntem kullanışlıdır.

from sklearn.cluster import AgglomerativeClustering
import numpy as np

corpus_embeddings = np.random.randn(100, 50)  # placeholder

cluster = AgglomerativeClustering(
    n_clusters=None,
    distance_threshold=1.5,
    metric='cosine',
    linkage='average'
)
labels = cluster.fit_predict(corpus_embeddings)

n_clusters = len(set(labels))
print(f'Found {n_clusters} natural clusters')

Aykırı Değerleri ve Yakın Yinelenenleri Bulma

Vektörleştirmeler, yakın yinelenen belgeleri bulmak için de mükemmeldir. Tüm belgeler arasındaki ikili kosinüs benzerliğini hesaplayın ve benzerliği 0,95'in üzerinde olan çiftleri olası yinelenenler olarak işaretleyin. Bu yöntem, yeniden ifade edilmiş yinelenenleri de yakaladığından metin farklarını karşılaştırmaktan daha dayanıklıdır.

import numpy as np

def find_near_duplicates(corpus_vecs, threshold=0.95):
    # corpus_vecs assumed L2-normalized
    sim_matrix = corpus_vecs @ corpus_vecs.T  # (n, n)
    duplicates = []
    n = len(corpus_vecs)
    for i in range(n):
        for j in range(i + 1, n):
            if sim_matrix[i, j] >= threshold:
                duplicates.append((i, j, float(sim_matrix[i, j])))
    return duplicates

# pairs = find_near_duplicates(corpus_embeddings)
# print(f'Found {len(pairs)} near-duplicate pairs')

Uygulamalı Kümeleme İş Akışı

Gerçek bir kümeleme iş akışı şu adımları sırayla izler:

  1. Tüm belgeleri text-embedding-3-small ile vektörleştirin
  2. İsteğe bağlı olarak kümelemeden önce UMAP ile 50B'ye indirgeyin (k-means'i hızlandırır)
  3. k-means ile kümeleyin ve en iyi silüet puanını bulmak için farklı k değerlerini deneyin
  4. 5 temsili belge kullanarak her kümeyi bir LLM ile etiketleyin
  5. Kümeye göre renklendirilmiş 2B UMAP dağılım grafiğini görselleştirin
  6. Aykırı değerleri gözden geçirin (herhangi bir merkezden uzaktaki noktalar)

Kümelemenin Sınırlamaları

Vektörleştirmeleri kümelerken aklınızda bulundurmanız gereken önemli sınırlamalar vardır:

  • K-means kümelerin küresel olduğunu varsayar — uzamış veya düzensiz biçimli konu grupları yanlış biçimde bölünebilir
  • Vektörleştirmeler anlamı sıkıştırır — iki belge anlamsal açıdan yakın olabilir, ancak farklı eyleme dönüştürülebilir kategorilere ait olabilir
  • Küme etiketlerinin doğrulanması gerekir — LLM tarafından oluşturulan etiketi sağlama almak için her kümeden her zaman örnek belgeler seçin

Kümeleri kesin doğru kategorilendirme sistemi olarak değil, keşif aracı olarak kullanın.

Hızlı Kontrol

Bu derste ele alınan yapay zekâ mühendisliği kavramlarını anlayıp anlamadığınızı test edin.

Ders Özeti

Bu derste şunları öğrendiniz: k-means, belgeleri gömme uzayındaki anlamsal yakınlıklarına göre gruplar, UMAP, kosinüs uzaklığını kullanarak yüksek boyutlu gömmeleri görselleştirme için 2B'ye indirger ve silhouette score, etiketlenmiş veriler olmadan doğru küme sayısını seçmenize yardımcı olur. Sırada, bellek içi aramanın ötesine geçerek üretim ortamlarına yönelik vektör veritabanlarını inceleyeceğiz.

Sıkça Sorulan Sorular

“Gömme Kümelendirme ve Görselleştirme” dersi ücretsiz mi?

Evet — “Gömme Kümelendirme ve Görselleştirme” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve AI Engineering Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. AI Engineering Academy kursu toplamda 4 dersten oluşur.

“Gömme Kümelendirme ve Görselleştirme” dersinde ne öğreneceğim?

Bir gömme kümesine k-means kümeleme uygulayın ve verilerinizdeki doğal konu gruplarını keşfetmek için bunları UMAP kullanarak 2B ortamda görselleştirin. AI Engineering Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

AI Engineering Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te AI Engineering Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.

“Gömme Kümelendirme ve Görselleştirme” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu AI Engineering Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her AI Engineering Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Vektör Gömme Nedir
  2. OpenAI ile Gömme Oluşturma
  3. NumPy ile Anlamsal Arama
  4. Gömme Kümelendirme ve Görselleştirme
← AI Engineering Academy Sayfasına Dön