仕事やプライベートで調べたことのメモ書きなど(@札幌)

仕事やプライベートで調べたこと、興味ある事のメモ書きです。2016年4月から札幌で働いてます。※このブログは個人によるもので、団体を代表するものではありません。

Cloud Days 2017札幌に参加してきました(6/13@札幌)

Cloud Daysなど、いろいろと混合したイベントの札幌開催版に参加してきました。
出展社情報|Cloud Days 2017 <札幌>

会場が小さくなったように見えたのは気のせい??

まず驚いたのが、規模が昨年よりだいぶ?小さくなっていたこと!
(気のせいで??)
あえて小さくしたのか、結果的に小さくなってしまったのか・・・。

今年の会場マップ:
http://expo.nikkeibp.co.jp/cloud/spr/17/2017seminar_booth.pdf

昨年の会場マップ:
http://expo.nikkeibp.co.jp/cloud/16/docs/BoothMap_sapporo.pdf

いずれにせよ、若干心配です・・。

ティントリジャパン

今まで知らなかったストレージベンダーを1社発見。私が知らなかっただけで、その道では普通に有名な会社だったようで・・。
tintri.co.jp
サイトを見てみると、公共関連のユーザーが多いのがなかなか面白いです。

この会社に出会えただけでも行ってよかった。

完結編

n-1問題の完結編!

 

期待値と平均は違うよ、と先生に指摘されました。

 

例えば、x1からx5までの5個の母集団とする。そこから3個とったものを標本と考える。x1からx5は同じ確率とします。

 

全体の平均は、x1からx5の、算術平均。

3個取った平均は、取得した3個の、算術平均。これは標本平均。

 

そして期待値は?この3個取る行為を無限に繰り返したときの確率×値の和が期待値。

なのかな。

 

うーん、やっぱり、わかったようでわからないなぁ。。。はは。

いややっぱり気になる・・・。Re : わかったつもり?、分散の(n-1)問題!(2017/6/6@社内PRML勉強会)

前回はPRML勉強会で華麗な式展開にノックダウンされた興奮のままに投稿しました。で、なんかわかったつもりになってました。
takumats.hatenablog.com

でもやっぱり気になって。。。参考ページは以下。
tech.naviplus.co.jp

で、以下からスタートしてみます。以下からはnを標本の数、Nを母集団の数とします。※前回の投稿ではNを標本の数としていました。

{\begin{eqnarray}
\text{標本の分散} = \frac{n-1}{n^2} \sum_{j=1}^n x_j^2 - \frac{2}{n^2} \sum_{j1,j2}^n x_{j1}x_{j2}
\end{eqnarray}}

すると、

{\begin{eqnarray}
\text{標本の分散の平均} = \frac{1}{{}_N \mathrm{C} _n}\frac{n-1}{n^2} \sum_{i=1}^{{}_N \mathrm{C} _n}\sum_{j=1}^n x_{i,j}^2 - \frac{1}{{}_N \mathrm{C} _n}\frac{2}{n^2} \sum_{i=1}^{{}_N \mathrm{C} _n}\sum_{j1,j2}^n x_{i,j1}x_{i,j2}
\end{eqnarray}}

ここで、以下を使用します。
{\begin{eqnarray}
\begin{aligned} 
\sum_{i=1}^{{}_N C_n} \sum_{j=1}^n f(x_{i,j}) 
&= {}_{N-1} C_{n-1} \sum_{k=1}^N f(x_k) \\
\sum_{i=1}^{{}_N C_n} \sum_{j_1, j_2}^n f(x_{i,j_1,}, x_{i,j_2}) 
&= {}_{N-2} C_{n-2} \sum_{k_1, k_2}^N f(x_{i,j_1,}, x_{i,j_2}) 
\end{aligned}
\end{eqnarray}}

