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

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

Sapporo Tech Bar #4 ~医療分野におけるディープラーニングの応用事例と、PostgreSQL Parallel QueryとNVMeを組み合わせたスケールアップ性能検証 (2016/11/30@札幌)

毎度恒例の、Sapporo Tech Barを勤務先で開催♪今回で第4回目となりました。
www.db-tech-showcase.com

医療情報とディープラーニング

その先にあるもの。。。。とても面白く、そして深いお話でした。
講演されたのは北海道科学大学保健医療学部診療放射線学科の菊池先生。
保健医療学部 診療放射線学科 准教授 菊池 明泰|北海道科学大学研究者データベース
診療放射線学科|北海道科学大学

また、情報科学科の川上先生にもおいでになりました。
情報工学科|ゼミナールガイド|北海道科学大学

「医用画像×ディープラーニング」話としてはこんな感じのお話です。
lp-tech.net
先生のお話しでは"判断"させるところまでは言っていませんでしたが、サポートして、医師の負担を大きく減らすことができる、というところを目指しています。

また、医療情報の話題としては、例えば、医療の情報とSNSの情報をリンクさせて病気の予防に活用できたりとか、そういったところも技術的には可能なところまで来ています。倫理的なところは別として・・・・。
便利なような、怖いような・・。なんでも人工知能にコントロールされるようになってくるのも、気持ち悪いですよね。
「コントロールされない権利」が重要になってくるかもしれません。

人工知能に支配されて、いつまでも元気で、というのが将来的な理想形のようです。
www.ikiiki-laboratory.com
会場では、将来は老後はなくなってしまうのか、、、とか、、いつまでも働き続ける必要があるのか、、、というため息も・・・。

どうもありがとうございました!

実は菊池先生には、ビジネスEXPOでお会いしました。
takumats.hatenablog.com

PostgreSQL Parallel QueryとNVMe

前回のNVMeの評価に続き、「だったらPostgreSQLのParallel Queryを速くしてみろよ」とのことで今回もNVMe企画を発表してもらいました。
ポスグレのParallel Queryはまだ新しい機能で、「一部のクエリ操作の並列化がサポートされた」というところ。
www.atmarkit.co.jp

検証結果も、早くなるものとならないものがある、という結果でした。
また、NVMeを数枚刺しにしても、同様、早くなるもの、早くならないものがあるようです。

足回りがどんどん早くなったら、今度はまたCPU能力を増強せねば、ってことになって、
GPU使えばいいんじゃね、みたいな話になるのだろうか。さらに速くするにはどうすれば??非常に楽しみです。
PGStrom - PostgreSQL wiki

今年もあと1回

早いものでもう12月。今年もあと1回となりました。
次回もぜひ盛り上がる会になればいいな、と思っています。

Programming in C# Jump Start 01を見てみよう、と思ったけどChannel 9からダウンロード。

Programming in C# Jump Startの最初のスライドを見てみました。
mva.microsoft.com

なんか、外国人2人が楽しそうにしゃべってます。

あれ、こっちにもある。
channel9.msdn.com

ソースコードは以下から。xamlってなんだか懐かしい響き。
今もまだExpressionって使えるのかな??
xaml.codeplex.com

channel9の方はダウンロードできるようなので、通勤中(地下鉄)に見ることにしました。せっせとダウンロード中。

MSDNサブスクリプションはVisual Studioサブスクリプションへ

知りませんでした。いつの間にか。
opcdiary.net

ライセンスの割り当てを行って、
いつものMSDNサブスクライバーダウンロードの画面で、今か今かと確認していたのですが。

旧サイトもそのまま残っているし、絶対にわからないと思う。
MSDN サブスクライバー ダウンロード

新しいサイトは、https://my.visualstudio.com/とのことです。

vagrant上にインストールしたAerospikeでycsbを実行してみる

さて、前回はWindows上のVagrantでAerospikeをインストールしてみたので、
takumats.hatenablog.com

今回は無理やりycsbの実行にチャレンジする。
github.com

従った手順は、公式サイトのこの記述。
Documentation | Aerospike

前回作った環境では、Javaが入ってなかったので、まずは以下に従ってjdkをダウンロード
qiita.com

その後、以下に従って、jdkをインストール
zero-config.com
すると、「java -version」が返ってくるようになりました。

mavenのインストールは以下を参考に。
qiita.com

