投稿

Translate

#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...

YouTubeコース(無料版)をはじめました!

イメージ
このブログも、コンテンツが多くなり、動画を見つけにくいとの意見がありました。 そこで、YouTubeコースを始めました。 YouTubeは、デフォルトで作成日順に表示されますので、どの順番で動画を見ればいいか迷ってしまいます。 YouTubeコースは、関連の動画が視聴する順番で並んでいます。また、そのコースのどこまで視聴したかも記憶してくれていますので、すぐに次の新しいものから視聴できますのでストレスフリーですね(途中でも大丈夫)。 サイドバーにも「YouTube コース」という場所を作っておきましたので、それぞれをはじめから順番に視聴したい方はご利用ください。 ① 基礎編 1st Step ビッグデータの読み込みとデータの確認 https://www.youtube.com/playlist?list=PLb2oxjBcK2wyv6k0IesxrpIX6TFb9Gyyj ② 基礎編 2nd Step 集計とグラフ描画 https://www.youtube.com/playlist?list=PLb2oxjBcK2wwWGxV4cvYikqCZwZ9P_lma ③ 応用編 Webスクレイピング https://www.youtube.com/playlist?list=PLb2oxjBcK2wwk7_yyuosj4Q5xicd1ypAu また、宣伝になりますが、①~②のコースは、それぞれ下記のオフィシャルテキストに対応しています。Amazonで購入可能ですので、よろしければクリック!  ① 基礎編 1st Step ビッグデータの読み込みとデータの確認 ⇒  オフィシャルテキスト1 ② 基礎編 2nd Step 集計とグラフ描画 ⇒  オフィシャルテキスト2

#64 Section 19 回帰(8)まとめ

イメージ
さて、Pycaretでの回帰はいかがでしたか? #57 Section 12~#63 Section 18を振り返ってみましょう! 出力された評価結果、分析結果を詳しく説明しましたが、最低限、下記のコードを書けば、機械学習の『回帰』で分析することができます。 新たなデータを作成してそれを予測するコードを加えても全部で19行! ↓ 下記のスライドは、クリックすると大きくなります。 コードを書くのが億劫だと思っている方でも、どんどん出力が出ますので、さまざまな種類の機械学習を体験していきましょう。 次回からは、クラスタリング(Clustering)を体験していきます!  

#63 Section 18 回帰(7)モデルの保存

イメージ
さて、回帰も大詰めとなってきました。 1.モデルの保存 さて、予測したモデルを、save_model関数を使用して、今までの分析の流れを後で使用するために保存していきます。  使うコードは、 save_model(選択したモデルの名前, '保存するモデルの名前') 今回は、「my_first_pipeline」という名前で保存します。 「my_first_pipeline」は、現在の作業ディレクトリに、モデルのIDに *.pkl の拡張子が付いたファイル(*pickle形式)として保存されます。これは、後でいつでも利用することができます。 * pickle形式 :Pythonのメモリ上にあるデータ構造(例えば、リスト、辞書、クラスのインスタンス、そしてPyCaretの学習済みモデルなど)を、ファイルに書き込んで保存できる形式のことです。そして、保存したファイルから元のPythonオブジェクトを復元できます。 pickle形式のファイルは、path引数で指定した場所、または今回のようにpath引数を省略した場合は現在の作業ディレクトリに保存されます。ただし、Googleドライブの検索エンジンでは、ファイルの内容をテキストとして解析することが難しく、 キーワードで検索することができません 。 2.モデルの保存 出力 save_model関数の主なアウトプットは、モデルだけでなく、データの前処理方法全体が一つのパイプラインとして保存されたこと、そしてそのパイプラインに含まれる個々の処理ステップの詳細と、最終的な学習済みモデルの種類とハイパーパラメータ、そして保存されたファイルの名前を示しています。 この情報があれば、 保存されたパイプラインがどのような処理を行い、どのようなモデルを含んでいるか を後で正確に把握することができます(確認している人は少ないですが・・・)。 滅多に使わないですが、今までの作業を振り返る意味で、出力内容を確認していきましょう。 下記の2枚のスライドを見てみましょう。 3.モデルの再利用 save_model関数を使ったモデル(前処理方法などを含む)を呼び出す(ロードする)ためには、 load_model(‘保存したモデル名‘) を使います。ここでは、読み込んだモデルを「loaded_best_pipeline」と名付け直しています...

