ChunPom’s diary

数学、物理、機械学習に関する話題。あと院試、資格、大学入試まで。

ルベーグ積分の公式集4:積分(定義,基本性質)

ルベーグ積分には様々な定理や公式が出てきて理解が追い付かなくなることがよくある。本ブログでは,理解の一助として,基本的な公式をまとめた。内容は随時追加していく予定。

 

積分

積分の定義

測度空間{\displaystyle (X,\mathscr{A}, \mu)}が与えられている時の,{\displaystyle E \in \mathscr{A}}上における積分を考える。

(1) {\displaystyle \ f(x)}が非負関数の場合,単調増加な収束列{\displaystyle \ f_n(x)}を用いて

{\displaystyle \ \ \ \  \int_{E} f(x) d\mu \equiv \lim_{n\to \infty} \int_{E} f_n(x) d\mu}

(2) 一般の場合,{\displaystyle f^{\pm}(x)=\max (\pm f(x),0)}として

{\displaystyle \ \ \ \  \int_{E} f(x) d\mu \equiv \int_E f^{+}(x)d\mu-\int_E f^{-}(x)d\mu }

とそれぞれ定義する。(2)では右辺のそれぞれの積分は(1)を用いて得られる。なお,{\displaystyle \int_E f^{+}(x)d\mu,\ \int_E f^{-}(x)d\mu }のいずれか一方が有限な場合にのみ(2)は定義される。積分値が有限の時,積分可能であるという。

 

積分の基本性質(忘れやすいもののみ)

(1) {\displaystyle \ \mu(E)=0}ならば任意の関数{\displaystyle f(x)}に対して{\displaystyle \int_E f(x) d\mu=0}

(2) {\displaystyle \ E}で関数{\displaystyle f(x)}積分可能なら,{\displaystyle \mu(\{x\in E;\ f(x)=\pm \infty\})=0}

(3) 関数{\displaystyle f(x),g(x)}{\displaystyle E}でほとんど至るところ一致するとき,{\displaystyle \int_E f(x) d\mu=\int_E g(x) d\mu}

(4) 関数{\displaystyle f(x)}{\displaystyle E}積分可能なとき,{\displaystyle \mu(\{x\in E;\ f(x) \neq 0\})}{\displaystyle \mu}測度が有限な可測集合の高々加算個の和で表される

(5) {\displaystyle \ E}の上で関数{\displaystyle f(x)}有界{\displaystyle g(x)}積分可能なとき,{\displaystyle f(x)g(x)}{\displaystyle E}積分可能。

 

・(第一)平均値の定理

{\displaystyle \ E}の上で関数{\displaystyle f(x)}有界{\displaystyle g(x)}積分可能なとき,

{\displaystyle \ \ \ \  \inf_{x \in E}f(x) \leq c \leq \sup_{x \in E}f(x)}

なる実数{\displaystyle c}で,

{\displaystyle \ \ \ \  \int_E f |g| d\mu=c \int_E |g| d\mu}

なるものが存在する。

ルベーグ積分の公式集3:可測関数

ルベーグ積分には様々な定理や公式が出てきて理解が追い付かなくなることがよくある。本ブログでは,理解の一助として,基本的な公式をまとめた。内容は随時追加していく予定。

 

★可測関数

・可測関数の定義

{\displaystyle \sigma}-加法族{\displaystyle \mathscr{A}}および{\displaystyle E \in X}に対し,

(1) {\displaystyle \ \ \ \{x\in E;\ f(x) \gt a \}\in \mathscr{A}}

が任意の実数{\displaystyle a}について成り立つとき,{\displaystyle f(x)}{\displaystyle \mathscr{A}}-可測関数と呼ぶ。なお有理数の稠密性と可測集合の完全加法性から,「(1)式が任意の有理数で成り立つ」としても良い。

 

・単関数による近似可能性

{\displaystyle f(x)}{\displaystyle E}で可測でかつ非負なら,{\displaystyle E}で可測でかつ非負なる単関数の増加列で,{\displaystyle f(x)}{\displaystyle E}の各点で収束するものが存在する。

 

・エゴロフの定理

{\displaystyle \sigma}-加法族{\displaystyle \mathscr{A}}および{\displaystyle E \in \mathscr{A}}に対して{\displaystyle \mu(E)\lt \infty}とし,{\displaystyle E}上でほとんど至るところ有限な可測関数列{\displaystyle f_n}があったとする。{\displaystyle E}上ほとんどすべての点で有限な収束値

{\displaystyle \ \ \ f(x)=\lim_{n\to \infty}f_n(x)}

を持つとき,{\displaystyle \forall \epsilon}に対して以下が成り立つような{\displaystyle F \in \mathscr{A}}が存在する。

(1) {\displaystyle \ \ \ F\subset E, \mu(E-F)\lt \epsilon}

