تقييم جودة التكتل: الخصائص ، المقاييس ، كود GitHub

يعد التجميع أمرًا سحريًا: فهو يحول كمية كبيرة من البيانات غير المنظمة إلى مجموعة من المجموعات التي يحتمل أن تكون مرئية ، ويتيح لنا تحليلها استخلاص استنتاجات حول محتوى هذه البيانات.


هناك الكثير من التطبيقات لطرق التجميع. على سبيل المثال ، نقوم بتجميع استعلامات البحث من أجل زيادة قدرة التعميم لخوارزميات الترتيب: أي إحصائيات محسوبة من مجموعة من الاستعلامات المماثلة أكثر موثوقية من نفس الإحصائيات المحسوبة لاستعلام منفصل واحد. يسمح لك التجميع بتحسين جودة الاستعلامات باستخدام تركيبات نادرا ما تتم مواجهتها. مثال واضح آخر هو Yandex.News ، التي تولد قصصًا إخبارية تلقائيًا.


في عام 2013 ، كنت محظوظًا للمشاركة في تطوير خوارزمية تجميع معقدة للغاية. كان من الضروري تجميع مئات الآلاف من الأشياء بجودة عالية جدًا والقيام بذلك بسرعة: في عشرات الثواني على جهاز واحد. كانت الخطوة الأولى بناء نظام لتقييم الجودة ، وفي هذه المقالة سأتحدث عنه.




, , , .


, : , , , /- . , . — .


1.


, . .



, . Amigo et. al, 2009. A comparison of Extrinsic Clustering Evaluation Metrics based on Formal Constraints , , .


1.1. Cluster Homogeneity,



.


1.2. Cluster Completeness,



, . .


1.3. Rag Bag



: , , («»), . , , , .


, . , . «» : , .


1.4. Size vs Quantity



.


2.


.


د = { د 1 ، . . . ، د ن }. . , ه 2 د — ,


e 1 ، e 2E : ( e 1e 2) ( e 1 = e 2 )


: . , .


, : T = { t 1 ، . . . ، ر ن } C={c1,...,cm}. t(d) c(d) , , , d.


2.1. , ()


. , . , .


. 3 («»), 3 («») 2 («»). : «» , «» «».



88=64 , :
33+33+22=22 ;
6422=42 .


«» «» , - «» .


, :
TP=18 ;
FP=6 , ;
TN=36 ;
FN=4 , .


, :


P=TP/(TP+FP)=0.75


R=TP/(TP+FN)=0.82


F1=2PRP+R=0.78


, : .


. , : .


pairwise- — . - pairwise- .


2.2. ,


:


P(c,t)=|ct||c|


R(c,t)=|ct||t|


: «» (y) «» (v). 25 10 . 25/35, — 10/35. . , 30 12 , 25/30, — 10/12.



: , . :


P ( c ، t ) = R ( t ، c )


F-:


F 1 ( c ، t ) = 2 P ( c ، t ) R ( c ، t )P ( ج ، ر ) + R ( ج ، ر )


. «» , Purity:


Purity=mi=1|ci|mmax1jnP(ci,tj)


, :


IversePurity=nj=1|tj|nmax1imP(ci,tj)


Purity , . IversePurity — . , ? , . :


|c2||t2||t1||c1|



|c2|=1000, |c1|=2, |t1|=20, |t2|=982. c1 t1, :


|c1t1|=2,|c1t2|=0,


|c2t1|=18,|c2t2|=982


:


P(c1,t1)=|c1t1|/|c1|=2/2=1


P(c2,t2)=|c2t2|/|c2|=982/1000=0.982


P(t1,c2)=|t1c2|/|t1|=18/20=0.9


P(t2,c2)=|c2t2|/|t2|=982/982=1


, Purity InversePurity . :


Purity=0.9982


IversePurity=0.9823


, t1 . , . . Purity t1 c1, InversePurity — c2. !


F-:


F=nj=1|tj|nmax1imF(ci,tj)


, , . , , , .


2.3. BCubed-


. , . , , ? ?



, BCubed- . :


BCP(d)=|c(d)t(d)||c(d)|


BCR(d)=|c(d)t(d)||t(d)|


:


BCP=1NdDBCP(d)


BCR=1NdDBCR(d)


BCubed Precision Cluster Homogeneity Rag Bag, BCubed Recall — Cluster Completeness Size vs Quantity. — F- — :


BCF=2BCPBCRBCP+BCR


3.


, . , .