#62 Section 17 回帰(6) 予測

イメージ
今回は、compare_models関数で求めた性能が良かったモデル(catboost/CatBoost Regressor)で、新たにデータを作成して、予測をしてみましょう。 1.予測結果の性能評価 まず、チュートリアルの最初のコードをみてみましょう。『holdout_pred = predict_model(best)』となっています。 右側のpredict_model関数は、通常、『 predict_model(モデル名, data=データ名) 』のような引数を指定しますが、setup()で分割した テストデータ に対して 予測した結果 を返してくれます。 引数『data=データ名』が無い場合は、指定した モデルの性能評価 が出力されます。 『holdout_pred』は、predict_model関数の実行結果が格納される変数です。何でもいいのですが、ほとんどの人はテストデータの予測結果を宣言する場合、『holdout_pred』と書きましょう。お作法です。 ですから、 holdout_pred = predict_model(best) とコードを書くと、下記のように指定したモデルの性能評価が出力されます。 ※ MAE、MSE、RMSE、R2、RMSLE、MAPEに関しては、『#59 Section14 回帰(3)モデルの評価・比較』を参照してください。 ↓スライドはクリックすると大きくなります! 2.予測結果の出力 『holdout_pred』は、 予測結果が格納されたデータフレーム を保持していますので、下記のコードのように『holdout_pred.head()』とすると、指定したモデルをテストデータに当てはめた予測結果が出力されます。元にデータに『 prediction_label 』という列が追加され、そこに『保険料(charges)』の予測結果が表示されています。これで、テストデータの予測ができました。 3.新たなデータで予測 同じコードは、未知のデータセットのラベル予測にも使えます。 元のデータのコピーを作成し、列『charges』を削除し、新たなデータ『new_data』を作成します。 次は、この『new_data』を下記に当てはめて、 『new_data』の予測をしています。 predict_model(モデル名, data=データ名) ...

#61 Section 16 回帰(5) モデルの分析(2)

イメージ
PyCaretでは、『plot_model関数』を使わなくても、下記の『evaluate_model関数』を使うことにより、クリック一つで、様々なモデルの評価を可視化(グラフ化)することができます。 しかも、たった一行! evaluate_model(モデル名) このコードを実行させると、下記のスライドにあるような出力結果が表示されます。 ※スライドはクリックすると大きく表示されます! ① は、『Plot Type』と表示されているように、モデルの評価を可視化するグラフのボタンです。実行直後は、『Pipline Plot』が選択され、 ② のように機械学習モデルを構築する際にPyCaretが自動的に行った前処理を視覚的に表現しています。 今回は、このモデルの評価を可視化するグラフグラフを解説していきます。 下記は、 『 plot_model 』関数を使って表示させたグラフです。 PyCaretには、この3つ以外にも多くのグラフを表示させる機能が含まれています。さらに、 ① の各ボタンをクリックすると、コードを書かなくても、様々なグラフが現れます。それを順番に解説していきます。 1. Hyperparameters パラメーター(Parameter)は、モデルが訓練データから自動的に学習し、調整していく重みやバイアスなどの値です。それに対して、 ハイパーパラメータ (Hyperparameter)は、学習前に人手で設定するアルゴリズムの挙動を制御する値です。つまり、 パラメータはモデルが学習によって得たもの 、 ハイパーパラメータはモデルの学習の前に設定 するものとなります。 Hyperparametersでは、PyCaretがハイパーパラメータをどのように設定したかを表示してくれます。 本来、ハイパーパラメータは、分析者が経験等に基づいて決めるものですが、PyCaretはいい感じに決めてくれます。 次スライド以降でハイパーパラメーターの解説をしますが、PyCaretには、このハイパーパラメーターをチューニングして一番結果が良いものを選択してくれる機能(『tune_model』関数)がありますので、こだわって覚える必要はありません。この辺が、PyCaretは『シチズンデータサイエンティスト』にぴったりな分析環境と言える所以です。 次の9枚のスライドは、『Hyperpa...