投稿

Translate

#69 Section 24 クラスタリング(5)モデルの分析

イメージ
assign_model関数で、クラスターラベルの付与を行ったところで、チュートリアルの『Analyze Model(モデルの評価)』に進みましょう。 1.plot_model関数 分類や回帰と同様に、plot_model関数を使用すると、学習済みモデルのパフォーマンスを分析できます。 plot_model(モデル名, plot='グラフの種類′) クラスタリングでplot_model関数のグラフの種類についての詳細は、下記の公式ドキュメントの『Examples by module→Clustering』を参照してください。 https://pycaret.gitbook.io/docs/get-started/functions/analyze#clustering 2.plot_model関数 引数 'cluster' まずは、下記のスライドにあるように引数を『 plot = ‘cluster’ 』としたコードが書かれています。これは、「クラスタリングの結果を可視化せよ」という指示ですが、2次元のグラフに表示するために*PCAという次元圧縮技術が自動的に適用されます。 * PCA ( 主成分分析 /Principal Component Analysis):たくさんの変数を持つデータを特徴を保ちながら少数の変数で表現する次元削減の手法の一つ。『第1主成分』、『第2主成分』という新しい2つの指標にまとめ上げることができます。 出力された下記スライドのグラフから、このモデルは「非常に良好にクラスタリングができている」と評価できます。 ● クラスタ間の分離 (Separation) が明確 →4つのグループ(Cluster 0〜3)が、平面上で互いに離れた位置に固まっています。これは、モデルがデータ間の明確な違いを捉えられていることを示します。 ● クラスタ内の凝集度 (Cohesion) が高い →各色がバラバラに散らばることなく、特定のエリアに集中して分布しています。これは、同じクラスタ内のデータが互いに似た性質を持っていることを意味します。 ● ノイズ (混合) が少ない →一部、Cluster 3(赤)とCluster 0(青)の境界付近でデータが混じり合っている箇所がありますが、全体としては境界線がはっきりしています。 ★スライドはク...

#68 Section 23 クラスタリング(4)クラスターラベルの付加

イメージ
チュートリアルの『Assign Model』に進みます。 assign_model関数の実行 assign_model関数 は、どのクラスター(Cluster 0, Cluster 1・・・)に属するかを元の入力データセットに新しい列として追加して返してくれます( クラスターラベル の付与)。 ()内の引数は、create_model関数で宣言したモデルの名称を記入します。 Section22で、kmeans = create_model('kmeans')としていますので、ここでは、『kmeans』を記入しています。 Section22の参考で、下記のようなモデルを定義しましたが、その『kmeans2』を引数として記入すると、下記のスライドのようになります。 kmeans2 = create_model('kmeans', num_clusters = 3) indexが『500』の行のクラスターが、『Cluster 3』から『Cluster 0』 へ変化しました( 『Cluster 1』も『Cluster 2』も別物ですが…)。 通常、『kmeans』、『kmeans2』等のクラスターラベルの付いたデータを使って、それぞれの平均値や最大・最小値などの要約統計量を算出すること等により、データ分析を進めていくことになります。  

#67 Section 22 クラスタリング(3)モデルの作成

イメージ
このSectionでは、『クラスタリング』のcreate_model関数を体験していきます。 1.create model関数の実行 チュートリアルの『Create Model』の項の最初は、 create_model 関数を使っています。 回帰では、前処理を行うsetup関数の次は、『compare_models()』行い、『create model関数』は、モデルの呼び出しと確認に使う程度でした。クラスタリングでのcreate model関数は、次のような機能を持っています。 ① 指定したモデル名に基づいて、モデルを訓練 ② 学習データの各行がどのクラスターに属しているか(Cluster ID)をラベルにして付与 ③ 各評価指標による評価 上記のコードでは、代表的なモデル「 K-means法 」を指定して、①~③を実行しています。 出力は、下記スライドのように、③となります。 2.create model関数の出力 create model関数の出力は、各評価指標による評価となります。 主な各評価指標は、『Silhouette(シルエット係数)』、『Calinski-Harabasz』、『Davies-Bouldin』があります。 Silhouette (シルエット係数):1に近く、大きいほど良い Calinski-Harabasz :大きいほど良い Davies-Bouldin :0に近く、小さいほど良い なお、なお、残りの右3つの評価指標『Homogeneity(均質性)』、 『Rand Index(ランド指数)』 、『Completeness(完全性)』は、 「外部評価指標」と呼ばれ、「正解(真のラベル)」が分かっている時に使うものです。 『正解(真のラベル)』を与えていない、あるいはデータセットに正解となる列が含まれていない状態の場合、すなわち、今回のような場合、これらの指標は計算できず「 0 」と表示されます。 【参考】 評価指標を使ったクラスタリングのブラッシュアップ シルエット係数をグラフ化したところ、クラスター数がデフォルトの4つでいいのかと感じました。 そこで、エルボー法を用いて最適なクラスター数が3であることを確認し、クラスター数を3にしたkmeansの評価指標を算出してみました。 このように、評価指標を確認しながら、ブラッシュア...

#66 Section 21 クラスタリング(2)前処理

イメージ
このSectionでは、『クラスタリング』のデータの setup 関数を使った前処理について、 関数型API と オブジェクト指向API を体験していきます。 では、『 Setup 』と書かれたパートの最初のコードを見てみましょう。 1.モジュールのインポートとsetup関数の実行 下記のスライドを見てください。 → スライドは、クリックすると拡大できます! 1行目は解説で、2行目は、PyCaretのうち回帰に用いるモジュール『 clustering 』をインポートしています。このモジュールは、似た性質を持つデータを自動的にグループ分けするクラスタリングに使用しますワイルドカード『*』を使うとモジュールで公開されているすべての関数や変数などがインポートされて使えるようになります。 3行目は、PyCaretのモジュール『clustering』に含まれる setup 関数を記載しています。 setup関数は、欠損値処理、データ分割などの前処理を行うことができます。ここでは、実験の再現性を確保するための乱数シード(擬似乱数を生成する際の『開始点』)のみが引数として設定されています。 setup関数の結果を変数『s』に格納することで、設定内容をオブジェクトとして保持しています。 2.setup 関数 分類や回帰の時と同様ですが、クラスタリングは 教師なし学習 ですので、 『正解ラベル(Target)』を指定する必要がありません。ということで、必要最小限の 引数 は『 data 』、『 session_id 』の2つということになります。 参考までに、スライドには、データの前処理に関する他の引数を挙げています。クラスタリングは「距離」に基づいてグループ分けするため、これらの設定が結果に直結します。 3.setup関数の出力 『setup(data, session_id = 123)』の出力について、簡単に解説しています。下記のスライドをお読みください! 4.setup関数 オブジェクト指向API 前出のモジュールのインポートとsetup関数の実行のコードは、『関数型API』で書きましたが、ここからは、モジュールのインポートと関数を使った前処理をオブジェクト指向APIでプログラムを書いていきます。 学習時の短いコードの場合は『関数型API』で書いても構いませんが、多くのコード...

#65 Section 20 クラスタリング(1)教材の用意&PyCaretのインストール/インポート

イメージ
 ここからは、機械学習の第三弾として、教師なし学習の『 クラスタリング 』を体験していきましょう。 クラスタリングの主な目的は、下記のように似た性質を持つデータを自動的に グループ分け することです。 ● 顧客の年齢、収入、購買行動、支出などに基づいて、共通のニーズを持つ顧客グループ(クラスター)を抽出し、グループごとに最適なマーケティング戦略を立てる際に活用 ●他のどのクラスターにも属さない、孤立したデータポイント(外れ値)を特定することで、不正取引や機械の異常などを発見 ●大量のデータの中から、主要なパターンや傾向を理解するための初期分析として利用 今回もPyCaretの公式チュートリアルの一部を教材としていきます。 1.PyCaretのホームページ  まずは、教材の準備をしていきます。 PyCaretのホームページ https://pycaret.gitbook.io/docs の左側メニュー『Tutorials』をクリックします。PyCaretの公式ホームページ、ちょっと変わりました。 → スライドは、クリックすると拡大できます! 『Tutorials』にある『Clustering』の前半の部分『Quick start』を今回の教材にします。 『 Clustering 』は、 ②教師なし学習 の一種で、特徴が近い(似ている/距離が近い)データを集めて集団に分ける分析手法です。日本語で、『 クラスタリング 』と言います。 『Colab』をクリックすると、『Colab』の『Tutorial - Regression.ipynb』という名前のノートブックが現れます。この状態では、まだGoogleドライブに保存されているわけではありませんので、『 ドライブにコピー 』をクリックします。 これで、教材の準備は完了です。 2.PyCaretのインストール/インポート この教材には、既にコードが書いてありますから、それを見ていきながら、何をやっているのか理解していきましょう! Colabには、PyCaretがインストールされていませんので、先ずはPyCaretをインストールしましょう。 ★その前に、『#56 分析環境再構築/コラボのPythonバージョンアップ』を参考にして、Pythonのダウングレードを行います。 また、通常の『!pip instal...