MATHGRAMスマートフォン用の表示で見るMATHGRAM主に数学とプログラミング、時々趣味について。Aggressive(以下PA)の実装は、あとから冷静に考えて良くないところが多かったなあ、と反省。以下がそのリンクです。今回作ったモジュールにPAを含んでいるので正直あんなクソ記事見なくていいです。Learning(以下CW)を実装してみました。言語はいつも通りpythonです。pythonしか書けない。参考文献はこちらです。見る前回の反省点アップデートの手段であるPAをクラスの名前にしてしまい、なんだかよくわからないものを作ってしまった。今回はクラスをOnlineLearningにし、アップデートの方法をユーザーが選べるように設定しました。今はPAとCWが使えます。AROWもSCWもすぐに入れる予定です。(今はPASSされてるけどw)あとまだ機能が少ないから、いろいろ入れたいですね。評価値を計算する関数を入れる予定。先の教科書では、"共分散行列"とだけ書かれているので対角成分以外も、もちろん値を持っているものとして説明されています。共分散って保存する必要あるのか!?という疑問が浮かびました。データの次元同士に相関がある場合もありますが、相関が無い場合も少なく無い。それぞれの次元に関する重みの信頼度(Confidence:これが名前の由来)だけを保存しといても、そこまで精度は変わらんのでは?...そう思いました。誰か教えて!まあ、とりあえず対角成分だけを保存するように定義すれば、行列はスパースなものになり計算量も節約できるわけです。いうことで実装時はそんな感じになっております。online_learningモジュールになっております。コメントで軽い説明しております。#上で説明してた部分です。"""fitを使う時に手法を選択します。デフォルトはPAになっています。CWを選択するときは、etaの値も定義してあげてください。以下がテスト用の実行コードです。OnlineLearningでモジュールを読み込みます。#以下のようにupdate方法にCWを選択しています。1)draw_split_line(model.w)print(model.w)print(model.sigma)plt.show()出力結果はこんな感じです。ちなみに最終的に生成された重みと、その重みの自信はこんな感じでした。0.00021135]]自信ありまくりです。くそ尖ってますwまあそりゃ簡単なデータなのでこうなりますよね。まとめとりあえずいい感じに実装できてるのではないでしょうか。今度、もうちょい本格的なデータで試してみます。それより化物語ディープラーニングやんなきゃ。モジュール作るのくそ楽しい。»Profile表参道で働く、フロントエンドエンジニア普段はTypeScriptでReact&Redux書いてます。機械学習最近全くやってないけど、復活しようと企んでる。(2)Archiveはてなブログをはじめよう!ket-30さんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。