2022年2月10日木曜日

残差プロットをする。

おじさん、先日作ったlightgbmの住宅価格の予想プログラムを任意のCSVファイルを読めるように少し改造してました。

あとモデルデータの保存と読み込みもできるようにしました。

でもどうしても学習の結果が正しいかどうかなかなかわからない。

プログラムにバグがないことを確認することはほんと至難の業。


いろいろ考えた結果、よく知られているデータの学習結果を残差プロット表示すればわかるんじゃないかと思いつきました。

PandasやR言語でグラフ表示すると結局別のプログラムしないといけないし。

よく考えて、今週は機械学習のデータのグラフ表示のJavascriptライブラリを作ってみました。

いつものようにC++からJavaScriptを生成。

全部C++で行います。


JavaScriptで計算すると遅いのかと思ったのですが、ChromeのJavaScriptってめちゃくちゃ高速なのね。

あまりの速さにびっくり。

相関係数とか行列操作のJavaScriptrの統計ライブラリも作ったので、ブラウザでさくさくCSVファイルを読み込んで相関行列とか残差プロットとかが表示できるようになりました。



先日作った、おじさんのlightgbmのプログラムの、ボストンの住宅価格の残差プロットを作ってみました。
おー、ネットに落っこちている図と同じになった。
右下の部分にある謎の直線上の点が同じ。

ということは、先日作ったおじさんのlightgbmのプログラムや今週作ったJavaScriptの統計ライブラリは正しいっぽい。
モデルデータの保存と読み込みやCSVファイルの処理もあってそう。
しかもおじさんの方が右下部分の点の数が少ないからある意味正確??
おじさんのデータだと10以上外したの二つしかないし。

学習アルゴリズムが多少違っても、どちらもある程度正しく学習できていれば、残差プロットの特徴ってだいたい一致するのね。


残差プロットってこういう具合にプログラムにバグがないかを判断するのにも使えるのね。

勉強になるねぇ。

これで、いろんな株価の特徴データのCSVファイルを作れば、ブラウザベースで株価のAIデータ解析ができて、学習が正しいかわかるはず。

ソースコードはこちら

https://github.com/yomei-o/Protra_cpp/tree/main/server/scatter_plot

0 件のコメント:

コメントを投稿