>100 Views
February 10, 26
スライド概要
クラスタリングでは、正解がないデータの中から「似た特徴を持つグループ」を自動で作ります。その作業を一手に引き受けるのがcreate_model関数です。
この関数を1行実行するだけで、以下の3つを同時に行います。
●学習: データの特徴を分析し、分け方のルールを作る。
●クラスターラベル: 各データに「あなたはグループ1」といった背番号(ID)を付与。
●評価: その分け方がどれくらい「くっきり」分かれているかスコアを出す。
評価の見かた:「シルエット係数」などの指標を確認します。基本は1に近かったり、数値が大きいほど、グループ同士が混ざらず綺麗に分かれている証拠です。
活用のコツ:クラスタリングには、他の分析のように「全モデルを自動比較」する機能がありません。そのため、まずは代表的な「K-means法」などを試してみて、スコアを見ながら「グループの数を変えてみる(エルボー法などの利用)」といった試行錯誤をして、自分たちのデータに最適な分け方を見つけていくのがポイントです。
すべてのビジネスパーソンが意思決定プロセスにデータを活用する思考を身につけるため、まずは、データサイエンスの分析を体験していきましょう。SECIモデルの最初の段階、共同化(Socialization)からはじめていきます。 下記のブログで、ここにアップしたスライド、動画を随時、公開中です。 【ブログ】https://tutorial4datascience.blogspot.com/ 【Youtubeチャンネル】https://www.youtube.com/@DataScience_for_everyone 【Kindle】そして、このブログをまとめて書籍にしました! https://amzn.to/4ryVppn https://amzn.to/4pGgFb1
4th STEP 機械学習 Section 22 クラスタリング(3) create model関数 Setup Create Model Assign Model Analyze Model データサイエンス チュートリアル Prediction Save Model 1
4th STEP 機械学習 Section 22 クラスタリング(3)create model関数 create model関数の実行 チュートリアルの『Create Model』の項の最初は、create_model関数を使っています。 回帰では、前処理を行うsetup関数の次は、『compare_models()』行い、『create model関数』は、モデルの呼 び出しと確認に使う程度でした。クラスタリングでのcreate model関数は、次のような機能を持っています。 ① 指定したモデル名に基づいて、モデルを訓練 ② 学習データの各行がどのクラスターに属しているか(Cluster ID)をラベルにして付与 ③ 各評価指標による評価 上記のコードでは、代表的なモデル「K-means法」を指定して、①~③を実行しています。 出力は、③となります。 データサイエンス チュートリアル 2
4th STEP 機械学習 Section 22 クラスタリング(3)create model関数 create model関数の出力(1) create model関数の出力は、各評価指標による評価となります。 主な各評価指標 評価指標 内容 理想的な値 Silhouette (シルエット係数) 各データがクラスタ内にどれだけ適合しているか、そして他のクラスタからど 1に近く、大きいほど良い れだけ離れているかを同時に測定 Calinski-Harabasz クラスタ内のデータの凝集度とクラスタ間の分離度のバランスを測定 大きいほど良い Davies-Bouldin 各クラスタの平均距離と他のクラスタとの距離の比率 0に近く、小さいほど良い 出典:クラスタ評価指標の完全ガイド https://ai.reinforz.co.jp /1020 データサイエンス チュートリアル 3
4th STEP 機械学習 Section 22 クラスタリング(3)create model関数 create model関数の出力(2) なお、残りの右3つの評価指標『Homogeneity(均質性)』、 『Rand Index(ランド指数)』 、 『Completeness(完全性)』は、 「外部評価指標」と呼ばれ、「正解(真のラベル)」が分かっている時に使うもので す。 『正解(真のラベル)』を与えていない、あるいはデータセットに正解となる列が含まれていない状態の場合、すなわち、今 回のような場合、これらの指標は計算できず「0」と表示されます。 データサイエンス チュートリアル 4
4th STEP 機械学習 Section 22 クラスタリング(3)create model関数 【参考】 評価指標を使ったクラスタリングのブラッシュアップ(1) 評価指標を基に、クラスタリングを改善してみましょう! シルエット係数はグラフ化することができます。 このグラフは、色分けされた塊が、1つのクラスターを表し、塊 の厚み(高さ)は、そのクラスターに含まれるデータの数を表 します。赤い破線は、平均シルエット係数です。 右に伸びていればいるほど(1に近いほど)、そのデータは 「自分のクラスターにふさわしい」ことを示します。 『0』以下の左側に突き出しているデータは、別のクラスターに 入ったほうが適切だった可能性がある「迷子」のデータです。 このグラフを見ると、全体的にクラスタリングがよく行われている ように見えますが、一番下の青いクラスタが平均(赤い破 線)に届かず、他のグループと混ざり合っていて、あまり質が 良くないことを意味しています。塊の厚みも、他に比べて、薄 いようです。 データサイエンス チュートリアル 5
4th STEP 機械学習 Section 22 クラスタリング(3)create model関数 【参考】 評価指標を使ったクラスタリングのブラッシュアップ(2) そこで、クラスタ数をいくつにするのが最適かを自動で判断するためのグラフ(エルボー法)を用いて最適なクラスター数を判断し てみましょう。 『plot_model(kmeans, plot = ‘elbow’)』とコードを書 き、出力されたグラフからは、データに対して最も効率的なクラ スター数が3個であることが読み取れます。 データサイエンス チュートリアル 6
4th STEP 機械学習 Section 22 クラスタリング(3)create model関数 【参考】 評価指標を使ったクラスタリングのブラッシュアップ(3) 次に、クラスター数を3にした『kmeans2』の評価指標を算出してみます。 SilhouetteとDavies-Bouldinは改善しましたが、Calinski-Harabaszは数値が落ちてしまいました・・・。クラスタ内のデータ の凝集度とクラスタ間の分離度のバランスが悪くなってしまったようです。 クラスタリングには「正解」がないため、どれか一つの指標だけを信じるのではなく、「Silhouetteが高く、かつDavies-Bouldinが 低い」といったように、複数の指標がバランスよく良い値を示すクラスター数を探すのが、分析のコツです。 クラスタ毎の分析を進める際には、このような試行錯誤を繰り返し、クラスタリングをブラッシュアップしていきます。 データサイエンス チュートリアル 7
【参考】 compare_models関数は使えないのか? 分類、回帰では、compare_models関数を使って、様々なモデル(アルゴリズム)の評価指標で比較できましたが、クラ スタリングではどうでしょうか?やってみましょう! NameError: name ‘compare_models’ is not defined というエラーが出てしまいました。 PyCaretのクラスタリングモジュールで compare_models関数が利用できないために発生します。この関数はPyCaretの 分類および回帰タスクに特有のものです。クラスタリングモデルを比較する場合は、通常、 create_model関数でモデルを 作成し、評価指標を個別に評価します。 データサイエンス チュートリアル 8
4th STEP 機械学習 Section 22 クラスタリング(3)create model関数 モデルのリストアップ PyCaretのクラスタリングのモデル(アルゴリズム)の一覧は、次のコードで確認できます。 コードを書く際に使い ます クラスタリングの名称 データサイエンス チュートリアル 9
4th STEP 機械学習 Section 22 クラスタリング(3)create model関数 【参考】 モデルの分類 出力されたクラスタリングのアルゴリズム(PyCaretではモデルと呼んでいます)は、下記のように分類されます。 アルゴリズムの種類 階層的クラスタリング アルゴリズム名 対象 Agglomerative Clustering 比較的計算量が大きいため、デー タ数が数十個程度で少ない場合 Birch Clustering K-Means Clustering 重心ベース K-Modes Clustering Affinity Propagation 非階層的クラスタリング DBSCAN 密度ベース データの数が100を超えてくる場合 OPTICS Clustering Mean Shift Clustering その他 Spectral Clustering データサイエンス チュートリアル 10
4th STEP 機械学習 Section 22 クラスタリング(3)create model関数 【参考】 モデルの詳細 モデルの詳細は、下記のリンクを参照してください。 K-Means Clustering https://scikit-learn.org/stable/modules/clustering.html#k-means Affinity Propagation https://scikit-learn.org/stable/modules/clustering.html#affinity-propagation Mean Shift Clustering https://scikit-learn.org/stable/modules/clustering.html#mean-shift Spectral Clustering https://scikit-learn.org/stable/modules/clustering.html#spectral-clustering Agglomerative Clustering https://scikit-learn.org/stable/modules/generated/sklearn.cluster.AgglomerativeClustering.html#agglomerativeclustering Density-Based Spatial Clustering(DBSCAN) https://scikit-learn.org/stable/modules/generated/sklearn.cluster.DBSCAN.html#dbscan OPTICS Clustering https://scikit-learn.org/stable/modules/generated/sklearn.cluster.OPTICS.html#optics Birch Clustering https://scikit-learn.org/stable/modules/generated/sklearn.cluster.Birch.html#birch K-Modes Clustering https://www.analyticsvidhya.com/blog/2021/06/kmodes-clustering-algorithm-for-categorical-data/ データサイエンス チュートリアル 11
再びcreate model関数の実行 『Create Model』の項の最後は、 create_model関数でモデル『meanshift(Mean Shift Clustering)』を 訓練、Cluster IDをラベルにして付与、各評価指標を算出させています。 SilhouetteとDavies-Bouldinは改善しましたが、CalinskiHarabaszは数値が悪化してしまったようです。 データサイエンス チュートリアル 12