2023/05/17

トレーニング済みモデル

 ちょっと疑問なのが、ここまで30分、1時間、2時間、5時間と学習させてみた。で、その出来上がりはzipファイルで保存されてる。

30分 > 5,960KB
1時間 > 180KB
2時間 > 2,952KB
5時間 > 157KB

学習時間には無関係に大きさが異なる。これが正常なのかどうなのか。そもそも何か失敗とかミスしてるのか不安になりました。

予想[1200] 的中[433] (36.08%) 購入[¥840,000] 払戻[¥481,400 (57.31%)]

これが5時間の検証結果なんですが、また悪化してるし2時間よりもなんか検証が早く終わった気がするんですよ。そこで実験してみようかと😏 ってここで不安材料が...この機械学習の根底にあるのがMLContextクラスなんですが、これをフォームのLoadイベントでnewしてるのみで後は使い回してるって事になるけど、一回一回アプリ止めないとこのままだと問題があるかも。なので学習させる度にnewしてみます。

余談ですが、今回AutoML専用アプリを作ったので学習中でも開発中のアプリの作業したり予想したりが出来るのは良かった。ただ、少し前のビルドではあるが、単一ファイルにビルトしておいたやつで試してた所終了時間になっても何やら延々とエラーメッセージ吐いてる状態になつたので、デバックモードで現在は諸々作業してます。これだと特に問題は無く、普通に動作してるかと。

まあね、C#での開発とかその昔はnewするとかって無かった時代でしばらくプロして、現役退く頃からオブジェクト指向とかでC++がとか、なんかそんなタイミングでしたので、はっきり言えばオブジェクト指向は素人です😅 その後、VB6とか諸々ってか、確かVisual Basic 6は自腹で購入してるし、Visual Studioのどのバージョンだったか迄は正規ユーザーだったりとかね。EntityFrameWorkとかなんかデザインファーストとかでJRA-VANのデータ全部作ったり、その当時にもSQLiteがあり、当たり前だけどそのEntityFrameWorkでSQLiteを的な事で苦労したり。今回の取っ掛かりもコードファーストでの何だ、諸々をVisual Studio community 2019で始めて、Visual Studio community 2022のリリースイベント参加しながらVB.NETに見切りをつけ、C#に転向。ってコードファーストとか捨てて素のSQLiteのアクセスじゃなきゃって感じで現在なんですよ。ああ、処理待ちで暇なんでだらだら書いてました😁 学習と検証別アプリなんで同時実行とか出来てるからまだ効率は前より良い。

1分 > 25KB
予想[1200] 的中[267] (22.25%) 購入[¥840,000] 払戻[¥368,500 (43.87%)]
2分 > 25KB
予想[1200] 的中[267] (22.25%) 購入[¥840,000] 払戻[¥368,500 (43.87%)]
5分 > 25KB
予想[1200] 的中[267] (22.25%) 購入[¥840,000] 払戻[¥368,500 (43.87%)]
10分 > 39KB
予想[1200] 的中[267] (22.25%) 購入[¥840,000] 払戻[¥368,500 (43.87%)]
25分 > 5,817KB
予想[1200] 的中[462] (38.50%) 購入[¥840,000] 払戻[¥623,610 (74.24%)]

う~む、ここまで順調でしたが、この25分がね😔 ログ見ると、ってここまであまり注意深くログ見てないのも問題だったかも。でもね、このログが何ともな奴でね~。まあ、毎回秒指定で実行してるのでタイミング的に良いとか悪いとかは本来はやめて欲しいが、今回25分の終わりには

75 cancelled. Time budget exceeded.

75 failed with exception One or more errors occurred. (Operation was canceled.) (Operation was canceled.) (Operation was canceled.) (Operation was canceled.) (Operation was canceled.) (Operation was canceled.) (Operation was canceled.) (Operation was canceled.) (Operation was canceled.) (Operation was canceled.) (Operation was canceled.) (Operation was canceled.) (Operation was canceled.) (Operation was canceled.) (Operation was canceled.) (Operation was canceled.) (Operation was canceled.) (Operation was canceled.) (Operation was canceled.)

てな感じの終わり方。これ自体は時間が来たから打ち切りねって普通だと思うけど。一方、直前の10分なんかだと、

Trial 48 finished training in 7320ms with pipeline ReplaceMissingValues=>OneHotHashEncoding=>Concatenate=>SdcaRegression

ってなまあ、'failed'とかではないんですよね。タイミングが良かったかなぁ。でも、そんなタイミングは時間指定した時点では予測不能だし、もしそれが原因なら終了時に何かしらその事象を知って何か手を打つようにこちらがするべきなのか謎です。確かにログは残してるので、プログラム的にログチェックしてこの構文的なものを検知してってのも不可能ではないとは思うけど、TrialResultクラスでAutoMLExperimentクラスのRunAsyncメソッド戻り値取得してるけど、このTrialResultクラスでその辺りを判別して、今回の学習結果を採用するかしないかの判断しなきゃなのかなぁ。

30分 > 287KB
予想[1200] 的中[488] (40.67%) 購入[¥840,000] 払戻[¥559,290 (66.58%)]

そもそも、このAutoMLがVersion 0.20.1ってのも何かまだ微妙なのかもですけどね。ちと疲れて1時間のを終わらせて、終わったって終了しちゃったのでログ見なかったorz ログをセーブする様に改造明日しようかと思います。

0 件のコメント:

コメントを投稿