すると、
{\begin{eqnarray}
\text{標本の分散の平均} 
&=& \frac{1}{{}_N C_n} \frac{n-1}{n^2} {}_{N-1}C_{n-1} \sum_{k=1}^N x_k^2 
– \frac{1}{{}_N C_n} \frac{2}{n^2} {}_{N-2}C_{n-2} \sum_{k_1,k_2}^N x_{k_1} x_{k_2} \\
&=& \frac{n!(N-n)!}{N!} \frac{n-1}{n^2} \frac{(N-1)!}{(n-1)!(N-n)!} \sum_{k=1}^N x_k^2 
– \frac{n!(N-n)!}{N!} \frac{2}{n^2} \frac{(N-2)!}{(n-2)!(N-n)!} \sum_{k_1,k_2}^N x_{k_1} x_{k_2} \\
&=& \frac{n!}{N!} \frac{n-1}{n^2} \frac{(N-1)!}{(n-1)!} \sum_{k=1}^N x_k^2 
– \frac{n!}{N!} \frac{2}{n^2} \frac{(N-2)!}{(n-2)!} \sum_{k_1,k_2}^N x_{k_1} x_{k_2} \\ 
&=& \frac{n-1}{n^2} \frac{n!}{(n-1)!} \frac{(N-1)!}{N!} \sum_{k=1}^N x_k^2 
– \frac{2}{n^2} \frac{n!}{(n-2)!} \frac{(N-2)!}{N!} \sum_{k_1,k_2}^N x_{k_1} x_{k_2} \\ 
&=& \frac{n-1}{n^2} \frac{n}{1} \frac{1}{N} \sum_{k=1}^N x_k^2 
– \frac{2}{n^2} \frac{n(n-1)}{1} \frac{1}{N(N-1)} \sum_{k_1,k_2}^N x_{k_1} x_{k_2} \\ 
&=& \frac{n-1}{n} \frac{1}{N} \sum_{k=1}^N x_k^2 
– \frac{n-1}{n} \frac{2}{N(N-1)} \sum_{k_1,k_2}^N x_{k_1} x_{k_2} \\
&=& \frac{n-1}{n} \frac{1}{N} \left( \frac{N^2}{N-1} \frac{N-1}{N^2} \right) \sum_{k=1}^N x_k^2 
– \frac{n-1}{n} \frac{2}{N(N-1)} \left( \frac{N^2}{2} \frac{2}{N^2} \right) \sum_{k_1,k_2}^N x_{k_1} x_{k_2} \\ 
&=& \frac{n-1}{n} \frac{N}{N-1} \frac{N-1}{N^2} \sum_{k=1}^N x_k^2 
– \frac{n-1}{n} \frac{N}{N-1} \frac{2}{N^2} \sum_{k_1,k_2}^N x_{k_1} x_{k_2} \\ 
&=& \frac{n-1}{n} \frac{N}{N-1} \left( \frac{N-1}{N^2} \sum_k^N x_k^2 
– \frac{2}{N^2} \sum_{k_1,k_2}^N x_{k_1} x_{k_2} \right) \\
&=& \frac{n-1}{n} \frac{N}{N-1} \text{母集団の分散}
\end{eqnarray}}

なんと、前回出てこなかった、{\frac{N}{N-1}}なんてのが出てきました!
Nを無限大に持っていくと消えるのだとは思いますが・・・。

ということで、前回は以下を使ったのですが、
{\begin{eqnarray}
\mathbb{E}\left[x^2\right] &=& \mu^2 + \sigma^2
\end{eqnarray}}
ここが何か正確ではないんじゃないかと思ってます。
{\begin{eqnarray}
\mathbb{E}\left[\frac{1}{n} \sum_{i=1}^{n} x_i^2\right]
&=& \frac{1}{n} \sum_{i=1}^{n}\mathbb{E}\left[x_i^2\right] \\
&=& \mu^2 + \sigma^2
\end{eqnarray}}

が、あってるのかな・・・?

明日先生に聞いてみるしかないな・・・。

わかったつもり?、分散の(n-1)問題!(2017/6/6@社内PRML勉強会)

社内PRML勉強会。今日の証明はとてもよくわかったつもりだったので記念に書いておこう。いわゆる不偏分散、標本分散の問題で、なんで(n-1)で割るのか?という件です。ExcelのVAR関数、VARP関数のどちらを使いましょう的な話題でもありますね。

お題

お題はPRML本(前編)の(1.58)式の証明。演習問題で言うと、(1.12)になります。

{
\mathbb{E} \left[ \sigma^2_{ML} \right] = \left( \frac{N-1}{N} \right) \sigma^2
}

{\begin{eqnarray}
\sigma^2_{ML} &=& \frac{1}{N} \sum_{n=1}^N \left(x_n - \mu_{ML} \right)^2 \\
\mathbb{E} \left[ \sigma^2_{ML} \right] &=& \frac{1}{N} \sum_{n=1}^N \mathbb{E} \left[x^2_n - 2\mu_{ML} x_n + \mu^2_{ML} \right] \\
 &=& \frac{1}{N} \sum_{n=1}^N \left(
     \mathbb{E} \left[x^2_n \right]
     - 2\mathbb{E}\left[\frac{1}{N}\sum_{m=1}^{N}x_mx_n \right]
     + \mathbb{E}\left[\frac{1}{N^2}\sum_{m=1}^{N}\sum_{l=1}^{N}x_mx_l \right]
 \right)
\end{eqnarray}}
ここで、以下の(1.40)式を使う。※たいていのWebの回答を見ると、(1.50)式よりと説明されているが、(1.50)式は正規分布についての説明のように思えるので、ここでは(1.40)式に言及。実質変わりはないのですが。ちなみにここで、この{x_n}とはなんぞや、というのが議論になり、パッと見はサンプルの1つなのですが、その平均とかとるので、わかりづらい。。

