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

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

db analytics showcase Sapporo 2017に参加 (2017/6/30, 7/1@札幌)

札幌で開催したデータ分析の祭典「db analytics showcase Sapporo 2017」。
www.db-tech-showcase.com

無事終了。今回のイベントでも私自身は運営側であったこともあり、実はセッションについてはあまり聞けてません。そこは残念でした。
でも、今回のイベントを通して、私自身、多くの方と出会うことができ、いろいろなことに気づかされ、非常に多くのことを学ぶことができました。

札幌での開催

なぜ札幌?、東京でやってほしい!、という声があったのも事実でした。
札幌でも「AI」を謳うセミナー的なものも最近増えてきてはいるものの、「それAI?」と突っ込みたくなるものも多々ありますよね。
少し?違和感を感じていたところで「本物に来て話してもらおう!」となったのがきっかけでもあります。

結果的には、札幌で開催したことで、遠方から来ていただいた講師の方々同士の新しい交流が生まれたようですし、参加者のSNSの声などからも、「難しい」「勉強になった!」という声が投稿されていたので、開催側としては大変満足しています!

来年も札幌でやりたい!と今は思ってます。

db tech showcase OSS 2017へ参加 2日目 (2017/6/16,17@秋葉原) 

さて、2日目(土曜)です。
実は土曜日の開催というのはこのイベントではあまりやってませんでした。

こういった勉強会の参加は、平日は業務や学業で参加が難しい人にとっては土曜の方が参加しやすいでしょうし、ご家族がいる場合など土曜の参加の方が難しいこともあると思います。実際、私自身も、土曜日の参加というのは本来はなかなか難しく、平日夜が一番参加が容易です。人それぞれの理由があると思いますので、今回の土曜日開催というのは、一定の意味はあったと思っています。

セッション詳細

Facebook 松信さん

さて、土曜の朝イチは松信さん。MySQL界隈では、奥野さん(漢の・・・)と並んで超有名人ではないでしょうか。早速DB Onlineに記事が出てますのでこちらをご覧ください。
enterprisezine.jp
実は私は4月にMariaDBのM17と、Percona Liveに参加したこともあり、海外で松信さんの話を聞く機会がありました。(もちろん英語)
Real World: Deploying MyRocks in Production at Facebook | M|17
Yoshinori Matsunobu | M|17
www.percona.com
今回の講演は国内初!つまり母国語初です!これはこれは貴重な講演だったと思います。やはり英語と母国語とでは話すスピードも違ったと思いますので、非常に内容が濃かったと思いますよ!
ちなみに当日使用された資料はこちらです。

www.slideshare.net

Aerospike 田村さん

AerospikeはSSDを直に(ファイルシステムを使わずに)操作することで、SSDを高速に使うことができるNoSQL(KVS)データベース。海外では金融とかでも結構使われているみたいです。とにかく高速なのが売りなのと、信頼性が求められている(絶対に止められない)システムでむしろ使われるというような話でした。

www.slideshare.net

MariaDB Davidさん

MariaDB ColumnStoreの話です。MariaDB ColumnStoreは、InfiniDBからフォークした分析向けストレージエンジン。InfiniDBがビジネスを終了した後、顧客基盤などもMariaDBが引き継いでいます。列指向型データベースについてはいろんな開設ページがあるのでそちらを参照ください。
www.publickey1.jp
MariaDB ColumnStoreの利点は、商用DBに比べて安価であること、そして、InfiniDB時代から培った標準SQLのサポートと、InnoDBなどの他のストレージエンジンとのJOIN操作をサポートしていることでしょうか。

MS横井さん

講演中は横井さんの自己紹介が非常に話題になりました!
※残念ながら?公開スライドではそのあたりは削除されてましたが・・。
MSがOSSをちゃんとやってきますよー、という話です。今までは、まさに悪の帝国。OSSの目の敵的なところがあったと思いますが、本腰を入れていくとのことですよ。

MariaDB Davidさん

MariaDBDBS銀行の事例です。DBS銀行って日本ではあまり知られていないかもしれませんが、シンガポールにある世界的な超優良銀行の一つです。もちろんシンガポール最大。とはいへ、日本のメガバンクに比べると資産規模などは小さいですが・・・。DBS銀行は、いろいろと比較したなかでOracleの移行先としてMariaDBを選んだとのことですよ。
海外とは言え、金融機関は保守的な業界の一つではあります。その中でスピード感あるDBS銀行MariaDBを選んだという意味は、決して小さくなかったと思っています。

Percona Colinさん

Colinさんは昨年までMariaDBにいて、よくdb tech showcaseにも来ていただいてました。昨年、Percona社へ移り、活躍されてます。
頑張って資料に日本語入れてくれました。(Google翻訳使ったとのことです)

