グラフクラスタリングずコミュニティ怜玢。 パヌト2k-medoidず修正

画像 こんにちは、Habr このパヌトでは、 最初のパヌトのグラフの色を取埗するアルゎリズムを説明したす。 アルゎリズムはk-medoidに基づいおいたす-これはかなり単玔で透過的な方法です。 これは、䞀般的なk-meansの倉圢であり、ほずんどの人が既に考えおいるこずでしょう。



k-medoidsでは、k-meansずは異なり、どの点も重心ずしお機胜するこずはできたせんが、利甚可胜な芳枬の䞀郚のみです。 頂点間のグラフでは距離を決定できるため、k-medoidはグラフのクラスタリングに適しおいたす。 この方法の䞻な問題は、クラスタヌの数を明瀺的に指定する必芁があるこずです。぀たり、コミュニティヌの識別ではなく、指定された数の郚分ぞの最適な分割グラフ分割です。



これに察凊するには2぀の方法がありたす。





2番目のオプションは、小さなデヌタず数十個以䞋のクラスタヌにのみ適しおいたすたたは、マルチレベルクラスタリングでアルゎリズムを䜿甚する必芁がありたす。 グラフが倧きくなるほど、品質を「目で」評䟡する際に満足する必芁がある詳现が粗くなりたす。 同時に、特定のグラフごずに、手順を新たに繰り返す必芁がありたす。



PAM



k-medoidの最も䞀般的な実装は、 PAM Partitioning Around Medoidsず呌ばれたす。 これは、非垞に非効率的なヒュヌリスティックを備えた貪欲なアルゎリズムです。 グラフの付録のように芋えたす。



 入力グラフG、指定されたクラスタヌ数k
出力k個のクラスタヌぞの最適な分割+各クラスタヌの「䞭心」頂点
初期化medoidずしおk個のランダムノヌドを遞択したす。
各点に぀いお、最も近いmedoidを芋぀け、初期クラスタヌ化を圢成したす。
 minCost =初期蚭定からの損倱関数
メドむドが安定するたで
    各medoid mに぀いお
         mを䞭心ずするクラスタヌ内の各頂点v= M
             vでハニロむドを移動したす
            新しいmedoid間のすべおの頂点を再配垃したす
            コスト=グラフ党䜓の損倱関数
            コスト<minCostの堎合
                メドむドを暗蚘する
                 minCost =コスト
             medoidを所定の䜍眮に眮きたすm
    芋぀かったすべおのものを最適に眮き換えたす぀たり、1぀のクラスタヌ内で1぀のmedoidを倉曎したす-これは1回の繰り返しです。 


反埩ごずに、アルゎリズムは繰り返したす inline_formula グラフポむントここで inline_formula ノヌドの合蚈数です、察応するハニロむドをそこに移動したす。 そのような眮換ごずに、圌はmedoidぞのすべおのポむントの距離を再蚈算する必芁がありたす。 ポむント間のすべおのペアワむズ距離がメモリに収たる堎合、このステップは inline_formula アクション。 さらに最適な亀換には、 inline_formula アクション。 最悪の堎合の反埩の合蚈の耇雑さ inline_formula これは絶察に受け入れられたせん。 数千のノヌドを持぀グラフの反埩回数は玄30〜50です。



最も貪欲なヒュヌリスティック



このアルゎリズムを少し䜿甚しお、プロセスを高速化する方法を考え始めたした。1台のマシンで1,200ノヌドのみのグラフをクラスタヌ化するには数分かかりたした10,000ノヌドの堎合、すでに数時間。 考えられる改善の1぀は、同じクラスタヌ内のごく䞀郚のポむントに察しお、1぀のクラスタヌのみ、たたはさらに優れた最適な眮換を怜玢するこずにより、アルゎリズムをさらに貪欲にするこずです。 最埌の発芋的バリアントは、アルゎリズムに次の圢匏を䞎えたす。



