25
38

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

機械学習用に競馬のデータをMySQLに用意する

Posted at

この記事のまとめ

  • MySQL上に、中央競馬のレース情報を蓄積したデータベースを作成しました
  • データソースには、JRAが提供する「データラボ 無料体験版DVD」を利用しました
  • データベースのサイズは16GB、構築に3日間かかりました

はじめに

モチベーション

機械学習の勉強を行う上で、自分の興味があるデータセットを準備することは、学習のモチベーションを維持するためにも重要な要素です。私は昔から、競馬の統計的な分析に興味があったため、今回は中央競馬のデータセットをMySQL上に構築してみました。

類似の取り組み

競馬のデータを収集する方法としては、一般的にWebページをクローリングする手法が用いられるケースが多いようです。以下は参考にさせていただいたWebページですが、いずれもクローリングを採用しています。

大井競馬で帝王賞を機械学習で当てた話 - Qiita
競馬の予測をガチでやってみた - stockedge.jpの技術メモ

ただ、クローリングのロジックを構築するにも時間がかかること、クローリングそのものにも時間がかかることなどを考慮して、今回、中央競馬を主催しているJRAが提供している、JRA-VANデータラボの無料体験版に付属するDVDのデータから、MySQLを構築してみました。

JRA-VANデータラボについて

JRAは、JRA-VANというサービスを通して、様々な競馬予想に関するデータや予想ツールを提供しています。今回利用する無料体験版のDVDは、以下のURLから申込を行うことができます。なお、無料体験版の利用期間は1ヶ月です(2018年10月現在)。

JRA-VAN データラボの無料体験|無料体験|競馬予想・競馬情報ならJRA-VAN

申し込んでから数日で、自宅にDVDが到着しました。

データベースの構築

MySQLの設定

残念なことに、DVDに付属するソフト「JV-Link」の動作環境はWindowsのみです。そのため、まずはWindows環境を用意し、DVDをセットし、JV-Linkをインストールします。

それと合わせて、Windows上にMySQLをインストールします。利用したバージョンは以下の通りです。

キャプチャ2.PNG

文字化けなどを防止するために、あらかじめ文字コードをutf8にしておきます。

mysql> show variables like "chara%";
+--------------------------+---------------------------------------------------------+
| Variable_name            | Value                                                   |
+--------------------------+---------------------------------------------------------+
| character_set_client     | utf8                                                    |
| character_set_connection | utf8                                                    |
| character_set_database   | utf8                                                    |
| character_set_filesystem | binary                                                  |
| character_set_results    | utf8                                                    |
| character_set_server     | utf8                                                    |
| character_set_system     | utf8                                                    |
| character_sets_dir       | C:\Program Files\MySQL\MySQL Server 5.7\share\charsets\ |
+--------------------------+---------------------------------------------------------+
8 rows in set, 1 warning (2.21 sec)

これで、事前準備は完了です。

EveryDBのインストール

次に、JRA-VANのデータベースにあるデータを、MySQLに蓄積する作業を行います。そのために、EveryDBというソフトウェアを利用させていただきました。以下のサイトからダウンロードできます。EveryDBは作者の概説書の内容も豊富で、非常に使いやすいです。

EveryDB|競馬ソフト使い放題の会員サービス DataLab.(データラボ)|競馬情報ならJRA-VAN

ソフトウェアを起動し、「接続設定」をクリックし、MySQLとの接続設定を行います。以下は設定例です。

キャプチャ.PNG

ここで「接続確認」を押すと、接続のチェックが行われるのですが、なぜか「データベースの接続に失敗しました」とのメッセージが。作者のFAQを見ると、C++の再頒布パッケージをインストールするよう書かれていたので、インストールを行い無事に解決しました。

その後、「データベース作成」「テーブル作成」と進んでいき、設定を終えます。

データの流し込み

接続設定が終わると、実際にMySQLにデータを流し込んでいきます。基本的に、EveryDBの概説書に従って、更新する日時の範囲や、取得するデータの内容を設定します。

今回は、2010年以降のレース情報のデータを取得しましたが、

  • テーブル数 102
  • データベースのサイズ 16.0GB

の分析用データベースを、MySQL上に構築することができました!ちなみに、丸3日、PCは起動しっぱなしでした...

おまけ:MacからMySQLに接続する

やはりWindowsだと、分析用の環境構築がいろいろと面倒なため、手元のMacからMySQLに接続できるようにしてみました。そのために、まずはMac用のユーザーを作成します。
hostには、一旦ワイルドカード(%)を指定し、どこからでもアクセスできるようにしておきます。

mysql> select user, host from mysql.user;
+---------------+-----------+
| user          | host      |
+---------------+-----------+
| macbook       | %         |
| mysql.session | localhost |
| mysql.sys     | localhost |
| root          | localhost |
+---------------+-----------+
4 rows in set (3.43 sec)

Mac側のGUIクライアントツールには、 Sequel Proをインストールし、利用します。今回は、Windows端末とMac端末の両方とも、共通の自宅内LANに接続していたため、イントラネット経由で接続してみます。

接続設定の例は以下の通り。ホストには、プライベートIPアドレスを指定します。

SS 1.png

「接続」ボタンを押すと、無事に接続できました!

SS 2.png

さいごに

失敗した点の共有

EveryDBによるデータ取得時に、認証に失敗する

MySQLにデータを書き込むために、EveryDB画面上で「取得開始」ボタンを押したものの、認証エラーが帰ってくる現象が発生しました。原因はおそらく、 DVDの体験版の認証データが読み取れていないだけですので、しばらく待ってからもう一度試してみるとうまくいきました。

MySQL8系だと、Sequel Proから接続できない

MySQLも8系が出たので、実験がてら試してみようと思いましたが、Sequel Proとの接続でうまく行かず、詰んでしまいました。ぐぐってみると、同様の現象に遭遇しているいくつかのWebページが見つかりました。

Mysql8 でsequel pro がクラッシュした件 caching_sha2_password - ちょこっとプログラミング

どうやら、まだSequel Proとの相性が良くないみたいで、諦めて5系を入れました。

分析に向けて

実は、JRA-VANで提供されるデータの中には、「データマイニング予想」という、ニューラルネットワークを用いた成績予想の結果が含まれています。この値をうまく活用すれば、分析のコストを抑えられるかもしれませんね。

データマイニング予測の仕組み|JRA-VAN広場|競馬情報ならJRA-VAN

25
38
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
25
38

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?