{\begin{eqnarray}
var\left[x\right] &=& \mathbb{E}\left[x^2\right]-\mathbb{E}\left[x\right]^2 \\
\mathbb{E}\left[x^2\right] &=& \mu^2 + \sigma^2
\end{eqnarray}}
すると、
{\begin{eqnarray}
\mathbb{E} \left[ \sigma^2_{ML} \right] &=& \frac{1}{N} \sum_{n=1}^N \left(\mu^2+\sigma^2\right)
     - \frac{2}{N^2}\sum_{n=1}^{N}\sum_{m=1}^{N}\mathbb{E}\left[x_nx_m \right]
     + \frac{1}{N^3}\sum_{n=1}^{N}\sum_{m=1}^{N}\sum_{l=1}^{N}\mathbb{E}\left[x_mx_l \right] \\
 &=& \frac{1}{N} \sum_{n=1}^N \left(\mu^2+\sigma^2\right)
     - \frac{1}{N^2}\sum_{n=1}^{N}\sum_{m=1}^{N}\mathbb{E}\left[x_nx_m \right]
\end{eqnarray}}
そして、以下の(1.130)式を使います。1.130の導出は略。
{
\mathbb{E} \left[ x_nx_m \right] = \mu^2 + I_{nm}\sigma^2
}
すると、
{\begin{eqnarray}
\mathbb{E} \left[ \sigma^2_{ML} \right] &=& \left(\mu^2+\sigma^2\right)
     - \frac{1}{N^2}\sum_{n=1}^{N}\sum_{m=1}^{N}\left(\mu^2+I_{nm}\sigma^2 \right) \\
 &=& \sigma^2
     - \frac{\sigma^2}{N^2}\sum_{n=1}^{N}\sum_{m=1}^{N}\left(I_{nm} \right)
\end{eqnarray}}
{I_{nm}}の定義により、nとmが等しい時のみ1となるため、
{\begin{eqnarray}
\sum_{n=1}^{N}\sum_{m=1}^{N}\left(I_{nm} \right) = N
\end{eqnarray}}
よって、
{\begin{eqnarray}
\mathbb{E} \left[ \sigma^2_{ML} \right] &=& \frac{N-1}{N} \sigma^2
\end{eqnarray}}

他のサイトでコンビネーション使った複雑な証明を見ていたので少し複雑な感じ。途中まではそちらの方が理解しやすかったのですが、式展開が長いので、ちょっと断念してました。なんか、いいのかなー、という不思議な気分です。

おまけ

auewe.hatenablog.com

  • LateXの数式なんて書いたの、修論書いたとき以来だと思う。カギカッコの入力さえも戸惑った・・。

Botの王道:配達ピザの注文をさばくBotを2時間で開発するワークショップ@札幌 (2017/05/31@札幌)に参加

久々にOracleで定期開催している勉強会に行きました。
oracleclouddevelopersh.doorkeeper.jp

というのも、先日、北海道IT推進協会の総会の懇親会で偶然、Oracleの方とお会いしたから。
www.hicta.or.jp
久々に行くかなーって。

私はもともとWeb系ではないので、正直、今回の勉強会で使うテクノロジーはとてもチンプンカンプンなのだけど、このOracleの勉強会は、結構初心者でもついていけるように講師の方が進めてくれるのがありがたいところでもあります。またQiitaで手順を公開してもくれていて、置いてきぼりくらっても、あとで何とかなるのも心強い。

ということで、今回の手順はこちら!
qiita.com

事前準備

さて、今回のテクノロジ。そもそも、これを準備してきてね、というのが、聞いたことあるけど触ったことないものだらけ。
というわけで、セットアップがてら、それが何かということだけさらっと。。。

api.aiのアカウントを作成しておいてください。

api.aiって何ですか?aiを使えるapiに違いない!
api.ai
www.ptengine.jp
「コード入らずで簡単に人工知能を作成できる」ってものらしいです。
とりあえず、googleアカウントで連携!

当日作業するノートPCにNode.jsのLTS(最新安定版)をインストールしておいてください。