, , . D={a,b,c,d,e,f,g,h,i} , t1={a,b,c,d,e} t2={f,g,h,i} («» «» ).


: c1={a,b,c,d,g}, c2={e,f,h,i}.



3.1. BCubed


BCubed- :


BCP(ti)=1|ti|dtiBCP(d)


BCR(ti)=1|ti|dtiBCR(d)


:


BCP(a)=BCP(b)=BCP(c)=BCP(d)=|t1c1||c1|=0.8,BCP(e)=|t1c2||c2|=0.25


BCP(f)=BCP(h)=BCP(i)=|t2c2||c2|=0.75,BCP(g)=|t2c1||c1|=0.2


:


BCP(t1)=BCP(a)+BCP(b)+BCP(c)+BCP(d)+BCP(e)5=40.8+0.255=0.69


BCP(t2)=BCP(f)+BCP(g)+BCP(h)+BCP(i)4=30.75+0.24=0.6125


:


BCR(a)=BCR(b)=BCR(c)=BCR(d)=|t1c1||t1|=0.8,BCR(e)=|t1c2||t1|=0.2


BCR(f)=BCR(h)=BCR(i)=|t2c2||t2|=0.75,BCP(g)=|t2c1||t2|=0.25


BCR(t1)=BCR(a)+BCR(b)+BCR(c)+BCR(d)+BCR(e)5=40.8+0.25=0.68


BCR(t2)=BCR(f)+BCR(g)+BCR(h)+BCR(i)4=30.75+0.254=0.625


BCP BCR :


BCP=BCP(t1)+BCP(t2)2=0.65125


BCR=BCR(t1)+BCR(t2)2=0.6525


.


3.2. Expected Cluster Completeness


. , , , , - .


— F- — . , ? .


, , «». . — . : , , .


— :


f:CT


f (cluster completeness):


CCf(t)=maxcf1(t)|ct||t|


:


CCf(T)=1TtTCCf(t)


— , f. : .


. , f(c)=t,


P(f(c)=t)=P(c,t)=|ct||c|


f :


P(f)=cC|cf(c)||c|


:


ECC(t)=f:CTP(f)CCf(t)


:


ECC=1|T|tTECC(t)


:


ECC=f:CTP(f)CCf(T)


. t c1, c2, ..., ck, :


|tc1||tc2|...|tck|


c1 t


P(f(c1)=t)=|c1t||c1|



R(c1,t)=|c1t||t|


, , . R(c1,t).


c1 , p(c2,t) t c2. R(c2,t). , ,


P(c1,t)R(c1,t)+P(c2,t)R(c2,t)(1P(c1,t))+...


ECC . sortedMatchings , , . Precision() Recall() . :


double ExpectedClusterCompleteness(const TMatchings& sortedMatchings) {
    double expectedClusterCompleteness = 0.;
    double probability = 1.;
    for (const TMatching& matching : sortedMatchings) {
        expectedClusterCompleteness += matching.Recall() * matching.Precision() * probability;
        probability *= 1. - matching.Precision();
    }
    return expectedClusterCompleteness;
}

, F1-, !


ECC , 3. t1 c1, t2c2. :


ECC(t1)=R(c1,t2)P(c1,t1)+R(c2,t1)P(c2,t1)(1P(c1,t1))
ECC(t1)=0.82+0.20.25(10.8)=0.65


ECC(t2)=R(c2,t2)P(c2,t2)+R(c1,t2)P(c1,t2)(1P(c2,t2))
ECC(t2)=0.752+0.250.2(10.75)=0.575


, :


ECC=ECC(t1)+ECC(t2)2=0.6125


4.


, 3, C++ MIT GitHub. Linux, Windows.


:


git clone https://github.com/yandex/cluster_metrics/ .
cmake .
cmake --build .

, 3. !


./cluster_metrics samples/sample_markup.tsv samples/sample_clusters.tsv
ECC   0.61250 (0.61250)
BCP   0.65125 (0.65125)
BCR   0.65250 (0.65250)
BCF1  0.65187 (0.65187)

«» , , . , , . , , . — .


5. ,


, , , .


. , , . , , :



: , . , , . , , , — . — ECC!


, , — . .


, , , . .


, , , ECC! ECC - , , , 100% . .


, 1 . : — .



Cluster Completeness


, , . , Cluster Homogeneity, Cluster Completeness, Rag Bag , Size vs Quantity .


, : , , , .


, 3, , .


, , : . , , .


All Articles