最弱ポータル自作日誌

自作ポータルとか自作ニュースサイトをコツコツ作るプログラマの作業記録

ゼロから適当に学ぶDeep Learningのリンク集

なかなか新しいこと勉強しないプログラマのおいら、AIはやろうかなと。遅いよ!

更新記録というかただの日記というか

2019/12/27

dataframeの扱いで苦しむ

というのは間違いでdata収集の時点で、重複データがった、すると、DataFrameのJoinでleftだとのrightだのがコラムに追加された。どこに間違いがあるのかデバッグが簡単ではなかったが、googleシートなんかで確認した。

DataFrameは0.20バージョンがリリースらしい。怖いからまだバージョンアップしない。またハマる仕事になるから。なんかハマる作業と性格が辛い。体が辛いし家族がおざなりになるよ。アホなのではまり込まないようにしないと。ダメな性格。できそうでできないとハマるということか。新しい機能が追加されているはずだけど、GitHubとの関係、ソースとの対応がわからない。TFSみたいにラベルがあるのだろうか。

データのチューニングの前にデータの収集で相当な作業パワーがかかっている。まったりするのが至高のはずなのに、ハマると地獄になるので、なんでもオプションぐらいの心構えの方が楽園をこの世に実現できる。

あ、そうだった、データの重複は下記のように対応したのだった。

sort -r -u raceFile.csv -o outputUnique.txt

-rオプションは逆順という意味で、そうしないと空白データみたいなのがうえにきて、DataFrameの自動的な型決めが失敗するという。マニュアルでやればなんとかなるのかな。苦労が多いが仕事とはこういうものだろう。

2019/12/25

学習データがだめってことで再取得。URLを追加して。threadDelayしないとWEBサーバーから拒否されるので、threadDelayに1000000を追加したら大丈夫のようだ。1秒。

レースURLは毎回変わらないのでファイルで保存したほうが効率がよい。課題。

Deep Learning基礎

最初はきっとゼロからつくる系の一本でいってよい。他読んでもわからないし。ベストセラーになるには理由がわかる。ともかくリーダブルです。

ゼロから作るDeep Learning ❷ ―自然言語処理編

ゼロから作るDeep Learning ❷ ―自然言語処理編

自然言語は斜め読んだ。それで十分。詳細をわかりたくなったら読める。それがゼロから作るのいいところ。

ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装

ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装

こっちの1のほうもいいね、途中でやめたけど雰囲気をつかめる。

他の専門書って、数式振りかざすだけで、詳細を斜め読むこともできないから、結局わからない。ディテールを斜め読むと理解できる現象に名前をつけたい

Kerasをつかって手を動かしたい段階。ただしPythonを知らぬ。Haskellでやりたいのだが。コードをいくつも並行して眺める段階かな。自然言語処理がやりたい。なぜならこんな文章書きたくないからな。

適宜更新するリンク集になるかな。。だるかったら更新できない。

LSTM

Keras LSTMでサクッと文章生成をしてみる | cedro-blog

Keras LSTM の文章生成を単語単位でやってみる | cedro-blog

KerasのSingle-LSTM文字生成サンプルコードを解説 - Qiita

滝沢カレンを作る技術 - sola 初心者には図解が嬉しい

Text generation using a RNN with eager execution  |  TensorFlow Core

lstm_text_generation_comment/lstm_text_generation_refactored.py at master · YankeeDeltaBravo225/lstm_text_generation_comment · GitHub

おいおい、ユニットとか入力シェイプがわからないよ、公式もよくわからない

以下がわかりやすいにゃ

Keras input explanation: input_shape, units, batch_size, dim, etc - Stack Overflow

Dense Layer

全結合レイヤーらしい。行列のdot計算はするのか。

通常の全結合ニューラルネットワークレイヤー.

Denseが実行する操作:output = activation(dot(input, kernel) + bias)ただし,activationはactivation引数として渡される要素単位の活性化関数で,kernelはレイヤーによって作成された重み行列であり,biasはレイヤーによって作成されたバイアスベクトルです.(use_biasがTrueの場合にのみ適用されます). Coreレイヤー - Keras Documentation

イメージはこれかな。

