投稿

ラベル(チュートリアル)が付いた投稿を表示しています

Translate

#50 Section6 分類(3)モデルの評価・比較

イメージ
ここからは、『 compare_models 』関数を体験していきます。 PyCaretでは『compare_models』関数により、ライブラリで使用可能なすべてのアルゴリズム(『モデル』と言います)を 交差検証を用いて訓練 し、 評価指標を算出して性能を評価 します。 既に、『setup』で交差検証は、StratifiedKFold(K分割交差検証)と指定しています(デフォルトですが…)ので、関数型API、もしくはオブジェクト指向APIのどちらかの流儀で、下記のようにコードを書くことにより、様々なアルゴリズムの性能評価を比較できます。 この『compare_models』関数は、537行×9列の訓練データ(デフォルトで70%)を用いて、モデルを作成し、231行×9列(デフォルトで30%)のテストデータに適合させた結果の評価指標を算出します。 具体的には、下図のようになります。 左側の列から『モデルの略称』、『モデルの名称』が『正解率(Accuracy)』で降順に表示されています。正解率より右側の列は、それぞれ性能を表す評価指標となっています。 もっと詳しく知りたい方は、下記の『PyCaretの初心者向けまとめ(分類編)』を参照ください。 【参考】 https://qiita.com/shuhigashi/items/cb6816a1da1d347bbdc2 次に、性能評価の元になる 混同行列 を説明します。 下図の左側の表のように、二項分類の結果をまとめた2×2の行列を混同行列(Confusion Matrix)といいます。 横軸に予測、縦軸に結果のそれぞれの二値(二項)、すなわち陽性or陰性の個数が算出された2×2の行列となっています。臨床の現場では、予測を検査結果、結果を診断と表現するとわかりやすいと思います。この混同行列をもとにさらに算出されるのが、性能評価を表す右側の評価指標です。 それぞれを詳しく見ていきましょう。まずは、 ① 正解率(Accuracy) 正解率は、予測結果が実際に当たっていた割合を表します。 具体的に説明すると、ピンクの部分の和、すなわち、検査で陽性かつ診断でも陽性(TP)と検査で陰性かつ診断でも陰性(TN)の和を分子に、分母に全体の和を算出した比率のことです。 ② AUC(Area Under the Curve) AUCとは、主に...

#49 Section5 分類(2) 前処理

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

#48 Section4 分類(1) 教材の用意&PyCaretのインストール/インポート 

イメージ
ここからいよいよコードの解説に入ります。 → スライドは、クリックすると拡大できます! PyCaretが予測の途中でどのような処理や計算をしているかをしっかりと学んでいきましょう。 まずは、教材の準備をしていきます。 PyCaretのホームページから『DOCS』をクリックし、さらに『Tutorials』をクリックします。 『Tutorials』にある『Binary Classification』を今回の教材にします。 【PyCaretホームページ】  https://pycaret.org/ 【DOCS】  https://pycaret.gitbook.io/docs 【Tutorials】  https://pycaret.gitbook.io/docs/get-started/tutorials 『Tutorials』にある『Binary Classification』は、 教師あり学習 に属する 分類 の一種で、各データを2つのカテゴリー、例えば、「陽性」or「陰性」、「出荷可能」or「出荷不可」のように二つのグループに分類するものです。日本語では、 二項分類 と呼びます。 次のような用途で使われます。      1.臨床検査で患者が特定の疾病に罹患しているか否かで分類する      2.ある製品が出荷できる品質か、それとも捨てるべきかの判断      3.あるページや記事を検索結果に含めるか否か      4.メールがスパムかどうかを判定する 『Binary Classification』の『Colab』をクリックすると、『Google Colaboratory(以後「Colab」と省略)』の『Tutorial - Binary Classification』という名前のノートブックが現れます。この状態では、まだGoogleドライブに保存されているわけではありませんので、『 ドライブにコピー 』をクリックします。 『Tutorial - Binary Classification.ipynb のコピー』となっていますので、『Binary Classification』というファイル名にしておきましょう。 また、...

#47 Section3 分析ツール

イメージ
機械学習を学ぶ理由、機械学習の分類を解説してきましたが、Section3では、使用する分析ツール『 Pycaret (パイカレット)』について説明します。 → スライドは、クリックすると拡大できます! Pythonの機械学習ライブラリでは、 scikit-learn (サイキット・ラーン)が定番で、アルゴリズムチートシートで適切な手法を選択できたり、豊富なアルゴリズムを利用できます。 【アルゴリズムチートシート】 https://scikit-learn.org/stable/machine_learning_map.html 一方、Pycaretは、機械学習モデルの設計や構築のプロセスを自動化してくれる技術『 AutoML (Automated Machine Learning)』をサポートしていますので、scikit-learn等の他の機械学習ライブラリでは数百行に及ぶコードを記述する必要があるところを、PyCaretでは数行に短縮!できます。 実は、Pycaretは、 scikit-learnのラッパー でもあります。 『 データサイエンスチュートリアル オフィシャルテキスト2 』では、seabornを使いましたが、Pycaretはもう少し大掛かりなラッパーです。scikit-learn、XGBoost、LightGBM、CatBoost、spaCy、Optuna、Hyperopt、Ray等の様々なライブラリのラッパーとして機能します。 seabornは、matplotlibよりも簡単に、自動的に見栄えのするグラフを描いてくれましたが、それはPycaretでも同様です。 機械学習は、下記の枠で囲んだステップを経て最適なモデルで予測を行いますが、そのステップはほぼ一つの関数でコードを書くことができます。 PyCaretは、驚くほど、短いコード(大抵は1行)でコードを書くことができます。 これは、Pycaretの公式ドキュメントに記載があるように、Pycaretは『 シチズンデータサイエンティスト 』のために開発されたものだからです。Pycaretを使うのは、 多くのコードを使った精密な分析が目的ではなく、広く用いられる手法で出た結果を解釈し、ビジネスで活用できる知見・洞察を得ることが目的 です。 【公式ドキュメント】 https://pycaret.gitboo...