で試行錯誤したらできるようになったのだが、つまづきポイント。

  • namespaceとしてycsbが必要 (aerospike.confで対応 (namespaceやファイル名))
  • 一度やると再実行でエラー (データが入っているため)

実行した感じ

[root@localhost YCSB]# bin/ycsb load aerospike -s -P workloads/workloada
[WARN]  Running against a source checkout. In order to get our runtime dependencies we'll have to invoke Maven. Depending on the state of your system, this may take ~30-45 seconds
[DEBUG]  Running 'mvn -pl com.yahoo.ycsb:aerospike-binding -am package -DskipTests dependency:build-classpath -DincludeScope=compile -Dmdep.outputFilterFile=true'
/usr/java/jdk1.8.0_111/bin/java -cp /opt/YCSB/aerospike/conf:/opt/YCSB/aerospike/target/aerospike-binding-0.9.0-SNAPSHOT.jar:/opt/YCSB/core/target/core-0.9.0-SNAPSHOT.jar:/root/.m2/repository/com/aerospike/aerospike-client/3.1.2/aerospike-client-3.1.2.jar:/root/.m2/repository/org/hdrhistogram/HdrHistogram/2.1.4/HdrHistogram-2.1.4.jar:/root/.m2/repository/org/gnu/gnu-crypto/2.0.1/gnu-crypto-2.0.1.jar:/root/.m2/repository/org/codehaus/jackson/jackson-mapper-asl/1.9.4/jackson-mapper-asl-1.9.4.jar:/root/.m2/repository/org/luaj/luaj-jse/3.0/luaj-jse-3.0.jar:/root/.m2/repository/org/codehaus/jackson/jackson-core-asl/1.9.4/jackson-core-asl-1.9.4.jar:/root/.m2/repository/org/mindrot/jbcrypt/0.3m/jbcrypt-0.3m.jar com.yahoo.ycsb.Client -db com.yahoo.ycsb.db.AerospikeClient -s -P workloads/workloada -load
YCSB Client 0.9.0-SNAPSHOT
Command line: -db com.yahoo.ycsb.db.AerospikeClient -s -P workloads/workloada -load
Loading workload...
Starting test.
DBWrapper: report latency for each error is false and specific error codes to track for latency are: []
2016-11-22 18:50:08:459 0 sec: 0 operations; est completion in 0 seconds
2016-11-22 18:50:08:609 0 sec: 1000 operations; 4901.96 current ops/sec; [CLEANUP: Count=1, Max=253, Min=253, Avg=253, 90=253, 99=253, 99.9=253, 99.99=253] [INSERT: Count=1000, Max=24095, Min=31, Avg=109.41, 90=113, 99=566, 99.9=5871, 99.99=24095]
[OVERALL], RunTime(ms), 209.0
[OVERALL], Throughput(ops/sec), 4784.688995215311
[CLEANUP], Operations, 1.0
[CLEANUP], AverageLatency(us), 253.0
[CLEANUP], MinLatency(us), 253.0
[CLEANUP], MaxLatency(us), 253.0
[CLEANUP], 95thPercentileLatency(us), 253.0
[CLEANUP], 99thPercentileLatency(us), 253.0
[INSERT], Operations, 1000.0
[INSERT], AverageLatency(us), 109.409
[INSERT], MinLatency(us), 31.0
[INSERT], MaxLatency(us), 24095.0
[INSERT], 95thPercentileLatency(us), 200.0
[INSERT], 99thPercentileLatency(us), 566.0
[INSERT], Return=OK, 1000
[root@localhost YCSB]#

一度実行してデータが追加された場合、Set内のデータを削除するにはこんな感じで実行する。

[root@localhost YCSB]# asinfo -v "set-config:context=namespace;id=ycsb;set=usertable;set-delete=true;"

「HWAUG & GPU-Accelerated VDI Community Meetup in 札幌」に参加(2016/11/21@札幌)

掲題のイベントに参加してきました。
h-watson.connpass.com

今回このイベントに参加した理由は2つ。
1つは札幌にあるIBMさんのオフィスで実施されるとのことで、勤務先と同じビルのため近かったこと。
もう1つは、前職で知り合いだった方が偶然登壇されることを知ったこと。