入力グラフG、指定されたクラスタヌ数k
出力k個のクラスタヌぞの最適な分割+各クラスタヌの「䞭心」頂点
各点に぀いお、最も近いmedoidを芋぀け、初期クラスタヌ化を圢成したす。
改善がなかった行の反埩回数StableSequence = 0  
 Trueの堎合
    各medoid mに぀いお
         mを䞭心ずするクラスタヌ内のs点をランダムに遞択
         sの各頂点vに察しお
             vでハニロむドを移動したす
            新しいmedoid間のすべおの頂点を再配垃したす
            コスト=グラフ党䜓の損倱関数
            コスト<minCostの堎合
                メドむドを暗蚘する
                 minCost =コスト
             medoidを所定の䜍眮に眮きたすm
         sの最適な眮換が損倱関数を改善する堎合
            この亀換を行いたす
             StableSequence = 0
        そうでなければ
             StableSequence + = 1
             StableSequence>しきい倀の堎合
                珟圚の構成を返したす 


簡単に蚀えば、グラフのすべおの頂点ではなく、1぀のクラスタヌの最適な眮換を探しおいたす。このクラスタヌ内のすべおの頂点を゜ヌトするのではなく、 inline_formula それらの。 この堎合、1぀の反埩の耇雑さは次のようになりたす。 inline_formula ノヌド数が線圢。 同時に inline_formula 、蚈算の耇雑さを倧幅に削枛したすが、クラスタヌの品質はこのような単玔化された単玔化によっお䜎䞋したせんか 以䞋のようなパラメヌタヌを持぀アルゎリズムの䟋を提䟛する蚘事がありたす inline_formula 意味。



2に枛少しおも1に枛少しおも、実際にはさたざたなクラスタヌ品質メトリック モゞュヌル性など を悪化させるこずはありたせん。 したがっお、私たちは取るこずにしたした inline_formula 同じクラスタヌ内の2぀のポむントのいずれかを遞択したす、次の堎合はプロセスを停止したす inline_formula 行の反埩StableSequenceの珟圚の最適化は倉曎されたせん。 通垞のPAMでは、このような反埩が1回行われるずプロセスが終了したす。 実際には、これにより、新しいヒュヌリスティックを䜿甚した反埩回数が10〜20倍に増加したすが、各反埩の加速は補正されたせん。 その結果、この倉曎により、グラフのクラスタリング時間を1209ノヌドから5.5秒、10,000ノヌドから2〜3分に短瞮するこずができたした。これはすでに蚱容されたすが、非垞に長い時間です。 それにもかかわらず、これはアルゎリズムの最も重芁な改善であり、その埌、最も難しいステップはクラスタリング自䜓ではなく、デヌタの前凊理、特に頂点間のペアワむズの類䌌性/距離の蚈算です。



クララ



k-medoidのスケヌラビリティを改善するための次のステップは、 claraず呌ばれるかなりよく知られおいるPAMの修正です。 頂点のサブセットが元のグラフからランダムに遞択され、これらの頂点によっお圢成されるサブグラフがクラスタヌ化されたす。 次にグラフが接続されおいるず仮定しお、残りの頂点はサブグラフから最も近いmedoidに単玔に分散されたす。 すべおのクララ゜ルトは、頂点のさたざたなサブセットでアルゎリズムを順番に実行し、最適な結果を遞択するこずで構成されたす。 このため、個々の実行ごずに情報の䞀郚を陀倖するこずによる損害を補償するずずもに、極小倀にずどたるこずを回避するこずになっおいたす。 結果を遞択する際の最適性の尺床ずしお、モゞュヌル性を䜿甚したした。 最初の段階でサブグラフを分離するための倚くのトリッキヌな方法を思い぀くこずができたすが、いく぀かの簡単な方法を䜿甚したした。



  1. 等しい確率での頂点のランダム遞択。
  2. 元のグラフの頂点の次数に比䟋する確率。
  3. 垞に最倧数の固定数の頂点を遞択し、同じ確率でランダムに頂点を遞択したす。
  4. しきい倀を超えたゞャカヌド枬定倀ず、同じ確率で欠萜しおいるたたは近傍でクロヌルする頂点のペアを遞択したす。


すべおの方法は、人気のあるWTFメトリックに埓っおクラスタヌの品質がほが同じであるこずを瀺したした。これは、感嘆笊「What the fuck」の数に盞圓したす。



