‫それでは､ ハイパーパラメータチューニングを使って､ モデルを改善するさまざまな方法をご紹介しましょう｡
‫ここでは､ まず手書きで｡
‫では､ ちょっと見出し5を作ってみましょう｡ 1 ハイパーパラメータを手動で調整する｡
‫そしてこれまで､ トレーニングデータセットとテストデータセットの扱いについて話してきました｡
‫モデルはトレーニングセットで学習され､ パターンを見つけ､ そしてテストセットで評価される｡
‫そのため､ これらのパターンを使用しますが､ ハイパーパラメーターチューニングでは､ 第3のセット､ つまり検証セットを導入します｡
‫ここで､ ハイパーパラメーターを手作業で調整すると､ このようになります｡
‫例えば､ 心臓病の問題で100人の患者の記録から始めるとしたら､ どのような問題を扱うかによって､
‫この記録は変わってくるかもしれません｡
‫そして､ 百という数字はイメージしやすいので､ 今､ 使いました｡
‫これがスタート地点のデータで､ これを分割していくかもしれません｡
‫3種類のセットというのは､ こういうことです｡
‫だから､ 70〜80％を使うかもしれないと割り切っています｡
‫つまり､ 70人の患者記録をトレーニング用に分割し､ 10～15％を検証用に分割し､ 10～15％をテスト用に分割することが考えられます｡
‫もちろん､ この数字を調整することも可能です｡
‫これらは､ 一般的によく使われる数字です｡
‫だから､ 当然､ モデルの学習も行われる｡
‫これらは､ 以前にも見たことがあるものです｡
‫そして､ 通常､ 検証セットがないと､ モデルはこれらで評価されることになります｡
‫しかし､ 今は検証セットがあるので､ ここでモデル設定､ つまりハイパーパラメータを調整することになります｡
‫検証用スプリットで調整し､ 最後に通常通りテスト用スプリットでモデルを評価します｡
‫さて､ ここでの例えですが､ 最初の頃を思い出していただくと､ 機械学習で最も重要なコンセプトは「3点セット」です｡
‫これは､ まさにスタート地点に立ったわけです｡
‫機械学習入門
‫トレーニングセットは､ 例えるなら､ 大学の講義で教材を学習するようなものです｡
‫検証セットは､ 自分の知識を少し試して､ 何を調整する必要があるかを確認するところです｡
‫教授から模擬試験をもらってやってみると､ 「うわ､ 1問目､ 2問目､
‫4問目がひどいな」となるわけです｡
‫アプローチの仕方を調整する必要があるのかもしれませんね｡
‫そして､ もう一度模擬試験をするのです｡
‫そして､ 模擬試験で実力をつけたら､ 少し自信がついて､ いよいよテストセットである最終試験で本当の意味で自分を評価することになる｡
‫では､ これをコードで行うにはどうしたらよいのでしょうか｡
‫手帳に戻ろう｡
‫ハイパーパラメータを手で調整する
‫3セット作ろう｡
‫トレーニング､ バリデーション､ テスト
‫そこで､ get paramsやrandom forest classifiersを思い出してみましょう｡
‫ベースラインパラメーター
‫これがすべてのベースラインパラメーターです｡
‫なるほど｡
‫私たちが調整できる機種の設定｡
‫そして今､ 実際に､ どれを調整するのか？
‫さて､ ランダムフォレストのドキュメントを読んでみると､ また､ どんな機械学習の見積もりや､ サイキックローンを使ったモデルにもできることですが､
‫それぞれの設定をどのように調整すればいいのかが分かってきました｡
‫また､ いくつかのモデルでも､ 異なるハイパーパラメーターにノードが存在することになります｡
‫サイキック､ 学習､ 変化を提案する｡
‫それは､ ある意味､ 1つのようなものです｡
‫試しにまず変えてみるか｡
‫そして､ その範囲に目を通した後､ だから私たちの場合は､
‫次のように調整してみるのです｡
‫だから､ 最大限の深さが欲しいのです｡
‫実は､ これらはバックダニに入れるので､ コード最大のステップであることがわかるからです｡
‫最大の特徴｡
‫平均的なサンプル｡
‫もし､ これらのどれもが意味をなさないのであれば､ これらすべての定義は､ どのモデルでもドキュメントに記載されていることを思い出してください｡
‫ここでいうサンプルとは､ リーフノードになるために必要な最小限のサンプル数を意味します｡
‫リーフノードとは何かについては､ ランダムフォレストの資料で詳しく調べてみてください｡
‫でも今は､ いかにして調整するかということに集中しています｡
‫機械学習モデルのハイパーパラメータとは､ サンプルリーフを意味します｡
‫そして､ 平均的なサンプルを分割して推定するのが素晴らしい｡
‫つまり､ これらがこれから調整する高いパラメーターです｡
‫そして､ 今度はトレーニング､ 検証､ テストスプラインを作成する以外は､ 前と同じコードを使用します｡
‫ここでは､ これらの分割を使うことにします｡
‫そのため､ 学習用分割は70%のデータで作成することになります｡
‫検証セットとテストセットには､ それぞれ15個ずつ入っており､ 基準値の結果を得ることができます｡
‫しかし､ もう一度この実験を行い､ 基本的な結果を得てから､ モデルタイプのパラメーターを手作業で調整する方法を考えましょう｡
‫そして､ いくつかのモデルを評価することになるので､ 評価機能を作ることが重要だと思います｡
‫そこで､ このような方法が考えられます｡
‫どのようなモデルであれ､ 関数を作成します｡
‫何度もやりたいと思うことがある場合｡
‫そのため､ 多くのコードを書く手間が省けます｡
‫しかし､ やはりそれは今までとは少し違うのでしょう｡
‫そうですね｡
‫私たちは､ すべてを手書きで書き出したいと思っていることがわかります｡
‫ここに小さなdocstringを残しておきます｡
‫y個の真ラベルとy個の予測ラベルを比較評価する｡
‫さて､ 評価のところで見たように､ 機械学習モデルの評価の主なものは､
‫予測と真のラベルの比較である｡
‫つまり､ この機能はそういうことなのです｡
‫つまり､ 分類器を扱うからには､ 精度､ 正確さ､ スコアy真のyの広がりが欲しいわけです｡
‫また､ 精度も求めます｡
‫なぜなら､ 回帰モデルでこの評価スプレッドを使って分類指標を入れると､
‫回帰モデルは分類モデルが予測する精度とは異なるものを予測するため､
‫エラーが発生することになるからです｡
‫そして､ リコールはもちろん､ リコールスコアに等しいものを求めています｡
‫そしてまた､ これを調整し､ フレッドの機能を必要な分だけ評価することができます｡
‫ただ､ 分類モデルで取り上げた最も一般的なメトリクス､ 基本的にすべての分類モデルで注意を払いたいもの､
‫Yスプレッド､ そして予測を返せるように辞書を作成し､ 他の予測と比較できるようにするつもりです｡
‫後半のラウンド精度｡
‫小数点以下2桁にする｡
‫うん｡
‫精度です｡
‫丸い精度｡
‫へ｡
‫さて､ いつも思い出してほしいのですが､ これが多いように見えるとしたら､ それはまず第一に､ 一撃で受け止めるにはちょっと多いということなのです｡
‫そしてもうひとつは､ これまでかなりの練習を積んできたので､ 何を使えばいいのかが本質的にわかっていることです｡
‫私も常に勉強していますが､ このような特殊なシステムを作る練習をしたところ､ 何度もこのようなパターンが出てきました｡
‫印刷に入ります｡
‫私たちはただ､ 何が起こっているのかをちょっとだけプリントアウトしてほしいのです｡
‫アッ､ 精度が上がりますね｡
‫時間は100､ あとは小数点以下2桁でいいんです｡
‫それで十分でしょう｡
‫それから､ 精度が良ければ同じものを見に行く｡
‫これが精度となり得るのです｡
‫それを100倍する必要はないでしょう｡
‫それは小数点以下2桁のままでいいんです｡
‫さて､ ストリングエンダーが必要ですね｡
‫素晴らしいプリントです｡
‫そして､ リコールに踏み切る｡
‫そもそも打ち出す量が多いのですが､ 再利用できるため､ この先も節約できそうです｡
‫そして､ 最後にプリントを希望します｡
‫一校なら｡
‫作っているんです｡
‫やっと成功したんだ｡
‫素晴らしい取り組みです｡
‫これでよしとしよう｡
‫そして最後に､ メートル法をディップして返したいと思います｡
‫さて､ ここで何が起こっているのでしょうか｡
‫さて､ この関数は､ 分類モデルから真のラベルと予測ラベルを受け取るだけです｡
‫それは､ ここの文字列からわかることです｡
‫ここでさまざまな評価関数を計算し､ メトリックディクショナリを返すので､ 後でそれを保存することができます｡
‫そして､ いくつかの指標もプリントアウトされます｡
‫つまり､ この関数を実行するとすぐにプリントアウトされるわけです｡
‫つまり､ 分類モデルの評価関数に過ぎないのです｡
‫素晴らしい｡
‫そして､ いつものようにここにノートを保存しておく｡
‫さて､ このトレーニング検証とテスト分割は､ 具体的にどのように行うのでしょうか｡
‫さて､ 以前にもご紹介した列車テストの分割機能ですが､ こちらは覚えていらっしゃいますか？
‫列車で分岐へ｡
‫そのため, train splits と呼ばれる, ランダムな train と test の部分集合に分割された行列の配列を返すだけです．
‫なので､ こちらは訓練セットとテストセットに分かれるだけです｡
‫そこで必要なことは､ データを手動でトレーニング検証とテストセットに分けることです｡
‫そうして､ こうすること｡
‫できます｡
‫どうすればいいのでしょうか｡
‫データはデータフレームに入っているからです｡
‫心臓の病気
‫古き良き時代の数学とインデックスを駆使すればいいのです｡
‫私たちならどうするか､ 見てみましょう｡
‫そこで､ Skylineからは､ すでにランダムフォレスト分類器をインスタンス化しているにもかかわらず､ 最初にモデルをインポートすることにします｡
‫そうしよう｡
‫EMP random seedに移動して､ データをシャッフルします｡
‫なぜここでデータをシャッフルしているのか？
‫トレーニングの検証用とテスト用のスプリットに分けるなら
‫ミックスしたいんです｡
‫同じでないことを確認する｡
‫記録は順番にやってくる｡
‫スライシングを使ってトレーニング検証とテストラインを作成する場合､ これらのレコードがすべてごちゃごちゃになっていることを確認したい｡
‫というわけで､ そういうことになりますね｡
‫PANDASのサンプル機能を使って､ シャッフルすることができます｡
‫100%のデータに対して､ frac equals oneを行うことになります｡
‫これは心臓の病気を取るだけだ､ サンプルにするんだ｡
‫これはランダムに､ そして心臓病のデータフレームをその正常な変数に再割り当てします｡
‫つまり､ このサンプルをランダムに何行も取ってきて､ それをこの変数aに再代入します｡ k. a.
‫をシャッフルする｡
‫さて､ これでデータはシャッフルされ､ xとyに分かれることになります｡
‫実は､ それを心臓病のシャッフルに取っておくかもしれません｡
‫その方がいいんじゃないですか？
‫Xイコール｡
‫今回は心臓病のシャッフルが必要で､ それからここのターゲット欄を落とします｡
‫この動画は少し引きずっていますが､ これは重要なコンセプトですよね？
‫ここで見ていくことにします｡
‫低体温を利用したモデルのチューニングや､ データの検証セットとテストセットを分割して改良することができるので､
‫すべて価値があると思います｡
‫素晴らしい｡
‫そこで､ 列車は分断された｡
‫どうやってやるんだ？
‫さて､ スライスに使える数字を作る必要があります｡
‫だから､ データの長さは70％は欲しい｡
‫だから､ ここで何が起こっているかわかるでしょう｡
‫試しに割ってみてください｡
‫私たちは､ あなたが番号を必要とします｡
‫70％必要です｡
‫だから0｡ 心臓病の7倍の長さがシャッフルされ､ これが7割のデータになりそうです｡
‫そして､ 有効な分割が必要です｡
‫どっちになるんだろう｡
‫覚えていますか？
‫分割の意味を覚えていますか？
‫15%.
‫それが､ 私たちの合意事項です｡
‫素晴らしい｡
‫だから､ 同じようにできるんです｡
‫それは､ インデックスをつけたいので､ 列車分割になります｡
‫次の15％が欲しい｡
‫だから､ 電車の分割プラス0｡ 515.
‫心臓病の長さがシャッフルされました｡
‫DataFrameです｡
‫これは15％のデータです｡
‫素晴らしい｡
‫そして､ X列車､ Y列車がXデータになるわけです｡
‫電車の分岐まで｡
‫そして､ 電車が分岐するまでのWhyデータ｡
‫素晴らしく､ そしてex valid y valid sorryは､ 列車分割からvalid分割までのxデータになりそうです｡
‫そして､ 同じようにyは列車分割のyデータになる｡
‫有効分割に｡
‫そして､ Xテストは､ 有効分割以降のXデータを､ Yテストは､ 有効分割以降のXデータを､
‫とします｡
‫だから､ 残りのデータ｡
‫そして､ 有効分割以降の理由｡
‫ふー､ ここまでが迷走でしたね｡
‫とりあえず見てみよう｡
‫そうだ､ 行こう､ レン､ プリントアウトしよう｡
‫Exトレイン､ そしてLen ex validを希望します｡
‫そして､ レン・エクステストを希望します｡
‫なるほど｡
‫つまり､ トレーニングセットにはデータの70％､ つまり212行が含まれています｡
‫検証セットはデータの15%にあたる46行で､ テストセットは46行である｡
‫つまり､ 15％のデータですね｡
‫心臓病シャッフルデータセットのサンプル数が奇数であるため､ 15%であるにもかかわらず､
‫ここでは異なる金額が使われています｡
‫だから､ どこかで1つずつ波及していくんです｡
‫それは全く問題ありません｡
‫さて､ これで分割ができました｡
‫KLFを行うことができます｡ ランダムフォレスト分類器をインスタンス化することにします｡
‫そして､ ここでは何も渡していないので､ これはベースラインパラメータでインスタンス化することになります｡
‫そこで､ このCLF dot get paramsを実行すると｡
‫あ､ これは属性じゃないですね｡
‫それが機能です｡
‫ここでランダムフォレスト分類器に何も渡さず､ ベースラインパラメータを指定してランダムファーム分類器をインスタンス化します（以下同様）｡
‫そのため､ ベースラインの予測をしたいのです｡
‫そこで､ 左のフィットを見に行くのです｡
‫いつも通り学習データに当てはめて､ 予測をするんだ｡
‫つまり､ Yスプレッドは自己予測に等しいのです｡
‫いいえ､ 検証データで予測します｡ なぜなら､ ここに戻ってきて､ 検証の分割でモデルを調整したいからです｡
‫まず､ 評価関数を検証用スプリットに適用して基準値を作成します｡ 次に､ ハイパーパラメータを調整し､
‫検証用スプリットでモデルを再実行し､ その結果を比較します｡
‫では､ ここに行ってみましょう｡
‫だから､ 予測を立てる｡
‫これをベースライン予測と呼び､ 検証セットで分類器を評価することにします｡
‫そこで､ ベースラインの指標を決めて行きます｡
‫そして､ ここで評価関数が役に立つことになります｡
‫検証セットとなぜPreds｡
‫そして､ ベースラインの指標にしたいと思います｡
‫さて､ どうしたものでしょう？
‫ローカル変数の精度｡
‫参考までに｡
‫ああ｡
‫これが､ 私たちが見逃していたものです｡
‫またこれからは精度の高いスコアが必要です｡
‫今はひどい出来です｡
‫どうなっているんだ？
‫精度点 22．
‫これは正しくできているのだろうか？
‫あ､ これだ｡
‫だから､ 私たちのオリジナルを使ったのです｡
‫ほら､ そんな感じでしたね｡
‫心臓病のシャッフルを使用しないと､ シャッフルされたラベルではなく､ 元のラベルを予測することになるからです｡
‫だから､ そこが惜しいところです｡
‫これでよしとしよう｡
‫Woo!
‫つまり､ この警告は､ 推定値が10の反転､ 0から変化するというものです｡
‫20から100まで｡ 22.
‫つまり､ これが私たちのベースラインの指標です｡
‫さて､ ここで行ったことは､ トレーニング検証とテストスプリットを作成したことです｡
‫先ほどと同じようにモデルをインスタンス化し､ ここでトレーニングデータにフィットさせました｡
‫そして､ 検証セットでベースラインパラメータ､ ベースラインハイパーパラメータを評価し､ これらの指標を得ました｡
‫ですから､ もし私たちが結果を改善しようとした場合､ モデルのハイパーパラメータを調整しようとした場合｡
‫このセクションはそういうものなので､ ランダムフォレストにあるものを手作業で追加しています｡
‫高次のパラメーターを手作業でチューニングする｡
‫どうすればいいのだろうか｡
‫この警告を､ ハイパーパラメーターを変更する例として取り上げてみましょう｡
‫変わろう｡
‫そしてまた､ サイキックローン0を利用する場合｡ 2､ 2以上の場合は､ この警告は表示されません｡
‫しかし､ せっかくこの警告が出たのだから､ 調整してみようと思います｡
‫ハイパーパラメーターは､ 私たちの見積もりを変更します｡
‫基準値である10から100に変更し､ 検証セットで異なるスコアが得られるかどうかを確認します｡
‫ランダムシードを作成します｡
‫ランダムシード 42．
‫これから行うのは､ 異なるハイパーパラメータを持つ2番目の分類器を作ることです｡
‫ここでランダムフォレスト分類器のインスタンスを作成します｡
‫パスすることは何もない｡
‫箱から出してすぐのベースラインハイパーパラメータで分類器をインスタンス化します．
‫つまり､ 箱から出したらあらかじめ設定されたオーブンレンジを使って､ 好きな料理を作るようなものです｡
‫この点数では､ あまり役に立ちませんね｡
‫より良いモデルを求めています｡
‫CLF 2を作成し､ オーブンを調整するようにハイパーパラメーターを調整して､ お気に入りのおいしいローストチキンをよりおいしく作ることができるようにしましょう｡
‫友人たちが集まる大きなイベントの準備で､ おいしい料理を約束したので､ それを完璧にしようと思っているのかもしれませんね｡
‫それを機械学習モデルでやっているのです｡
‫しかし､ 今回はCLF 2を使用し､ 推定値を10ではなく100としています｡
‫そしてまた､ これらの機能すべてについて､ さまざまな設定を試して､ 調整することができます｡
‫でも､ まずは1つだけ､ その例を見て､ 予測を立てて行くこともあります｡
‫では､ なぜプレッズも？
‫CLF to CLFで予測しているからです｡
‫X有効｡
‫ここと同じことをやっているんです｡
‫ベースライン予測は検証セット上にあり､ 今度は異なるハイパーパラメータで予測を行う｡
‫同じデータで
‫つまり､ モデルが違っても､ データは同じということです｡
‫そして､ 今度は2つ目の分類器を評価します｡
‫CEOは､ 2つのメトリクスを等しくして､ 前に作成した評価関数を再び使用しています｡
‫よし､ では確認してみよう｡
‫ああ｡
‫なるほど｡
‫では､ このモデルが持っているベースラインのハイパーパラメーターで比較すると､ 何が違うのでしょうか？
‫私たちが変えたのは､ 100に等しいという見積もりだけです｡
‫そこで､ モデルのダイヤルをひとつだけ調整しました｡
‫つまり､ オーブンのダイヤルを一つ調整するように､ 同じデータでも精度が少し上がることが確認できるのです｡
‫つまり､ CLF 2の方が若干精度が高いということですね｡
‫より高い精度を実現しました｡
‫しかし､ 低いリコールと同じfの1スコアで｡
‫ふむ｡
‫なるほど｡
‫これは､ もしかしたら､ 高次のパラメーターを変えながら､ 手作業で調整し続けたらどうなるかということを､
‫少し予感させるものです｡
‫最終的には､ これらの指標を改善し続けることができればと思います｡
‫では､ 次は何をすると思いますか？
‫ここまできたら､ 最大深度を変えてみるのもいいかもしれませんね｡
‫では､ デフォルトの最大深度はどのくらいなのでしょうか？
‫この中に見つけます｡
‫最大深度はなし｡
‫そこで､ ドキュメントを見て､ max lengthが取ることのできるさまざまな変数に行き､ 整数を取るか､ 何も取らないかを決めるとよいでしょう｡
‫デフォルトはnone｡
‫ツリーの最大深度ですが､ ドキュメントを読んで調査したところ､ 最大深度にはいくつかの異なる値があることがわかりました｡
‫そこで､ このモデルに戻り､ Clef 3イコールランダムフォレスト分類器を作ることになるでしょう｡
‫今回は､ 同じ100と見積もっておいて､ 最大深度をなしから10に等しくなるように変更することにします｡
‫今すぐ
‫この数字は私が作ったものではありません｡
‫いろいろ調べて､ ドキュメントを読んで､ Max Depthのさまざまなアイデアを考え､ そして､ ここでやったことと同じことをするかもしれません｡
‫3番目の分類器の評価ですが､ お察しの通り､ あるいはお考えの通り､
‫これらすべてを手作業で調整し､ すべてのノブを手作業で調整するとなると､ かなりの労力が必要になります｡
‫そうだろ？
‫ですから､ 実生活で料理を完成させるのと同じように､ 例えばお気に入りの鶏肉料理を作る場合､ みんなが夕食に来るので､
‫オーブンの設定を調整しようとするわけです｡
‫ちょっと試行錯誤が必要かもしれませんね｡
‫一度調理しても､ それほど美味しくないかもしれません｡
‫そして10回目になると､ 本当に上手くなってくるんです｡
‫しかし､ 私たちがここでやろうとしていること､ コードを書くこと､ さまざまな設定をここで変更し､
‫最適な設定を見つけようとすると､ 今の時間よりはるかに長くかかる可能性があるのです｡
‫そして､ そのルールは暗号化されている｡
‫繰り返さないこと｡
‫だから､ あなたはサイキックが私たちのためにこれを行うことができます方法､ 組み込みのメソッドを持っている推測しているかもしれません｡
‫私たちのためにさまざまな設定を試して､ それはランダムな検索保存ですが､ 我々は次のビデオでそれを見てみるつもりです｡
‫もう長くなってしまいましたが､ ここで重要なのは､ モデルのハイパーパラメータをチューニングする場合､
‫トレーニングセットは基礎データを学習する教材のようなものだと考えてください､
‫それがトレーニングセットです｡
‫そして､ 模擬試験で､ 自分の知っていることに磨きをかけるのです｡
‫つまり､ 私たちのモデルのような基本的なパターンは､ すでにすべて学習しているわけです｡
‫そして､ バリデーションが設定された状態で､ 設定を調整しているのです｡
‫ですから､ 最終試験で自分自身を試す前に､ モデルが何を知っているのか､ どのようにさまざまなことを学習するのかを洗練させるのです｡
‫だから､ アで｡ k. テストセットで我々のモデルを評価する前に､ a.
‫さあ､ ご安心ください｡
‫もし､ ちょっと無理があると感じたら､ これまで書いたコードを読み返してみてください｡
‫チェックしてみてください｡
‫自分でいろいろなパラメータを調整してみるのもいいですが､ そうでない場合は心配いりません｡
‫次のビデオでは､ サイキックでのモジュールの使い方を紹介します｡
‫私たちのために､ さまざまなハイパーパラメータを試すことを学んでください｡