DockerとKubernatesの使い方

Dockerとは

今まで任意のライブラリに合わせて環境を変えていたことはないでしょうか? 環境を変えると元に戻す時など大変です。 そういう時にローカルのマシンの環境を変えずに仮想マシンの上で動くようにしたツールがDockerです。

Kubernetesとは

Dockerコンテナをデプロイしたり運用を自動化したりするシステムであり、APICLI(黒い画面)を提供します。

以下を参考にしてDockerをインストール

www.docker.com

以下を参考にしてKubernetesをインストール

github.com

https://www.amazon.co.jp/dp/4297100339/ref=cm_sw_r_tw_dp_U_x_lV7VDbT552XS0

以上によりDockerとKubernetesが使えるようになっています。

参考文献

Docker/Kubernetes 実践コンテナ開発入門 山田 明憲 https://www.amazon.co.jp/dp/4297100339/ref=cm_sw_r_tw_dp_U_x_lV7VDbT552XS0

深入りしない時系列分析のエッセンス

時系列は難しい、まず時系列解析をどこから始めればいいのか悩むと思う。
そういうときにまずは最低限ここからやるべしというのが本記事の総点である。
数式はほとんど用いずに書きたいと思う。

全体の学習の流れ

f:id:whisponchan:20190919012119j:plain
学習の流れ

絶対覚えるべきこと

定常時系列と非定常時系列の違いを理解してください。

代表的な定常時系列

f:id:whisponchan:20190919010955j:plain
定常時系列

時間によって値 y_tが周期的に変化しない時系列データのことです。

代表的な非定常時系列

f:id:whisponchan:20190919011033j:plain
非定常時系列
時間によって値 y_tが周期的に変化する時系列データのことです。

以上です。
次に前処理というフェーズがあります。

時系列予測は非定常の時系列のままだと学習が難しいです。
そのため、非定常時系列→定常時系列にします。その処理が平滑化です。

平滑化の種類

移動平均は移動の幅wという正の整数を任意に指定して、時系列 x_tに対してtをずらしながらwの数だけ平均を取っていく方法です。 階差は時系列データx_t = x_t - x_{t-1}という定式である。これが一階階差である。二階階差は一階階差をベースにその前の階差を用いて差を取る手法である。

※例外的にARIMAは移動平均をモデルに組み込んであり、非定常時系列から定常時系列に変換しているので、前処理のフェーズをスキップできます。 (別に前処理してもいいですが、精度はほとんど変わりません。)

モデルの選び方

情報量規準のAICの値が小さいモデルを選択します。
深入りするので「時系列 AIC 」などで、ググってそれっぽいものを見てください。

その他

機械学習モデルによる時系列分析もあります。
時系列データは常に更新されていくので新しいデータを推論に活用したい場合があります。

f:id:whisponchan:20190919013436j:plain
サーバの実行回数の予測

このようなケースはRNNでも決定木でも、ニューラルネットワークでも実現できます。 ですが、かならずしも古典的なARMA、ARIMAなどに精度で勝てるかといわれればそんなこともありません。

おわり

応用で理解するバイアスとバリアンスの幾何学

2乗誤差をバイアスと分散に分解することを,バイアス・バリアンス分解と呼びます. 2乗誤差のままではコントロールできなかった誤差を制御することができるようになったりします.

本記事では杉山将先生と小川英光先生の共著論文を紹介して,その論文に対するバイアスとバリアンスの関係を幾何学的に説明します.

f:id:whisponchan:20190911200724p:plain

これは教師あり学習の逆問題を表した図です. サンプリング作用素が関数空間から標本値空間への写像を表しており,学習作用素が学習結果へと対応している f_mへの写像に対応しています.

f:id:whisponchan:20190911200817p:plain

この図はヒルベルト空間で統計的能動学習を説明します.

統計的能動学習である論文で紹介されている手法では,  fとその射影の \hat{f} E_n f_m \hat{f}とが等しくなることを表しています.

バイアスとはこの図ではノイズのアンサンブル平均 E_n f_mの積と f_mの距離=分散を表しています.

数式は大変難しいので、説明しませんが(できませんが)この手法を用いて分散を最小化することよって,高い汎化性能を得ることができるそうです. とても興味深い論文なので読んでみると良いかと思います. 紹介しきれていないことが沢山書かれています.