(2) {\displaystyle \ \ \ \{f_n(x)\}}{\displaystyle  f(x)}{\displaystyle  F}上一様収束する。

ルベーグ積分の公式集2:ボレル測度とルベーグ測度

ルベーグ積分には様々な定理や公式が出てきて理解が追い付かなくなることがよくある。本ブログでは,理解の一助として,基本的な公式をまとめた。内容は随時追加していく予定。

 

★ボレル測度とルベーグ測度

・最小の{\displaystyle \sigma}-加法族

集合{\displaystyle X}とその部分集合の族{\displaystyle \mathscr{A}}に対して,{\displaystyle \mathscr{A}}を含むすべての{\displaystyle \sigma}-加法族の共通部分をとったものを,{\displaystyle \mathscr{A}}の生成する(最小の){\displaystyle \sigma}-加法族{\displaystyle \mathscr{E(A)}}と呼ぶ。

 

・ボレル測度の定義

位相空間{\displaystyle (X,\mathscr{I})}が与えられたとすると,位相{\displaystyle \mathscr{I}}は集合族であるから,これを含む最小の{\displaystyle \sigma}-加法族を考えることができる。これをボレル{\displaystyle \sigma}-加法族と呼び,{\displaystyle \mathscr{B}(X)}で表す。また,{\displaystyle \mathscr{B}(X)}上で定義される測度{\displaystyle m}をボレル測度と呼ぶ。

とくに,{\displaystyle X}を実数空間{\displaystyle \mathbb{R}}とする場合のものをボレル加法族,ボレル測度とすることもある。

 

・外測度

集合{\displaystyle X}の全部分集合上{\displaystyle A}で定義された集合関数{\displaystyle \mu^{*}(A)}が以下の(1)-(3)を満たすとき,外測度と呼ぶ。

(1) {\displaystyle \ \ \ 0 \leq \mu^{*} \leq \infty,\ \mu^{*}(\phi)=0}

(2) {\displaystyle \ \ \ A \subset B}ならば{\displaystyle \mu^{*}(A) \leq \mu^{*}(B)}

(3) {\displaystyle \ \ \  \mu^{*}(\cup_{n=1}^{\infty}A_n) \leq \sum_{n=1}^{\infty} \mu^{*}(A_n)}

また{\displaystyle E \subset X}{\displaystyle \mu^{*}}-可測であるとは,すべての{\displaystyle A}に対し

{\displaystyle \ \ \ \ \mu^{*}(A) = \mu^{*}(A\cap E)+\mu^{*}(A\cap E^{c})}

が成り立つことをいう。{\displaystyle \mu^{*}}-可測な集合すべてからなる族は{\displaystyle \sigma}-加法族であり,外測度をこの族に制限して得られる集合関数{\displaystyle \mu}は測度となる(カラテオドリの拡張定理)。

 

・測度を{\displaystyle \sigma}-加法族上の測度へ拡大する

加法族{\displaystyle \mathscr{F}}およびその上の測度{\displaystyle \mu_0}があるとする。{\displaystyle \mathscr{F}}の集合列{\displaystyle \{F_n\}}を用いて,集合関数{\displaystyle \mu^{*}}を定義する。

{\displaystyle \ \ \ \ \mu^{*}(A)=\inf \sum_{n=1}^{\infty}\mu_0(F_n)}

ここで下限は{\displaystyle A\subset \cup_{n=1}^{\infty} \{F_n\}}となるすべての集合列についてとる。このとき,{\displaystyle \mu^{*}}{\displaystyle X}上の外測度で,下記が成り立つ。

{\displaystyle \ \ \ \ \mu^{*}(F)=\mu_0(F),\ \forall F\in \mathscr{F}}

これにカラテオドリの拡張定理を適用すれば,{\displaystyle \mathscr{F}}の生成する{\displaystyle \sigma}-加法族{\displaystyle \mathscr{E(F)}}上の測度{\displaystyle \mu}が得られる。

 

・完備化とルベーグ測度

測度空間{\displaystyle (X, \mathscr{A}, \mu)}に対し,{\displaystyle  \mathscr{A}}が測度0の集合{\displaystyle E\in \mathscr{A}}のもつすべての部分集合を含んでいるとき,この測度空間を完備であるという。

ボレル測度空間{\displaystyle (\mathbb{R}, \mathscr{B(\mathbb{R})}, m)}を完備化して得られる測度空間をウィナー空間とよび,このときの測度をルベーグ測度と呼ぶ。

ルベーグ積分の公式集1:可測空間と測度

ルベーグ積分には様々な定理や公式が出てきて理解が追い付かなくなることがよくある。本ブログでは,理解の一助として,基本的な公式をまとめた。内容は随時追加していく予定。

 

★可測空間と測度

{\displaystyle \sigma}-加法族の定義

