【ビックデータを機械学習させたい!】Kaggleの紹介

f:id:ehu_J:20180721215617p:plain

※KaggleのHP

Kaggle

「カグル」と読み、データサイエンス向けにコンテストを開催しているサイトです。結論から言いますと、自分は「画像の機械学習をしてみたい」「ビックデータ解析をしてみたい」などという人向けです。プロの方だけでなく、初心者も集まるサイトです。

 

なぜKaggleに集まるのか

たとえ、初心者「ビックデータ解析をしてみたい」という人は、数あるデータからどうやって特徴を見つけるのでしょうか?また、「データは何でもいいから、ビックデータ解析し、傾向をみつけ、未来を予測したい」と思ったとしましょう。そしたら、まずデータを収集するところから始めるはずです。ですが、それでは、ビックデータ解析に手を付けるまで、時間がかかってしまいます。また、収集プログラムを作ったとしても、上手く集まらなかったりします。そんな時にKaggleです。Kaggleは初めからデータセットがそろっています。

 

Kaggleは初めからデータがそろっている

f:id:ehu_J:20180721224136p:plain

※Kaggleに投稿されてるデータセット一覧

KaggleのHPの上のタブの「Datasets」には機械学習に必要なデータがそろっています。

コンテストが頻繁に開催

また、HPの上のタブの「Competitions」では、コンテストが開催されています。

f:id:ehu_J:20180721233344p:plain

※Competitionのトップ

コンテストでは、様々な種類が開催されています。例えば、タグで「geology」(地質学)、「image」(画像)、「banking」(銀行業)などがあります。検索もできます。具体的には「3か月で10店舗のそれぞれの50商品から、3か月間の商品ごと売上個数を予測する」などがあります。

 

f:id:ehu_J:20180721232423p:plain

「3か月で10店舗のそれぞれの50商品から、3か月間の商品ごと売上個数を予測する」コンテスト

このコンテストでは、トレーニングデータとして、「販売した日付」「ストアID」「商品ID」「一度に売上げた数」 があたえられ、3か月間でそれぞれの商品がどのくらい売れるかを予測するコンテストです。

 コンテストでは、正解率も出してくれる

ただデータセットがそろっているだけではなく、データを解析して結果をアップロードすると、どのくらいあっているのかを割合で結果を出してくれます。(競技プログラミングAtCoderみたいですね)

 

f:id:ehu_J:20180721224735p:plain

※Scoreの結果:0.76076

例えば、Kaggle社が開催しているTitanicコンテストでは「76%」の精度で予想できました。このコンテストはOpeningになっており何時でも参加できます。初心者に最適なコンテストとして、「Kaggle 入門」と検索するとTitanicを扱っている記事が沢山出てきます。

 

精度が良く、成績が良いと賞金があることも

f:id:ehu_J:20180721233344p:plain

TGS社では、1000000$を賞金としているようです。すごいですね。

 

今回はKaggleの凄さを解説しました。自分もKaggleを最近知り始めました。ぶっちゃけ自分もこのKaggleはすごいと思いました。ではよいカグルライフを!

Splatoonのインク面積判定を画像から行う

f:id:ehu_J:20180719214055j:plain
こんにちは!ehu-151です。

第一記事目は「Splatoonのインク面積判定」をリザルト画面から行ってみました。青陣が何%、黄陣が何%と、なるようなプログラムを作りました。さて、みなさんが気になるのは、その前処理、計算方法、ロジックと求めた面積はどのくらいリザルト画面の結果と違うのか?だと思います。まずは、その計算方法から…、それではいってみましょう。

その前にGithub
github.com

言葉の定義

まず、言葉の定義から、
マップ画面:リザルト画面をスクリーンショットで撮った生の画像
ステージ:イカリング(プレイヤーの操作するキャラのこと)達が戦う戦場です。マップ画面で見ると白い枠で囲われております。インクを塗る場所であり、枠の外に出ると場外となり、イカリングはリスポーン(初期位置)に戻ります。

前処理

ます、画像を計算しやすいように加工します。

  • ステージを切り取る

f:id:ehu_J:20180719214055j:plain

※先にお断り:リスポーン地点円の面積は取得できていません。

ステージを切り取るには、マップ画像から白い枠の周囲が一番長い内側だけを切り取ります。どうして、一番長いかというと、マップ画像にはバックに薄い黒のレイヤーの下にインクが表示されたりします。もし、そのインクが白色だったら、インクを白い枠と認識してしまいます。黒いレイヤーがあるから、明るさでフィルターをかけることができますが、確実ではありません。
そして、マスク画像を生成します。

f:id:ehu_J:20180719214210j:plain

ここまでで、ステージの切り取りができました。次に色の面積を求めたいと思います。

HSV色空間で求める

全然大した計算方法ではありませんので悪しからず。
f:id:ehu_J:20180719194807p:plain
Wikipedia contributors. "HSV色空間." Wikipedia. Wikipedia, 3 Jul. 2018. Web. 3 Jul. 2018.
*1

まず、ステージ画像の色相(Hue)を求め、グラフ化します。
f:id:ehu_J:20180720191719p:plain
※0~180の範囲で色相が表されています。
グラフを見るに、とびぬけて高い二か所がインクの色と分かります。ここから、さらに極大値を求め、インクの色を決定します。

インクの色を指定(ただし段差で色が濃くなっている部分があるので範囲を持たせる)して、面積を出力します。

f:id:ehu_J:20180720191759j:plain
出来ました。あとは、ステージの面積を求め、割るだけですね。

53%と28%ですね。スプラトゥーンの結果はどうなっているのでしょうか?
f:id:ehu_J:20180720192553j:plain

全然違う!!

原因を探る

どうしてでしょうか?改めてもう一度、加工途中の画像を見てみましょう。
f:id:ehu_J:20180720191759j:plain
もうお分かりですね。

  • リスポーンの色が抜けている
  • 金網が色の上にあるせいで色が抜けている

そこで、リスポーン地点の面積を足し再度計算しました。

だめでした。さっぱりです。金網があるせいでこれ以上やっても意味がないのでここら辺で終わりとさせていただきます。

ありがとうございました。

はじめまして!~このブログについて~

はじめまして、ehu-151です。

ここでは、簡単な自己紹介をさせて頂きます。私は、プログラマーで、java,pythonを扱っています。メインはどちらかというと、pythonですね。

javaに関しては、Android開発を行っています。しかし、開発を行ってきたものは、どれも下らないアプリなので割愛させて頂きます。また、しっかり開発する機会があれば紹介します。

pythonでは、「Splatoonのインク面積を判定」、「2次元顔画像の人識別」などを作っております。次の記事から紹介となりますのでお楽しみください!

ご覧の通り、私はそこまで技術力がありません。しかし、この記事を見た人が「使ってみたい!作ってみたい!」と思えるような記事にしていきたいです。また、「今までにこんなサービス無かったなぁ、あったらいいな。」となっているサービスをどんどん作って行きます。(上記のサービスは違うようですが…)

今後ともehu-151をよろしくお願いします。