JupyterLabへようこそ｡
そして3日目｡
第6週だ｡
またこのノートを楽しみにしています｡
いいものを用意したよ｡
だから､ 今日もベースラインモデルを見るつもりだ｡
だから､ まずは見たことのあるインポートの数々から始めよう｡
特に目新しいことはない｡
しかし､ この2番目のセルに新しいインポートがいくつか入っている｡
従来の機械学習用パンダのインポートをいくつか紹介しよう｡ このパンダは､
おそらく旅の中で何度も出会ったことがあるだろう｡
ええと､ もちろん､ numpyはあなたにとって古馴染みだと確信している｡
そしてsklearn｡
Scikit learnは信じられないほど人気のある機械学習ライブラリで､ 今日私たちがたくさん使うことになる一般的なアルゴリズムが何トンも何トンもありますが､
最も重要なのは線形回帰で､ 線形回帰モデルを実行するためのデータサイエンティストのツールキットの標準的な部分です｡
Gensimは､ 少し前に紹介したword
two vecのようなNLP関連でとても便利なライブラリだ｡
先ほど述べたように､ 言葉をベクトルに変えるための強力なモデルである｡
だから､ そのセルも必ず走らせる｡
それからもうひとつ､ 輸入品がある｡
ええと､ またscikit learnから｡
ただ､ より高度な機械学習のためにやっている2つの異なるインポートなので､ これらは別々にしておいた｡
1つはサポート・ベクトル回帰で､ サポート・ベクトル・マシンとパッケージの一部である｡
そしてもう1つは､ ランダムフォレスト・リグレッサーだ｡
ええと､ 先ほどランダムフォレストについて触れましたが､ それも取り入れましょう｡
オーケー｡
さて､ この定数セットだが､ あなたを驚かせるかもしれない｡
ちょっと変わった形をしている｡
ええと､ その考えは止めておくように言っておくよ｡
後から入ってくる｡
このようなことをしたことがある人なら､ 見覚えがあるかもしれない｡
それは､ うーん､ 少し奇妙なことに､ 非常に歴史的な様々な理由がある｡
ええと､ その特定の記号を標準出力にプリントすると､ 色が緑色に変わるんだ｡
まあ､ いろいろな理由があるんだけど､ それはここでは書かないよ｡
そして､ リセットは色を黒か白に戻す｡
この定数を知っていれば､ カラー印刷も簡単にできる｡
オーケー｡
そこで､ 定数を実行し､ いつもの環境設定を実行し､ ハギング・フェイスにログインする｡
うーん､ よくわからない｡
今日はハギング・フェイスを実際に使うことはないと思うので､ ハギング・フェイスにログインする必要はなかったと思う｡
それから､ Jupyterノートブックにmatplotlibが入っていることを確認してください｡
ええと､ データを再作成するのではなく､ ピックルファイルからデータを読み込みます｡
そこで､ トレーニングデータをもう一度見てみよう｡
では､ 最初のトレーニング・データを取ってみよう｡
そして､ これが何であったかをもう一度思い出してもらうために､ その促しを求めるだけだ｡
というわけで､ このアイテム・オブジェクトのプロンプト属性を探しています｡
ええと､ 過去に､ ええと､ 2日前に｡
でも､ これで皆さんがこのことをより身近に感じてくれることを願っています｡
きれいに印刷できるように印刷させてください｡
うーん､ そうだな｡
ええと､ これです｡
1ドル単位でいくらですか？
そしてタイトルがあり､ ディテールがあり､ 価格がある｡
さて､ なぜ私がこの問題のために特別にこのアイテムクラスのようなものに多くの時間を費やしているのか不思議に思うかもしれない｡
このようなことは､ あなた自身が商業的な問題に直面したときに､ その問題を解決し､
データを加工する方法を探すために行うことなのです｡
だから､ これは役に立つ実戦経験なんだ｡
このコード､ つまりアイテム・クラスを正確に使うことはないだろうし､ おそらくこのようなプロンプトはないだろう｡
しかし､ このようなテクニックは皆さんにも再現できるものなので､ それを理解し､ 私がどのような決断を下しているのかを理解することが重要で､
そうすれば皆さんは自分のプロジェクトで自信を持って同じことができるようになる｡
つまり､ これがトレーニングのプロンプトだ｡
では､ テストプロンプトを見てみよう｡
では､ テスト項目の1つ目を紹介しよう｡
そして､ このメソッドをテスト・プロンプトと呼ぶことにする｡
そして､ 基本的にトレーニングのプロンプトを取るが､ モデルをテストするときに答えが明らかにならないように実際の価格を取り除くことを覚えておいてほしい｡
そして､ その価格を埋めるのが仕事だ｡
そして､ もしそれが何を記入することになっているのか知りたければ､ うーん､ トレーニングポイントのためにそれを取るよ｡
電車に乗ったら､ そのまま値段を言えばいい｡
そして､ これが実際の価格であり､ この価格に関連するものである｡
しかし､ 本当の値段は少し違う｡
この訓練とテストの方法､ 訓練項目とテスト項目のリスト､ そしてそれらをどのように呼ぶかについて､
記憶を呼び覚ますことができれば幸いだ｡
このコードの塊は､ あなたのプロジェクトで正確にこのコードを使うことはないかもしれないが､
似たようなことはできるだろう｡
だから､ これは一種の原理原則であり､ 問題に取り組むための素晴らしい方法であり､ あなた自身の問題にも応用できるはずだ｡
だから､ 私たちが考え出したさまざまなモデルを､ 本当に素早くシンプルな方法でテストできるようにしたかった｡
テストデータの束をモデルに通し､ その結果を視覚化するんだ｡
結局､ 同じことを何度も繰り返したくなるので､ コードを何度もコピー・アンド・ペーストしなければなりませんでした｡
そうする時はいつでも､ 自分のために何らかのユーティリティを構築する時だと思う｡
それで私が考えたのがこのクラス・テスターで､
モデルをテストできるようにするものです｡
そして､ その唯一の仕事は､ アイテムを受け取り､ それに応答し､
見積もり価格を返すことである｡
このような関数を書いたら､ あとはテスターを呼び出すだけだ｡
これから紹介するクラスは､ ドット・テストと関数名を渡す｡
そして､ この機能を使う｡
実際､ 250の異なるテスト項目に対してこのテストを繰り返し実行し､ 結果を予測する能力がどの程度あるかを調べ､
その情報を視覚的にまとめて返す｡
そういうことだ｡
そして､ ワークフローを明確に簡素化することができる｡
ええと､ これは授業そのものです｡
至ってシンプルだ｡
色で対処しなければならないことがあるんだ｡
何色かプリントすると言ったはずだ｡
データ・ポイントを実行し､ そのデータ・ポイントを取得する｡
ここで､ あなたが提供した関数が呼び出される｡
モデルのモデルを取得するために､ データポイントとともに呼び出す｡
あなたの機能で､ その価値を推測してください｡
そして､ 先ほど見た価格属性を呼び出すことで真実を得る｡
そして､ その誤差はもちろん､ 推測と真実の絶対的な差である｡
簡単なことだ｡
また､ 二乗対数誤差と呼ばれるものも計算され､ 二乗対数誤差の公式はまさにここにある通りである｡
これは､ 真実の対数プラス1から推測の対数プラス1を引いたものである｡
なぜ､ このプラス1が計算式にあるのかは､ 想像がつくだろう｡
真実がゼロだったら､ 数学はいらないからだ｡ 丸太が吹き飛ぶ｡
だからこの式は､ 例えば､ 真実や推測がゼロの場合にうまく機能する｡
対数誤差の2乗は､ もちろんこの2乗だ｡
それから､ ちょっと処理をするんだ｡
これからちょっとしたグラフを描くことができる｡
ええと､ 報告書を書いてください｡
そしてこれが最終的に､ さっき言った機能なんだ｡
このテストを実行するにはtestを呼び出せばいい｡
オーケー｡
そのセルを実行させてくれ｡
だから､ このテストクラスで私がやったことのすべてを特に理解する必要はない｡
このような小さなテストハーネスを作成し､ それに少し時間を投資することで､ モデルを実行した結果について本当の洞察を得ることができるようになるという原則だ｡
それがここでの学びだ｡
では､ 考えられる最もシンプルなモデルは何だろう？
最もシンプルなモデルとは？
本当のベースラインモデルを作る前に､ 私たちは出てくるつもりだ｡
私たちは2つのお笑いモデルをやるつもりで､ 想像しうる最も基本的なことをやるおバカなモデルだ｡
そして､ ちょっと挑戦させてほしい｡
可能な限りシンプルなモデルは何か考えてみてほしい｡ おそらく､ それよりももっとシンプルなものになるだろう｡
ええと､ ではまず､ 非常にシンプルな2つのモデルを紹介します｡
1つ目は､ すでに答えを明らかにしている｡
おそらく､ 最初の1つは乱数を当てるだけだと見ただろう｡
それだけだ｡
これがその機能だ｡
プロンプトを受け取らない関数がある｡
そのアイテムを完全に無視し､ 代わりに何を言われても気にしないようにするのだから｡
1から1000の間の乱数を返す｡
ええと､ すみません､ 1～999の間です｡
ええと､ ランダムシードを設定して､ このテストを実行するたびに同じになるようにします｡
そして今､ 我々はそれを実行している｡
このテストをもう一度実行するには､ テスター・クラスでドット・テストを実行します｡
そして､ 単純にこの関数の名前を渡す｡
関数を呼び出さないのは､ もし関数を呼び出したら､ 一度だけ呼び出してそれでおしまいだからだ｡
関数そのものをこのように渡す｡
そして今､ これを実行に移し､ 私のプログラムの結果を見てもらう｡
このモデルは非常に素早いものだったからだ｡
だから､ 上にスクロールし直して､ あなたがここで見ているものを教えようと思う｡
次の数回の授業で何度もやることになるので､ とても慣れることになる｡
つまり､ ここに表示されている各行は､ テスト・データの異なる1点を表している｡
そして､ この右側にあるアイテムが何であるかを教えてくれる｡
LEDライトキット､ ハンドヘルドLED｡
そしてその後､ 短く切った｡
そして､ このLEDライトキットに表示されているのは､ LEDライトキットの機能を推測したモデルです｡
そして､ 乱数ジェネレーターだから143ドルを当てた｡
真実とは何か？
ちょっと驚くべきことに､ 真実は289ドルで､ これは私が予想していたよりもむしろ高い｡
たぶんね｡
もしかしたら､ ノートパソコンが横に付いてくるかもしれない｡
それがエラーなんだ｡
それくらい､ このモデルは間違っている｡
対数誤差の2乗については､ また別の機会に説明することにしよう｡
しかし､ これは絶対的な誤差と相対的なパーセンテージの誤差の差をよりよく補正し､
よりよく反映させるためのものだ｡
しかし､ 私たちは何よりもこのことに焦点を当てるつもりだ｡ なぜなら､ 私たちにとって､
人間にとって､ 推測と真実の違いを理解するのはとても簡単だからだ｡
ええと､ 赤で塗られているのは､ それが本当にひどい推測だと考えられているからです｡
だから赤は本当にひどい｡
黄色は......､ 緑はまあまあかな｡
その定義は､ 上にスクロールして戻ってみると､ 経験則のようなものがある｡
私は､ 40ドルか20％以内で当てたら緑と呼んでいる｡
40ドルか20％以内ならグリーンだ｡
40ドルというのはかなり気前がいいと思うかもしれないが､ ここでは値段の幅が大きく､ 何かの説明を受けただけだということを覚えておいてほしい｡
そして､ これを実行するのは本当に難しい｡
だから､ 40ドル以内で当てることができれば､ それは立派な仕事だと思う｡
だから､ 望むならもっと厳しくすることももちろんできる｡
これを微調整するのはあなた次第だ｡
でも､ それが私の原則だった｡
では､ すべてのポイントを紹介しよう｡
そして最後には､ ちょっとした視覚化もある｡
では､ 何が見えているのか｡
私はこの図が大好きだ｡
このような図をたくさん見ることになるだろう｡
だから､ これに慣れることだ｡
X軸は､ 製品の実際の価値を示している｡
また､ データサイエンティストがyと表現するのを耳にすることもありますが､ この軸はデータサイエンティストが言うところのyハット､
つまりモデルがどのような推定値を出したかを示しています｡
つまり､ 製品の実際の真価に対するモデルの推定値を見ているのだ｡
つまり､ 真の値は常に0から1000の範囲にある｡
完全にランダムな点の集合｡
この青い線は､ もちろん完全な推測の線を表している｡
もしモデルがこの青い線に沿って推測するようなことがあれば､ それはまさにグランド・トゥルース（地上真実）上にいることになり､ 運がよかったと見ることができる｡
もちろん､ 幸運に恵まれるのはわずかな時間であり､ 青い線に近い緑色の点は､
かなりうまくいっていることを表している｡
黄色い点は「A」､ 赤い点はトリックが外れて右に出てしまった場合だ｡
ああ､ 楽しかった｡
楽しんでいただけたなら幸いだ｡
もうひとつ､ とてもつまらないモデルがある｡
非常に基本的なモデルとして､ ええと､ 私が思いついた本当に基本的なものの1つは､ すべてに対してゼロを推測しよう､
あるいはすべてに対して1を推測しよう､ と思ったかもしれない｡
私たちはそれよりも少しマシなことができる｡
トレーニング・データ・セットを使って､ すべてのトレーニング・データ・セットにおける商品の平均価格はいくらか､ と言うことができる｡
というのも､ 我々のモデルにはトレーニング・データセットが提供されているからだ｡
だから､ 私たちはそれを一定の推測として考えることができる｡
学習データセットに含まれるあらゆるものの平均価格がすべてだと仮定しよう｡
基本的には､ トレーニングデータセットの価格を計算し､
その平均を求めます｡
これで､ トレーニング・データ・セット内のあるポイントの平均価格が得られる｡
そして､ これが我々の非常に洗練されたモデルだ｡
繰り返しになるが､ これはアイテムを受け取り､ その平均値を返すだけである｡
そのため､ 渡されたものはすべて無視され､ ただ平均値が返される｡
では､ これがどのようなものか見てみよう｡
これから見る図がどのようなものか､ 頭の中に思い浮かべることができるかどうか試してみよう｡
どんな感じか想像できるかな？
そして､ 自分が正しいかどうかを確かめる準備ができているならね｡
バム！
もちろん､ これがその図だ｡
もし500点だと思ったのなら､ 分布がより安いものに偏っていることを覚えておいてほしい｡
元々ほどひどくはない｡
修正したが､ ほんの少しだ｡
ええと､ だから､ この金額は絶対にすべてに対して当てられたんだ｡
そしてもちろん､ それが製品の価値と同じになった時点で緑､ そうでなければ黄色か赤になった｡
だからスプレッドがある｡
そして､ 期待通りの結果を見ることができる｡
実際の結果をスクロールバックしてみると､ 赤の海が広がっており､
平均に近い値段のものには時折緑が混じっているのがわかる｡
それでは､ 楽しんでいただけたら幸いです｡
今のところ､ まだ実際の機械学習モデルを見ていないが､ 心配しないでほしい｡
頑張るんだ｡
それではまた次回