そして､ 第8週2日目のパート4へようこそ｡
ええと､ 今週はいろいろなことが起こっている｡
さっそく始めよう｡
覚えているだろうか､ 今日我々がやろうとしていることは､ 商品の価値を推定する能力の精度を向上させるために､
他の種類の価格を構築し､ それらをまとめていくことだ｡
繰り返しになるけど､ これをやっているのは､ これまで学んできたさまざまなテクニックを復習し､
学習の一部を定着させる機会であると同時に､ 楽しい練習でもあるんだ｡
第6週で実験したランダムフォレスト型の機械学習を使う｡
それは伝統的なMLだが､ 我々は違うやり方をするつもりだ｡
私たちは､ クロマにあるベクトル埋め込みを使うつもりです｡ それは､ えー､ 抱擁顔文トランスフォーマーVectorizerに基づいています｡
つまり､ トランスフォーマーと､ えー､ 伝統的な機械学習を一緒に使うということです｡
まずはインポートを行い､ いくつかの定数を設定する｡
今回は､ 製品ベクトルの設定､ 定数の保存､ 環境のロード､ テストデータのロードを忘れないようにした｡
トレーニングデータはCromerにあるので必要ない｡ Cromer自体に接続し､ Cromerの商品コレクションを変数コレクションに入れ､
Cromerからロードする｡
その結果､ ベクトル､ ドキュメント､ 価格が得られる｡
ということで､ ランダムフォレストをもう一度見てみよう｡
そして､ 前回どうやったか､ このセリフを覚えているかもしれない｡
ランダムフォレスト回帰器を訓練する｡
このnjobsというのは､ 同時に実行できるプロセスの数だ｡
しかも､ マイナス1本だとマシン全体を使い切ることになる｡
各コアごとにプロセスを実行する｡
そして､ 本当に僕の箱を叩くんだ｡
私のM1マックでは､ これを実行するのに1時間くらいかかる｡
もし余裕があれば､ 少し離れてマシンの音に耳を傾けてみてほしい｡
それが終わったら､ Joblib dot dumpという便利なユーティリティを使って､
モデルの重みをファイルに保存します｡
そしてモデルを提供し､ それを保存してモデルの重みを保存すればいい｡
そして､ 何時間分ものトレーニングをする必要がないように､ 再びロードし直すんだ｡
ここでは､ 3つのエージェント・オブジェクト､ スペシャリスト・エージェント､ フロンティア・エージェント､ そしてランダムフォレスト・エージェントを読み込みます｡
エージェント・フォルダーを見てみよう｡
専門エージェントは､ 以前にも紹介したことがある｡
これはすでに書いた｡
これはプロダクション化されたコードだ｡
つまり､ 基本的には､ 特化型エージェントのコンストラクタのinitで､ モーダルと呼ばれるものを使います｡
モーダル・クラス・ルックアップと言う｡
そして､ サービス名とクラス名を提供し､ そのクラスをインスタンス化する｡
そして､ 実際にpriceを呼び出すときには､ 単にself dot price
dot priceと言う｡
モーダルの伝え方を覚えておいてほしい｡
我々はこれをローカルで実行したくない｡
私たちはクラウドを呼び出し､ リモートでそれを実行し､ 結果を返したい｡
というわけで､ これが以前見た専門エージェントだ｡
フロンティア・エージェントを見ると､ ここにあるのは前回説明したコードであることがわかる｡
docstringがある｡
ここにdocstringsがある｡
どのようなオブジェクトを扱っているかを示すタイプ・ヒンティングがある｡
そしてこれは､ Jupyter Notebookのコードから本番に使えるコードにするためのプロセスだ｡
そして通常､ JupyterLabでこれを書くことはなく､ VSCodeやPyCharmのようなIDEでこれを行うでしょう｡
そして､ タイプヒントを助けたり､ このゴミを埋めたりしてくれるから､ そこに作ることになる｡
しかし､ JupyterLabを使うこともできる｡
これがフロンティア・エージェントなんだ｡
ランダムフォレスト・エージェントを見ると､ これはとてもシンプルだ｡
コンストラクターでは､ まず､ ベクトルを作成するためのモデルである文型変換器を作成する｡
そして､ 先ほど保存したモデルをロードする｡
そして､ 実際に価格を推論するときには､ まず､ 商品の説明文に記載された説明を受け取り､
それをベクトルにエンコードします｡
そして､ セルフ・ドット・モデルと呼ぶ｡ そのベクトルで予測する｡
これでランダムフォレストの結果が得られたので､ それを返す｡
簡単なことだ｡
ここではゼロを最大にしているのがわかるだろう｡
負の数を返せないように､ 床をゼロにすることを提案する｡
そうなるかどうかは分からない｡
以前のバージョンで見たかもしれないので､ 賢明な予防措置だと思った｡
マイナス価格を予測してほしくない｡
オーケー｡
とにかく､ これがエージェントたちだ｡
そして､ それらのエージェントをインスタンス化することができる｡
さて､ この関数の説明は､ 前回とまったく同じである｡
私たちは単純に品物を手に取り､ その敏速さを測り､ 最も近いドル数を引き出します｡
冒頭の文章はヘッダーである｡
そして価格も引き下げる｡
だから､ 宣伝文句そのもの､ つまり商品のシンプルな説明に戻るだけだ｡
そして､ それを念頭に置いて､ アイテムを受け取り､ それを説明文に変換し､ ランダムフォレスト・エージェントの価格を価格に呼び出す関数､
RF（randomforest）を持つことができます｡
それだ｡
もちろん､ 我々の偉大なテストハーネス・テスターテストを覚えているだろう｡
250点のデータでテストし､ ランダムフォレストのパフォーマンスを見ることができる｡
さあ､ 始めよう｡
赤がかなり多いね｡
前回を覚えているか？
97点くらいだったと思う｡
どうなるか見てみよう｡
ええと､ 実際､ 前回よりほんの少し悪くなっている｡
しかし､ これは明らかに超接戦だ｡
基本的には同じだ｡
つまり､ ランダムフォレストは､ 改良されたベクトルと2つの単語のベクトルを比較した場合､ 基本的に同じ数値を出す｡
そして､ 視覚的にもうまくいっていることがわかる｡
ここにはある種の間違ったスロープがある｡
それで､ ちょっと問題が......あ､ あそこで
しかし､ 一般的に言えば､ それは終わったことだ｡
称賛に値する｡
まあ､ 最近のモデルとは違うけどね｡
これがランダムフォレストだ｡
そして次のビデオでは､ すべてをまとめるアンサンブル・モデルに移る｡
そこで会おう｡