Install hadoop
brew install hadoop
Download newest postgresql jdbc driver.
Replace (hive-folder)/lib/postgresql-9.4.1208.jre7 with the newest postgresql jdbc driver.
Start postgres (init script will create metastore database)
docker compose up
Run schematool on metastore_db in postgres.
./apache-hive-3.1.3-bin/bin/schematool -dbType postgres -initSchema -url 'jdbc:postgresql://127.0.0.1:5432/metastore_db' -passWord admin -userName admin -driver org.postgresql.Driver -verbose
Start hive
make start_hive_server
時間がかかり、ドキュメントと一致しなくなるため、原則カラム名などは日本語のままにする。ただし、技術的な制約により、カラム名などを英語に変更することがある。最終的なデータセットのカラム名は、日本語のみになる。
file | grain | ユニークキー | 更新時間 | 実績/予測 | |
---|---|---|---|---|---|
SED | 成績分析用 | 1 race + horse | レースキー・馬番・競走成績キー | 木 17:00 | 成績情報 |
SKB | 成績分析用・拡張データ | 1 race + horse | レースキー・馬番・競走成績キー | 木 17:00 | 成績情報 |
BAC | レース番組情報 | 1 race | レースキー | 金土 19:00 | 前日情報 |
CYB | 調教分析データ | 1 race + horse | レースキー・馬番 | 金土 19:00 | 前日情報 |
CHA | 調教本追切データ | 1 race + horse | レースキー・馬番 | 金土 19:00 | 前日情報 |
KAB | 馬場・天候予想等の開催に対するデータ | 1 place/day | 開催キー + 年月日 (*1) | 金土 19:00 | 前日情報 |
KYI | 競走馬ごとのデータ。IDM、各指数を格納、放牧先を追加 | 1 race + horse | レースキー・馬番・血統登録番号 | 金土 19:00 | 前日情報 |
OZ | 単複・馬連の基準オッズデータ | 1 race | レースキー | 金土 19:00 | 前日情報 |
OW | ワイドの基準オッズデータ | 1 race | レースキー | 金土 19:00 | 前日情報 |
OU | 馬単の基準オッズデータ | 1 race | レースキー | 金土 19:00 | 前日情報 |
OT | 3連複の基準オッズデータ | 1 race | レースキー | 金土 19:00 | 前日情報 |
OV | 3連単の基準オッズデータ | 1 race | レースキー | 金土 19:00 | 前日情報 |
UKC | 馬に関するデータを格納 | 1 horse | 血統登録番号 + データ年月日 (SCD Type 2) | 金土 19:00 | 前日情報 |
TYB | 直前情報データ | 1 race + horse | レースキー・馬番 | (*2) | 当日情報 |
HJC | 払戻(実績)情報に関するデータを格納 (payout information, i.e. which horse won how much for what 馬券 type) | 1 race | レースキー | 土日 17:00 | 当日情報 |
Notes:
開催キー | 場コード | 年 | 回 | 日 | 年月日 |
---|---|---|---|---|---|
101117 | 10 | 11 | 1 | 7 | 2011-02-12 |
101117 | 10 | 11 | 1 | 7 | 2011-02-14 |
キー | 構成 |
---|---|
レースキー | 「場コード・年・回・日・R」の組み合わせ |
馬番 | 1-16など |
血統登録番号 | 99101712 など |
開催キー | 「場コード・年・回・日」の組み合わせ。レースキーの一部とリンク可能。 |
Some datasets have identitical rows. Others have rows that are identical except for specific columns. The following table shows which datasets have duplicates and which columns are different.
dataset | duplicates | different columns | notes |
---|---|---|---|
BAC | yes | 年月日 | E.g., see 開催キー in '061345', '091115', '101125'. Keep rows with the latest date (verified in netkeiba). |
CHA | todo | ||
CYB | todo | ||
HJC | todo | ||
KAB | todo | ||
KYI | todo | ||
OZ | todo | ||
OT | todo | ||
OU | todo | ||
OV | todo | ||
OW | todo | ||
SED | todo | ||
SKB | todo | ||
TYB | todo | ||
UKC | yes | Identical rows, take whichever you please |
bacとkyi/sedの頭数が1頭で異なる場合があるけど、あまりにも少ないので無視することにする。runner_count_difference
に特定するためのクエリを書いておく。
レースキー | 頭数_kyi | 頭数_bac |
---|---|---|
05041405 | 13 | 14 |
08004402 | 13 | 14 |
08004409 | 8 | 9 |
08085302 | 15 | 14 |
騎手の乗り替わり
SED、TYB、KYIに騎手コードが入っていますが、乗り替わりがある場合、一致しないことがある。SEDとTYBの差は66件、KYIとは4887件。乗り替わりの影響を最小限にするために、予測時にTYBの騎手コードを使うと良さそう。
See sed_kyi_tyb_jockey_diff.sql
analysis.
調教師の変更
SEDとKYIで調教師が異なるケースが35件ある。
See sed_kyi_trainer_diff.sql
analysis.
sed/bac の距離の違い
There are 2 races (from 2008-2009) where the distance is different between SED and BAC. So infrequent that we can ignore it.
See sed_bac_distance_diff.sql
analysis.
sed/kab の馬場状態の違い
The horse track condition is usually the same or 1 off between SED and KAB.
同着
同じレースで着順が同じの場合がある。
In theory, we should optimize for precision, because we are looking for quality over quantity. In practice, precision seems to lead to higher payout rates. We may not bet on as many horses, but the quality of the bets should be higher.
In the context of predicting winning horses where your goal is to maximize the identification of true winners while minimizing bets on losing horses, the choice between loss, recall, precision, or the F1 score for your optimization function depends on your specific objectives and the trade-offs you are willing to make. Let's consider each option:
Don't bet on races where: