algonote

There's More Than One Way To Do It

PyCon JP 2018 1日目感想 #pyconjp

PyCon JP 2018に参加しました。体力ないので午後から。PyCon JP参加は2回目...と思っていたが2015も行ってたので3回目。

f:id:hiromichinomata:20180917203716p:plain

実践・競馬データサイエンス

https://alphaimpact.jp/downloads/pyconjp2018.pdf

最終的には馬券を当てることが目的だが1頭ごとのパフォーマンスを予測することにフォーカス。走破タイムは馬場の状態の影響が大きいのでレース内標準化、賞金外の馬は全て負けに扱いに。

乱雑なデータは馬柱 horse tableとしてまとめ、特徴量は量で殴る方針。該当カテゴリが少ない場合はスムージング、季節特徴量は円周率で表現。

モデルはLightGBMベースでNDCGを指標にhyperoptで最適化、Early Stoppingで過学習を防ぐ。


チーム内にLightGBMのコミッタがいるのつよい

Django REST Framework におけるAPI実装プラクティス

PaginationにはPageNumberPaginationやLimitOffsetPaginationなどの相対指定のものとCursorPaginationなどの絶対指定のものがある。相対位置だと数を数えるためにb-treeの要素をスキャンする範囲が増えるためSQLを2回にわけるとパフォーマンスがあがることも。

Rate LimitingはCDNやLBのレイヤーでやる方法の他にアプレケーションのレイヤーでIPアドレス、ユーザーごと、特定のエンドポイントごとに制限をかける方法がある。


Django RESTのUserRateThrottleはuser idとるために結局db叩いているらしい。countはcache backend次第とのこと。理想をいうならappのレイヤーだけでとめたい

メルカリにおける AI 活用事例

trainはCIをトリガーにconfigをストレージに書き込む、serveはwatchしたconfigをベースにKubernetesにデプロイ

画像検索はfeature extractionしたものをPCAにかけFaissに。

Pythonistaの選球眼

メジャーリーグのデータを分析した話。ジャンカルロ・スタントンはスライダーが苦手というのを証明した。

アプリケーションはDjango+Nuxt.js。パイプラインにはLuigiを使用し、コードはJupyter Notebookで改善していった。可視化はbokeh。


話の重点が基盤構築で得られた知見の説明の比重が少なかったのが少し残念。言えないことが増えたともとれますが

所感

平日開催でないからなのか会場が狭いからなのかわからないが立ち見が多かった。つらい。

今年のPyConは基調講演2つ+45分セッションx4という構成で最大6個。去年は基調講演1つに30分x7で最大8個。Pythonの強みは多様な分野に使われるという点にあると思っており、個人的には一つの話は短くてよいのでもっと色んな話が聞きたかった。