Ruby + PyCallで機械学習をやってみた at Pydata Okinawa #23
機械学習といえばPythonがいますごい盛り上がりを見せていますが、Rubyでも最近 @mrknさんがPyCallというgemを作っていて、2月23日に行われたRuby Business Users Conference 2017で発表されたみたいです。
ということで
Ruby + PyCallで機械学習をやってみる
以前、Python 3.5, scikit-learn, pandasでKaggleのTitanicを使って機械学習のチュートリアルを行ったのでここのコードをRuby化してみる。
基となるPythonのコード
- Kaggleのデータ(train.csv, test.csv)をローカルのdataディレクトリに配置
- pandasでデータを加工
- scikit-learn RandomForestでmodelを作成
- 学習
- 評価
をやってます
これをRuby化する
比較してもらうと分かるんですが、ほとんどPythonのコードに近い状態でかけます。
違うところ
- pyfrom, pyimport でPythonのlibraryをimportする
- PythonのClassのmethodを呼ぶときには
.method
で呼び出す- lambdaで実行してる?
- PythonのDictionaryを使うために
PyCall::Dict
を使用している - methodへの引数はRubyの書き方に置き換える
ぐらいでした。
やってみて
用途としてはPython, Jupyter Notebookでごにょごにょしてモデルを作成して、成果物としてのmodelをscikit-learnのシリアライズで永続化、それをRuby, PyCallから呼び出して実行すると言う感じでしょうか。Railsのコードなんかからmodelへの呼び出しなんかはすごい簡単にできそうです。evalでもできそうだけど失敗したときとか困るし、PyCallに置き換えると良さそう。
まだPyCallの開発は始まったばかりのようなのでこれからどんどん良くなっていきそうですが、すでに今の段階でも十分良さが伝わってくるので期待したいです!何か開発手伝えることがあればやりたいですねー :)
Pydata Okinawa
今回はPydata Okinawa #23 のLT大会ということでPyCallについて 発表してきました。
機械学習に興味がある方で沖縄に居る方/来れる方はぜひお越しくださいー :)
ギークハウス沖縄をrebuildしたい 2.0
この記事はギークハウス Advent Calendar 2016 - Adventarの16日目です。
去年のギークハウス Advent Calendar 2015 - Adventarにも「ギークハウス沖縄をrebuildしたい」というタイトルで記事を書きました。1年間では実現しませんでした。。
が、
現在わりと現実味をおびてrebuildプロジェクトが進行中です。
去年の考えてた事
那覇か宜野湾か
沖縄の主要な場所といえばはやり那覇。アクセスの面でも人の多さでも前回ギークハウス沖縄があったのもあって那覇もありかなと思ってましたが、実際那覇は全国的に見ると普通の地方都市で渋滞もかなりあるので沖縄の人でも那覇の外に住むは用事がない限りあまり行きたくない場所でもあります。宜野湾はGwave cafeがあったり、琉球大学があったりITを使う企業がちらほらあったりで個人的には第一候補でした。しかし、旅行客に来てもらうにも県内の人に来てもらうにも強力な訴求力がなくてちゃんと人が来るか微妙。。みたいなところがあってうまく考えがまとまらずに来た経緯があります。
県内の需要
県内に住む人にとって遊びに来たい訴求力を提示出来るかという問題がなかなか思いつきませんでした。会場をGwave cafe行っている勉強会もあるので宜野湾かなーとか思いつつも月1行くか行かないか。Gwave cafe以外に行くところないし。。という感じでした。
1年で実現しなかったわけ
物件探してたけど具体的イメージがわかなかった
1つは上の理由で、これだというイメージが沸かなかったことがあります。
エンジニアとして沖縄で面白い場所を見つけるのが難しい?
東京から引っ越してくる時は薄々わかっていたもののやっぱり東京で普段得ていた刺激が味わえないのは結構つらい状況でした。ギークハウスを作れば解決するかなーともどうかなーと思いつつこれでギークハウス作っても盛り上がらないだろうなとか。県内にちらほら面白いエンジニアの人が居ますがどこで仕事してますー?って聞くとだいたい「家ですね。」と。なるほど。
スタートアップカフェコザ爆誕
8月上旬に沖縄市でスタートアップカフェコザオープニングイベントなるものがTLが流れて来たのでへーおもしろそーくらいの気持ちで行ったのが最初です。スタートアップカフェに初めて入ってコワーキングスペースとして使わせてもらってた時に隣で孫泰蔵さんがインタビュー受けててすげーこんなところで会えるのかって思ったのがハイライト。
スタートアップカフェコザは起業支援・スタートアップ支援の場所でありコワーキングスペースでもあります。ここは3Dプリンタや3Dスキャナを始め多くの機材があります。また地方ではありえないような面白いイベント頻繁に開催されてます。ここが出来たおかげで沖縄でのエンジニア生活が65535倍楽しくなりました。
スタートアップカフェコザのおもしろいところ
面白い人が集まって来てる
沖縄の経営者やマネージャーレベルの人が頻繁に来てるし、面白いイベントを頻繁に開催しているので県内外からいろんな人がスタートアップカフェに集まってきてます。
初心者向けにプログラミング講座を実施
プログラミング初心者の方たち向けに2ヶ月間のプログラミング講座が開催されています。現在第2期が実施されていてプログラマコースとデザイナーコースに分かれてプログラマコースではRuby on RailsでWebアプリケーション構築、デザイナーコースではWordpressでサイト作りを勉強中です。かなり本気な講座で第1期の卒業生はすでに学習したスキルを活かして仕事を受けてる人もいます。
沖縄市のコミット量がすごい
スタートアップカフェコザは沖縄市運営がしています。コミュニティを盛り上げようとする行政の人たちと一緒に何かをやれる機会はなかなかないのではと思います。東京とかから来るとなおさらそう感じます。 個人的にエンジニアとして面白い場所は沖縄県沖縄市か島根県松江市とかなのかなーと思ってます。
面白いイベントが多数開催されてる
イケハヤさん来ました
家入さん来ました
他にもVCの方によるスタートアップの資金調達のイベント、テクノロジー、Wordpress講座、 ITジャーナリストでTheWaveの編集長の湯川さんによるテクノロジーによって変わる将来の働き方、などのイベントが開かれてます。
機械学習が熱い
- Pydata Okinawaがスタートアップカフェで開催されるようになりました。
- 機械学習の土日のブートキャンプが開催されました
設備がすごい
- 3Dプリンター、3Dスキャナーやレーザーカッターなどが利用できる
- コワーキングスペースの利用料が月1000円
- VR, ドローンを置く予定らしい
- GeForce GTX 1080 2枚刺しのWindows PCが使える。ゲーム、機械学習なんかに使えます。
最新技術に触れ合えそうな雰囲気感が出てきてる
沖縄は本島と離れててある程度の人口規模があるため様々な実証実験が行われる場所になってます。最近では自動車自動運転の実証実験を開始するニュースが発表されてました。 また仮想通貨案件が出て来るかもーとの風のうわさがあったりで、機械学習、ブロックチェーン、自動運転技術なんかが沖縄に居ると仕事を受けれるチャンスが出てきそうな雰囲気になってきてます。
スタッフになりました
面白すぎてほぼ毎日行ってたらいつの間にかスタッフになってました。 プログラミング講師もしてて2ヶ月間非エンジニアの人向けに教えてます。Ruby on Railsを初心者の人に教える機会を頂いてかなり楽しくやってます。
あれ、ここにギークハウス沖縄作ったらおもしろいんじゃね
ということでギークハウスの話をしたところスタートアップカフェコザのすぐ近くのところの物件が空いていると紹介してもらえたのでプロジェクト再開しました。
どんな感じになるか
現在予定しているレイアウトは2Fをリビング・キッチン。3Fを寝室にする予定です。2段ベッドを4つ配置するドミトリーとして使います。
2Fリビングには大きなガラス窓があります。その前に数人座れるデスクを用意し、作業が出来るスペースを作ります。 壁はプロジェクターを投影出来るようにし、イベントなどに使えるようにする予定です。 また、リビングでVR体験が出来る装置を配置したいと思っています。
3Fのドミトリー部分では2段ベッドを4つ置き最大で8名が住める場所を提供します。2段ベッドはプライバシーを考慮しベッド内を他人に見えない作りにする予定です。
3Dモデリング
上をクリックすると3Dモデリングをブラウザ上で見る事ができます。スタートアップカフェコザの3Dプロフェッショナルな方が作ってくれました。こういう人が(なぜか)普通にいます。
生活コストが安い
近くのローカルな飲食店や商店で昼ごはんが350円くらいで済ませれます。ギークハウスの家賃は25000円くらいにしようかなぁと思ってるので月5~7万あれば生きていけるかなと思ってます。
東京から来るといくら?何時間で行ける?
出所: http://news.ameba.jp/20161001-409/
成田空港から那覇空港までLCCを使うと、往復13000円ほどで航空券が買えます。バスやタクシーを組み合わせると、片道4、5時間で都内からコザまで来ることが出来ます。
こんなギークハウスにしたい
- 県内のギークと県外から遊びにくるギークの交流の場所
- 県外の人がいつでも遊びに来れる
- 沖縄にショートステイ、ロングステイしたい人が泊まれる
- 勉強会開催地
- 花粉疎開避難所
- 生活コストさげて働く時間を減らして低ストレス
こんな人が住むと良さそう
- 県内のエンジニアやITに興味がある人
- フリーランスやノマドワーカーやってる人
- 季節限定で夏だけ沖縄に済むとか花粉疎開で来る人
- 都内のブラック企業で働くのが嫌になった人
- エンジニアに興味がある学生
- 日本向け or アジア向けスタートアップで企業したい (New!)
- 機械学習したい (New!)
- 最新技術使いたい (New!)
Campfire やります!
ギークハウス沖縄の立ち上げ費用としてCampfireでクラウドファウンディングする予定です! 来週ぐらいに出せればいいかな。支援していただけると幸いです! 完成したら遊びに来てくださいー。
StartupCafe Kozaで行われたKoza Machine Learning Bootcampに参加してきました
KOZA Machine Learning Bootcamp http://kozaml.com/wp01/
沖縄県沖縄市にあるスタートアップカフェコザにて、機械学習の勉強会が2日間あるということで参加してきました。 沖縄でフリーランスの研究者という肩書でやってらっしゃる大塚さんに2日間機械学習を学ぶ会です。
感想としては、機械学習のプロセスをKaggleのdataを使って一通りやれたのでかなり満足感あります。
実際にやった内容
ツールとしては、scikit-learnとpandasを使用しました。
Kaggle入門としてはあまりにも有名なTitanicを使いました。
学習プロセス
- データを取得してくる(今回はKaggleを使いました)
- Pandasでデータの下ごしらえ(欠損値の穴埋め、文字を数値化する)
- 複数の学習Modelを試してModelを選択する
- 各モデルのベストなハイパーパラメーターを調査する
- 複数モデルを組み合わせて予測する
Bootcamp前に思っていた機械学習をやる上での壁
と5つくらいある気がしてて。機械学習どこからやればいいのかなにから手を付ければいいのかわからない方って結構いると思います。
今回Bootcampをやってわかったこと
Jupyter notebook便利
Jupyter notebookずるい。これがデフォルトで使えるPythonずるい。ブラウザさえあればPythonを動かせる環境が作れるのはすごい。 実行して、確認してというサイクルがめちゃくちゃ簡単なのは本当に重要。 大学の講義とかでPythonじゃなくてC, Javaとかやってるの意味がわからないレベルに便利。 PythonよくわからなくてもJupyter notebookでごにょごにょやってたらとりあえず動かせそうってぐらいには便利。
最初は数式わからなくても良い
scikit-learnに登録されているメジャーなモデルをとりあえず色々使ってみてデータを食わせてmodelを作って予測する。 ここまでにほとんど数式を理解せずに動かせました。数式はいつかは絶対に避けて通れない壁ではあるけど、チュートリアルレベルでは必ずしも理解していなくてもよい、というのがわかりました。
英語なくてもある程度出来る?
セミナーではずっと日本語で行われていたのと参考にしたページも日本語で書かれているものだったので英語をそんなに読まなくても動かすことは出来ました。 しかし、methodやClassの説明を読むにも英語を使うし、scikit-learnの本家のドキュメント読む必要があるので英語は結構読めないと今後はきついだろうなぁという印象。
いくつかのメジャーなモデルをとりあえず試す
やる前は機械学習をやるにおいてそれぞれのモデルの仕様や仕組みを理解しておくのは前提知識として絶対だと思ってました。しかし実際に動かしてみるレベルでいうとメジャーなモデルは用意されているし、scikit-learnで操作方法がすべて統一されているので同じmethodを叩くことで同じように結果が得られる事がわかりました。なのでざっくりの知識でもとりあえずデータを整形して食わせてあげることでそれなりに動くんだなぁというのがわかりました。
まとめ
なんとなく機械学習やらないとなーと思っていたので今回の講義はめちゃくちゃ有益なものでした。ざっくりとした全体像がなんとなくわかったした気がして良かったです。 データをごにょごにょして予測するというのは前からDBのデータでSQL走らせてみたり、Google Analyticsとかでやっていたのでそれを機械学習なんかで出来たら今後面白くなりそうな気がしてます。それと久しぶりに新しいものを短い期間にがーっと詰め込んで学んでコード書くという体験をしてやっぱりプログラミングとか学ぶのって楽しいなぁと思いました。
宣伝
沖縄ではこういうイベントがこれからもどんどんやっていく予定みたいなので沖縄遊びに来てください。
東京で消耗してたら、物価安い場所に移住して機械学習とか学んで新しい仕事見つけたりしてもいいんですよー。