ルベーグ積分の公式集4:積分(定義,基本性質)
ルベーグ積分には様々な定理や公式が出てきて理解が追い付かなくなることがよくある。本ブログでは,理解の一助として,基本的な公式をまとめた。内容は随時追加していく予定。
★積分
・積分の定義
測度空間が与えられている時の,上における積分を考える。
(1) が非負関数の場合,単調増加な収束列を用いて
(2) 一般の場合,として
とそれぞれ定義する。(2)では右辺のそれぞれの積分は(1)を用いて得られる。なお,のいずれか一方が有限な場合にのみ(2)は定義される。積分値が有限の時,積分可能であるという。
・積分の基本性質(忘れやすいもののみ)
・(第一)平均値の定理
ルベーグ積分の公式集3:可測関数
ルベーグ積分の公式集2:ボレル測度とルベーグ測度
ルベーグ積分には様々な定理や公式が出てきて理解が追い付かなくなることがよくある。本ブログでは,理解の一助として,基本的な公式をまとめた。内容は随時追加していく予定。
★ボレル測度とルベーグ測度
・最小の-加法族
集合とその部分集合の族に対して,を含むすべての-加法族の共通部分をとったものを,の生成する(最小の)-加法族と呼ぶ。
・ボレル測度の定義
位相空間が与えられたとすると,位相は集合族であるから,これを含む最小の-加法族を考えることができる。これをボレル-加法族と呼び,で表す。また,上で定義される測度をボレル測度と呼ぶ。
とくに,を実数空間とする場合のものをボレル加法族,ボレル測度とすることもある。
・外測度
集合の全部分集合上で定義された集合関数が以下の(1)-(3)を満たすとき,外測度と呼ぶ。
(1)
(2) ならば
(3)
またが-可測であるとは,すべてのに対し
が成り立つことをいう。-可測な集合すべてからなる族は-加法族であり,外測度をこの族に制限して得られる集合関数は測度となる(カラテオドリの拡張定理)。
・測度を-加法族上の測度へ拡大する
加法族およびその上の測度があるとする。の集合列を用いて,集合関数を定義する。
ここで下限はとなるすべての集合列についてとる。このとき,は上の外測度で,下記が成り立つ。
これにカラテオドリの拡張定理を適用すれば,の生成する-加法族上の測度が得られる。
・完備化とルベーグ測度
測度空間に対し,が測度0の集合のもつすべての部分集合を含んでいるとき,この測度空間を完備であるという。
ボレル測度空間を完備化して得られる測度空間をウィナー空間とよび,このときの測度をルベーグ測度と呼ぶ。
ルベーグ積分の公式集1:可測空間と測度
ルベーグ積分には様々な定理や公式が出てきて理解が追い付かなくなることがよくある。本ブログでは,理解の一助として,基本的な公式をまとめた。内容は随時追加していく予定。
★可測空間と測度
・-加法族の定義
集合とその部分集合の族が次の条件を満たすとき,を-加法族と呼ぶ。
(1)
(2) ならば
(3) のとき,
を可測空間と呼ぶ。また,完全加法性(3)が有限の和の場合に成り立つときはは有限加法族と呼ばれる。
・測度の定義
-加法族に対する集合関数が次の条件を満たすとき,をで定義された上の測度という。
(1)
(2) が互に素ならば
を測度空間と呼ぶ。また,有限加法族に対して(1)および(2)の有限版の条件が成り立つならば,有限加法的測度と呼ぶ。
・-有限
測度空間に対し,
を満たすような可測集合列が存在するとき,は-有限と呼ぶ。
・測度の連続性
なる集合列に対して,以下が成り立つ。
(1)
(2) ならば
また,が単調増加な集合列とする。あるいは単調減少でとする。このとき,以下が成り立つ。
(3)
・ホップの拡張定理
有限加法族の上の有限加法的測度が,を含む-加法族上の測度に拡張できる必要十分条件は,上での完全加法性が成り立つことである。
ここで拡張とは,に対してとなることを示す。
なお上記の拡張は,なる単調増加な集合列があって,が成り立つとき,一意的となる。
WindowsでpyEITを動かす(備忘録)
EIT(electrical impedance tomography,電気化学インピーダンストモグラフィ)は,印加した電流に対する電圧のパターンを計測することで各位置のインピーダンスを推定し,内部構造を可視化するトモグラフィである。EITのシミュレーションには主に2つあり,Matlab向けのEIDORS,Python向けのPyEITがある。EIDORSが昔から広く使われている一方で,PyEIT(https://github.com/liubenyuan/pyEIT)はオブジェクト指向,電圧の計測機器との相性などの観点から最近導入された完全Pythonベースのソフトである。
本稿は,PyEITの導入&動作確認に関して簡単に解説する(ソフトが新しいということもあり,解説ブログがまだほとんどなかったため)。なお,計算環境としては,Anaconda/Windowsを仮定する。
①PyEITインストール
1-1 Githubにアクセス。
https://github.com/liubenyuan/pyEIT
1-2 ローカルに一括ダウンロード後解凍。
1-3 Anaconda Promptを開き,cdでディレクトリを1-2の場所に移動
1-4 以下コマンドを打つ。
python setup.py build
python setup.py install
②デモコード(demo_dynamic_bp.py)を動かす
2-1 最新版だとなぜかdemoフォルダが消失しているので,過去サイトにアクセス
https://github.com/liubenyuan/pyEIT/tree/c3c944ed93373ab9f244acc1c8fde2c60cfc7522
2-2 Demoフォルダのみ1-2のディレクトリに追加ダウンロード。
2-3 Demoフォルダ内の「demo_dynamic_bp.py」を適当なエディタで開く
2-4 以下のようにコードを修正
・l19: anomaly = [{'x': 0.5, 'y': 0.5, 'd': 0.1, 'perm': 10.0}]
→ anomaly = [{'x': 0.5, 'y': 0.5, 'd': 0.1, 'alpha': 10.0}]
・l20: ms1 = mesh.set_perm(ms, anomaly=anomaly, background=1.0)
→ ms1 = mesh.set_alpha(ms, anomaly=anomaly, background=1.0)
・l23: delta_alpha = np.real(ms1['perm'] - ms['perm'])
→ delta_alpha = np.real(ms1['alpha'] - ms['alpha'])
・l41: f0 = fwd.solve(ex_mat, step=step, perm=ms['perm'])
→ f0 = fwd.solve_eit(ex_mat, perm=ms['alpha'])
・l42: f0 = fwd.solve(ex_mat, step=step, perm=ms1['perm'])
→ f0 = fwd.solve_eit(ex_mat, perm=ms1['alpha'])
2-5 Anaconda promptでdemoフォルダに行き,python demo_dynamic_bp.pyで実行。エラー箇所は適宜訂正。
RでFactorization Machinesを動かす(備忘録)
FM(Factorization Machines)はRendleが2010年に提案したレコメンダ向けアルゴリズムである。
レコメンダ向けといえど、より一般的な回帰や分類問題にも使用することができ,その汎用性の高さや小規模データでも高精度なモデルを構築できる点で人気の手法である。本記事は,すでにGitHubでソフト化されているFMツール「libFM」を,R上で動かす際の備忘録。OSはWindowsを想定。なお,元のlibFMはC++ベースで構築されている。
筆者自身RもFMも初心者であったため,導入にいろいろと嵌ってしまった...このようなことが起こらないよう,初心者向けに以下の導入手順をまとめておく。
①Rインストール
1-1 CRAN(The Comprehensive R Archive Network)にアクセス。
1-2 Download R for Windowsに行き,「base」をインストール
1-3 続いて「Rtools」もインストール。
これがないと,後述するdevtoolコマンドが起動しない
②libFM exe インストール
2-1 Rendleのサイトにアクセス。
2-2 「libfm-1.40.windows.zip」をダウンロード。適当な場所に解凍しておく。
③ PATH設定
3-1 「システム環境変数」→「環境変数」→ユーザーの環境変数から「Path」の編集
3-2 2-2の保存場所をPathに追加
④R起動とlibFMの立ち上げ
4-1 Rを起動しコンソール開く
4-2 Sys.getenv("PATH") を打ち込み、2-2のPathが有効になってることを確認
4-3 getwd() で現在のディレクトリを確認した上で,「ファイル」→「ディレクトリの変更」から,所望のディレクトリに移動(デフォルトのonedrive直下がキモいので)。
4-4 下記資料7P目に従ってそのディレクトリに書き込み権限を付与。
4-5 install.packages("devtools", type = "win.binary") でdevlopパッケージをインストール
4-6 library(devtools)でdevlopを呼び出し,devtools::install_github("andland/libFMexe")
⑤R上でlibFMの基本動作確認
5-1 Rコンソール上で,以下のサンプルコードを入力
library(libFMexe)
data(movie_lens)
set.seed(1)
train_rows = sample.int(nrow(movie_lens), nrow(movie_lens) * 2 / 3)
train = movie_lens[train_rows, ]
test = movie_lens[-train_rows, ]
predFM = libFM(train, test, Rating ~ User + Movie,task = "r", dim = 10, iter = 500)
mean((predFM - test$Rating)^2)
5-2 予測誤差が出てきたか確認!
以上の手順で,R上でlibFMが動かせるようになった。FMに関する情報は書籍化もされている。興味のある方はドウゾ。
参考文献を示す。
<R導入手順>
<libFM導入手順>
<R初期設定>
資産運用による利息~ハーディの公式の導出~について
資産運用によって生じる利息を定式化し,ハーディの公式を導出しよう。
ハーディの公式は,去年と今年の運用資産額と、その間に生じた利息額から,平均的な利回りを推定する公式である。
まずは,1年間の利息額と去年と今年の運用資産額との正確な関係を導こう。この関係は後述するように一般的には非線形な積分で書ける。ハーディの公式はこの関係を近似して得られるものである。
元本の金額1に対して,1年間に発生する利息を利率といい,とおく。1年間に利息が原本に組み入れられる回数(転化回数)をとし,その1回分の実質的な利率を名称利率と定義する。つまり,1回分で資産は倍になる。この時,利率と名称利率との関係は次式で書ける。
・・・(1)
以下,利力を以下の式で定義する。
・・・(2)
ここで自然対数とする。
式(1)を用いると,以下のように利力が名称利率を用いて書ける。
これは転化回数によらず成り立つので,無限大に極限をとってもよい。すなわち,
・・・(3)
を得る。
さて次に,1年間の利息額と去年と今年の運用資産額との関係を導こう。
時間 を 分割し,番目の時間をとおく。この時の運用資産額に対する利息額は,名称利率を用いて
と書ける。よって,年間利息額はこれらの和をとり, に対して極限をとったものである。
・・・(4)
式(4)に対して区分求積法を用い,さらに式(3)を用いれば,
・・・(5)
を得る。こうして,運用資産額から年間利息額を算出する式が得られた。
式(5)を近似することで,ハーディの公式を導出しよう。
積分で得られる面積が,右端と左端を上底下底とする台形で近似できるとする。すなわち台形近似を(5)に施すと,
・・・(6)
を得る。利率は1より十分小さいとしてテイラー展開すると,であるから,(6)に代入すると
を得る。ここで近似でを用いた。
上式を利率についてまとめなおすと
・・・(7)
を得る。式(7)がハーディの公式である。
定義や用語は下記を参照にした。