底辺大学の院生がプログラミングや機械学習を勉強するブログ

勉強していることを雑にまとめるブログ。当然、正しさの保証は一切しない。

3.3 ベイズ線形回帰

昨日は線形基底関数モデルを用いて回帰を行った。 telltale.hatenablog.com 今日は同じ回帰問題をベイズ的アプローチで解くベイズ線形回帰について勉強する。 ベイズ線形回帰 ベイズ的なアプローチの最終目標は、を観測した条件の下でのの分布を得ることだ。…

3.1 線形基底関数モデル

PRML上巻の主題は、代表的な学習問題である「回帰」と「識別」である。このうち「回帰」問題の目標は、ある観測値とそれに対する目標値からなる訓練集合が与えられたとき、新たな入力に対する未知の目標値を予測することである。例えば、1、4、5、2という入…

演算子オーバーロードとfriend関数

行列の計算を今までEigenにやらせてたんだけど、やっぱり自分で作るかーと思ったのでここ数日行列クラスを実装する作業に明け暮れてた。こんな感じ。 // TEMPLATE CLASS Matrix template <class Ty_> class Matrix { // define my matrix class std::vector<std::vector<Ty_>> mat_; publ</std::vector<ty_></class>…

C++/CLIでarrayが使えねーと思ったらstd::arrayはダメだったという話

タイトルで内容完結してるけどつまりそういうこと。(手抜き) 久しぶりにC++/CLIをさわる機会があったときに、Point型の配列を作りたかったから array<Point>^ points = gcnew array<Point>(N);みたいなコードを書いたんだけどどうもコンパイルが通らない。で、調べてみて</point></point>…

C++の仮想関数を復習する

前回も登場した同僚のC#erと仮想関数の使い方について話していたとき、主にvirtualの意味についてこんがらがってきたので復習することにした。このあたりはC++を勉強する初学者が最も躓きやすいところだよなぁとつくづく思う。 さて、これから女の子の名前を…

overrideキーワードをつける

先日同僚のC#erのコード見てたら、 public override void func() { // code } こんな風にメンバ関数の定義を書いていた。 その時は、へーC#にはoverrideキーワードなんてあるんだーと思うだけだったけど、実はC++にもあるらしい。使い方はこんな感じ。 class…

autoキーワードとアロー演算子

昨日なんか書くネタあるかなーって、C++のことを色々調べてたらこんなコード見つけた。 auto add(const int x, const int y) -> int { return x + y; } ??? なんやこのコード……。 まあ予想はつくけど、戻り値の型を明示的にするための演算子のようだ。 au…

スマートポインタ

qiita.comスマートポインタについての知識がないC++使いは嫌らしいので猛省して勉強することとする。 スマートポインタ概要 ポインタを用いてメモリを動的確保をする場合、解放のし忘れが無いようにコーディングしなければならないことは周知の事実である。 …

コンストラクタ初期化子を使う

多分知ってる人からしたら今更な内容。 今までコンストラクタでメンバ変数を初期化する際はこんなコードを書いてた。 MyClass(const int value) { value_ = value; } これと同じことが下のコードでもできる。 MyClass(const int value) : value_(value) {} …

円周率を求めるシミュレータをマルチスレッド化して高速化する

C++11を使ったマルチスレッドプログラミング。モンテカルロ法で円周率を求める。 モンテカルロ法 - Wikipedia 一番簡単に非同期処理ができるstd::threadで実行してもいいけど、こちらは戻り値を返せない。 一応、結果を入れたい変数を参照渡しするとか、結果…

1.2.3 ベイズ確率(+BPSKのビット判定)

最尤推定の説明がこのページだけだと分かりづらいから、実際に推定問題を解いてみて理解してみる。 個人的には信号のビット判定問題が直感的に分かりやすいと思う。(デジタル通信についての知識が必要だけど) 問題 BPSKの信号点は、実軸上に2つ現れる形式…

「int *a」 vs. 「int* a」

どっちでもいいってことで決着はついてるけど暇だし蒸し返してみる。 ちなみに僕は「int* a」派。 教科書は「int *a」が多い気がする。僕がC++を勉強した独習C++も「int *a」だった。独習C++ 第4版作者: ハーバート・シルト,神林靖,トップスタジオ出版社/メ…

続き:多項式曲線フィッティング

昨日の続き。 二乗和誤差関数を最小にするような係数ベクトルを計算することで、様々な非線型関数へのフィッティングが出来るらしい。 そのためには例のをで偏微分して0とおいた方程式を個作って、その連立方程式を解けばいいらしい。頑張ればやれるだろうけ…

1.1 例:多項式曲線フィッティング

1行目「まず最初に単純な回帰問題から始めよう.」 ……。 回帰問題ってなんやねん!!!! 回帰分析 回帰(かいき、英: regression)とは、統計学において、Y が連続値の時にデータに Y = f(X) というモデル(「定量的な関係の構造[1]」)を当てはめる事。別の…