Incremental Active Learning for Optimal Generalization [http://www.ms.k.u-tokyo.ac.jp/2000/inc-act.pdf

www.ms.k.u-tokyo.ac.jp

周辺確率とは

f:id:whisponchan:20190729073123p:plain
周辺確率
確率変数X,Yの周辺確率とは,2元表(図のように表した表)で表したとき, i,jの取り得る,行の同時確率 \{ f(x_i,y_j) | (i=1,2,\cdots,n,j=1,2,\cdots,n)\}の和をXの周辺確率.同時確率の列の和をYの周辺確率といいます.

Xの周辺確率を f_x(x_i)と表すとし,具体的に書き下すと, f:id:whisponchan:20190728234957p:plain

Yの周辺確率を f_y(y_j)と表し,具体的に書き下すと. f:id:whisponchan:20190729000443p:plain となります.

機械学習の単語まとめ(随時更新)

自分用のまとめです.

・特徴量(features)とは
日本語ではfeaturesのことを特徴量と言ったりします.
特徴量はある属性の集合です.これだけではよく分からないので具体例を出しましょう.
電子メールの場合はメッセージの長さ,送受信者の名前,ヘッダーの情報,送受信時間等が特徴量に該当します.

・仮説集合(hypothesis set)とは
特徴量(特徴ベクトル)をラベル集合 \mathcal{y}写像する関数の集合です.
具体例を示しましょう.ここにメールがスパムかスパムではないかを判定する関数の集合があるとします.
その関数の集合の要素を仮説hとし,その関数(仮説h)は特徴量を異なる集合 \mathcal{y'}写像します.

参照文献

Foundation of Machine Learning (second edition) Mehryar Mohri, Afshin Rostamizadeh, and Ameet Talwalkar
MIT Press, Second Edition, 2018.

独学する社会人のためのおすすめの数学書

はじめに

理学部数学科出身じゃなくてもお手軽に数学を学べる本の紹介です.
この記事のクオリティについては情報学科卒業の私の独断なのでご了承ください.

初級

志賀浩二の数学30講シリーズ

数学に慣れていない人はまずはこれから始めるのが良いでしょう.
いきなり,東京大学出版会の本で始めて,独学できる人はおそらくいないでしょう.
何が良いかというとお気持ち優先で語られているところです.定義,定理は曖昧にぼかすところも多いですが,独学者にとってはまずはお気持ち優先で勉強することをおすすめします.

微分積分30講


線形代数30講


解析入門30講

他にもルベーグ積分固有値30講(関数解析の初歩を扱っている)などもあり,非常に面白いシリーズです.
1講に一日掛けても一ヶ月で読み切れる入門しやすさがあります.
さらにtea timeというコラムの用に書かれているところも非常に良いです.
是非手に取って貰いたいです.

中級

線形代数


線型代数谷川浩司

非常にアルゴリズム的なところから書かれていて読みやすいです.
証明は全て書かれてはいませんが,重要な定理については書かれています.

関数解析


工学系の関数解析 小川英光

独学でもしっかりと学べる関数解析の本と言えばこの本ではないでしょうか?
なぜ証明をするのかということが冒頭に書かれています.非常に納得できることが書かれています.
応用に事足りるくらいの底力をつけるための本という感じがします.
また再生核ヒルベルト空間についても書かれているので,機械学習をやる人にもお勧めです.

マハラノビスの距離の妥当性

はじめに

マハラノビスの距離は良く機械学習や統計でも使われています.ですが,なぜそれが使われているのか,
使って良いのかに言及がされている記事をあまり見たことがないので,今回書いてみることにしました.

マハラノビスの距離とは

Mahalanobisというインドの統計学者が開発した距離だそうです. 入力を x, \hat{\mu}は期待値の推定量を表す.また, \hat{\sum}は共分散行列の推定量である.
このとき,
 x \hat{\mu}とのマハラノビスの距離は (x-\hat{\mu})^\top \hat{\sum}^{-1} (x-\hat{\mu})と表されます. もちろん期待値を求めるのが難しいという現実の問題での話なので, \hat{\mu}という推定量ではなく,
 (x-\mu)^\top \hat{\sum}^{-1} (x-\mu)としてもマハラノビスの距離です.

マハラノビスの距離は, \hat{\sum}によって定まる超楕円体(hyperellipsoid)上の点を等距離とみなす距離尺度です.(以下に図を示す)
f:id:whisponchan:20190628204630p:plain:w300

なぜマハラノビスの距離を使うのか

多変量正規分布を数式で書くと,
 f(x)=\frac{1}{(\sqrt{2 \pi})^{n} \sqrt{|\Sigma|}} \exp \left(-\frac{1}{2}(x-\mu)^{\mathrm{T}} \Sigma^{-1}(x-\mu)\right)
となり, xが入力ベクトル \muが平均ベクトル, \sumが分散共分散行列です.

これは何かというと, 分散共分散行列の逆数を固有値分解してマハラノビスの距離の式に代入すると,楕円方程式になることを意味しています。 なので,多変量正規分布はマハラノビスの距離を用いているので,楕円によって確率分布を表現しているとも言えると思います.

数式で表現すると*1,まず分散共分散行列の逆数を固有値分解します.
 \lambda固有ベクトル \mathbf{U}^{-T} \mathbf{\Lambda}^{-1} \mathbf{U}^{-1}はそれぞれ,正則行列の逆数,対角行列の逆数,正則行列の逆数となっています.
f:id:whisponchan:20190629044707p:plain:h50
そしてその結果をマハラノビスの距離の分散共分散行列の逆数に代入します.
f:id:whisponchan:20190629044637p:plain:h50
f:id:whisponchan:20190629044734p:plain:h50
上の右辺の2次元のときを考えると以下になっており.
これは楕円方程式に一致します.
f:id:whisponchan:20190629044754p:plain:h50

結論的には,多変量正規分布を仮定するときにマハラノビスの距離を用いている.
マハラノビスの距離を仮定するときは多変量正規分布を仮定していると言えると思います.
これはガウシアン混合モデル(GMM)にも使われているので,GMMも多変量正規分布を仮定していると言えると思います.
簡単ではありますが,以上となります.

*1:Machine Learning A Probabilistic Perspective Kevin P. Murphyの4.1.2より