スピーカー | 成績証明書 |
| ルーカス | さて、皆さん、私の話を聞きに来てくれてありがとう。 私の名前はルーカス・ベヴァリンです。 私はインテルの統計学者です。 |
| そして今日は、JMP を使用してさまざまな環境のモデルを比較することについて話します。 |
| さて、現在 JMP 15 Pro は JMP がリリースしている最新かつ最高のものであり、モデルに適合させたい場合には、それを行うためのさまざまなツールがいくつかあります。 |
| フィットモデルプラットフォームがあります。 ニューラル ネットワーク パーティション プラットフォームにはニューラル プラットフォームがあります。 分類木と回帰木が必要な場合。 非線形モデリング用の非線形プラットフォームと、他にもいくつかあります。 |
| JMP 15 は 12 か 13 で登場したと思いますが、このモデル比較プラットフォームは比較に使用できる非常に気の利いたツールです。 |
| モデルは JMP 内のさまざまなプラットフォームに適合します。 つまり、ツリーとニューラル ネットワークがあり、どちらが優れているのかよくわからない場合です。 さて、この 2 つを行ったり来たりすることもできます。 しかし、これで、 |
| 同じ画面上にすべてが表示されます。 これはあれよりも優れているのかなど、非常に素早く簡単に判断できます。 |
| そうは言っても、JMP は多くのものに適合しますが、残念なことに、すべてに適合するわけではありません。 それで、収まらないものについていくつかのアイデアを与えてください。 したがって、たとえば、 |
| 多くの機械学習や AI を行うものは、一般に多くの活性化関数や、はい、多くの隠れ層ノードを必要とする自動エンコーダーや畳み込みニューラル ネットワークのようなものに適合する可能性があります。 |
| JMP が提供するもの以外のアクティベーション機能があるため、JMP は JMP 内でその多くのことを行うことができません。 |
| もう 1 つは投影追跡回帰と呼ばれるものです。 もう 1 つは多変量適応回帰スプラインと呼ばれます。 したがって、残念ながら JMP ではできないことがいくつかあります。 |
| R、Python、MATLAB。 |
| 他にもいくつかありますが、 |
| しかし、私はこれら 3 つに焦点を当てます。 そうは言っても、私がここで議論するアイデアは、C++、Java、Rust、またはその他の言語に適合させたいと思うでしょう。 |
| 思いついたものはたくさん使えるはずです。 |
| したがって、前述したように、モデル比較プラットフォームを使用して、他のソフトウェアからも比較できます。 それで何が必要になるのでしょうか? |
| したがって、必要となる 2 つの大きなことは、モデルに適合させるために使用するソフトウェアからのモデル予測です。 |
| また、一般に、特に大規模なモデルでモデル フィッティングを行う場合、データをトレーニング検証セットやテスト セットに分割することがあります。 |
| 適合を比較するときにそれらが一貫している必要があるため、すべてのソフトウェアにどれがトレーニングで、どれが検証で、どれがテストであるかを伝えるものが必要になります。 |
| さて、この講演で私が R、Python、MATLAB に焦点を当てた最大の理由は、JMP とスクリプト言語が実際に R の独自のセッションを作成し、そこからコードを実行できることがわかったからです。 |
| したがって、この図は、線形回帰モデルを出力に当てはめたい場合に非常に簡単に示しています。 |
| ボストンの住宅データ セットへ。 後でそのデータセットを使ってさらに作業を進めます。 |
| ただし、R で線形回帰モデルを非常に迅速に当てはめて、予測値を吐き出したい場合は、それが可能です。 もちろん、JMP を実行することもできます。 しかし、非常に単純なアイデアを与えるだけです。 |
| それで、 |
| 注意点が 1 つあります。私は R 3.6.3 を使用していますが、JMP は 2.9 以降であれば何でも処理できます。 |
| そして、同様に、Python では、独自の Python セッションを呼び出すことができます。 ここの図は、Python を使用して線形回帰を当てはめたところを示しています。 ここではコードのすべての行を詳しく説明するつもりはありませんが、基本的な考え方は理解できたでしょう。 |
| もちろん、Python の場合は最新バージョンの Python 3.8.5 であることに少し注意してください。 しかし、Anaconda を使用してインストールする場合、JMP が 3.6 より大きい場合、JMP との通信に問題が発生します。 |
| このデモでは 3.6.5 を使用しているためです。 |
| そして最後に、独自の MATLAB セッションも作成できます。 |
| ここでは MATLAB 2019b を使用します。 ただし、基本的に、MATLAB のバージョンが過去 7 ~ 8 年以内にリリースされたものである限り、問題なく動作するはずです。 |
| さて、それではどうやってすべてを結びつけるのでしょうか? 実際には、ここでは 4 段階のプロセスを見ていきます。 まず最初に、各モデルに適合させたいと思います。 したがって、各ソフトウェアにデータと各観測値が存在するセットを送信します。 |
| モデルを適合させたら、それらの適合とその予測を出力し、JMP が参照できるデータ テーブルに追加します。 |
| したがって、当然のことですが、私が警告したいのは、モデルをどこに当てはめたのか、またはモデルをどのように当てはめたのかがわかるような名前を付けるようにしてくださいということです。 どちらの例も出てきています。 |
| ステップ 3 はモデルによって異なりますが、いくつかのモデル診断を確認する必要がある場合があります。 モデルが適合しているからといって、数値に基づいてよく適合しているように見えます。たとえば、残差プロットを見てみると、すぐに問題がわかるかもしれません。 |
| 最大の関心領域があまり適切ではありません。 |
| あるいは残差などに問題がある。 そこで、そのようなものを出力する方法も示します。 |
| そして最後に、モデル比較プラットフォームを実際に使用して、すべてを 1 つの大きなテーブルにまとめて数値を比較します。これは、行ったり来たりするのとは対照的に、はるかに簡単です。 |
| それでは、手順をもう少し詳しく説明します。 したがって、モデルのフィッティングを行う最初のステップには、基本的に 2 つのオプションがあります。 まず最初に、JSL 経由で JMP に、選択したソフトウェアを呼び出すように指示できます。 |
| データとそれに適合するコードを送信します。 それで、実際、私はちょっとここから抜け出して、まさにそれをやってみます。 |
| ご覧のとおり、実際に R を呼び出すためのコードがいくつかあります。 |
| それが完了したら、Python を呼び出し、完了したら MATLAB を呼び出し、すべてを結合します。 ここでコードについて少し詳しく説明しますが、実行にはおそらく 3 ~ 4 分かかります。 だから今からそうするよ。 |
| そして、準備ができたら彼のところに戻ります。 |
| したがって、もう 1 つのオプションは、検証を含むデータセットを作成することです。 さて、数に応じて、検証列および/またはテスト列を含むデータセットを作成します。 |
| セットはデータを分割していました。 実行する必要のあるソフトウェア上で実行するようにスケジュールされており、もちろん、そこから必要なものが何であれ出力されます。 |
| もちろん、いくつかの警告があります。 必ず...使用しているソフトウェアが何であれ、実際にモデルに適合させるために必要なものが備わっていることを確認してください。 |
| 他のものと比較する前に、モデルのフィッティングが完了していることを確認してください。 |
| 出力形式が JMP が実際に読み取れるものであることを確認してください。 ありがたいことに、JMP はかなり多くのものを読み取ることができるため、これは 4 つの警告の中で最大のものではありません。 |
| ただし、以前に警告したように、各モデルからの予測が元のデータセットからの正しい観測値に対応していることを確認してください。 |
| それで、それがトレーニングである場合、トレーニングの観察である場合、それを JMP に当てはめると、という話に戻ります。 |
| 使用しているソフトウェアにそれを当てはめるときは、トレーニングの観察として使用する方がよいでしょう。 JMP での検証であれば、それは他の場所での検証です。 これは JMP でのテストですが、他の場所でもテストされる予定です。 |
| したがって、物事が正しく対応していることを確認してください。なぜなら、テスト セットを見て「ああ、こっちの方がはるかに適合している」と言うようなことは絶対に知りたくないからです。 それは、それに適合する観測値の重み付けが異なっており、実際の外れ値がなかったためです。 それで結局考え方が歪んでしまうんです。 それで |
| 注意の言葉、すみません、そこに注意の言葉があります。 |
| わかった。 先ほども触れたように、現在バックグラウンドで実行している例があります。 そこで、私が行っていることについて少し詳しく説明したいと思います。 それで |
| R、Python、MATLAB でニューラル ネットワークを適合させることになることがわかりました。 したがって、それを実行したい場合は、R 内で、基本インストールにあるものの上に 2 つのパッケージを R にインストールする必要があります。それは、Keras パッケージと Tensorflow パッケージです。 |
| numpy、パンダ、matplotlib。 |
| 非常に簡単に計算を行うには非常に面倒です。パンダ、パンダがデータを実行します...何らかのデータ操作。 matplotlib はいくつかのプロットを作成するのに非常に簡単であるはずです。 そして、MATLAB では、アクセスできるかどうかに関係なく、深層学習ツール ボックスを使用します。 |
| わかった。 したがって、ステップ 2 では、JMP データ テーブルに予測を追加します。 したがって、JMP を使用してソフトウェアを呼び出す場合は、JSL コードを使用してそれらの予測を取得し、データ テーブルに追加して、後で比較できるようにすることができます。 |
| したがって、実行できるもう 1 つの方法は、ソフトウェアが自動的に実行され、出力を保存することです。JMP にすぐに指示して、その出力ファイルを取得してから、手持ちのデータ テーブルに予測を取り込むための操作を行うことができます。結果を保存します。 |
| これで、診断プロットも読み取ることができるようになりました。 この場合、私が通常行うことは、診断プロットをグラフィック ファイルとして保存することです。 したがって、私の場合は PNG ファイルになります。 しかし、もちろん、どちらにしても、 |
| 使用できるグラフィック。 今、JMP は太陽の下ですべてをヒットすることはできませんが、jpg といくつかをマッピングする PNG は、通常のものをカバーしていると思います。 |
| 2 番目のメモは、これをモデル比較プラットフォームに使用しますが、自分が何に適合するのか、そしてどこに適合するのかを特定するのに役立ちます。 |
| 通常は、追加する予測列ごとに次のプロパティを追加することをお勧めします。ここで、対象となるデータ テーブルを送信していることがわかります。このプロパティは予測と呼ばれます。 |
| ここでは、物事を予測するために使用しているものをすべて示します (ここでの値はおそらく最良の選択ではありません)。 |
| しかし、この作成者に関しては、このモデルを実際に作成するためにどのようなソフトウェアを使用したかがわかります。 そこで、ここでは R を使用しました。 R が表示されているため、実際には画面に収まります。 Python と MATLAB は少し長すぎましたが、ここには任意の文字列を入力できます。 |
| これらについては、後ほどここでコードをもう少し詳しく説明するときにわかります。 |
| したがって、これは、後で R 内に複数のモデルを適合させることになるので便利です。 したがって、列名を適切に選択し、R が作成した列名が複数ある場合でも、実際にどのモデルを見ているのかがわかります。 |
| さて、これが典型的なモデル比較ダイアログ ボックスの外観です。 |
| ここで注意したいのは、すべてのモデル フィッティングの最後にポイント アンド クリックを行った場合に大まかにどのように見えるかということです。 したがって、いくつかの予測子があることがわかります。 つまり、MATLAB、Python、R 用のニューラル ネットを持っています。 |
| さまざまな予測フォーム。私はいくつかのことに適合するために JMP を使用していました。 |
| さて、多くの場合、人々はこの検証列をグループとして配置します。 |
| これにより、トレーニングの検証とテストがグループ化されます。 実際、ここで By ステートメントに貼り付けると、出力が少し良くなります。 なので、少し後でここでお見せします。 しかし、あなたはそれを置くことができますまたは |
| しかし、私はこの方法の出力が長くても短くても気に入っています。 |
| これが今の最大の理由だ |
| これらはすべて検証であり (ヘッダーには表示されないはずです)、これらはすべてテストです。 |
| 検証をグループ変数として使用すると、21 個のエントリを含む 1 つの大きなテーブルが作成されます。 さて、追加の列があります。 トレーニング検証テストと書いてありますが、私の場合は012になりますが、 |
| このように言葉を使うと、それほど難しく考える必要がなくなります。 012 が何を意味するかなど、誰にも説明する必要はありません。 だからこそ、私はこのような選択をしたのです。 |
| さて、ここで詳しく説明する例では、古典的なボストンの住宅データ セットを使用します。 現在、これは JMP に含まれています。 JMP をお持ちであれば、すでに入手しているはずなので、プレゼンテーションにファイルとして含めなかったのはそのためです。 |
| そこで、ハリソンとルービンフェルドは、一人当たりの犯罪率、町ごとの非小売業用エーカーの割合など、家の価値の中央値を予測するいくつかの変数を用意しました。 |
| 購入しようとしている部屋の平均部屋数、町ごとの生徒と教師の比率(したがって、教師の数が多く、生徒の数がそれほど多くない場合、一般的により良い教育が行われることを意味します) |
| 見つかりました)と他にもいくつかあります。 ここでは 13 個すべてを詳しく説明するつもりはありません。 |
| さて、ここで私が検討したモデルについて少し背景を説明させてください。 次に、JSL コードと、すべてをどのように適合させるかを詳しく説明します。 |
| そこで、いくつかのモデルを調べてみました。 まずは、典型的な線形回帰モデルです。 したがって、ここでは単純な線形回帰が示されています。 中央値を税率別に当てはめただけのようです。 |
| ただし、もちろん重回帰を使用し、それらをすべて使用します。 |
| それで、 |
| しかし、13 の異なる予測変数があり、それらのいくつかは相互に相関している可能性があることがわかっていたので、おそらく他のタイプの回帰も検討する価値があるだろうと判断しました。 |
| そのうちの 1 つはブリッジ回帰と呼ばれるものです。 つまり、実際には、本質的に次のような制約が追加された線形回帰ということになります。 |
| パラメータの二乗値は、ある定数より大きくすることはできません。 |
| これは、ラムダの値が C の値に対応する最適化問題として実際に書き直すことができることがわかりました。 |
| そこで、私は、皆さんが見慣れている典型的な最小二乗法とは対照的に、この追加のペナルティ項を使用してこれを最小化しようとしているだけです。 |
| さて、これは収縮法と呼ばれています。なぜなら、これをどんどん小さくしていくと、これらすべてがどんどんゼロに近づいていくからです。 したがって、当然のことながら、どの程度の制限を設けるかについては、少し考える必要があります。 |
| 現在は縮小が進んでおり、すべての人がゆっくりとゼロに向かって押し上げられるでしょう。 しかし、別のタイプのペナルティ条件を使用すると、実際には一部の条件を完全に削除できます。 |
| そして、なげなわと呼ばれるものを使用できます。 ここでの制約は、二乗パラメータ推定値の代わりに、それらのパラメータ推定値の絶対値の合計を取得することです。 |
| このことから、実際に何が起こるかというと、非常に弱いものは実際にパラメータ推定値自体がゼロに設定されるということです。 |
| 必要に応じて、重要でない用語を削除します。 |
| そこで、なげなわ回帰とリッジ回帰が何をしているのかを少し視覚的に説明します。 したがって、リッジ回帰の場合、ここの円はペナルティ項を表します。 |
| ここでパラメータ空間を調べます。 したがって、真の最小二乗推定値はここにあります。 追加の制約があるため、まだそこまで到達していません。 |
| したがって、最終的には、どこで...基本的に、円に触れる最小値をどこで取得するかを見つけます。 これがリッジ回帰パラメータ推定値になります。 |
| なげなわの場合も同様の描画ですが、絶対値を見ると、これは円ではなくひし形であることがわかります。 ここで、これは 2 次元であることに注意してください。もちろん、超球体やその他すべての形状についても説明します。 |
| しかし、ご覧のとおり、ダイヤモンドの先端で接触していることに注目してください。 したがって、この場合、ベータ 1 は実際にはゼロになります。 このようにして条件を削除します。 |
| さて、もう 1 つ見ていきたいのは、回帰ツリーと呼ばれるものです。 現在、JMP はパーティション プラットフォームを使用してこれらを実行します。 それで、これが何を示しているかを簡単にデモしてみます。それで、すべてのデータは揃っています。 |
| それで、私が自分に問いかける最初の質問は、その住居には部屋がいくつあるかということですが、0.943 の部屋を所有できないことはわかっています。つまり、基本的には、 |
| 部屋は6つ以下です。 だから、木のこの部分から降りてきて、木のこの部分から降りるのはやめましょう。 部屋が 7 つ以上ある場合、中央値を予測することがすぐにわかります。 |
| 値は 37 になります。 数万ドル単位なので、370,000ドルにすることを忘れないでください。 |
| それが 7 未満の場合、次に私が尋ねた質問は、lstat はどのくらいの大きさなのかということです。 |
| それで、それが 14.43 以上であれば、このノードを見て、突然、私の住宅の中央値は約 150 グランドと見積もられますが、ここに来ると、約 233 グランドになるでしょう。 |
| したがって、回帰ツリーが実際に行うことは、入力空間をさまざまな領域に分割することです。 そして、その領域内のすべての値に対して同じ予測を与えます。 |
| ご覧のとおり、分割しました...今回のケースでは、描きやすいため 2 次元のものを使用しています... |
| ここでこのツリーを見ることができます。ここで最初に x1 を確認します。 ここで x2 を見て、x1 について別の質問をし、x2 について別の質問をすることで、最終的に入力空間を分割する方法になります。 |
| これら 5 つのそれぞれに予測値が設定されます。 そしてそれが本質的にこのようです。 これを上から見てみます。 まさにこれを手に入れるつもりです。 しかし、ここでわかるように、 |
| 予測は、5 つの領域のどれが正しいかによって少し異なります。 |
| これらのいずれかを正確に適合させる方法については、あまり詳しく説明するつもりはありませんが、 |
| ジェームス、ウィッテン、ティブシラニ、フリードマンが少しだけ貢献します。レオ?それについて独創的な本を書いたので、そこを見てください。 |
| それでは次に、最近機械学習などでよく使われているニューラル ネットワークについて説明します。 このようにして、ニューラル ネットワークがどのようなものかを視覚的に示します。 ここで、このビジュアルでは、渡すときに 5 つの入力と 13 の入力を使用するだけです。 |
| これら...この隠れた層に。 そして、これらはそれぞれ活性化関数によって変換されます。 |
| これらの活性化関数ごとに出力が得られるので、それを使用します... |
| 多くの場合、これらの出力の線形回帰を使用して中央値を予測します。 |
| そして |
| 結局のところ、ニューラル ネットワークは非線形モデルであり、実際にニューラル ネットワークと呼ばれるのは、一般的にニューロンが人間の脳内で機能していると考えられる表現であるためです。 |
| したがって、各入力を非表示層のノードに渡すことができます。 隠れ層では、入力が活性化関数を介してプッシュされ、一部の出力が計算され、各出力は別の隠れ層のノードに渡すことも、ネットワークの出力にすることもできます。 |
| 現在、JMP 内では 2 つの隠れ層のみが許可されています。 |
| 実を言うと、ニューラル ネットワークを作成する限り、すべてを 20 個も使用できないということはありません。 |
| 私たちは今心配しています。 実を言うと、どんな連続関数でも近似できるという統計理論があります。 |
| 2 つの隠れ層を持つ、いくつかの境界条件が与えられたとします。 だからこそ、JMP はそうした決定を下したのでしょう。 |
| 線形、双曲線正接、およびガウス動径基底。 それで実際には、 |
| これらのノードでは、小さな曲線に注目してください。 これは双曲線正接関数のためのものだと思います。 Linear は上に向かう直線になります。ガウス放射基底は、より通常の曲線に似ていると思います。 |
| それがニューラル ネットワーク プラットフォームです。 最後に見ていきたいのは、投影追跡回帰と呼ばれるものです。 JMP では単純にできないことをここで例として示したいと思いました。 |
| そうですね、射影追跡回帰はもともとスタンフォード大学のジェローム フリードマンとシュタイツルによって提案されたモデルでした。 彼らのモデルは予測を行います... y が beta i、f sub i の合計と入力の線形変換に等しいという形式の予測を行います。 |
| 実際、これはニューラル ネットワークに似ています。 ここには k 個のノードを持つ 1 つの隠れ層があり、それぞれが活性化関数 fi を持ちます。 |
| L. 射影追跡回帰を使用すると、実際にはこれらの f sub i も推定することになることがわかります。 |
| 通常、それらはある種のより滑らかな、またはスプラインフィットになります。 通常、f sub i はリッジ関数と呼ばれます。 これで、アルファ、ベータ、そして最適化が必要な F ができました。 したがって、一般的には段階的なフィッティングが行われます。 現時点では詳細にはあまり深く立ち入るつもりはありません。 |
| さて、すべてのモデルを調べました。 |
| それでは、出力をいくつか示します。うまくいけばうまくいきます。 JMP に入る前に注意しておきたいことが 1 つあります。 |
| R、Python、Keras でニューラル ネットワークのシードを設定するのは非常に困難です。 したがって、私のコードを取得して実行した場合、おそらく私が得たものとまったく同じものは得られないでしょうが、かなり近いものになるはずであることに注意してください。 ということで、 |
| ここで何が得られたか見てみましょう。 これが私が得た出力です。 現在、残念ながら、物事は完全に進んでいるようには見えません。 |
| それで、 |
| ルーカス | 私はここに何を持っていますか? したがって、私にはトレーニング、検証、テストがあります。 したがって、これらのモデルの 1 つがあまり適合していないことがすぐにわかります。 残念ながら、R 内のニューラル ネットワークで何か恐ろしいことが起こりました。 |
| 最初の入力スペースなどで悪い場所を見つけたに違いありません。 つまり、あまり良いモデルには適合しませんでした。 |
| したがって、残念ながら、非線形モデルでの開始パラメーターが重要です。場合によっては、彼らに噛まれることもあります。 |
| しかし、他のすべてを見てみると、他のすべてはうまく適合しているように見えます。 さて、まあまあうまくいっているのですが、それについて議論することはできますが、0.5 より 1 つ上の R スクエアが見えています。 ルート平均が表示されます |
| ここでの二乗誤差は約 5 程度であり、平均絶対誤差でさえ 3 の範囲内にあります。 さて、トレーニングですが、投影追跡回帰が最も効果的だったようです。 |
| 検証データセットにたどり着くと、依然として R のように見えます。 |
| 投影追跡が最もうまくいきました。 しかし、テスト データ セットを見ると、突然、いや、R からのニューラル ネットワークを無視するつもりだと仮定すると、投影追跡回帰が 2 番目になり、最悪の 2 番目になりました。 |
| 多くの場合、このようなフレームワークでは、モデルの適合性を判断するためにテスト データ セットがどのような方法、形状、形式でも使用されていないため、テスト データ セットを最も近くで確認することになります。 |
| それに基づいて見ると、次のようになります |
| JMP からのリッジ回帰が最もよく適合します。 |
| ここで確認できるのは、R の 2 乗がここでは 0.71 で、以前は約 0.73、そしてここでは約 0.73 でした。したがって、一貫して適合していることがわかります。 |
| 3 つのデータセットすべてで同じことがわかります。 したがって、現時点で見ていることに基づいて、決定を迫られるとしたら、おそらく次のことを選択するでしょう。 |
| リッジ回帰。 そうは言っても、ここには診断やその他のものがたくさんあります。 したがって、R からのニューラル ネットワークで何が起こったのかを見たい場合は、 |
| そこへ数歩入ったところで何かが起こったことはすぐにわかりました。 ご覧のとおり、ほとんどすべてが 220 数千であると予測されるため、非常にひどいフィッティング作業を行っています。 |
| したがって、これの取り付け中に何か問題が発生したことがわかります。 |
| したがって、リッジ回帰が最良のものであることがわかりました。 それでは、それが何を吐き出すかを見てみましょう。 それでは、私の JSL コードをすぐに示します。 |
| は、これをすべてどのように行ったかを示していますが、リッジ回帰からのパラメータ推定値がここにあることがわかります。 尾根診断プロットを見ることができるため、状況は元の推定値からあまり縮小していません。 |
| ログ付きの検証テストから、何も行われなかったことがわかります。 |
| そして、こちらの右側には、本質的に残差のあるプロットがあります。 これらは予測による実際の値です。 |
| トレーニングからわかるように、かなり高価で、うまく予測されなかったものがいくつかあったようです。 ここではテスト セットよりも少ないことがわかりますが、それほど大きな問題があったようには見えません。 ここには少し奇妙な点がいくつかありますが、一般的にはわかります |
| 低価格の住宅に住んでいる場合、3 つのデータ セットすべてにかなりよく適合します。 もう一度、これらで何が起こったのかを自問したくなるかもしれませんが、 |
| 現時点では、これが最高のもののようです。 それで私たちは他の人から見ることができます。 |
| ここを参照してください。 そこで、MATLAB について少し見てみましょう。 |
| したがって、トレーニング テストの検証もここで確認できます。 ここで吐き出します...MATLAB は 1 つの診断を吐き出しますが、それが完了するまでに数エポックかかったことがわかります。 |
| しかし、ありがたいことに、MATLAB は非常に高速に実行されます。 |
| そして、実際の予測はここで行われます。 |
| これらすべてがわかります。 |
| それでは、数分かけてコードを見てみましょう。 |
| もちろん、いくつかの注意事項があります。これらすべてを実際に実行できるように、インストールされていることを確認してください。インストールされていない場合、JMP は悲惨な失敗をするだけで、予測を吐き出さず、予測を見つけることができずに失敗します。 |
| したがって、JMP にはコードを使用して検証列を作成する機能があります。 そこで、60 20 20 を選択しました。 ここでランダム シードを選択したのは、私と同じトレーニング検証テスト セットを使用できるためです。 |
| したがって、実際には、現時点では、トレーニング、検証、テストの内容を保存することになります。 実はその列を少し削除するつもりです。 |
| ここでそうする理由は、データ セットを R、Python、MATLAB に送信するためであり、データ セット内のすべてが出力またはすべての入力であるとコーディングが容易になるからです。 |
| したがって、そうでない検証列も望ましくなかったので、それを行うのが少し難しくなります。 それで私が最終的にやったのは、データセットを送信することでした。 |
| トレーニング、検証、テストの行を送信し、R コードを呼び出して実行します。 今では実際にできるようになりました |
| 実際の R コード自体をここに置きます。 永遠にスクロールしなくても済むように、ここでは 1 行だけ書くことにしました。 しかし、あなたを止めるものは何もありません。 プレゼンテーションの前半で見たように、コードが数行だけの場合は、ここに貼り付けるだけです。 |
| それが完了すると、次のコードが吐き出されます。 |
| 診断結果の写真です。 6 回か 7 回の反復後に停止したことがわかりました。これで問題は解決したと言えます。 |
| また、このスクリプトのリッジ回帰にも適合するため、2 つの画像が得られます。 それで、それも吐き出して、アウトラインボックスに保存します。 これらはすべて、すべてのコードの最後にまとめられています。 |
| そして、出力を取得します。しばらくしてから、それらをここのデータ テーブルに追加します。 |
| さて、ここで少しコードを紹介します。 600 万件の観測があり、モデルを実際に適合させるには 24 時間かかるとします。おそらく、それを JMP 内で実行したくないでしょう。 |
| ここから実行できるちょっとしたコードとして、次のように言うことができます。 |
| さて、気になるデータテーブルを開いてみましょう。 その間、どこか別の場所で実行するように R に指示するつもりです。そして、システムが完了したというゴーサインが出たら、「分かった、それではそこからの出力を開いて、それを |
| 私のデータテーブル。 したがって、これはその一部を実行できる 1 つの方法になります。 そしてもちろん、それらの画像ファイルをどこかに保存して、このコードも使用したいと考えます。 しかし、これはまったく同じコードになります。 |
| さて、Python の場合も非常に似ています。 これらのものを渡すつもりです。 Python コードを実行し、診断プロットを出力し、予測を出力します。 |
| Python コードをいくつか示します。ご覧のとおり、これは JMP で実行したものと非常によく似ています。 この場合は、CSV ファイルを開くだけです。 もう必要ないので、列をコピーして閉じます。 |
| そして、MATLAB でまったく同じゲームをもう一度実行します。 アセットについては、MATLAB スクリプトを実行します。 ここから吐き出した PNG ファイルを取得します。 必要な場所に保存し、予測を保存します。 そして、それを掴む必要がある場合は、 |
| ここから実行するのではなく、少しのサンプル コードで実行できます。 |
| R、Python、Matlab の呼び出しが完了したので、JMP で使用できるように検証列を戻します。 それで、どっちがどっちだったか覚えているので。 |
| したがって、デフォルトでは、JMP は使用する検証列内の値を調べます。 最小値はトレーニング、次に最大値は検証、最大値はテストです。 ここで、K フォールド相互検証を行うと、それがどのフォールドであるかがわかります。 012345678 などという感じです。 |
| それで、これを作成します。 また、これをここで作成したので、出力では 012 の代わりに実際にはトレーニング、検証、テストと表示されるため、もう少し明確になります。 |
| 理解する。したがって、これまでに JMP を実行したことのない人に見せる場合、012 が何を意味するのかは分からないでしょうが、トレーニング、検証、テストがどのようなものであるかは理解できるはずです。 |
| OK、それでは、データテーブルに予測を追加し始めます。 ええと、これが私の話の前半でほのめかした set プロパティです。 |
| 私の作成者の MATLAB に列名を付けたので、これが MATLAB のニューラル ネットワーク予測であることがわかります。 したがって、作成者は必ずしも必要ではないかもしれませんが、名前を付けるのが少しずさんな場合に備えて |
| ごめんなさい。 |
| したがって、投影追跡回帰、ニューラル ネットなどをすべて取得できます。 |
| それから、JMP ではリッジ回帰、なげなわ、線形回帰を当てはめていることにも注目しました。 |
| それで私はここですべてを行いました。 そこで、ここで適合モデル、つまり一般化回帰を実行します。 これらすべてを吐き出してください。 |
| 私の予測式を保存してください。 |
| 最後に、完全な出力に対して予測された実際の値をプロットします。 |
| そしてニューラルネットワークを適合させていきます。 検証欄とでも言いましょうか。 共変量を転送します。一般に、ニューラル ネットワークは、通常の出力とは対照的に、ゼロ付近でスケールすると、少し良く適合する傾向があります。 |
| したがって、最初の隠れ層には 3 つのノードがあります。 2 番目の隠れ層には 2 つのノードがあります。 ここでは、両方とも線形活性化関数です。 上記 3 つの場合、私は制限付き線形単位アクティベーション関数を使用していることがわかりましたが、少し異なります。 |
| しかし、それらは関係なく、ほぼ同じようにフィットすることがわかりました。 |
| 5. これが意味するのは、5 つの異なる開始値セットを試して、最も効果があったものをそのまま使用するということです。 |
| 私のコードからわかるように、おそらく R でそれを行うべきでした。 4 つのループのようなものを実行し、それらをいくつか実行し、最もうまくいったものを吐き出します。 したがって、将来の仕事のために、そこが私が行く場所の1つになるでしょう。 |
| それで、それを保存して、モデル比較の準備が整いました。 そこで、これらすべての新しい列をモデル比較に組み込みます。 |
| 少しスクロールしてください。 したがって、ここでは、先ほど触れたように、検証を行っています。 |
| そして最後に、基本的に希望どおりに見えるように少しコーディングを行っています。 |
| そこで、JMP が言う通常の内容ではなく、トレーニング診断、検証診断、テスト診断を示すために、これらのアウトライン ボックスを取得します。 |
| これらの診断プロットを取得します。 |
| ここで私は、ハンドルを取得した際の出力の一部だけが欲しいと言っているだけです。 |
| すべての残差プロットがすぐに出力されるわけではないため、特に MATLAB、Python、R からの残差プロットをいくつか作成します。 |
| これらのタイトルを設定したら、ここで大きな古いテーブルまたは大きな古いダイアログを作成します。 |
| そして、すべてを日記に書きます。 |
| 素敵できれいになりますように。 たくさんのものを閉めて、心配する必要がないようにします。 そして、私がここで最後にやったことは、これらの 1 つをパカッと開けたときに起こりたかったことです。 |
| その下にあるその他のものはすべてすぐに開きます。 |
| 6 つまたは 7 つの異なるものをクリックする必要があります。 わかるでしょう、こことここをクリックしなければなりません |
| ここには、あと 3 つあります。 あと一つかな。 ごめん。 しかし、この方法では、これらのいずれかをクリックする必要はなく、自動的に開きます。 |
| これが、この最後のコードの動作です。 |
| わかった。 |
| ルーカス | したがって、これは単に出力してライブで実行するのとは異なります。 しかし、これは次のように見える場合もあります。 |
| 先ほど述べたように、コード内には、私たちが見たものと同じものがあることが分かりました。 |
| リチャード |
| ルーカス | いいえ。 以上をまとめると、モデル比較プラットフォームは、複数のモデルの予測能力を 1 か所で比較できる非常に優れたツールです。 さまざまなことを行ったり来たりする必要はありません。 目の前にあるすべてのものをただ見ることができます。 |
| この柔軟性を利用して、JMP に適合しなかったモデルを適合させたり、JMP にさえ適合しなかったモデルを比較したりすることもできます。 など |
| これにより、フィッティングに長い時間がかかる非常に大きなモデルをフィッティングする必要がある場合に、モデルにフィッティングを指示することができます。 JMP ですべてを取得すると、すべての結果を非常に簡単に確認して、次のステップを決定できます。 |
| それでは、お時間をいただきありがとうございました。 |