さて、勉強会の内容ですが・・・。
先頭は札幌のワトソンユーザー会でおなじみの佐藤さん。そういえば、ワトソン君のブログが更新されていないような・・・。
watson-sapporo.hatenablog.com
きっと、仕事が忙しいということで、プラスの解釈としましょう。

次の方、IBMエバンジェリストの方、とのことですが、なかなか面白かったです。
LINEボットをワトソン使って作る話なのですが、人工知能というよりは、
ルールベースの会話ができるボットを簡単に作れるよ、とのこと。
そうなんです、結局ルールベースなんですよね。
このあたり、人工知能の幻想と現実にできること、について、少しだけわかった気がしました。
linecorp.com

その次の方はいろいろ紹介されるセッションでしたが、その中でも、nvidia-dockerというのが気になりました。
github.com
私はもともとWindowsユーザー/開発者のため、dockerについてよくわかってないです。
ちょっとdockerについては、もう少し勉強せねば・・・。

次はNVIDA GRID(VDI)の話。CUDAもリモートで使えるようになるとのこと。
事例はやはりCADとかをたくさん使う自動車関連など。これまではワークステーションをたくさん並べなければならなかったのが、
シンクライアントで作業できるようになったらしい。
www.nvidia.co.jp
コンシューマー向けに普及するかがカギだろうか。。。
GPGPUではほぼ姿が見えなくなったAMDも、この分野では頑張ろうとしている模様。

さて、前職で知り合いだった方。
普段は東京にいるようで、また札幌にも来るとのことでした。
今回は懇親会には行けませんでしたが、次回はぜひお酒でも飲みにいければ。

「Oracle Cloud Developers Meetup@北海道 - 機械学習でお客様が他にも買いそうな商品を予測しようじゃないか。 」に行ってきた。(2016/11/17@札幌)

前回も参加したのですが、Oracle主催のハンズオンに行ってきました。
oracleclouddevelopersh.doorkeeper.jp

前回の参加メモはこちら。
takumats.hatenablog.com

やはり実際に手を動かしてのハンズオンは楽しい♪
今回のチュートリアルの内容はこちら。資料を公開してくれているのも、後でできるのでうれしい。
qiita.com

ハンズオン時は以下のようなOracle Application Expressというのに接続できるようになっている。
f:id:takumats:20161117191543p:plain

ツールとして、Oracle SQL Developerというのを使います。
http://www.oracle.com/technetwork/jp/developer-tools/sql-developer/downloads/index.html

まぁ基本は言われた通りにポチポチやっていくだけなのですが、
このような手順でいろんなことができる、というのはとても新鮮。
たったい2時間だし、こまごまとした説明とか、進捗遅い人を待っているのをふまえると、実質30分くらいか。

以下、メモ。

データ分析は大きく以下の流れで作業する。

  • 対象のテーブルの特定
  • データを加工(data preparation):欠損値補完、テーブル結合、など
  • 分析の手法を選択

テーブルの特定

バスケット分析で必要になる情報:Transaction ID、Item ID
まずは分析対象のテーブルを特定することが重要。
今回は二つのテーブルを選んだ。

データの加工

今回は結合(inner join)のみ。

分析手法を選ぶ

今回はアソシエーション。
この分析を選ぶところが、ノウハウがいるところ。
今回のようなフレームワークを使うとドラッグ&ドロップでいろいろできるが、やれることは限られる。
凝ったことをするには、やはり言語系の何かが必要だろう。

余談だが、分類、を使うと、どんなお客が買ってくれるか、みたいなことを分析できる。

f:id:takumats:20161117201201p:plain

そして実行すると

緑のポチがつく。
f:id:takumats:20161117201657p:plain

これを分析

  • 確信度:その事象(先行情報→結果)が起こる確率
  • サポート値:全体の母数に占める割合(サポート値が低いと信頼に足らないのでは?という情報)
  • リフト値:1未満だと信用できない

bdm.change-jp.com

そして、この結果をおすすめ商品を表示するところに記載してあげる。

最後に頭の体操

これが自動車会社だったらどんな分析をするべき?

どのような塊をトランザクションとするか、そこがデータサイエンティストの仕事で腕の見せどころでもある。

おまけ

ちなみに、12月に以下のようなイベントをするそうです。
Oracle Cloud Day Sapporo 2016
http://www.oracle.com/goto/cloudday_sapporo2016

機械学習と統計分析の違いがいまいちよくわからなくなってきた・・・・。
tjo.hatenablog.com