Node.jsってなんですか?javascriptの何かでしょう。
Node.js
qiita.com
なるほど、サーバーサイドのjavascriptですね。javascriptも随分と出世したものです・・・。
とりあえず、インストーラでインストール!したものの、これでインストールされるのは?
ん、サーバーなのかな?サーバーサイドだから。

Herokuのアカウントを作成しておいてください。Bot本体を稼働させるクラウドプラットフォームとして利用します。

Herokuって何ですか?名前からは想像つきません。
https://wwww.heroku.com/wwww.heroku.com
ん、クラウドプラットフォーム?セールスフォースみたいなもんですか?
www.sejuku.net
Node.jsを今回ローカルPCに入れたけど、おそらく、公開時の環境をクラウド上に作る、ということだろう、うん。

Heroku CLIを当日作業するノートPCにインストールしておいてください。

これは、コマンドラインからHerokuを使えるようにする何かだろう!とりあえずインストール。
www.terrasky.co.jp

LINE Business Centerにて、ご自身のLINEアカウントであらかじめログインを試しておいてください(当日パスワードがわからなくなる事件が多発しているため)

確かにつまづいた。あと、2段階認証になっているのも、地味に面白いですね。
無事、事前のログイン確認できました!

当日の勉強会

完成形

コンシェルジュ型のボット。すごい。
ボットは昔から存在するんですが、自然言語の解釈など、地味にすごい!

さぁやるぞ

LineでMessaging API

手順はこちら。
qiita.com

api.ai

Googleに買収された。

  • Agent
  • Entity:パラメーターを認識するために必要
  • Intent:ユーザーの意図

IntentとかEntityは自然言語解析では一般的な用語!
Intentは最低10個。20個くらいは入れないと、現実的ではない。たくさん入れると賢くなるよ。

手順はこちらの続きから。
qiita.com

  • 「ML CLASSIFICATION THRESHOLD」をいじると、認識精度の調整ができる。

なんと、設定はこれだけか!!

Bot本体の開発準備

私のPCはWindows環境のため、Powershellで実施。
基本は、手順に従うだけ。

  • constructorとfinishが必要
  • constructorの、this.required_parameterでパラメータを揃える
  • message_to_confirmでパラメータを要求する。(LineのAPIに合わせた記載になっている)
  • finishで終了後の処理(通常はdbに登録するなどするが、今回は返信だけ)
  • 非同期で動いているのでresolveが必要
Herokuへデプロイ

手順通り。基本はHeroku上のgitへpushするイメージ。

わー、動いた!

懇親会

ここまではできるんですけど、この後挫折する人が多いんですよねー。そこにビジネス機会があるのかもしれない。
とりあえず動くものは作れても、ちゃんとビジネスレベルで動くようには超えるべきハードルがあるようです。

第5回 関西DB勉強会に参加(5/20@大阪)

関西DB勉強会に行ってきました。
kansaidbstudy.connpass.com

土曜日の開催にもかかわらず、すごい人の集まり!!
f:id:takumats:20170522131802p:plain

基本編で少しだけ発表させていただいたのですが、各コミュニティの方々の発表と比べると、ちょっと内容的にすみませんでした・・・。でも、今回の勉強会、初参加の方も結構いらっしゃったようなので、この「基本編」の試みは、個人的には非常に良かったと思います。

私がMariaDB|M17とPercona Live 2017から紹介したセッションは、本家のサイトでセッション動画がこうかいされていますので、私の説明で物足りなかった方(たくさんいると思いますが・・)は、ぜひ本家のセッション動画をご覧くださいね!

DEEP DIVE: HOW DATA IS STORED AND QUERIED WITH COLUMNSTORE

https://m17.mariadb.com/session/deep-dive-how-data-stored-and-queried-columnstore

InfluxDB storage engine internals

https://www.percona.com/live/17/content/influxdb-storage-engine-internals

普段、札幌でやっている勉強会でも、こういった試みはぜひやってみたいですね。
懇親会も楽しかったでーす。お話しさせていただいた方、ありがとうございました。
kansaidbstudy.connpass.com

最後にビル1Fで写真撮影しようとしていたら、警備員の人に凄い目で見られてましたが・・・・。

豊平川マラソン 親子ラン(3km) (5/5@札幌)

今年もマラソンシーズンが始まりました!
www.toyomara.com

が、練習ゼロだーーー。北海道だからという言い訳をもとに、冬は練習ゼロ。おなか周りがかなり気になる状態に・・・。

今年最初のれーずは、子供が小学生になったということもあり始めて親子ラン(3km)に参加しました。
真駒内公園を一周弱。子供も歩かないで頑張れました!

なんと、次は千歳でフルマラソン。走れるのか・・・・。