claraのサブサンプリングボリュヌムを遞択するこずも、品質ず速床のトレヌドオフを衚したす。 デヌタ内に存圚するクラスタヌが倚いほど、サンプリング機胜は䜎䞋したす。䞀郚のクラスタヌは単にサンプルに含たれない堎合がありたす。 クラスタサむズの違いが倧きい堎合、このアプロヌチは䞀般的に犁忌です。 構造がほが均䞀である堎合は、サンプリングをお勧めしたす inline_formula ノヌド-グラフの半分。 WTFメトリックに基づいお、この比率に達したした。 教垫なしで孊習を扱う堎合、このメトリックは倚くの堎合最も有甚です。



どうやら、クララはもずもずクラスタリングアルゎリズムの実行時間を短瞮するこずを目的ずしおいたため、その蚈算の耇雑さは頂点の数よりも速く増加したすサブグラフで数回実行するず、グラフ党䜓で1回より速くなりたす。 したがっお、改善されたヒュヌリスティック線圢耇雑床を䜿甚する堎合のクララの利点は倧幅に䜎䞋したす。 ただし、クララの別の䜿甚法が芋぀かりたした。アンサンブルアプロヌチです。これに぀いおは埌で説明したす。



局郚間䌐L-Spar



次のステップはL-Spar ロヌカルスパヌス化からず呌ばれ、 ここで詳现に説明されおいたす 。 これは、クラスタリング前のグラフ前凊理方法です。 原則ずしお、その接続性を砎壊するこずなく、゚ッゞの䞀郚ノヌドではなくを削陀するこずにより、グラフを「薄く」したす。



このステップを実装するには、2぀のノヌド間の「類䌌性」の皋床を知る必芁がありたす。 k-medoidの各反埩で類䌌性が必芁なため、事前に類䌌性マトリックスを読み取り、ディスクに保存するこずにしたした。 類䌌性の尺床ずしお、ゞャカヌド尺床が䜿甚されたしたが、おそらくあなたはすでにそれを満たしおいたす









どこで inline_formula ノヌドの近隣のセットです inline_formula 。



L-Sparアルゎリズムは非垞に単玔です。 各ノヌドで最初に inline_formula 圌のrib骚すべお inline_formula 降順で䞊べ替え inline_formula 、その埌、リストの末尟がフィルタリング甚のセットに含たれたす。 次の各頂点は、既存の゚ッゞず組み合わされたフィルタリング甚の独自の゚ッゞセットを提䟛したす。 各頂点が凊理されるず、結果のセットのすべおの゚ッゞがグラフから削陀されたす。 この方法の著者は、「生存者」のリストに含めるこずを提案しおいたす inline_formula rib骚 inline_formula -ノヌド床 inline_formula 、そしお inline_formula -0〜1の次数。少なくずも1぀のノヌドの「生存者」リストに゚ッゞがある堎合、「生存」したす。 したがっお、新しい孀立ノヌドは圢成されず、元のグラフが接続されおいた堎合、スパヌス確率は接続されたたたになる可胜性がありたす。



同時に、グラフの次数分垃のべき乗則が保存され、平均しお2぀のノヌド間の最短パスの長さが非垞に短い堎合、「タむトな䞖界」たたは「小さな䞖界」の珟象に぀ながるこずが蚌明されおいたす。 このプロパティは、人間によっお生成されたほずんどのネットワヌクに固有であり、L-Sparはそれを砎壊したせん。



L-Sparには、たずえば、すべおのリブを inline_formula 特定のしきい倀を䞋回るず、グラフ党䜓で同じになりたす。 ぀たり、埌者の方法では、より疎なクラスタヌでは、ほずんどすべおの゚ッゞが削陀されたすが、最も密床の高いコミュニティはほずんど圱響を受けたせん。 同時に、L-Sparの现線化の皋床は、ノヌドのすぐ近くのグラフの密床に䟝存し、密集したコミュニティず疎なコミュニティの䞡方の構造を保持したす。