集合{\displaystyle X}とその部分集合の族{\displaystyle \mathscr{A}}が次の条件を満たすとき,{\displaystyle \mathscr{A}}{\displaystyle \sigma}-加法族と呼ぶ。

(1) {\displaystyle \phi \in \mathscr{A}}

(2) {\displaystyle A \in \mathscr{A}}ならば{\displaystyle A^{c} \in \mathscr{A}}

(3) {\displaystyle A_1, A_2,.. \in \mathscr{A}}のとき,{\displaystyle \cup_{n=1}^{\infty}A_n \in \mathscr{A}}

{\displaystyle \ \ \ (X, \mathscr{A})}を可測空間と呼ぶ。また,完全加法性(3)が有限の和の場合に成り立つときは{\displaystyle \mathscr{A}}は有限加法族と呼ばれる。

 

・測度の定義

{\displaystyle \sigma}-加法族{\displaystyle \mathscr{A}}に対する集合関数{\displaystyle \mu(A)}が次の条件を満たすとき,{\displaystyle \mu}{\displaystyle \mathscr{A}}で定義された{\displaystyle X}上の測度という。

(1) {\displaystyle \mu(A)\geq 0, \mu(\phi)=0}

(2) {\displaystyle A_1, A_2,.. \in \mathscr{A}}が互に素ならば{\displaystyle \mu(\sum_{n=1}^{\infty}A_n)=\sum_{n=1}^{\infty}\mu(A_n)}

{\displaystyle \ \ \ (X, \mathscr{A}, \mu)}を測度空間と呼ぶ。また,有限加法族{\displaystyle \mathscr{A}}に対して(1)および(2)の有限版の条件が成り立つならば,有限加法的測度と呼ぶ。

 

{\displaystyle \sigma}-有限

測度空間{\displaystyle (X, \mathscr{A}, \mu)}に対し,

{\displaystyle \ \ \ X=\cup_{n=1}^{\infty}E_n,\ \mu(E_n) \lt \infty}

を満たすような可測集合列{\displaystyle E_n}が存在するとき,{\displaystyle \mu}{\displaystyle \sigma}-有限と呼ぶ。

 

・測度の連続性

{\displaystyle A_n\in \mathscr{A}}なる集合列に対して,以下が成り立つ。

(1) {\displaystyle \ \ \ \mu(\varliminf_{n \to \infty} A_n)\leq \varliminf_{n \to \infty}\mu(A_n)}

(2) {\displaystyle \ \ \ \mu(\sum_{n=1}^{\infty}A_n)\lt \infty}ならば{\displaystyle \mu(\varlimsup_{n \to \infty} A_n)\geq \varlimsup_{n \to \infty}\mu(A_n)}

また,{\displaystyle A_n\in \mathscr{A}}が単調増加な集合列とする。あるいは単調減少で{\displaystyle \mu(A_1)\lt \infty}とする。このとき,以下が成り立つ。

(3) {\displaystyle \ \ \ \mu(\lim_{n\to \infty}A_n)=\lim_{n\to \infty}\mu(A_n)}

 

・ホップの拡張定理

有限加法族{\displaystyle \mathscr{F}}の上の有限加法的測度{\displaystyle m}が,{\displaystyle \mathscr{F}}を含む{\displaystyle \sigma}-加法族{\displaystyle \mathscr{B(F)}}上の測度{\displaystyle \mu}に拡張できる必要十分条件は,{\displaystyle \mathscr{F}}上で{\displaystyle m}の完全加法性が成り立つことである。

ここで拡張とは,{\displaystyle \forall E\in \mathscr{F}}に対して{\displaystyle \mu(E)=m(E)}となることを示す。

なお上記の拡張は,{\displaystyle X_n\in \mathscr{F},m(X_n)\lt \infty}なる単調増加な集合列があって,{\displaystyle X=\lim_{n \to \infty}X_n}が成り立つとき,一意的となる。

WindowsでpyEITを動かす(備忘録)

EIT(electrical impedance tomography,電気化学インピーダンスモグラフィ)は,印加した電流に対する電圧のパターンを計測することで各位置のインピーダンスを推定し,内部構造を可視化するトモグラフィである。EITのシミュレーションには主に2つあり,Matlab向けのEIDORSPython向けの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年に提案したレコメンダ向けアルゴリズムである。

https://www.csie.ntu.edu.tw/~b97053/paper/Rendle2010FM.pdf

レコメンダ向けといえど、より一般的な回帰や分類問題にも使用することができ,その汎用性の高さや小規模データでも高精度なモデルを構築できる点で人気の手法である。本記事は,すでにGitHubでソフト化されているFMツール「libFM」を,R上で動かす際の備忘録。OSはWindowsを想定。なお,元のlibFMはC++ベースで構築されている。

 