www.slideshare.net
かなり内容は盛りだくさんで、最後は超駆け足で、なかなか聞き取りづらかったです。資料が日本語化されたら、超役に立つと思います。

フューチャーアーキテクト松崎さん、SBIホールディング伊藤さん

Spiderと他のOSS基盤とTableauを使って分析基盤を構築した話。ユーザーケースとして非常にためになる話でした。Spiderは非常に安定しているというのと、まだ2台だけど将来を見越してスケールアウト可能な構成にしたとのこと。UIはtableauにすごい満足しているとのことでした!

サイボウズ 深谷さん

サイボウズはかなり前からMySQLで運用されているようです。そのため、困ったことは自部たちで解決、当面は本家のMySQLについていく、という確固たる方針があるように感じました。ただ、実際に自分たちで対応する際には、Percona ServerやMariaDBのレポジトリを参考にしてはいるとのこと。

db tech showcase OSS 2017へ参加 1日目 (2017/6/16,17@秋葉原) 

db tech showcase OSS 2017へ参加。(というか運営側でした。)
www.db-tech-showcase.com

登場したデータベース達

いろんな運も味方し、MariaDBのMonty氏、初来日のPerconaのPeter氏、Facebookの松信氏をはじめ、各エキスパートの方においでいただいて講演いただくことができました。また、ユーザー事例も非常に非常に面白かったです。今回登場したデータベースを改めてまとめてみます(吉田氏のセッションで出てきたものは除く)。

MySQL

mariadb.org

  • Percona Server

www.percona.com

  • MongoDB

www.mongodb.com

www.postgresql.org

  • Aerospike

www.aerospike.com

  • Cassandra

cassandra.apache.org

  • (Spider)

spiderformysql.com

  • (MyRocks)

code.facebook.com

  • RocksDB

rocksdb.org

セッション詳細

Percona: Peterさん

なんと初来日ということでした。Percona社はMySQLとMongoDBのサポートサービスを世界的に展開している企業で、日本だとスマートスタイル社が提供しています。
www.s-style.co.jp
今後、オープンソースの利用が広がっていくと、企業だとやはりサポートが必要、という感じになっていくのかと思います。今のところ、オープンソースを使う企業は自分たちで問題を解決ができる企業だったり、ちょっとした問題は気にならないシステムであったりすることが多いようです。

www.slideshare.net

MariaDB: Montyさん

なんといっても盛り上がったのは、生Mariaさんが登場したところでしょうか!滅多にみられないシーンだと思います。Monty氏は、MySQLMariaDBを開発してきた、いわば、レジェンド。彼がどのように生きてきたか、そして今後どの方向に進むのか、注目していく必要はあるでしょう。ちなみに、さらに次の製品ができたら、名前はどうするんでしょうね!

Yahoo: 三谷さん

プライベートクラウドで、RDS的なサービスを提供する Open stack trove というのを使っているらしい。これは面白そう。
github.com

www.slideshare.net

OSSコンソーシアム: 吉田さん

個人的な注目はスライド7ページ目のOSS利用実態。データベースのところなんですが、よく「日本ではPostgreSQLの方が人気がある」と言われているで、日本ではPostgreSQLの方がシェアが高いとずっと思いこんでいたのですが、実際にはMySQLの方が多いようです。ただ、伸びで見ると両方のオープンソースが伸びていますね。今回のイベントはかなりMySQL寄りのラインアップでしたが・・。

www.slideshare.net

SRAOSS: 長田さん

今回のMySQL寄りの中で、「アウェイ」な中での講演となりました。でも、逆に、PostgreSQL使っている人の中で講演するよりは、いいんじゃないかと思いますね。アピールのチャンスです。
https://www.sraoss.co.jp/event_seminar/2017/db_tech_show_case_oss_2017.pdf

DataStax: 森下さん

Cassandraの事例のハナシ。こうやって事例を見せてもらえるのはありがたいですね。国内がもっとあるとありがたいですが・・。SymantecUBER、MS。結構面白かったのではないでしょうか?

www.slideshare.net

Spiral Arms: 斯波さん

ストレージエンジンスパイダー。テンセントとシーメンス。意外と大きなところで使われてますね。逆に大きな規模で使うようにならないと、必要性に迫られないということもあるのかもしれませんが・・・。テンセントは自分でいじって、質問が来たところから、交流が始まったとか。

www.slideshare.net

Oracle: 奥野さん

「漢のコンピューター道」は有名中の有名ですね。MySQLで何か調べ事をすると、たいていは奥野さんのページに行きつきます。そしてプレゼンでは随所に著書の宣伝もちりばめられてました!盛りだくさんの内容で講演いただきました。このスライドはバイブル級!?

www.slideshare.net

Cloud Days 2017札幌に参加してきました(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の数式なんて書いたの、修論書いたとき以来だと思う。カギカッコの入力さえも戸惑った・・。