DeepLearningも競馬もど素人だけど、TensorFlowで高松宮記念を予想してみる(結果、惨敗)
1年以上ぶりのブログ更新です
最近、金欠気味です(笑)
手っ取り早く稼ぐにはギャンブルでしょう。ということで、競馬に手を出します(競馬ど素人ですが)。
ただ予想するのも芸がないので、 以前TensorFlowで作った競馬予想の学習器を使って予想してみます。
その時の記事はこちら rfp.hatenablog.com
こいつを使って、2018/03/25(日)の高松宮記念の着順予想をしてみます。 (このエントリを書いているときは2018/03/24です。どうなるのでしょう?)
結論から
ダイアナヘイロー、ダンスディレクターあたりが有力らしい
2018/03/24(土)時点で
ダイアナヘイローは12番人気 ダンスディレクターは4番人気 です。
不安しかありません。
どうやったの?
前回のブログに書いてますが、補足も含めて、ちょっと詳しく書きます。
1. データ収集
http://race.netkeiba.com/ から高松宮記念に出走する競走馬(全18頭)のデータをスクレイピングで取得しました
収集したのは過去のレース記録です。
2. 特徴量抽出?
スクレイピングで取得した出走馬の過去レースデータで使用する特徴量は次の15個にしました これらの特徴量を使って、順位を予想してみます。
- 日付
- 開催
- 天気
- R
- レース名
- 頭数
- 枠番
- 馬番
- オッズ
- 人気
- 騎手
- 斤量
- 距離
- 馬場
- 馬体重
3. モデル式
シンプルな重回帰分析を使用します
本当はいろんなモデル式を試してみたいですが、それは追々。
https://www.tensorflow.org/api_docs/python/tf/matmul
結果
1着:ダイアナヘイロー(12番人気) 2着:ダンスディレクター(4番人気) 3着:レーヌミノル(7番人気)
(人気は2018/03/24(土)時点)
予想してみたが、、、
当たる気が全くしない。
- レースデータが少ない
- 特徴量15個は少ない?
- 血統や騎手との相性などの関係性?の考慮ができてない
etc
難しい。
とりあえず、明日ウインズ新宿(場外馬券場)に行くだけ行ってみようかな。
[2018/03/25 追記]
結果はファインニードルが勝利
ダイアナヘイローは18着(最下位) ダンスディレクター(4着) レーヌミノル(7着)
素人がしゃしゃりでました。すいません。 しかし、懲りてはないので、機会があればリベンジしたいと思います。
由比ヶ浜での開発合宿でTensorFlowを使って競馬の着順予想に挑戦した話
久しぶりすぎるブログを更新です。 前回の開発合宿以来です。 2月10日(金)〜 2月12日(日)までの3日間で由比ヶ浜で開発合宿をしてきました。
発表資料
資料の補足
- DeepLearningで競馬の着順予想に挑戦(競馬ど素人&DeepLearningど素人)
- やったことは資料のとおりで、ベーシックな感じ
- 前処理むずい
- ちゃんとやれば面白そうだから、引き続き継続してやってみる
- サトノクラウンかヤマカツライデンを1着予想
(追記) スライドの最後のほうに書いてますが、こちらで明記してませんでした。
サトノクラウンかヤマカツライデンを1着予想
順位づけの際の丸め処理をミスったため、厳密にいうと ヤマカツライデンを1着、サトノクラウン2着予想ということになってます。 誤解を招いて、申し訳ありません。
成果発表風景
開発合宿雑感
お宿
広いお部屋で集中して開発に専念できました。
近くに海
綺麗でした(入ってない)
エフェクトかけてみる
エフェクトかけてみる
最後に
今回はベーシックな機械学習に挑戦してみた。 まだ色々できそうなことがあると思うので、引き続き頑張る。
京都での開発合宿でOSSコミッタになった話
久しぶりすぎるブログを更新です。 8月11日(木)〜 8月13日(土)までの3日間で京都で開発合宿をしてきました。
発表資料
資料の補足
- 今回VSCodeVimにコントリビュートした
- コミッタが大歓迎してくれて、すごいありがたかった
- すべてのOSSがこんなに優しくしてくれるわけではないのかもしれない
- 実は運がよかったかも
- でも、それ以上にいろんなモノに触れられるチャンスがあって世界が広がる
開発合宿雑感
- 開発が捗りやすい環境
- 最後に成果発表の時間を設けることによる程よいプレッシャー
- みんなガリガリ開発しているから、自分も頑張らないといけなくなるという雰囲気(自分は好きです)
- 近くにコンビニがあるから、RedBullいつでも買いに行ける
- 事前準備大事
- ある程度やりたいことを決めとくといい具合にスタートダッシュが切れる
- みんなポケモンGOしすぎwww
お世話になった宿?お家?
Airbnbで予約。 www.airbnb.jp
印象は
- 駅から近くで便利
- 近くにスタバある
- 近くにコンビニ(サークルK)があるから、いつでもRedBull買いに行ける
- ちょっと歩けば、鴨川見れる
- 16人で寝れなくもないけど、9人で一杯一杯
こんな感じ。
ご飯
京都のご飯はことごとく旨い!!!
(写真にそばが写ってませんが、そばめっちゃ美味しかったです)
まんまるの月はリーズナブルでかつ、うまかった。
風呂
昔からありそうな古の銭湯。 東京にはないいい雰囲気でした。
夜は?
ちはやふる上映会
っていうだけです。
最後に:京都での開発合宿は?
誘惑が多すぎる。 開発合宿をするのなら、鉄の意志が必要ですので、あしからず。 カモネギがいるらしい
第1回ペパボテックカンファレンス参加レポート
渋谷のセルリアンタワーGMO Yoursにて第1回ペパボテックカンファレンスが開催されたので、参加レポートです。
開会の辞
なぜ、開いたか
あんちぽくんさんより
- 色んな会社が自社のテックカンファレンスをやっているので、やってみたかった
- 領域が広い → 普段やっていることを話せば面白いかも
これからのペパボの技術 by あんちぽくんさん
- ペパボがなにを考え思いエンジニアリングしているのか
- これからどうエンジニアリングするのかを話していく
これまでやってきたこと
- 技術基盤の改善
- 基本事業部制で縦割りだったのを技術基盤チームを作ったことで横につなげた
- 技術的な改善&エンジニアが言うことを聞き入れてくれる組織作り
CTOとは
- 経営をすることのみ
- それ以外はない
- 経営の中で技術を担う
今後の技術的展望
1.マイクロサービシーズ化
- 色んな言語で細分化して小回りがきくようにする
- 一つの大きいモノリシックなサービスを分割する
- 移り変わる環境に対して、柔軟に対応できるように
- 一つの言語技術に依存するのはリスキー
2.インフラのクラウド化
- 今までオンプレ環境
- 機動的にする
3.次世代ホスティングサービスの提供
4.モバイルシフト
- minneアプリをきっかけにネイティブにも注力
ペパボのエンジニア
- エンジニアに関する制度は面白かった。
- 評価制度
- 半期ごとにぐるぐるまわす
- エンジニアを評価するのはエンジニア
- 全てが公開されたプロセスで行われる
- プルリクベースで行われる
- WIP でやることをあげる
- レビュー
- プルリクに対する評価
- 半期中にコミットを重ねて行く
ペパボで働くということ
- 多種多様な自社開発サービスを提供している
- そこにいるだけで成長できる環境が理想
- 学習におけるタイプ
- 行動
- 理論
- 行動が先か思考が先か
- どっちも大事でフィードバックループをまわしてく事が大事
Nyah ~ ポチポチするためにニャーニャーしよう ~ by ボブさん
www.slideshare.net
- Nyah とは
- 名前に遊び心を感じる
- 仮想インフラ基盤(Iaas) プライベートクラウド
- 2014年夏にオープンスタックやることに
- PackStack試してみたけど、簡単そうにみえてめちゃ大変だった
- etc/init.d/open がカオス
- 2014 年秋
- GMOインターネットの人に聞いた
- グループシナジーがステキ
- AWS とOpenstack
- AWSでできることはOpenstackでできることもある
Consulは全自動オーケストレーションの夢を見るか? by udzuraさん
www.slideshare.net
- Consulとは
- サービスディスカバリ
- ヘルスチェック
- Raft Consensus Algorithm
Q:Consul 入門から始めるにはどこから手をつければいいのか?
A:Getting Started - Consul
自分自身、インフラ周りに疎いことを痛感しつつ、あまり理解できず、メモれてなかっただけにこの質問は大変ありがたかった。。
Angular JS の継続的バージョンアップ by nessyさん
www.slideshare.net
- 検索キーワードで人気らしいけど。。。
- Angular は難してググらないとわからないwww
- 「止まっているのはそれだけでバグ生んでるのと一緒」
- Angular のバージョンアップするにすべきこと
- バージョンアップを見据えた実装
- テスト
- 他技術のキャッチアップ
- Angular2について
- 一番恩恵を受けれそうなのはTypeScript
- Coffeeはちょっと負債になりつつある?
ECサービスの負荷テスト by おいちゃんさん
事の発端
- 何かが来た。。。
- 正体は大型店舗のタイムセール
- Twitterで告知が盛り上がった
- エラーの内容が怖すぎる。。。
- 商品購入できない、ページが重いなどの障害も発生
- 今回は負荷テストにフォーカスを当てて話す。
負荷テスト(準備)
負荷テスト(実施)
- 改善前に負荷テストを実施し計測結果をいくつか計った
- 1回目:瞬間的にあげてった
- 2回目:継続的にユーザー数をあげてった
- テストパターンを変えて計測していくところは当然っちゃ当然だけど、大事な工夫
- 改善後
- 継続的な負荷をかけていった
まとめ
- Gatlingよさげ
- 実施環境は考えるべき
- 負荷試験といっても、負荷のかけ方は2パターンある
- 瞬間的
- 継続的
おから(仮)~ngx_small_lightとngx_mrubyで作る動的画像変換サーバー~ yano3さん
動的画像変換とは
- 従来のよくある画像変換
- アップロード時にいくつかサイズをリサイズ済みの画像を作成(静的)
- 画像サイズの変更を伴うデザインの変更が柔軟にできる
動的画像変換サーバ おから(仮)
- 幅・高さを指定してリサイズ
- 画像形式の変換
- ngx_small_lightは動的画像変換モジュール
- これだけで画像変換できるけど、問題点はいくつかある
- URLの仕様を変えたい
- 悪意のあるユーザーへの対策
- ngx_mrubyはmrubyを使ってnginxを生業
- mrubyは軽量なRuby
- nginxの設定だけだとちょっとつらい
- mrubyなら楽々かける
- BitCoinとはインターネット上でやりとりされる価値を持ったデータ
- BitCoinの特徴:P2P
- Ripple
- 仮想通貨・法定通貨を送るためのプラットフォーム
- ちょっと内容がロックすぎて、あまりメモとれてなかった。。。
WebGLを社内で勉強し始めた by imoさん
終盤になり、集中力切れてます。。。
見積もりと計画づくりの技術 by kenchan さん
- 見積もりと計画づくりの目的
- 読み・書き・そろばんができて当たり前
- 読み → コードリーディング
- 書き → コーディング
- そろばん → 見積もり
- 見積もりができるとは??
- 問題領域が理解できている
- 自分の能力を理解している
- 不確実性のコーン
- プロダクトの初期の時点では見積もりの振れ幅が大きい
- おわりに近づくほどわかる
- 最後にならないとわからない
- 正確性と労力の関係
- やるだけ無駄になっちゃうのは良くないね
- 正解にたどり着けない見積もりと計画づくりは無駄なのか??
- 誰が主体となり何のために行うのかを明確にする必要がある
- 相対規模見積もりがいいとされているのは「人間が相対的な比較が得意」だと言われているから??
- ストーリーの分割
- ストーリーに分割
- タスクに分割
- pivotaltracker で計画作り
すごいいい話なんだけど、アジャイルなどを一通り理解して実践してれば、もっと理解できるのだろうな。。。
私の半生~ものづくり人生~ by nakajijapanさん
- エンジニアのタイプ
- 書くまでのプロセスが好きな人 -ものを作るのが好きな人
- プロダクトドリブン
- 手段の目的化上等
- フィードバックループ
- 欲しい技術に目をつける
- 作る
- リリース
- 振り返る
- 作りきる
- アウトプット
hubotを用いたChatOps入門 by じっぱーさん
www.slideshare.net
- ちょっと弄ったことのあるHubot
- Hubotの構成とかは意識してなかったので、整理できた
MySQLを4.0から5.0を経由して5.6へバージョンアップした話 by ぼいらーさん
www.slideshare.net
- 1テーブル200GBって。。
- インフラ周りのめっちゃすごい人とデキるテスターをすごい推してたけど、ちゃんと順を追って?考えて?地道にやってたんだろうな
- 周りの開発メンバーに注意喚起しているところとかは「うんうん」って感じですた
雑記
- 長い修行だった。。。
- 最後の方は完全に集中力きれてました。ごめんなさい。
- 多様なサービスを提供しているからか、話の内容も多岐に渡っていて、面白かったです。
- 個人的にはおいちゃんさんの負荷テストの話が身近なところに感じた。
- Gatlingよさげ
- 普段、触らない分野の話も聞けたので、新鮮だった。
こんな感じ?? また、何かあれば追記します。
Docker で Selenium Grid による並列実行環境を構築
前提
- Docker インストール&設定済み
Docker 超入門 〜 Boot2Docker 導入から HelloWorld まで〜
Docker Image 取得
View Public Profile | Docker Hub Registry - Repositories of Docker Images
から selenium/hub と selenium/node-chrome-debug をとってくる
$ docker run -d -p 4444:4444 --name selenium-hub selenium/hub $ docker run -d -v /dev/urandom:/dev/random -P --link selenium-hub:hub selenium/node-chrome-debug:
でHub と Node を起動
boot2docker ip確認
$ boot2docker ip
コンテナ確認
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES e5cb8aa82960 selenium/node-chrome-debug:latest "/opt/bin/entry_poin 25 hours ago Up 5 seconds 0.0.0.0:49154->5900/tcp gloomy_sinoussi d495bfc3d1dd selenium/hub:latest "/opt/bin/entry_poin 25 hours ago Up 4 minutes 0.0.0.0:4444->4444/tcp selenium-hub
ポート確認
$ docker port e5cb8aa82960 5900/tcp -> 0.0.0.0:49154
下記へアクセス
http://<boot2docker-ip>:4444/grid/console
VNCへ接続する
Macでのboot2docker は VNCクライアントが既に入っているので SafariかAlfredで下記にアクセス
vnc://<boot2docker-ip>:49154
パスワードが聞かれるので、デフォルトは「secret」を入力すると、こんな画面がでてくる。
selenium grid上で seleniium webdriver を動かしてみる
サンプルスクリプトはこんな感じ
# google.rb require 'rubygems' require 'selenium-webdriver' driver = Selenium::WebDriver.for :remote, url: 'http://<boot2docker-ip>:4444/wd/hub', desired_capabilities: :chrome driver.navigate.to "http://google.com" driver.save_screenchot "google.png" driver.quit
スクショとれてますよ〜。感動!!
ノード数を増やして、並列実行やってみる
figを使ってみる。
brew install fig
yaml形式です。
# docker-compose.yml hub: image: selenium/hub ports: - "4444" node: image: selenium/node-chrome-debug ports: - "5900" links: - hub
起動してみる
$ fig up -d
Creating seleniumgrid_hub_1...
Creating seleniumgrid_node_1...
ノード数を増やしてみる
$ fig scale node=10 Creating seleniumgrid_node_2... Creating seleniumgrid_node_3... Creating seleniumgrid_node_4... Creating seleniumgrid_node_5... Creating seleniumgrid_node_6... Creating seleniumgrid_node_7... Creating seleniumgrid_node_8... Creating seleniumgrid_node_9... Creating seleniumgrid_node_10... Starting seleniumgrid_node_2... Starting seleniumgrid_node_3... Starting seleniumgrid_node_4... Starting seleniumgrid_node_5... Starting seleniumgrid_node_6... Starting seleniumgrid_node_7... Starting seleniumgrid_node_8... Starting seleniumgrid_node_9... Starting seleniumgrid_node_10...
増えてる。増えてる。 コンテナ確認
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 848cfbfea229 selenium/node-chrome-debug:latest "/opt/bin/entry_poin 27 seconds ago Up 21 seconds 0.0.0.0:49165->5900/tcp seleniumgrid_node_10 aefd6e22fc38 selenium/node-chrome-debug:latest "/opt/bin/entry_poin 28 seconds ago Up 22 seconds 0.0.0.0:49164->5900/tcp seleniumgrid_node_9 31a5deab92f6 selenium/node-chrome-debug:latest "/opt/bin/entry_poin 28 seconds ago Up 23 seconds 0.0.0.0:49163->5900/tcp seleniumgrid_node_8 9a1f2b57d2fd selenium/node-chrome-debug:latest "/opt/bin/entry_poin 28 seconds ago Up 24 seconds 0.0.0.0:49162->5900/tcp seleniumgrid_node_7 e8248a7f54f1 selenium/node-chrome-debug:latest "/opt/bin/entry_poin 28 seconds ago Up 25 seconds 0.0.0.0:49161->5900/tcp seleniumgrid_node_6 3ffe25779686 selenium/node-chrome-debug:latest "/opt/bin/entry_poin 28 seconds ago Up 25 seconds 0.0.0.0:49160->5900/tcp seleniumgrid_node_5 112ab5748233 selenium/node-chrome-debug:latest "/opt/bin/entry_poin 28 seconds ago Up 26 seconds 0.0.0.0:49158->5900/tcp seleniumgrid_node_3 1cd0614af078 selenium/node-chrome-debug:latest "/opt/bin/entry_poin 28 seconds ago Up 27 seconds 0.0.0.0:49157->5900/tcp seleniumgrid_node_2 f205fe9716a0 selenium/node-chrome-debug:latest "/opt/bin/entry_poin 28 seconds ago Up 26 seconds 0.0.0.0:49159->5900/tcp seleniumgrid_node_4 04690c0dcea8 selenium/node-chrome-debug:latest "/opt/bin/entry_poin 56 seconds ago Up 55 seconds 0.0.0.0:49156->5900/tcp seleniumgrid_node_1 64cecc30b7b2 selenium/hub:latest "/opt/bin/entry_poin 57 seconds ago Up 56 seconds 0.0.0.0:49155->4444/tcp seleniumgrid_hub_1 e5cb8aa82960 selenium/node-chrome-debug:latest "/opt/bin/entry_poin 26 hours ago Up About an hour 0.0.0.0:49154->5900/tcp gloomy_sinoussi d495bfc3d1dd selenium/hub:latest "/opt/bin/entry_poin 26 hours ago Up About an hour 0.0.0.0:4444->4444/tcp selenium-hub
増えてる。増えてる。
$ docker port seleniumgrid_hub_1 4444/tcp -> 0.0.0.0:49155
http://<boot2docker-ip>:49155/grid/console
へアクセス。 増えてる。増えてる。
並列実行する際は
driver = Selenium::WebDriver.for :remote, url: 'http://<boot2docker-ip>:49155/wd/hub', desired_capabilities: :chrome
にして実行すれば流れる感じっすね。
Special Thanks
Docker Hub の Selenium Hub/Node イメージ + fig で Selenium Grid 構築してみた - Thanks Driven Life
Docker で Selenium Grid の環境構築をもっと楽に! | Cybozu Inside Out | サイボウズエンジニアのブログ
View Public Profile | Docker Hub Registry - Repositories of Docker Images
Docker 超入門 〜 Boot2Docker 導入から HelloWorld まで〜
boot2docker インストール
brew install boot2docker
初期化やら設定やら
boot2docker init boot2docker start $(boot2docker shellinit)
とりあえず、Hello World
docker run ubuntu echo hello world hello world
番外編:こんなエラー出たら?
FATA[0000] Post http:///var/run/docker.sock/v1.16/containers/create: dial unix /var/run/docker.sock: no such file or directory. Are you trying to connect to a TLS-enabled daemon without TLS?
環境変数の初期化を忘れてましたね。。。
$(boot2docker shellinit)
で解消。
Special Thanks
Mac OSXでDocker(インストール編) - そごうソフトウェア研究所
雑記
これぐらいの内容でエントリ書くなよって感じが満載ですが、これは次のエントリを書くための前準備になるので、一応記事として残しますた。。。 こんな記事でもお役にたてれば幸いです。。。
PyData.Tokyo Tutorial & Hackathon #1 参加レポート
2015/03/07(土)に渋谷クロスタワーのデンソーアイティーラボラトリで開催されたPyData.Tokyo Tutorial & Hackathon #1に参加してきたので、そのレポートです。
環境構築編
Tutorial & Hackathon #1 - pydatatokyo site
anacondaを使って導入する方法も紹介されてましたが、pipを使いたかった気分だったので、下記で環境構築しました。
Macなので
brew install pyenv brew install pyenv-virtualenv
インストールリストを確認
pyenv install -l
python3.4.2を導入
pyenv install 3.4.2 pyenv global 3.4.2
あとは必要なライブラリをpip install しようとしたら
pip install ipython[notebook]
で下記のエラーがでたので、軽く調べてみた。
no matches found: ipython[notebook]
依存ライブラリをpip install する必要があったのね。
pip install pyzmq pip install jinja2 pip install tornado pip install jsonschema pip install ipython
下記のコマンドを実行してhttp://localhost:8888/が起動されればOK
ipython notebook
PyData.Tokyoについて シバタ アキラさん
PyData.Tokyoの活動内容の紹介etc
下記の本の紹介がされてました。 pythonやデータ解析をやっていく上で、これから参考になるかも。
チュートリアル第一部「Data Handling」池内 孝啓さん
PyDataTokyoTutorial_DataHandling
- Pandasによるデータの読み込み、前処理、集計の方法
- maptloblibによるデータの可視化
- Pandasとmatplotlibを利用して、今回利用するデータの性質の考察
ちょろっと紹介されたhttp://nbviewer.ipython.org/のmatplotlibのグラフがかっこいい。 前処理大事なんだろうなぁっていうところがちょこっとわかった気がしました。 前処理のスペシャリストを前処理ストというらしい
チュートリアル第二部「Machine Learning」田中 秀樹さん
- ライブラリのインポートとデータの準備
- ジェンダーモデルによる生存者推定、推定値の評価
- ロジスティック回帰による生存者推定
- 交差検証(クロスバリデーション)
- 決定木(Decision Tree)による生存者推定
- グリッドサーチ
過学習あたりから理解度が怪しくなってきたので、もう一度見直す必要ありっすね。
トレーニングデータと同様に、Kaggleに投稿するテストデータからも生存者を推定する所の演習問題の回答は下記
x_test = df_test['Sex'] y_test_pred = x_test.map({'female': 1, 'male': 0}).astype(int)
Kaggle初投稿には感動を覚えた。
懇親会
- そこそこセミナーや勉強会に行ってるのに、初のビール&ピザのビアバッシュ
- ゆるい雰囲気の中、ハッカソン組のプレゼンを聞けて、勉強になりました
- チュートリアルで簡単にAccuracyを出してましたが、自力じゃ絶対無理だなと再認識
雑感
- バージョン違いとかで苦しんでた人がいたみたいなので、環境構築ちゃんとやっといてよかったぁ
- ipython便利や
- セキココよかった。誰がどこに座っているのかがわかるし、話しかけやすかったです
- エンジニア以外にも学生・院生・研究者の方が多くて面白かったです
- コレをきっかけにして、python/機械学習を勉強していきたい
おまけ
会場のデンソーアイティーラボラトリのオフィスが面白かったので、何枚か撮ってきました。