#46 Section2 機械学習とは?

イメージ
コンピュータがデータを読み込むことで自動的にルールやパターンを見出し、その結果を活かして分類や予測を行う仕組み全体のことを機械学習といいます。 今回は、機械学習とはどんなものか、どんな手法があるのかを解説します。 → スライドは、クリックすると拡大できます! 機械学習はAIを実現するための重要な要素であり、AIの一部であると言えます。 そこで、まずは、AIの歴史を振り返ってみましょう。 人工知能(AI)の研究は1950年代から続いていますが、その過程ではブームと冬の時代が交互に訪れています。それぞれのブームの終了時に、AIに関する悲観的な意見が出てブームは終焉し、研究者にとっては冬の時代が訪れました。 ● 第一次 AIブーム終焉:迷路やチェスなどの簡単なゲームをさせることができるなど様々な開発がなされましたが、人々が期待していた「現実に起きている問題を自分で解決」するまでには至らず、1970年代になると冬の時代を迎えます。 ● 第二次 AIブーム終焉:ブームを迎えて登場したMYCINという医療のエキスパートシステムでは、患者の診断は約65%の正解率を誇っていました。「専門医の診断」の正解率(約80%)には及ばないものの、「細菌感染の専門家でない医師」よりは優秀な成績でした。しかし、「エキスパートシステムの開発に膨大な手間と時間がかかる」、「人間が使う曖昧な表現をエキスパートシステムではルール化できない」等の理由により、発展に歯止めがかかり、ブームは終焉を迎えます。 2010年頃から、 機械学習 や * 表現学習 からなる 第三次 AIブームが始まり、これは現在も続いています。 * 表現学習 :画像・映像・音声・テキストなどの非構造化データでは、人間の判断で特徴量を選択することが困難です。そこで、機械学習自身に特徴量を発見させるアプローチが考え出されました。この表現学習を行う機械学習のアルゴリズムの一つを深層学習(ディープラーニング)と言います。 また、現在は、ChatGPTに代表される 生成AI による 第四次 のブームが同時並行で進んでいます。 「4th STEP 機械学習」では、深層学習(ディープラーニング)の基礎となる機械学習を学んでいきます。 機械学習 は、これまで経験や勘に頼っていた判断をデータに基づいて行うことで、客観的な分析や予測を可能にします。また、...

#45 Section 1 機械学習がもたらすもの

イメージ
今まで、「ビッグデータの読み込みとデータの確認」、「集計とグラフ描画」、オープンデータのWebスクレイピングやデータ整形を学ぶための「応用編 医療」を学習してきたみなさま。 ここからは、いよいよ4th STEP「 機械学習 」に進んでいきます。 どのような機械学習を選択してデータ解析すればよいか提案 ができること、そしてその コードを書けること により、データサイエンティストとしてかなり有利な条件でのリスキリングが可能となります。 → スライドは、クリックすると拡大できます! Section 1 機械学習がもたらすもの 4th STEPの学習を始める前に、なぜ機械学習を学ばなくてはならないかを理解するために、データを知識・知恵に変えるためのフレームワークである「 DIKWモデル 」について説明します。 DIKWモデルでは、データサイエンスのステップを データ 、 情報 、 知識 、 知恵 の4つに分類します。 具体的に、ある学級のテストの点数に関して説明していきます。 ①データ :1学期中間試験のテストの答案用紙の束のように、単なる数字や記号の集まりをデータと呼びます。 ②情報 :①のデータをDataFrameやEcelにまとめ、合計点や偏差値などのその他の要約統計量を求めたものを「②情報」と呼びます。グラフを描き、わかりやすく可視化することもあります。今までのデータサイエンス チュートリアルはここまで対象として学んできました。 ③知識 :さらにデータが増えて、1学期期末試験、2学期中間試験などのデータが入手できると、どのような事を考えるでしょうか?個々に3学期の期末試験の点数を予測したり、テストの結果を元に、文系に進学した方がよいのか、それとも理系の方がよいのか、知りたいと思うことでしょう。情報から規則性や見解などを導き出したものを「③知識」と呼び、機械学習や深層学習という手法が必要となってきます。 ④知恵 :深い知識が豊富にあり、様々な問題に直面した時に発揮される問題解決能力や発想力を「④知恵」と呼びます。ちなみに、人間と同レベルの、あるいはそれを超える知恵を持つAIを「強いAI」と呼びますが、これはまだ実現していませんので、知恵は人間のみが持っているものです。 以上まとめると、前のスライドに戻って、このようになります。別の例も示しておきました。 このようにデー...