Sample dense neural network with 2 fully connected layers, 2 dropout... | Download Scientific Diagram

ReLu

活性化関数のSigmoid、Tangent 、ReLu、Leaky ReLuの違い - Qiita

Simoid

SoftMax

こいつは活性化関数のReLuとかとは違うと理解した。確率化するためのレイヤーかな

Keras.NET

C#でKerasを使う。おいらならF#かな。

GitHub - SciSharp/Keras.NET: Keras.NET is a high-level neural networks API, written in C# with Python Binding and capable of running on top of TensorFlow, CNTK, or Theano.

競馬をAIで儲ける

なんかやることなくて。。。モチベーション上がるのはやっぱりあぶく銭です。

まずは情報収集おば。

まずどうやって定式化すればいいんだよ?

ML.netにランキングがあるから、あれか?

それとも分類して一位を割り出す?そもそも一着って分類対象なんだろうか?どっちかというとランキングのほうが筋がいい気がする。

AIが競馬予想で回収率180%突破の快挙! 『電脳賞』優勝のITエンジニアが語る戦略が鮮やかすぎて目からウロコ

僕は逆に回収率の意味で、馬の強さを機械学習で求めるのは不利だと思っています。なぜなら人力予想においても、強い馬なのか弱い馬なのかはある程度みえているからです。そこで機械学習をかけて当たる確率を上げることができても、おそらく回収率自体は上がらない。

機械学習でないやや泥臭いアルゴリズム使った例。機械学習には否定的。

「1番人気が勝つレースは買わない」、「レースにロジックを合わせるのではなく、ロジックをレースに合わせる」、「追い込みが効きやすい=荒れやすいレースを選ぶ」……こうした、回収率向上だけを至上命題にロジックを磨き込んでいった「ニコちゃんAI教場」チームの戦略からは、長年の競馬愛好家にもヒントになるようなポイントがいくつもあったのではないでしょうか。

競馬のオッズ、確率と期待値について(プロローグ) | お手持ちの勝馬投票券は確定までお捨てにならないようお願い致します

競馬予測AI「Mamba」の思考に迫る - Dwango Media Village(ドワンゴメディアヴィレッジ,dmv)

Mambaは終わったのかな。

競馬で負けることがなくなる?競馬予想AIの仕組みとは? |AI/人工知能のビジネス活用発信メディア【NISSENデジタルハブ】

競馬予想AIを作る 〜ニューラルネットワークによる相対評価データセットの取り扱い例〜 | ココン株式会社 COCON Inc.

競馬予想AI再び -前編- 〜LambdaRank編〜 | ココン株式会社 COCON Inc.

競馬予想AI再び -後編- 〜アンサンブル学習編〜 | ココン株式会社 COCON Inc.

開発者ブログ | 株式会社AlphaImpact

第10.5回(総集編)競馬予測と機械学習 | 株式会社AlphaImpact あー、何着以内という分類問題にするか、 タイムの回帰問題にするかってこの記事は言っている。

発表文献 | 株式会社AlphaImpact

ディープラーニングで競馬予想 - Qiita

競馬の予測モデルを自作した話

大井競馬で帝王賞を機械学習で当てた話 - Qiita

MLPってさ、マルチレイヤーパーセプトロンかな。

ホッカイドウ競馬の予想モデルをKerasで作ってみる - Qiita

機械学習を使って地方競馬を予測する - Qiita

回収率82%。。

ランダムフォレストで競馬を予測する - Qiita

回収率78%。

金儲けしたい一心で競馬ドシロウトが競馬の予想を機械学習でチャレンジした - Qiita

データサイエンスで競馬の結果を予測する、競馬AI開発プロセス - ログミーTech

長い。勉強になりそう。

人工知能が競艇予想してみた結果 - Qiita

Chainer で競馬予想をしてみる - Qiita

【競馬】2019年のダービー馬を機械学習で予測する - Qiita

160億円儲かった話

AIの勉強からだんだん外れてきた。

160億円ボロ儲け!英投資会社が日本の競馬で荒稼ぎした驚きの手法 - NAVER まとめ

競馬予想プログラム160億円稼いだ有限会社ユープロの社長の名前はベンジャミン・スミス 

