![見出し画像](https://assets.st-note.com/production/uploads/images/113821654/rectangle_large_type_2_ad4cd3fbfc4480ac4399864790b67b9e.jpeg?width=1200)
サンフランシスコ留学16・17日目
この記事の概要
この記事は僕のサンフランシスコ留学について書いているものです。詳細は前回の記事を参照してください。
今回の記事では一気にプロジェクトを進めていきます!
Day16
モデルの改善
本日は土日に考えてたモデルを実際に実装していきました。調べていて、(これも割と知られている気がするけど)地震予測には、短い周期で小さな地震を予測するか、長い周期で大きな地震を予測するかのいずれかしかできません。ここで、メンバーに聞いたところ、今までどおり小さな地震でもいいから、短い周期(数日先とか)で予測しようということになりました。
で、これに基づいてモデルを訓練したんですけど、結構いい感じに学習できました。今の所、精度を担保するために出力は発生時刻とマグニチュードだけですが、できれば緯度経度の予測もしたいなと思ってる。
ちなみに、モデルの学習については、途中で思ったんだけど、どうも今回のモデルは小規模なせいかめったに初期値より損失が改善しないので、100エポック回していたのを10エポックに減らして、代わりにモデルを作りまくって最善だったらモデルを更新する方式を取りました。
コネクションづくり
えー、以前の記事でPythonとJavascriptのコネクションは完成したと書いたのですが、少し予想外の事がありまして、なんとページをデザインしていた人が、Node.jsで動的ページを作ってましたwつまりGithub Pageでホスティングできません。
なので、本人にどうやって他の人が使えるようにするつもりか聞いたところ、APIをローカルで動かして、Javascriptから叩き、ポートを開いてプレイベートネットワーク内でページへのアクセスを可能にしたいらしい。これ、別にNode.jsでホスティングするのは別にいいんだけども、APIをローカルで動かすのは聞いてねえ。
というわけで、3000ポートでWebサイト、4000ポートでAPIがリッスンするようにしてほしいと言われたので、頑張ってJuliaのWebフレームワークGenieでAPI側にポートを開きました。Genieは(JITコンパイルのせいで)初動が遅いから、デバッグに時間かかった。
![](https://assets.st-note.com/img/1692529305132-ekU6WlgO30.png?width=1200)
おまけ
午後のインストラクションで休憩時間に自分について3文で説明してどれが嘘か当てるゲームをしたんですけど、その時にメンバーが「My favorite programming language is Javascript」って言ってたから、あんだけ詳しいなら好きだろと思ってたら、これが嘘だったらしい。
「じゃあ、好きな言語は?」と聞くと、なんか聞いたことない(Wikiで調べた感じLuaかな?)言語だった。Juliaもマイナーな方だから共感できるところはある。
Day17
モデル構築〜続き〜
さて、本日もモデル構築の続きです。まず、昨日作ったモデルに日付情報を付与するために、日付を予測するモデルをメインのモデルから切り離して作ったのですが、これは高い精度が出た。で、月も同様にモデルを作ったのですが…どうもスケーラー(標準化に使うやつ)の逆変換がうまく行かないのでやめました。そこで、今度は時間の差分を予測する(つまり何時間後に起きるのかを考える)モデルに変更しました。こいつもそこそこうまく学習できた。しかし、ここである失態に気づく。
[悲報]入力データと教師データで同じデータを使ってしまう。(ずらすのを忘れていた)
これは焦った。今までずっと「昔の自分がちゃんとデータをずらす処理書いてたよな」と思っていて、一応確認してみると、データがずれてなかったw
てなわけで学習し直すと、ガクッと精度が落ちた。地震の予測などそう簡単にできないのだからそれが当然なのだが、これはかなりまずい。今日中にほぼ完成させなければいけないのに、今更モデルが作れませんはヤバすぎる。
とりあえず、今得られる一番良いモデルを保存してAPIを作り、別の方法を考えた。
分類問題に変換したい
今まで苦労していた原因の一つに取り組んでいる問題が回帰問題であることがある。分類問題なら、SVCやHDBSCAN、そしてニューラルネットワークと様々な選択肢があり、工夫もいくつか知っているが、回帰となるとモデルの小手先の工夫しかできない。しかしそれももう手詰まり。
夕食の後にラボに戻れたので、むりくり分類問題に変換する方法を考えて、ある計算方法を考えた。まず、過去の地震データの位置情報とマグニチュード、自分の位置情報を使って、超雑に自分の位置の地震リスクを数値化する。これを、クラスタリングでいくつかのクラスに分類して、それに基づいてリスクを何段階かで評価する。
これなら式は雑だが、モデル的にはなんの無理もないので、容易に作れる。結局今日中に作り終えることはできなかったが、明日の午前中に作業すれば作り終えると思う。ここで作ったモデルと、回帰で得られた情報から総合的に判断すれば、まあプレゼンできるぐらいのものにはなるんじゃないかな(と願う)。
明日以降
明日以降はゲストが来て、なんかアドバイスみたいなのをもらえるっぽい。詳細は聞いてないけど、実際にエンジニアから話が聞けるのは大事だから、どんな感じになるか楽しみ。
早くプロトタイプ完成させたいな。