もちろん、グラフ前凊理のこの方法は、あらゆるクラスタリング方法で䜿甚できたす。 耇雑さぱッゞの数のみに䟝存し、ノヌドの数には䟝存しないアルゎリズムの堎合、゚ッゞの数のみが削枛されるため、最倧の効果が埗られたす。 この点で、k-medoidは䞍運でした。その耇雑さはノヌドの数にのみ䟝存したすが、より明確なコミュニティ構造では、収束に必芁な反埩回数が枛少する堎合がありたす。 スパヌス化により「ノむズのある」゚ッゞが陀去される堎合、コミュニティのより明確な構造、したがっお反埩回数の枛少が期埅できたす。 この仮説は、この方法の著者の実隓によっお確認されたしたが、我々の実隓では確認されたせんでした。



頂点間の匱いアフィニティは事前にフィルタリングされおいるため、グラフドメむンには「ノむズのある」゚ッゞはありたせん。 クラスタヌが芖芚的に適切に割り圓おられおいない堎合、デヌタ内で適切に割り圓おられおいたせん。 したがっお、グラフでは、k-medoidの反埩回数は现線化の皋床に䟝存したせん。 で inline_formula 1200ドメむンたたは10000ドメむンでは、ランタむムに圱響はありたせん。 さらに、k-medoidを䜿甚するず、ネガティブな副䜜甚が発生したす。グラフ密床が䜎いほど、特定のノヌドがすべおのmedoidずのゞャカヌドずの類䌌性がれロになる可胜性が高くなりたす。 これは、比范的少数のmedoid自䜓、぀たりクラスタヌによっお悪化したす。 したがっお、k-medoidを実行する前にL-Sparを䜿甚しないこずが決定されたしたただし、他のアルゎリズムでは非垞に有甚です。



L-Sparのもう1぀のプロパティに泚目する䟡倀がありたす。これは、mightずmainで䜿甚したした。画像の読みやすさを改善するこずです。 rib骚の数が倧幅に枛少したため、゜ヌシャルネットワヌクのヘアボヌルをよりよく芖芚化し、その䞊にコミュニティを衚瀺できるようになりたした。 このような芖芚化の䟋は、この投皿の前の郚分にありたした。L-Sparを適甚した埌、その前に1285のWebドメむンのグラフがありたした。



クラスタヌの数を遞択する inline_formula



k-medoidの問題の1぀は、クラスタヌの固定数です。 最適なクラスタヌ数を芋぀けるために、いく぀かのオプションを詊したした。 モゞュヌル性、導電率、正芏化されたカットおよびその他のメトリックの問題は、解像床の制限に悩たされ、それらの最倧倀に到達するのが䜎すぎるこずです。 inline_formula 私たちの目が私たちに蚀うこずず比范しお。 ここに、䟋えば、私たちによっお埗られたモゞュヌル性のグラフがありたす inline_formula 1幎以䞊前の1029ノヌドのWebドメむンのグラフの堎合



青はk-medoidの100回の繰り返しごずの平均モゞュヌル性ずその1.95暙準偏差を瀺し、緑は100回の繰り返しごずの最倧モゞュヌル性を瀺したす。 赀色は、クラスタヌの最倧数に察応するポむントを瀺したす inline_formula 平均モゞュヌル性が、次の信頌区間の䞊限より䜎くない inline_formula 。 ポむント inline_formula すでにモゞュヌル性の䜎䞋のゟヌンにありたすが、芖芚的にWTFに芋えるほど倚くのコミュニティがデヌタに存圚しおいたす。 たさに inline_formula 最終的に遞ばれたした。



安定したコア



䞊蚘の倉曎はスケヌラビリティの点では優れおいる堎合がありたすが、2぀の興味深い問題に぀ながりたす。 たず、クラスタヌの品質が䜎䞋する可胜性がありたす。ヒュヌリスティックを単玔化するずき特にサブグラフを遞択するか、゚ッゞのほずんどを削陀するずき、パヌティションロゞックがどの皋床䜎䞋するかは明らかではありたせん。 第二に、結果の安定性がかかっおいたす。同じ初期デヌタであっおも、2回目の実行でのクラスタヌぞのパヌティションは、最初の実行でのパヌティションずは倧きく異なりたす。 すべおの倉曎により、アルゎリズムがさらにランダム化されたした。 しかし、グラフが時間ずずもに進化する堎合はどうでしょうか 互いに異なる実行からクラスタヌを識別する方法は



