投稿

Translate

#60 Section 15 回帰(4) モデルの分析(1)

イメージ
 前のSectionでは、『compare_models』関数で評価が高かったモデル『catboost』を『best』と宣言しましたが、今回は、その『best』というモデルを分析していきましょう。 『 plot_model 』関数を使用すると、テストセットにおける学習済みモデルのパフォーマンスをグラフによって分析できます。 plot_model(モデル名, plot='グラフの種類’) plot_modelのグラフの種類についての詳細は、下記の公式ドキュメントの『Examples by module→Regression』を参照してください。 https://pycaret.gitbook.io/docs/get-started/functions/analyze#regression さて、続けてPyCaretの公式チュートリアルを見ていきましょう。 『モデル名』は、「best」を指定しています。 『グラフの種類』には、「 'residuals' 」を指定しています。これにより、『 残差プロット (Residuals Plot)』を出力します。 実行して、出力を見てみましょう、残差プロットが表示されます。 残差 は、 実際の値と予測値の差 のことです。 ● 散布図 (左側)  横軸: モデルによる予測値(Predicted Values)  縦軸: 残差(Residuals、実際の値と予測値の差) この散布図により、予測値の大きさに関わらず残差がランダムに分布しているか(パターンがないか)を確認します。理想的なモデルでは、残差は横軸の0の周りに均等に散らばっています。 ● ヒストグラム (右側) 散布図の残差の分布を示すヒストグラムが表示されます。    回帰分析の基本的な仮定として、残差は正規分布に従うことが望ましいため、ヒストグラムが釣鐘型(正規分布に近い形)になっているかを確認します。 以下の場合、モデルはデータの構造を適切に捉えており、回帰分析の仮定がおおむね満たされていると判断できます。 ・ 残差が0の周りに均等に分散している(散布図) ・ 残差に特定のパターンが見られない(散布図) ・ 残差の分布が正規分布に近い(ヒストグラム) 次は、 『グラフの種類』に「 ‘error’ 」と記入しています。横軸に実際の値、縦軸に予測値をプロ...

#59 Section14 回帰(3)モデルの評価・比較

イメージ
 今回は、「モデルの評価・比較」を体験していきましょう。 『 compare_models 』関数は、ライブラリで使用可能なすべてのアルゴリズム(PyCaretでは『モデル』と言います)を交差検証を用いて訓練し、評価指標を算出して性能を評価します。この関数の出力は、交差検証での平均スコアを含む評価指標一覧(次スライド参照)で、様々なアルゴリズムの性能を比較できます。 『分類』で行ったように、関数型API、オブジェクト指向APIの二つの方法があります。順番にコードを実行しましょう。 また、『compare_models(sort=“評価指標”) 』で、 任意の指標で結果を並べ替えることもできます。 compare_models関数を使った前のスライドのコードを入力すると、下記の結果が出力されます。 表頭には、評価指標がいくつか並んでいます。 また、それぞれのモデルは、デフォルトで決定係数(R2)の降順に表示されます! さて、ここからは、前のスライドに出てきた評価指標を解説していきます。 まずは、 平均絶対誤差 (MAE/Mean Absolute Error) 平均絶対誤差(MAE/Mean Absolute Error)は、各データに対して「予測値と正解値の差(誤差)」の絶対値を計算し、その総和をデータ数で割った値(平均値)を算出したもの。スライドの式で算出されます。 平均絶対誤差に普遍的な目安はありませんが、数値が小さいほど予測精度が高いと評価されます。 平均絶対誤差はあくまで相対的な指標ですから、過去の類似データで比較したり、複数のモデルで比較する等して使用します。 【参考】  https://atmarkit.itmedia.co.jp/ait/articles/2105/19/news022.html 2番目は、 平均二乗誤差 (MSE/Mean Squared Error) 平均二乗誤差(MSE/Mean Squared Error)は、各データに対して「予測値と正解値の差(誤差)」の二乗の総和を計算し、その総和をデータ数で割った値(平均値)を算出したもの。下記のスライドに示す式で算出されます。 平均二乗誤差に普遍的な目安はありませんが、0に近いほど予測値と実測値の差(誤差)が小さいことを示します。誤差を2乗するため、大きな誤差(外れ値)が評価に与...

#58 Section 13 回帰(2)前処理

イメージ
ここからは、『setup』関数によるいくつかの前処理機能を体験していきます。  (『#49 Section 5 分類(2)前処理』と重複する部分もありますが、このSectionから読み始める人もいるかもしれませんので、省略はしないで書きました!)  まずは、モジュールのインポートと setup関数 の実行です。下記のスライド2を参照ください。 1行目に # import pycaret classification and init setup とあり、setup関数を初期化するような説明となっていますが、『init』は初期化という意味ではなく、機械学習の実験を開始するための準備作業全体を指していますから、ここではsetup関数を実行して前処理を行うという意味で理解しておきましょう。 2行目は、PyCaretのうち分類に用いるモジュール『classification』をインポートしています。このモジュールは、二項分類または多項分類に使用できます。さらに、 『setup』関数によるいくつかの前処理機能、18以上のすぐに使えるアルゴリズムと、学習済みモデルの性能を分析するためのプロットが用意されています。 ワイルドカード「*」を使うとモジュールで公開されているすべての関数や変数などがインポートされて使えるようになります。 3行目は、PyCaretの分類モジュールに含まれる『setup』関数で、 欠損値処理 、 データ分割 などの 前処理 を行っています。 ここで、setup関数について詳しく説明します。 setup関数は、最小限、『 分析するデータ名 』→data、『 目的変数 』→target、『 後で再現可能にするための擬似乱数設定 』→session_idという引数が必要になります。 session_idは、無くても動きますが、毎回違う結果が出てくることがありますので固定しておきましょう。 また、その他の引数の主なものは、下記のとおりです。 『ignore_features』→無視したい特徴量のリスト 『normalize  True』→Trueに設定するとデータが正規化される 『train_size』→訓練データのサイズ、例:=0.7では70%が学習用データとして使用される 『log_data』→Trueにすると、学習およびテストデー...

多数決で決めてしまった結果

イメージ
自民党の総裁選が佳境を迎えていますが、 個人の選好順位 が 選挙 にどの程度反映されているのでしょうか? 架空の選挙で、具体的に考えていきましょう。 1 . 会社の業績を左右するマーケティングの重要事項に関して、A案、B案、 C案が提案されています。 2 . 次の役員会でその重要事項が議論されるため、7人の役員は、 事前に検討し、A案、B案、C案について、第一推奨、第二推奨、 第三推奨を考えているようです。詳細は、 下図を参照してください。 3 . 役員会での議論の後、各案に関して多数決が行われました。 各案に一票を投じるというものです。 4 . その結果、A案とB案が3票づつで同率一位となりました。 5 . そこで、A案とB案とで決選投票になり、4対3で、 A案に決まりました。 6 . 本当に、このような多数決でいいのでしょうか? 7 . 逆に、A案、B案、C案の中で、一番悪い案はどれか、選挙で決めてみましょう。 8 . なんと! 一番良い案と一番悪い案が、同じもの になってしまいました! 決選投票までもつれた場合、なんとなく、 メンバーの選好順位が反映されていないのではないかと漠然と不満 が湧き出ることがあります。 このような事実(データ)に基づいた選挙分析をしていくと、 そういった不満をすっきりと説明できるのではないでしょうか? ちなみに、 この資料は2013年に開催されたマーケティングのセミナーで使 ったものです。意思決定の方法はあまり進歩していないようです (決して、先の自民党の総裁選を表したものではありません)。 この資料は、ノーベル経済学賞受賞者である ケネス・ アロー の不可能性定理を紹介するために考えたものですが、人類の英知の象徴であるノーベル賞の成果が実社会ではあまり活かされていないようです。実務でも、このような事はありがちなので、データ思考を身に付け、個人の選好順位が意思決定に十分の反映される方法を考えていきましょう。

#57 Section 12 回帰(1)教材の用意&PyCaretのインストール/インポート

イメージ
ここからは、『 回帰 』のコードの解説に入ります。 → スライドは、クリックすると拡大できます! PyCaretが予測の途中でどのような処理や計算をしているかを体験していきましょう。 PyCaretのホームページ (1) まずは、教材の準備をしていきます。 PyCaretのホームページから『DOCS』をクリックし、さらに『Tutorials』をクリックします。 PyCaretのホームページ (2) 『Tutorials』にある『Regression』の『Quick start』の部分を今回の教材にします。 『Regression』は、 ①教師あり学習 の一種で、連続する値の傾向をもとに予測を行うことです。日本語で、『 回帰 』と言います。 PyCaretのホームページ (3) 『Colab』をクリックすると、『Colab』の『Tutorial - Regression.ipynb』という名前のノートブックが現れます。この状態では、まだGoogleドライブに保存されているわけではありませんので、『ドライブにコピー』をクリックします。 その後、ノートブックの名称を『 Regression 』に変更、ファイル位置の移動(ここでは、『機械学習』フォルダーに移動)等を行います。教材の準備は完了です。 PyCaretのインストール/インポート     Colabには、PyCaretがインストールされていませんので、先ずはPyCaretをインストールしましょう。 その前に、『 #56 分析環境再構築/コラボのPythonバージョンアップ 』を参考にして、Pythonのダウングレードを行います。 通常の『!pip install paycaret』では、すべてのものをインストールすることはできません。 paycaretに続けて[full]を書くとフルバージョンをインストールすることができます。 ColabでPyCaretをインポートすると、数分経過してから下記のように『セッションを再起動する』とのアラームが出てきます。Colabは最新に近いパーツで動いていますが、PyCaretはその最新のパーツに対応していないためです。 でも、ご安心を! 『セッションを再起動する』をクリックして、再起動すれば、PyCaretは問題なく稼働します。 PyCaretをインポ...

#56 分析環境再構築/コラボのPythonバージョンアップ

イメージ
本の出版を終え、久しぶりにブログを再開しようとコラボのノートブック『Binary Classification』を開けて、実行するとPycaretがインストールできないではありませんか! 調べてみると、Google Colabのリリースノートに「8月27日 Python runtimes upgraded to Python 3.12.」となっています。 Pycaretは、Python 3.10までしかサポートされていませんので、インストールができないわけです。 https://pycaret.gitbook.io/docs/learn-pycaret/faqs#does-pycaret-work-with-all-os-and-python-versions これでは、下記のブログ記事に相当するコードが動かなくなります。 #48 Section4 分類(1) 教材の用意&PyCaretのインストール/インポート ↓ #54 Section10 分類(7)モデルの保存・再利用 せっかくAutoMLの世界に触れた読者のみなさまをがっかりさせてしまわないように、そして、猫のタローがやる気を失わないように、いろいろと試してみました。 (1) コラボで、Pythonをダウングレードする →geminiに聞きながら、いろいろとやってみたのですが、出来ませんでした・・・。成功したコードを知っている人がいれば、教えてください。 (2) venv(ブイエンブ)で仮想環境を各々の読者に作ってもらう →Pythonバージョン3.3以降の標準ライブラリとして提供されているvenvで、各々の読者が仮想環境を作成して、コードの体験をしてもらうことも選択肢にありましたが、やめました。仮想環境の作成で、疲れてしまう人が出てきますから。 (3) Dockerを使う →Dockerは、持ち運べる仮想環境を作成するもので、私が作った仮想環境でコラボとほぼ同様な操作性を持つ「Jupyter Notebook」でコードを書いたり、結果を表示することができます。WindowsでもDockerを使えると書いてあったので、勉強中です。ハードルが高いです・・・。 いろいろとgeminiに聞いていくうちに、geminiが手軽な方法を提案してくれました。コラボに実装されている「 ランタイム バージョン 」を選択する方...

『データサイエンス チュートリアル オフィシャル テキスト』2冊目を出版しました!

イメージ
 『テキスト1』では、データの読み込みとデータの確認の方法を体験しました。それは、あまり人の目に触れるものではありませんでした。『テキスト2』では、集計とグラフ描画を中心に体験していきます。それらは、プレゼン資料に使われて、人々に説明したり、説得するために使われます。少し、難易度が上がりますが、それだけやりがいもあるのではないでしょうか。 ★データサイエンス チュートリアル オフィシャル テキスト 2 https://amzn.to/4g2Uqsq

このブログが書籍になりました! 第1弾!

イメージ
データサイエンスに興味を持ってはいるが、データサイエンスに本気でダイブしようかどうか迷っている方々、そのような方々に分析を体験してみる機会を提供するために、この ブログ「データサイエンス チュートリアル」、およびYoutube「 DataScience_for_everyone 」を始めました。 知識がまったくなくても、見よう見まねで、基本的なプログラムを書いてみて、その楽しさがわかったら、本格的な学習に進むきっかけになればと思ったのが始めた動機です。 うれしいことに、読者や視聴者の中には、初めから、基本的なプログラムをしっかり身に付けたいという要望を持つ方も現れました。 そこで、ブログと動画をまとめたテキストを出版することにしました。 第1弾は、『1st Step ビッグデータの読み込みとデータの確認』です。  → 購入はこちら ブログや動画を、スキマ時間や通勤時間にスマホで見聞きし、週末など1時間程度時間が取れる時に、このテキストを参考にして、実際にコラボを起動してプログラムを書いてみる。そんな使い方を想定しています。 慣れてきたら、このテキストにある参考資料を読んで、このテキストのプログラムをちょっと変えてみて、コラボで動くかどうか確認してみる事も、スキルを身に付けるためにとても有効です。自分なりのコラボ・ノートブックを作りましょう。 もちろん、初めからこのテキストに取り組んでも構いません。 どのような使い方であれ、このテキストが最初の一歩になり、あなたがデータサイエンスを身に付け、それがリスキリングにつながり、より充実した人生を送れるようになることを願ってやみません。