『UPRO』はなぜ160億円も勝てたのか? : 【別館】わがまま新馬券競馬予想~複勝コロガシを実践してみる~

『競馬で160億円儲けた外国人グループ』その買い方の考察1 | 年間プラス回収率を実現する最強競馬予想「馬券対象馬はこれだ」

ディープラーニングさえあれば、競馬で回収率100%を超えられる - Qiita

まあ、上の記事のコメントは以下。残念、終わっているのかな

[B! 機械学習] ディープラーニングさえあれば、競馬で回収率100%を超えられる - Qiita

競馬AIのまとめ

集合知性はかなり正確

それを超える必要あり

若い馬、3連単等の複雑な予想にチャンスあり

競馬データ

Rと競馬データで学ぶ統計学 第1回 データソースとしての競馬の魅力 - どこかWiki

GitHub - datasciesotist/R_Keiba: 「Rと競馬データで学ぶ統計学」用のファイル](https://github.com/datasciesotist/R_Keiba リンク切れっぽい

過去のデータがダウンロードできますね。まずデータで遊んで見るとよいかも。

競馬ソフト開発 ソフトウェア開発キット提供コーナー|競馬ソフト使い放題の会員サービス DataLab.(データラボ)|競馬情報ならJRA-VAN

JRAデータが使用できそう。有料でしょうね。

BET Masters Site

データがとれる?

stockedge/netkeiba-scraper: netkeiba.comをスクレイピングして、競馬予測の素性を作成する。

こいつは2016年で更新が終わっている。

ML.NET

機械学習のタスク - ML.NET | Microsoft Docs

分類問題とすれば、確率がほしいな。

c# - Confidence of Multiclass classification with ML.Net - Stack Overflow

TryGetScoreLabelNamesメソッド使う感じですね。これは確率なのか?

ML.NETのauto MLで競馬

try/NotebooksLocalExperience.md at master · dotnet/try

Jupyternotebookでml.net使えるじゃん!jupyter labはうまくカーネル動かなかったわマック

2019/12/05 jupyternoteでml.net F# うまく動かない、だまってプロットでないとかセルの間ででーた 消えてvariable or type not definedとか、、不安定だしエラーわかりづらいってか出ないとか現状クレイジーな状況だな。

  1. FillNillsで埋める
  2. Ignoreを頑張る
  3. 元々のデータからからのカラムを消す

それがだめならまた考える

上記はlet二回とかでも起きて処理系おかしくなってもなにも出ないから、宣言してないとかなる、カーネルを再起動とかで対処する。

あとデータ空が問題ってよりは、データ少ないと例外でるっぽくて、なんやねん

2019/12/05

朝起きたら動かないしまた

昨夜動いたはずが…錯覚?

プロットはカーネルを落として一からやれば表示する、カーネルは実験でいくつも立ち上げてるから落とす落とす落とす

あとはautomlで例外の件、わかりづらいのが、F#の文法エラーでダンマリの時ある気がするよ。

問題あるとすればdataframeにnullがあるから、そこが問題かも。例外メッセージわからんよ。、nullがないのが常識なのか?

2019/12/06

データが少ないとautoml って例外吐くんだな、すげーわかりづらいよ、一応解決

あとdataframe はカラム名と型を渡さずloadcsvすると一行目でカラムの型を推論するみたい、で、数値型かと思って途中で文字列出てきたらクラッシュとか…

2019/12/07

他の馬の考慮がないや

考慮するのはランク予想にして比較すればいいのかな と思ったら、automlカタログに現状ないや、あべば

docs.microsoft.com

あーあ

流石に、他の馬の影響ってあるのかな

すると構造体の入力が必要になる

カラムを展開すればいいのかな 一レコードが、レースデータ見たいな

として予想したい馬を特別なカラム追加をして、着順を予想する必要がある。

おすすめを買い方とすると、どうすればいいのか。

買い方をカラムにして。。?

いや期待値はオッズから計算できるはずなので、 あくまで着順が予想できれば、 あとその確からしさがあれば、期待値が計算できるはずだ。

まあ確からしさって、フレームワークのだすスコアみたいなものだけどな。。

2019/12/10

レースを入力にして 何着になるか、1にしようの 分類とする。

レースのデータ構造

2019/12/16

DataFrameがホヤホヤなので辛い

昼のバイトもつらい

だるい

corefxlab/DataFrame.cs at master · dotnet/corefxlab · GitHub

Appendで引数キーバリューリストだけとか、とか

Concatenationまだなし なので自作みたいな

すると、使いこなしは以下になる

  1. コラムの名前の違いをとって、差のそのコラムの名前から型と長さをとって型の種類からコラムをnewして挿入になるよ
  2. その上でアペンド
  3. カラム名は自動で追加されない、コラムは追加時に長さが同じじゃないと例外、まあ妥当なんだけど甘い考えではまった

人類は急に進化できない

急げば転ぶ

ここ一週間ぐらいやってるきがする 眠いよ

2019/12/18

一番馬の順位予想しかできない、 マルチ分類問題にして、一着を予想するようにすべき。

でないと、1番が8着でも馬券買えないよね。

あと無視すべきコラムとか、入っちゃてるかも。 あと0梅、100埋めでいいかも確認。

データは修正できるようにしたので、 ぶよぶよに太ったコードをリファクタリングすべき。会社で全然リファクタリングやらないのはだめだよね。いなくなる組織モデルだからさ。

2019/12/20

データは整形できた。レースごとに1レコードにしたのだ。 予想、全然当たらない。0を予想するし。これはデータに0が入っているからかな。

あとまともに予想するデータになっていないのだ。データを整える必要がある。ここからが本番という感じがするし。

15分の1を的中できるのだろうかな。

それと、データが適切に処理されているかな?

データ型によって扱いが違うだろうし。テキストコラムはそれと指定しないといけないのではないだろうか。

2019/12/24

どうも学習データが、最近のもので、結果なしのものも多分含まれている。学習としては不適切。URLをカラムとしてそこでデータをレースごとに集約していた。

過去分データにすべきである。

データもよくわからなくなっているとはちょっとソフトウェア危機的な状況だ。

やること

  1. 問題。マルチ分類でいいかな
  2. 予想ラベル設定
  3. 無視ラベル
  4. テストデータで予想

rakuten競馬をスクレイピング

keiba.rakuten.co.jp

ML.NET Tutorial | Get started in 10 minutes | .NET

mlnet auto-train --task multiclass-classification --dataset "jra_race_result.csv" --label-column-name "着順" --max-exploration-time 100

おっと、失敗、データにタイムが入っているのではないか?

The auto-train command in the ML.NET CLI tool - ML.NET | Microsoft Docs

学習で、タイムも一緒に学習してしまって、、、ignoreのオプションもあるんだな。これだ。

期待値は、的中判定は、予想と着順 が一着のもの。予想が一着で着順が異なればハズレで期待値ゼロとすればよい。

課題

  1. dataframe FillNullsの仕様がよくわかっていない。
  2. data frame to CSV? ToString()でOK?
  3. データ補充、または無視
  4. ランクが大きすぎる例外はそれでいいのか?便宜的に大きくしている。
  5. 今は一枠しか予想できない。予想方式。
  6. 0番を1着予想してる。学習データ不足、それとも1着予想が難しいのかな、PCの性能不足?言い訳かな、コラボとか、binder使ってみる

手順

  1. データを集める。ここで心がおれそう。
  2. 学習させる
  3. 事前のレース情報を入手する。どこから?楽天、ネット?
  4. 予想する
  5. 投票する。ネットでできる?

curl -X POST -o 201604.html --data-urlencode "tYear=2015" --data-urlencode "tMonth=4" https://keiba.rakuten.co.jp/calendar?l-id=top_headernavi_2nd_calendar

データ取得

1500レース毎月

一年12ヶ月

10年

180000レース

為替でもいいや。ML.NETかな。

GitHub - datasciesotist/R_Keiba: 「Rと競馬データで学ぶ統計学」用のファイルTensorFlow(LSTM)で株価予想 〜 株予想その1 〜 - Qiita

GW明け仕事したくない人にお勧め。Azure ML 1.0 で明日の為替価格を予測。5分でできる。 - Qiita