Kümeleme Metrikleri ile Bilinmeyeni Tanımlama
Yayınlanan: 2022-09-08Kümeleme, verilen verileri yalnızca her örneğin özelliklerine göre gruplara ayırmaya yönelik denetimsiz bir makine öğrenimi yöntemidir. Verileri kümeler halinde sıralamak, örnekler arasındaki bilinmeyen benzerlikleri belirlemeye veya veri kümesindeki aykırı değerleri ortaya çıkarmaya yardımcı olabilir. Gerçek dünyada, kümeleme, pazarlamadan biyolojiye kadar çeşitli alanlarda önem taşır: Kümeleme uygulamaları, pazar bölümlendirmeyi, sosyal ağ analizini ve tanısal tıbbi görüntülemeyi içerir.
Bu süreç denetimsiz olduğundan, farklı özellikler etrafında çoklu kümeleme sonuçları oluşabilir. Örneğin, çeşitli kırmızı pantolon, siyah pantolon, kırmızı gömlek ve siyah gömlek görüntülerinden oluşan bir veri kümeniz olduğunu hayal edin. Bir algoritma, giysi şekline göre kümeler bulabilirken, bir diğeri renge göre gruplar oluşturabilir.
Bir veri setini analiz ederken, farklı kümeleme algoritmalarının performansını doğru bir şekilde ölçmek için bir yola ihtiyacımız var; iki algoritmanın çözümlerini karşılaştırmak veya bir kümeleme sonucunun beklenen bir çözüme ne kadar yakın olduğunu görmek isteyebiliriz. Bu makalede, aynı verilerden elde edilen farklı kümeleme sonuçlarını karşılaştırmak için kullanılabilecek bazı metrikleri inceleyeceğiz.
Kümelemeyi Anlamak: Kısa Bir Örnek
Çeşitli kümeleme metrik kavramlarını açıklamak için kullanacağımız örnek bir veri seti tanımlayalım ve ne tür kümeler üretebileceğini inceleyelim.
İlk olarak, birkaç genel gösterim ve terim:
- $D$: veri seti
- $A$, $B$: veri kümemizin alt kümeleri olan iki küme
- $C$: başka bir kümeyi karşılaştıracağımız $D$'ın temel gerçek kümelemesi
- $C$ kümelemesinde $K$ kümesi vardır, $C = {C_1, …, C_k}$
- $C'$: ikinci bir $D$ kümelemesi
- $C'$ kümesinde $K'$ kümesi vardır, $C' = {C^\prime_1, …, C^\prime_{k^\prime}}$
Kümeleme sonuçları, yalnızca sıralama özelliklerine değil, aynı zamanda toplam küme sayısına göre de değişebilir. Sonuç, algoritmaya, küçük bozulmalara duyarlılığına, modelin parametrelerine ve verilerin özelliklerine bağlıdır. Daha önce bahsedilen siyah ve kırmızı pantolon ve gömlek veri setimizi kullanarak, farklı algoritmalardan üretilebilecek çeşitli kümeleme sonuçları vardır.
Genel kümeleme $C$ ile örnek kümelemelerimiz arasında ayrım yapmak için, örnek kümelemelerimizi tanımlamak için küçük bir $c$ harfi kullanacağız:
- $c$, şekle dayalı kümelerle: $c = {c_1, c_2}$, burada $c_1$ pantolonları ve $c_2$ gömlekleri temsil eder
- $c'$, renge dayalı kümelerle: $c' = {c'_1, c'_2}$, burada $c'_1$ kırmızı kıyafetleri ve $c'_2$ siyah kıyafetleri temsil eder
- $c''$, şekil ve renge dayalı kümelerle: $c'' = {{c^{\prime \prime}}_1, {c^{\prime \prime}}_2, {c^{\prime \prime}}_3, {c^{\prime \prime}}_4}$, burada ${c^{\prime \prime}}_1$ kırmızı pantolonu temsil eder, ${c^{\prime \prime}}_2 $ siyah pantolonları, ${c^{\prime \prime}}_3$ kırmızı gömlekleri ve ${c^{\prime \prime}}_4$ siyah gömlekleri temsil eder
Ek kümelemeler, bir gömleğin kolsuz veya kollu olması gibi farklı özelliklere dayalı olarak dörtten fazla küme içerebilir.
Örneğimizde görüldüğü gibi, bir kümeleme yöntemi, bir veri kümesindeki tüm örnekleri boş olmayan ayrık alt kümelere böler. $c$ kümesinde, hem pantolon alt kümesine hem de gömlek alt kümesine ait hiçbir görüntü yoktur: $c_1 \cap c_2 = \emptyset$. Bu kavram genişletilebilir; herhangi bir kümenin hiçbir iki alt kümesi aynı örneğe sahip değildir.
Kümeleme Karşılaştırma Metriklerine Genel Bakış
Kümelemeleri karşılaştırmak için çoğu kriter $C, C'$ çiftinin karışıklık matrisi kullanılarak tanımlanabilir. Karışıklık matrisi, $kk'$th öğesi ($k$th satır ve $k'$th sütunundaki öğe) $ kümelerinin kesişimindeki örneklerin sayısı olan bir $K \times K'$ matrisi olacaktır. $C$'ın C_k$'ı ve $C'$'ın $C'_{k'}$'ı:
\[n_{kk'} = |C_k \cap C'_{k'}|\]$D$ veri kümesinin 100 kırmızı pantolon, 200 siyah pantolon, 200 kırmızı gömlek ve 300 siyah gömlek olduğunu varsayarak, basitleştirilmiş siyah ve kırmızı pantolon ve gömlek örneğimizi kullanarak bunu çözeceğiz. $c$ ve $c''$ karışıklık matrisini inceleyelim:
$K = 2$ ve $K'' = 4$ olduğundan, bu 2 $ \times 4$ matrisidir. $k = 2$ ve $k'' = 3$ seçelim. $n_{kk'} = n_{23} = 200$ öğesini görüyoruz. Bu, $c_2$ (gömlekler) ve ${c^{\prime\prime}}_3$ (kırmızı gömlekler) kesişiminin 200 olduğu anlamına gelir; bu, $c_2 \cap {c^{\prime\prime} için doğrudur. }_3$ sadece kırmızı gömlek takımı olurdu.
Kümeleme metrikleri, temel alınan küme karşılaştırma yöntemine göre genel olarak üç gruba ayrılabilir:
Bu makalede, mevcut birçok ölçümden yalnızca birkaçına değineceğiz, ancak örneklerimiz üç kümeleme metrik grubunu tanımlamaya yardımcı olacaktır.
çift sayma
Çift sayma, tüm örnek çiftlerinin incelenmesini, ardından kümelemelerin hemfikir olduğu ve uyuşmadığı yerlerde çiftlerin sayılmasını gerektirir. Her bir örnek çifti, küme elemanı sayılarının ($N_{ij}$) karışıklık matrisinden elde edildiği dört kümeden birine ait olabilir:
- $S_{11}$, $N_{11}$ öğeleriyle: çiftin öğeleri hem $C$ hem de $C'$ altında aynı kümededir
- $c$ ve $c''$ karşılaştırıldığında, iki kırmızı gömlek $S_{11}$'ın altına düşer.
- $S_{00}$, $N_{00}$ öğeleriyle: çiftin öğeleri, hem $C$ hem de $C'$ altında farklı kümelerdedir
- $c$ ve $c''$ karşılaştırıldığında bir çift kırmızı gömlek ve siyah pantolon $S_{00}$ altına düşer
- $S_{10}$, $N_{10}$ öğeleriyle: çiftin öğeleri $C$ içinde aynı kümede ve $C'$ içinde farklı kümelerde
- $c$ ve $c''$ karşılaştırıldığında, bir çift kırmızı gömlek ve siyah gömlek $S_{10}$'ın altına düşer.
- $S_{01}$, $N_{01}$ öğeleriyle: çiftin öğeleri $C$ içinde farklı kümelerde ve $C'$ içinde aynı kümededir
- $c$ ve $c''$ karşılaştırılırken $S_{01}$ öğesi yok ($N_{01} = 0$)
Rand endeksi $(N_{00} + N_{11})/(n(n-1)/2)$ olarak tanımlanır, burada $n$ örnek sayısını temsil eder; (benzer şekilde işlem gören çiftlerin sayısı)/(toplam çift sayısı) olarak da okunabilir. Teorik olarak değeri 0 ile 1 arasında olmasına rağmen, aralığı pratikte genellikle çok daha dardır. Daha yüksek bir değer, kümeler arasında daha fazla benzerlik anlamına gelir. (1'lik bir Rand dizini, iki kümelemenin aynı kümelere sahip olduğu mükemmel bir eşleşmeyi temsil eder.)
Rand endeksinin bir sınırlaması, öğe sayısına yaklaşmak için küme sayısı arttığında davranışıdır; bu durumda, kümeleme benzerliğini doğru bir şekilde ölçmek için zorluklar yaratarak 1'e yakınsar. Bu sorunu çözmek için Rand endeksinin birkaç geliştirilmiş veya değiştirilmiş sürümü sunulmuştur. Bir varyasyon düzeltilmiş Rand endeksidir ; ancak, iki kümelemenin sabit sayıda küme ve küme öğesi ile rastgele çizildiğini varsayar.
Bilgi Teorisi
Bu metrikler, genel bilgi teorisi kavramlarına dayanmaktadır. İkisini tartışacağız: entropi ve karşılıklı bilgi (MI).
Entropi, bir kümelemede ne kadar bilgi olduğunu tanımlar. Bir kümelemeyle ilişkili entropi 0 ise, rastgele seçilmiş bir örneğin kümesi hakkında hiçbir belirsizlik yoktur; bu, yalnızca bir küme olduğunda doğrudur.
MI, bir kümelemenin diğeri hakkında ne kadar bilgi verdiğini açıklar. MI, $C$'daki bir örneğin kümesini bilmenin, $C'$'daki örneğin kümesi hakkındaki belirsizliği ne kadar azalttığını gösterebilir.
Normalleştirilmiş karşılıklı bilgi , kümelenmelerin entropilerinin geometrik veya aritmetik ortalaması ile normalize edilen MI'dır. Standart MI sabit bir değere bağlı değildir, bu nedenle normalleştirilmiş karşılıklı bilgi daha yorumlanabilir bir kümeleme metriği sağlar.
Bu kategorideki bir diğer popüler ölçüm, kümelemelerin hem entropisine hem de MI'sına bağlı olan bilgi varyasyonudur (VI). $H(C)$ bir kümelemenin entropisi ve $I(C, C')$ iki kümeleme arasındaki MI olsun. İki kümeleme arasındaki VI, $VI(C,C') = H(C)+H(C')-2I(C,C')$ olarak tanımlanabilir. 0'lık bir VI, iki kümeleme arasında mükemmel bir eşleşmeyi temsil eder.
Örtüşmeyi Ayarla
Kümeler arasındaki maksimum örtüşmeye dayalı olarak $C$ içindeki kümeler ile $C'$ içindeki kümeler için en iyi eşleşmeyi belirlemeyi içerir. Bu kategorideki tüm metrikler için 1, kümelemelerin aynı olduğu anlamına gelir.
Maksimum eşleştirme ölçüsü , karışıklık matrisini azalan sırayla tarar ve ilk olarak karışıklık matrisinin en büyük girdisiyle eşleşir. Daha sonra eşleşen kümeleri kaldırır ve işlemi kümeler tükenene kadar sırayla tekrarlar.
F-ölçü başka bir küme örtüşme metriğidir. Maksimum eşleştirme ölçüsünden farklı olarak, F-ölçü, iki kümelemeyi karşılaştırmak yerine, bir kümelemeyi optimal bir çözümle karşılaştırmak için sıklıkla kullanılır.
F-ölçümü ile Kümeleme Metriklerini Uygulama
F-ölçümünün makine öğrenimi modellerinde ve arama motorları gibi önemli uygulamalarda yaygın kullanımı nedeniyle, bir örnekle F-ölçüsünü daha detaylı inceleyeceğiz.
F-ölçü Tanımı
$C$'ın temel gerçeğimiz veya optimal çözümümüz olduğunu varsayalım. $k \in [1, K]$ olduğu $C$ içindeki herhangi bir $k$th kümesi için, $C'$ kümeleme sonucundaki her kümeyle ayrı bir F-ölçüsünü hesaplayacağız. Bu bireysel F ölçüsü, $C^\prime_{k'}$ kümesinin $C_k$ kümesini ne kadar iyi tanımladığını gösterir ve bu kümeler için kesinlik ve geri çağırma (iki model değerlendirme metriği) aracılığıyla belirlenebilir. $I_{kk'}$'ı $C$'ın $k$th kümesindeki ve $C'$'ın $k'$th kümesindeki öğelerin kesişimi ve sayı olarak da $\lvert C_k \rvert$ olarak tanımlayalım $k$th kümesindeki öğelerin sayısı.
Kesinlik $p = \frac{I_{kk'}}{\lvert C'_{k'} \rvert}$
$r = \frac{I_{kk'}}{\lvert C_{k} \rvert}$'ı hatırlayın
Ardından, $k$th ve $k'$th kümelerinin bireysel F-ölçüleri, bu kümeler için kesinlik ve geri çağırmanın harmonik ortalaması olarak hesaplanabilir:
\[F_{kk'} = \frac{2rp}{r+p} = \frac{2I_{kk'}}{|C_k|+|C'_{k'}|}\]Şimdi, $C$ ve $C'$'ı karşılaştırmak için, genel F-ölçüsüne bakalım. İlk olarak, değerleri kümelerin bireysel F-ölçüleri olan bir beklenmedik durum tablosuna benzer bir matris oluşturacağız. $C$'ın kümelerini bir tablonun satırları olarak ve $C'$'ın kümelerini sütunlar olarak, tablo değerleri tek tek F-ölçülerine karşılık gelen şekilde eşleştirdiğimizi varsayalım. Maksimum bireysel F-ölçüsüne sahip küme çiftini belirleyin ve bu kümelere karşılık gelen satır ve sütunu kaldırın. Kümeler tükenene kadar bunu tekrarlayın. Son olarak, genel F-ölçümünü tanımlayabiliriz:
\[F(C, C') = \frac{1}{n} \sum_{i=1}^K n_imax(F(C_i, C'_j)) \forall j \in {1, K'}\ ]Gördüğünüz gibi, genel F ölçüsü, kümeler için maksimum bireysel F ölçülerimizin ağırlıklı toplamıdır.
Veri Kurulumu ve Beklenen Sonuçlar
Jupyter not defteri gibi makine öğrenimine uygun herhangi bir Python not defteri ortamımız olarak çalışacaktır. Başlamadan önce GitHub depomun README'sini, genişletilmiş readme_help_example.ipynb
örnek dosyasını ve requirements.txt
dosyasını (gerekli kitaplıklar) incelemek isteyebilirsiniz.
Haber makalelerinden oluşan GitHub deposundaki örnek verileri kullanacağız. Veriler, category
, headline
, date
ve short_description
dahil olmak üzere bilgilerle düzenlenir:
kategori | başlık | tarih | Kısa Açıklama | |
---|---|---|---|---|
49999 | DÜNYA POSTU | Filipinler'de Uyuşturucu Savaşından Ölenlerin Sayısı 1800'e Çıktı | 2016-08-22 | Sadece son yedi hafta içinde. |
49966 | TATMAK | Evet, Evde Gerçek Küba Tarzı Kahve Yapabilirsiniz | 2016-08-22 | Her şey kremayla ilgili. |
49965 | STİL | KFC'nin Kızarmış Tavuk Kokulu Güneş Kremi Kee… | 2016-08-22 | Kendinize parmak kokusu yaptırmak istediğinizde… |
49964 | SİYASET | HUFFPOLLSTER: Demokratların Sağlam Bir Şansı Var… | 2016-08-22 | HuffPost'un ankete dayalı modeli, Senato R… |
Verileri okumak, analiz etmek ve işlemek için pandaları kullanabiliriz. Verileri tarihe göre sıralayacağız ve tam veri seti büyük olduğu için demomuz için küçük bir örnek (10.000 haber başlığı) seçeceğiz:
import pandas as pd df = pd.read_json("./sample_data/example_news_data.json", lines=True) df.sort_values(by='date', inplace=True) df = df[:10000] len(df['category'].unique())
Çalıştırdıktan sonra, bu veri örneğinde 30 kategori olduğundan, not defterinin sonucu 30 olarak görmelisiniz. Verilerin nasıl saklandığını görmek için df.head(4)
da çalıştırabilirsiniz. (Bu bölümde görüntülenen tabloyla eşleşmelidir.)
Kümeleme Özelliklerini Optimize Etme
Kümelemeyi uygulamadan önce, modelimizin aşağıdakiler de dahil olmak üzere gereksiz özelliklerini azaltmak için metni önceden işlememiz gerekir:
- Tek tip bir vakaya sahip olmak için metni güncelleme.
- Sayısal veya özel karakterlerin kaldırılması.
- Lemmatizasyon yapmak.
- Durdurma sözcüklerini kaldırma.
import re import nltk from nltk.corpus import stopwords from nltk.stem import WordNetLemmatizer wordnet_lemmatizer = WordNetLemmatizer() nltk.download('stopwords') stop_words = stopwords.words('english') nltk.download('wordnet') nltk.download('omw-1.4') def preprocess(text: str) -> str: text = text.lower() text = re.sub('[^az]',' ',text) text = re.sub('\s+', ' ', text) text = text.split(" ") words = [wordnet_lemmatizer.lemmatize(word, 'v') for word in text if word not in stop_words] return " ".join(words) df['processed_input'] = df['headline'].apply(preprocess)
Ortaya çıkan önceden işlenmiş başlıklar, df.head(4)
tekrar çalıştırarak gözlemleyebileceğiniz processed_input
olarak gösterilir:
kategori | başlık | tarih | Kısa Açıklama | işlenmiş_giriş | |
---|---|---|---|---|---|
49999 | DÜNYA POSTU | Filipinler'de Uyuşturucu Savaşından Ölenlerin Sayısı 1800'e Çıktı | 2016-08-22 | Sadece son yedi hafta içinde. | Filipinler'de uyuşturucu savaşında ölenler tırmanıyor |
49966 | TATMAK | Evet, Evde Gerçek Küba Tarzı Kahve Yapabilirsiniz | 2016-08-22 | Her şey kremayla ilgili. | evet evde gerçek küba tarzı kahve yap |
49965 | STİL | KFC'nin Kızarmış Tavuk Kokulu Güneş Kremi Kee… | 2016-08-22 | Kendinize parmak kokusu yaptırmak istediğinizde… | kfc yavru tavuk kokulu güneş kremi cildi korur… |
49964 | SİYASET | HUFFPOLLSTER: Demokratların Sağlam Bir Şansı Var… | 2016-08-22 | HuffPost'un ankete dayalı modeli, Senato R… | huffpollster demokratlar sağlam bir şans senatoyu geri almak |
Şimdi, herhangi bir makine öğrenimi modelini uygulayabilmek için her bir başlığı sayısal bir vektör olarak temsil etmemiz gerekiyor. Bunu başarmak için çeşitli özellik çıkarma teknikleri vardır; TF-IDF (terim frekansı-ters belge frekansı) kullanacağız. Bu teknik, belgelerde (örneğimizde, haber başlıklarında) yüksek sıklıkta geçen kelimelerin etkisini azaltır, çünkü bunlar açıkça onları kümelemede veya sınıflandırmada belirleyici özellikler olmamalıdır.
from sklearn.cluster import AgglomerativeClustering, KMeans from sklearn.feature_extraction.text import TfidfVectorizer vectorizer = TfidfVectorizer(max_features=300, tokenizer=lambda x: x.split(' ')) tfidf_mat = vectorizer.fit_transform(df['processed_input']) X = tfidf_mat.todense() X[X==0]=0.00001
Daha sonra, bu özellik vektörleri üzerinde ilk kümeleme yöntemimiz olan aglomeratif kümelemeyi deneyeceğiz.
Kümeleme Yöntemi 1: Aglomeratif Kümeleme
Verilen haber kategorilerini en uygun çözüm olarak kabul ederek, bu sonuçları aglomeratif kümeleme sonuçlarıyla karşılaştıralım (veri setinde 30 kategori olduğundan istenilen küme sayısı 30 olsun):
clusters_agg = AgglomerativeClustering(n_clusters=30).fit_predict(X) df['class_prd'] = clusters_agg.astype(int)
Ortaya çıkan kümeleri tamsayı etiketleri ile tanımlayacağız; aynı kümeye ait başlıklara aynı tamsayı etiketi atanır. GitHub compare_clusters
karşılaştırma_kümeler modülündeki cluster_measure
işlevi, kümeleme sonucumuzun ne kadar doğru olduğunu görebilmemiz için toplam F-ölçüsünü ve mükemmel eşleşen kümelerin sayısını döndürür:
from clustering.compare_clusters import cluster_measure # 'cluster_measure` requires given text categories to be in the column 'text_category` df['text_category'] = df['category'] res_df, fmeasure_aggregate, true_matches = cluster_measure(df, gt_column='class_gt') fmeasure_aggregate, len(true_matches) # Outputs: (0.19858339749319176, 0)
Bu küme sonuçlarını optimal çözümle karşılaştırdığımızda, gerçek sınıf gruplarıyla eşleşen 0,198 ve 0 kümelik düşük bir F-ölçüsünü elde ederiz, bu da kümelenme kümelerinin seçtiğimiz başlık kategorileri ile hizalanmadığını gösterir. Nasıl göründüğünü görmek için sonuçtaki bir kümeye göz atalım.
df[df['class_prd'] == 0]['category'].value_counts()
Sonuçları incelediğimizde bu kümenin tüm kategorilerden başlıklar içerdiğini görüyoruz:
POLITICS 1268 ENTERTAINMENT 712 THE WORLDPOST 373 HEALTHY LIVING 272 QUEER VOICES 251 PARENTS 212 BLACK VOICES 211 ... FIFTY 24 EDUCATION 23 COLLEGE 14 ARTS 13
Bu nedenle, düşük F-ölçümüz, sonuç kümelerimizin optimal çözümle uyumlu olmadığı düşünüldüğünde anlamlıdır. Ancak, seçtiğimiz kategori sınıflandırmasının veri setinin yalnızca bir olası bölümünü yansıttığını hatırlamak önemlidir. Buradaki düşük bir F ölçüsü, kümeleme sonucunun yanlış olduğu anlamına gelmez, ancak kümeleme sonucunun, verileri bölmek için istediğimiz yöntemle eşleşmediği anlamına gelir.
Kümeleme Yöntemi 2: K-araçlar
Aynı veri kümesi üzerinde başka bir popüler kümeleme algoritmasını deneyelim: k-kümeleme anlamına gelir. Yeni bir dataframe oluşturacağız ve cluster_measure
fonksiyonunu tekrar kullanacağız:
kmeans = KMeans(n_clusters=30, random_state=0).fit(X) df2 = df.copy() df2['class_prd'] = kmeans.predict(X).astype(int) res_df, fmeasure_aggregate, true_matches = cluster_measure(df2) fmeasure_aggregate, len(true_matches) # Outputs: (0.18332960871141976, 0)
Aglomeratif kümeleme sonucu gibi, k-ortalama kümeleme sonucumuz da verilen kategorilere benzemeyen kümeler oluşturdu: Optimal çözümle karşılaştırıldığında 0,18'lik bir F-ölçüsüne sahiptir. İki kümeleme sonucu benzer F-ölçülerine sahip olduğundan, bunları birbirleriyle karşılaştırmak ilginç olacaktır. Zaten kümelemelerimiz var, bu yüzden sadece F-ölçüsünü hesaplamamız gerekiyor. İlk olarak, her iki sonucu da tek bir sütuna getireceğiz, class_gt
kümelemeli kümeleme çıktısına ve class_prd
k-araç kümeleme çıktısına sahip olacak şekilde:
df1 = df2.copy() df1['class_gt'] = df['class_prd'] res_df, fmeasure_aggregate, true_matches = cluster_measure(df1, gt_column='class_gt') fmeasure_aggregate, len(true_matches) # Outputs: (0.4030316435020922, 0)
0,4'lük daha yüksek bir F-ölçümü ile, iki algoritmanın kümelemelerinin optimal çözüme göre birbirine daha çok benzediğini gözlemleyebiliriz.
Gelişmiş Kümeleme Sonuçları Hakkında Daha Fazlasını Keşfedin
Kullanılabilir kümeleme karşılaştırma ölçütlerinin anlaşılması, makine öğrenimi modeli analizinizi genişletecektir. F-ölçümü kümeleme metriğini çalışırken gördük ve bu öğrenmeleri bir sonraki kümeleme sonucunuza uygulamak için ihtiyacınız olan temel bilgileri size verdik. Daha fazlasını öğrenmek için, daha fazla okumak için en iyi seçimlerim:
- Kümelemeleri Karşılaştırma - Dorothea Wagner ve Silke Wagner'e Genel Bir Bakış
- Kümelemeleri karşılaştırma—Marina Meila'dan bilgi tabanlı bir mesafe
- Kümeleme Karşılaştırması için Bilgi Teorik Ölçütleri: Nguyen Xuan Vinh, Julien Epps ve James Bailey tarafından Varyantlar, Özellikler, Normalleştirme ve Şans için Düzeltme
Toptal Mühendislik Blogunda Daha Fazla Okuma:
- Python/NetworkX ile Grafik Veri Bilimi
- Etiketsiz Verilerle Yarı Denetimli Görüntü Sınıflandırma
- Makine Öğreniminde Gömmeler: Karmaşık Verileri Basitleştirme
Toptal Engineering Blog, bu makalede sunulan kod örneklerini gözden geçirdiği için Luis Bronchal'a şükranlarını sunar.