筆者自身RもFMも初心者であったため,導入にいろいろと嵌ってしまった...このようなことが起こらないよう,初心者向けに以下の導入手順をまとめておく。

 

①Rインストール

1-1 CRAN(The Comprehensive R Archive Network)にアクセス。

https://cran.r-project.org/

1-2 Download R for Windowsに行き,「base」をインストール

1-3 続いて「Rtools」もインストール。

 これがないと,後述するdevtoolコマンドが起動しない

 

②libFM exe インストール

2-1 Rendleのサイトにアクセス。

http://www.libfm.org/

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目に従ってそのディレクトリに書き込み権限を付与。

http://www.iu.a.u-tokyo.ac.jp/~kadota/20130606_install.pdf

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導入手順>

https://k-metrics.github.io/cabinet/env_install_tls.html

<libFM導入手順>

https://qiita.com/siero5335/items/8a8eb8de8633041d865a

<R初期設定>

http://www.iu.a.u-tokyo.ac.jp/~kadota/20130606_install.pdf 

 

資産運用による利息~ハーディの公式の導出~について

資産運用によって生じる利息を定式化し,ハーディの公式を導出しよう。

 

 ハーディの公式は,去年と今年の運用資産額 { \displaystyle A_{t-1},\ A_t}と、その間に生じた利息額 { \displaystyle I_t}から,平均的な利回りを推定する公式である。

まずは,1年間の利息額 { \displaystyle I_t}と去年と今年の運用資産額 { \displaystyle A_{t-1},\ A_t}との正確な関係を導こう。この関係は後述するように一般的には非線形積分で書ける。ハーディの公式はこの関係を近似して得られるものである。

 元本の金額1に対して,1年間に発生する利息を利率といい, { \displaystyle i}とおく。1年間に利息が原本に組み入れられる回数(転化回数)を { \displaystyle n}とし,その1回分の実質的な利率を名称利率 { \displaystyle i^{(n)}}と定義する。つまり,1回分で資産は { \displaystyle 1+i^{(n)}/n}倍になる。この時,利率と名称利率との関係は次式で書ける。

  { \displaystyle \left( 1+\frac{i^{(n)}}{n}\right)^n=1+i}・・・(1)

以下,利力 { \displaystyle \delta}を以下の式で定義する。

  { \displaystyle \delta=log(1+i)}・・・(2)

ここで自然対数とする。

式(1)を用いると,以下のように利力が名称利率を用いて書ける。

  { \displaystyle \delta=\frac{1}{n}log \left(1+\frac{i^{(n)}}{n}\right)}

これは転化回数 { \displaystyle n}によらず成り立つので,無限大に極限をとってもよい。すなわち,

  { \displaystyle \delta=lim_{n\to \infty}i^{(n)}}・・・(3)

を得る。

 さて次に,1年間の利息額 { \displaystyle I_t}と去年と今年の運用資産額 { \displaystyle A_{t-1},\ A_t}との関係を導こう。

時間  { \displaystyle [t-1,t]} { \displaystyle n}分割し, { \displaystyle k}番目の時間を { \displaystyle t_k}とおく。この時の運用資産額 { \displaystyle A_{t_k}}に対する利息額は,名称利率を用いて

  { \displaystyle A_{t_k}\times i^{(n)}/n}

と書ける。よって,年間利息額はこれらの和をとり,  { \displaystyle n}に対して極限をとったものである。

  { \displaystyle I_t=lim_{n\to \infty} \sum_{k=0}^n i^{(n)}A_{t_k}}・・・(4)

式(4)に対して区分求積法を用い,さらに式(3)を用いれば,

    { \displaystyle I_t=\int_{t-1}^t \delta A_s ds}・・・(5)

を得る。こうして,運用資産額から年間利息額を算出する式が得られた。

式(5)を近似することで,ハーディの公式を導出しよう。

積分で得られる面積が,右端と左端を上底下底とする台形で近似できるとする。すなわち台形近似を(5)に施すと,

    { \displaystyle I_t \approx \frac{A_{t-1}+A_{t}}{2}\times log(1+i)}・・・(6)

を得る。利率は1より十分小さいとしてテイラー展開すると, { \displaystyle log(1+i)\approx i-i^2/2}であるから,(6)に代入すると

  {\displaystyle I_t \approx \frac{(A_{t-1}+A_{t})i-(A_{t-1}+A_{t})i^2/2}{2}\approx \frac{(A_{t-1}+A_{t})i-I_{t}i}{2}}

を得る。ここで近似で { \displaystyle iA_{t-1}\approx iA_t\approx I_t}を用いた。

上式を利率についてまとめなおすと

     { \displaystyle i \approx \frac{2I_t}{A_{t-1}+A_t-I_t}}・・・(7)

を得る。式(7)がハーディの公式である。

定義や用語は下記を参照にした。