‫予測可能なモデルを構築したので､ テストデータセットでいくつかの予測を行い､ それをエクスポートしました｡
‫この予測を共有する人たち､ あるいは自分自身､ 私の場合は非常に興味があるのですが､
‫データのどの部分がこの予測につながったのか､ 知りたいと思うかもしれません｡
‫そこで､ 機能の重要性が出てくるわけです｡
‫機能の重要性
‫つまり､ ターゲットとなる変数､ この場合は売上を予測する際に､ データのどの属性が最も重要であったかを把握しようとするものです｡
‫ここに書いておこう｡
‫特徴量の重要性は､ 予測する際にデータのどの属性が最も重要であったかを把握しようとするものである｡
‫これを太字のターゲット変数に入れよう｡
‫ですから､ 私たちの場合は販売価格です｡
‫では､ どうすればいいのでしょう？
‫ランダムフォレストのアグレッサーを使用していることは分かっています｡
‫分類プロジェクトでも､ サイキックローンプロジェクトと同様に､ サイキックローンモデルの中には､ 属性の特徴や性能を持ったものがあることを､
‫以前のビデオで見ています｡
‫でも､ もし使い慣れないモデルを使っていたら､ もしかしたらこんな風になるかもしれませんね｡
‫ランダムフォレスト回帰の特徴量の重要性｡
‫美しい｡
‫だから､ もしかしたらこれでいい結果が出るかもしれない｡
‫もし､ 私たちがこれらを探索するとしたら､ 融資の書類を入手するように､ これを入手しました｡
‫いつも参考にさせてもらっています｡
‫だから､ ここを覗いているんです｡
‫と検索することがあるかもしれません｡
‫まあ､ 私たちが何を求めているかは分かっていたんですけどね｡
‫機能の重要度はリターン
‫特徴量重要度は､ 高いほど重要な特徴である｡
‫実際にどうなのか見てみましょう｡
‫では､ 私たちのモデルを紹介しましょう｡
‫そこで､ 最適なモデルの特徴量の重要度を求めます｡
‫そこで､ 理想的なモデルを想定し､ 特徴の重要度を求めます｡
‫すごい｡
‫これで､ かなり大きな配列が返されました｡
‫さまざまな価値観がここにある
‫中にはゼロのものもあります｡
‫中には､ かなり低いものもあります｡
‫10からマイナス6まで
‫彼らは
‫しかし､ これにはどんな共通点があるのでしょうか｡
‫その長さを確認しよう｡
‫トレーニングデータセットとの共通点は何でしょうか？
‫102, 102.
‫つまり､ 102のカラムと102の値があるということです｡
‫つまり､ すべての機能に対して値を取得しているわけです｡
‫つまり､ 売上IDはこれに対応することになる｡
‫そして､ マシンIDはこれに対応することになる｡
‫あとは､ ×電車の列を調べて､ これらの値を絡めて辞書を作ればいいのでは？
‫でも､ あなたはどうでしょう｡
‫私はビジュアルで物事を見るのが好きなんです｡
‫そこで､ それを手助けするヘルパー関数を作ってみよう｡
‫そこで､ 特徴の重要度を視覚的に確認できるように､ プロットするためのヘルパー関数を作るかもしれません｡
‫ここでdef plot featuresに移動して､ 列のリストと重要な部分のリストを取り､ endを20に設定することにします｡
‫102の値があるので､ すぐに理解できるはずです｡
‫しかし､ 現実的には､ プロットを見る場合､ 上位20個の値だけが欲しいかもしれません｡
‫そして､ この小さな機能で調整できるように設定した､ ということです｡
‫ヘルパー関数は､ もっと早くから関数を使い始めればよかったと思うほど､ 素晴らしいものです｡
‫関数を書くことで､ 多くの時間を節約することができます｡
‫そういうことにしておいてください｡
‫以前は､ 同じ行を別のセルに何度も何度も書き込むだけでした｡
‫でも､ 用途に応じて関数を書く習慣がつき始めました｡
‫そこで､ pandasのちょっとしたトリックであるチェーニングを使うことにします｡
‫で､ どういうことかというと､ 単純にいろいろなパンダの関数を括弧でくくるだけなんです｡
‫DFというデータフレームを作り､ 2つのカラムを持つようにします｡
‫特徴は列にすることができ､ 特徴の重要度は重要であることが正しいです｡
‫ここではデータフレームを作成し､ 値の並べ替えを呼び出すだけです｡
‫ここで､ まだ括弧の中に入っている､ この2つをご覧ください｡
‫つまり､ PDO､ DataFrame､ ドットソートの値を一度に処理し､
‫特徴の重要度でソートし､ 昇順はfalseにする､ ということです｡
‫だから､ 高いところから低いところへ行くようにしたいのです｡
‫ああ､ それなら納得だ｡
‫そして､ index drop equals trueをリセットしたいと思います｡
‫そうですね｡
‫本当はこのブラケットはこの下にあるはずなんです｡
‫つまり､ こことここにブラケットがあり､ 2つのドットがあるので､ この3つのパン､ 2つのステップを一発でやってくれるってことですね｡
‫そして､ 今度はプロットする必要があります｡
‫だからプロット｡
‫作成したDataFrameです｡
‫つまり､ fig axで､ プロットをインスタンス化し､ サブプロットをプロットし､ そして､ 水平バーを作成することができます｡
‫なぜなら､ 私の経験上､ 機能をプロットすると､ 横棒がとてもよく見えるからです｡
‫そして今､ 私たちはNまでしか欲しくないと思っています｡
‫ということで､ 最初の20例はこれでいこうと思います｡
‫また､ 機能の重要度も同じで､ 20までしか求めません｡
‫最初の20個は､ Yラベルを設定することになります｡
‫横棒なので､ X と Y を並べ替えて､ ax dot set y label を features に設定し､ ax set X label に通信機能を追加して､
‫feature importance を一番下に配置します｡
‫実際にどのように見えるか見てみましょう｡
‫そこで､ ヘルパー関数を用意し､ そこで実行するだけです｡
‫これを呼び出すために必要なことは､ plot featuresに行き､ それをcolumnに渡すだけです｡
‫つまり､ X列車は変数なので､ その列が欲しいだけなのです｡
‫そして､ 機能とポテンシーは､ ちょうど理想的なモデルのドット機能の重要性で､ これがどのように見えるか見てみましょう｡
‫なるほど｡
‫この左側にあるのが機能です｡
‫その価値
‫これ､ 一番上のやつをください｡
‫一番上にあるべき最も価値のある機能｡
‫そこで､ 私たちがやりそうなことは､ ax dotです｡
‫どうすればいいのか？
‫反転させる｡
‫反転はできるのか？
‫と聞かれているようです｡
‫Y軸を反転させる｡
‫それは機能じゃないかもしれない｡
‫疑わしい場合は､ コードを実行してください｡
‫Y軸を反転させる｡
‫それがうまくいかなかったんです｡
‫機能なのかもしれません｡
‫爆弾
‫疑わしい場合は､ コードを実行してください｡
‫自分の直感を信じること｡
‫そうですね｡
‫そうやって､ いろいろなことを学んでいくんです｡
‫顔を上げずに走って練習するんですね｡
‫迷ったら､ 調べればいいんでしょう？
‫水平棒グラフやマッププロットのリブを反転させる方法については､ いつでも質問してください｡
‫Googleが助けてくれるはずです｡
‫わかりました｡
‫では､ ここから何が推測できるだろうか｡
‫だから､ 結構あるんですよ｡
‫ここには20種類ほどの機能があります｡
‫だから､ そろそろ作ってほしい｡
‫では､ 次の電車を見てみましょう｡
‫頭を使わないでください｡
‫ここに入れましょう｡
‫つまり､ ブルドーザーが作られた年が､ 理想的なモデルを基準とした最も重要な特徴であり､ 次に製品サイズだと言っているのです｡
‫それは何ですか？
‫データ辞書を見てみましょう｡
‫製品サイズです｡
‫これが何なのかわからない｡
‫なるほど､ それは素晴らしい｡
‫えーと｡
‫製品グループのサイズグループ分け｡
‫製品グループとのサブセット｡
‫これは､ もう少しリサーチして､ どんな機能があるのかを把握する必要があるかもしれない例です｡
‫データ辞書にこのようなものがあったらどうでしょうか？
‫専門家のように手を差し伸べる必要があるかもしれません｡
‫それとも､ ×電車で行くか｡
‫製品サイズです｡
‫値ができないことを確認するのかもしれません｡
‫なるほど｡
‫だから､ 1､ 2､ 3､ 4､ 5､ 6種類の大きさがあるんです｡
‫これで､ ゼロはなくなる｡
‫つまり､ そこには多くの欠損値があるのです｡
‫わかりました｡
‫でも､ これではよくわからないから､ 元のデータフレームでやってもいいかもしれない｡
‫これでよしとしよう｡
‫わかりました｡
‫だから､ 製品サイズが販売価格販売年や閉鎖に影響しているというのは､
‫まあ､ 納得できる話です｡
‫また､ そこそこのダメージを与え､ クロージャーの値もカウントされます｡
‫なるほど｡
‫ということは､ うーん｡
‫それだと､ あまり意味がないですね｡
‫そして､ データディクショナリーに戻って､ 今度はマシンの構成を検索して閉じます｡
‫密閉型キャブの有無は？
‫わかりました｡
‫だから､ この異なる価値観が何を意味するのかを理解する必要があるのかもしれません｡
‫でもこれは､ モデルを作った後の最後のほうにやるような探索でしょう｡
‫そうですね｡
‫これを誰かに持っていくのは､ ある程度予想がついた後､ プレゼンのような形で持っていくのがいいのでしょうか｡
‫クライアントとの打ち合わせや､ 他のチームメンバーとの打ち合わせで､ 「このモデルが発見した最も重要な機能はこれだ」というようなことがあるかもしれません｡
‫これは､ あなたの直感のようなもの､ 誰かがすでにデータについて知っていることと一致するのでしょうか？
‫モデルがこれらの特徴を利用して予測を導き出している場合､ これは意味があるのでしょうか？
‫あるいは､ ここでの情報が､ 今後のブルドーザー販売におけるデータ収集の進め方に影響を与えるかもしれません｡
‫ですから､ ブルドーザーの将来の売却価格予測に最も貢献しているここの値に､ もう少し力を入れてみてはいかがでしょうか｡
‫最後に､ 今までの質問でちょっと気になったので､ ちょっと調べてみてほしいのですが､
‫なぜ鉄道模型の特徴の重要性を知っていると便利なのでしょうか？
‫それは仕上げの問題ですね｡
‫そこで仕上げに質問｡
‫研究が必要なのでしょうか？
‫なぜ､ 学習した機械学習モデルの特徴量の重要度を知っておくと便利なのでしょうか？
‫これで今回のプロジェクトは終了です｡
‫最後に少し質問ですが､ ここまでの手順を踏んだら､ ハイパーパラメーターチューニングでどこまでできるかを試してみてはいかがでしょうか｡
‫このように､ パソコンでしばらく走らせておいて､ その結果を見て､
‫腕の睡眠の有効性スコアを上げて､ リーダーボードでどれだけ上位に食い込めるかを見るというのもいいかもしれませんね｡
‫さて､ ランダムフォレストモデルではあまり改善されないというところに到達した場合､
‫最終的な拡張はどうなるのかもしれません｡
‫最後の挑戦です｡
‫他にどんな機械学習モデルを試すことができるのでしょうか？
‫ALのデータセットについて｡
‫そして､ その内容はというと､ サイキックラーン機械学習マップを検索するようなものです｡
‫そこで､ 私たちが行ったことは､ これを経て回帰の問題に行き着いたということです｡
‫アンサンブルリグレースを発見し､ ランダムフォレストを使用しています｡
‫このノートで扱ったフォーマットされたデータを使って､ 別の回帰モデルを試したくなるかもしれません｡
‫だから､ ここにちょっとしたヒントを置いておきます｡
‫だからヒント｡
‫このマップの回帰の部分をチェックするか､ キャットブーストドットAのようなものを見てみてください｡ I. またはx g boost
‫A. I. つまり､ この2つが余分なリソースとなるわけです｡
‫このようなプロジェクトが始まれば､ 機械学習のプロジェクトは一通り終了しますから｡
‫次のステップは､ ここで学んだことをもとに､ 自分で考え､ それを広げていくという感じです｡
‫そういう情報､ 知識があれば､ 本当に助かるんですよね？
‫だから､ いつもこうやってプロジェクトを進めるというよりは､ リサーチをして新しいことにチャレンジしていくという感じですね｡
‫このフレームワークのステップ6､ 「実験」を思い出してください｡
‫それが､ あなたに託した課題です｡
‫しかし､ そうは言っても､ もしあなたがここまで来たのなら､ このプロジェクトを全部やり遂げたのなら､ おめでとうございます｡
‫機械学習を使った回帰の問題を端から端までやったところです｡
‫なんてかっこいいんでしょう｡
‫だから､ ノートを見てください｡
‫私が証明するのは､ 何か質問があれば､ 遠慮なく質問してください､ ということです｡
‫DiscordチャットかUdemyのインターフェイスのどこかに質問を残していただければ､ そこから何ができるかを考えます｡
‫しかし､ 最初のエンド・トゥ・エンドの回帰プロジェクトをやり遂げたことはめでたいことです｡
‫なんてワクワクするんだろう｡
‫すべて最高です｡