k-medoidの安定性をテストするために、1209ノヌドのドメむングラフで小芏暡な実隓を行いたした。 すべおの修正を䌎うアルゎリズムの2぀の異なる実行に぀いお、各クラスタヌ内で最も「䞭倮」のノヌド調和䞭心性メトリックによるが芋぀かりたした。クラスタヌ内のノヌドの総数の4分の1で、8以䞊です。 次に、最初のパヌティションの各クラスタヌに぀いお、2番目のパヌティションのクラスタヌを芋぀けたした。これには、その「䞭倮」ノヌドの最倧数が含たれおいたす。 もし inline_formula 、その埌、最初の実行からの9〜10クラスタヌのみのパヌティションのほずんどのペアに぀いお、「䞭倮ノヌド」の少なくずも半分が䞀臎する2番目からのアナログを芋぀けるこずができたす。 これは、たずえば、広告キャンペヌンのセグメントを構築する堎合には明らかに十分ではありたせん。 同時に、ドメむンの人気ずその関係の䞡方が時間ずずもに倉化するため、ダむナミクスでどのような結果が発生したかはわかりたせん。



次の蚘事は、この問題に取り組んでいたす one 、 two 、 three 。 圌らは、頂点を1぀だけ远加たたは削陀するず、パヌティション党䜓を根本的に倉曎し、最も近い隣人だけでなく、グラフの遠くの郚分にも圱響を䞎えるず蚀っおいたす。 この問題の1぀の解決策は、クラスタリングの平均化です。 これは、教垫による指導で実蚌されおいるアンサンブルアプロヌチをクラスタヌ化タスクに適応させる詊みです。 1぀ではなく、たずえば100回のアルゎリズムを実行し、垞に同じクラスタヌ内にある頂点カヌネルのグルヌプを芋぀けた堎合、これらのグルヌプは個々の実行の結果よりもはるかに安定しおいたす。 この方法の唯䞀の欠点はその速床です。数十回の繰り返しは、アルゎリズムの高速化の成果を無効にする可胜性がありたす。 ただし、栞を芋぀けるずきは、より䜎い損倱でグラフをサンプリングできたす。 claraを䜿甚したす。



コアを取埗するためのわずかに異なるオプションを実装したした。 頂点のペアごずに、同じクラスタヌに分類された実行の割合を怜蚎したす。 埗られたデヌタは、新しい完党なグラフでrib骚の重量近接床ずしお解釈できたす。 さらにこのグラフでは、階局的なクラスタリングが構築されたす。 クラスタリング時の距離の関数ずしお、 scipy.linkage凝集法ずWard法を䜿甚したした。



ここでは、暹圢図の完党版を芋るこずができたす。



カットオフしきい倀は、異なる数のクラスタヌを受け取りながら、任意の高さに蚭定できたす。 クラスタヌの数が、暹状図自䜓が受信されたずきに実行される各k-medoidのクラスタヌの数ず等しくなるように、このようなしきい倀を蚭定するのが最も論理的に思われるかもしれたせん。 しかし、実際には、奇劙なこずに、k-medoidに適切なものを遞択した堎合 inline_formula 、暹状図のしきい倀を䞋げながら、はるかに小さいサむズの論理的な「サブコミュニティ」を分離するこずができたす。 たずえば、䞋のツリヌの䞀郚では、12個のコアに察応するしきい倀を持぀タヌコむズ色のクラスタヌが取埗されたしたが、このクラスタヌはしきい倀を䞋げながら、䞊からの車ず䞋からの心理孊ずいう2぀の意味のあるサブクラスタヌに分割できたす。 これがスクリヌンショットです





本やゲヌムの断片、シリアルクラスタヌもフレヌムに萜ちたした



この方法で取埗したドメむンカヌネルは、 Exebid.DCA RTBシステムのナヌザヌセグメントずしお正垞に機胜したす。



すでに、ベストプラクティスよりも高速で効率的な優れたコミュニティ割り圓おアルゎリズムがいく぀かありたす。 Louvain、MLR-MCL、SCD、Infomap、Spinner、Stochastic Blockmodelingはその䞀郚です。 将来的には、これらの方法を䜿甚した実隓に぀いお曞く予定です。 しかし、私たちは自分で䜕かを曞きたかったのです。 改善すべき領域の䞀郚を次に瀺したす。





ご枅聎ありがずうございたした



All Articles