Google Colaboratory(Colab Pro)でkaggleデータをダウンロードする方法[備忘録]

 技術的な要素は無いのですが、忘れやすいのでコピペ出来るように記事を残しておきます。

kaggle.jsonをGoogleドライブに保存しておく

 kaggleのAccount画面でCreate New API Tokenボタンを押してkaggle.jsonをダウンロードし、Googleドライブに保存する(私の場合は’Colab Notebooks’直下)。

Colabの規定ディレクトリにkaggle.jsonをコピー

 Colabのノートブック画面でGoogleドライブに接続。

from google.colab import drive
drive.mount('/content/drive')

 ターミナルでkaggle.jsonを所定の位置に配置。ColabのターミナルではCtrl+C、Ctrl+Vでコピペ出来ないので、それぞれCtrl+InsertShift+Insertのショートカットで代用する(メニューバーの『編集』でもコピペ出来ない……)。

/content# mkdir /root/.kaggle/
/content# cp '/content/drive/MyDrive/Colab Notebooks/kaggle.json' /root/.kaggle/

kaggleコマンドでデータダウンロード

 Kaggleのコマンド自体はkaggleのサイトに表示されるので、コンペの利用条件を承諾してからコマンドをコピペするだけです。

/content# kaggle competitions download -c house-prices-advanced-regression-techniques
Warning: Looks like you're using an outdated API Version, please consider updating (server 1.5.12 / client 1.5.4)
Downloading train.csv to /content
  0%|                                                                                           | 0.00/450k [00:00<?, ?B/s]
100%|███████████████████████████████████████████████████████████████████████████████████| 450k/450k [00:00<00:00, 61.1MB/s]
Downloading sample_submission.csv to /content
  0%|                                                                                          | 0.00/31.2k [00:00<?, ?B/s]
100%|█████████████████████████████████████████████████████████████████████████████████| 31.2k/31.2k [00:00<00:00, 33.8MB/s]
Downloading test.csv to /content
  0%|                                                                                           | 0.00/441k [00:00<?, ?B/s]
100%|███████████████████████████████████████████████████████████████████████████████████| 441k/441k [00:00<00:00, 60.6MB/s]
Downloading data_description.txt to /content
  0%|                                                                                          | 0.00/13.1k [00:00<?, ?B/s]
100%|█████████████████████████████████████████████████████████████████████████████████| 13.1k/13.1k [00:00<00:00, 12.4MB/s]

Colabの操作性は初心者に優しくない

 Colabのインスタンスを立ち上げるたびに各種操作が必要なのが果てしなくだるいですね……。GoogleのColabチームは操作性の向上に消極的なようで、細かいところでストレスが蓄積します。GBレベルのデータダウンロードが厄介なのも大きな弱点です。

 AutoMLがオープンソースでも出てきており、細かいチューニングが不要な用途ではnotebookの体裁すら不要なノーコードの時代になってきています。本来はGUIでボタンぽちーで分析完了出来てしかるべきです。ちなみにお高いDataRobotや無料でもそこそこ使えるAutoAI with IBM Watson Studioでは既にGUIでAutoMLが可能です

伸びしろがある若い方なら思い切ってワークステーションを買ってみては?

 ワークステーションに50万円払える方は、買ってしまってローカルのJupyter Notebookで分析した方がシアワセになれるかも知れません。もちろんLinuxの知識が多少はあることが前提ですが。

 私が大学時代に貯金をはたいて購入したDECのパソコンは50万円しましたから、伸びしろがある方なら無駄な投資にはならないと思います。

Kaggleのデータをコンペ以外の目的で利用する

データサイエンティストに敵わないからといって避けて通るのはもったいない

 Kaggleはコンペティションで有名なため「データサイエンティスト以外はお断り」というイメージがあります。しかし、優秀な方々に及ばないことが分かっていてもKaggleを避けて通るのはもったいないと思います。

 BIツールの学習など、実務寄りのデータがほしい機会は多くあります。Kaggleにどのようなデータがあるか知っていれば、目的に近いデータを入手出来ます。特にマーケティング分野のデータは企業秘密の塊であり一般公開されることが少ないため、Kaggleのデータはとても貴重なものです。

 本日は、昨年Twitterでも触れていた「Google Analytics Customer Revenue Prediction – Predict how much GStore customers will spend」をご紹介します。

実在するEコマースサイトのアクセスログ

 このコンペはRStudio社の主催で、GoogleのEコマースサイト『GStore』のセッション単位のアクセスログが約33GB、提供されています。

 CSVのカラムにJSON風のデータが詰め込まれていて処理が手強いですが、BIツールの基本である日次統計にもってこいです。参考書籍などで数10GBのデータを扱っている例は見たことがありませんが、これくらいのサイズがなければExcelで十分であり、データベースやBIツール、データ分析基盤などのスケーラビリティを試すなら最低でもGB単位のデータが必要です。

 昨年はこのCSVデータを自力での展開を試みましたが、データ構造が複雑なため簡単な置換処理ではテーブル構造に出来ませんでした。今年は先達の方のnotebookなどを参考にして、まずはPostgreSQLへのデータ格納までたどり着きたいと考えています。他の方から学べるのもkaggleの良いところですね。

(base) masaru@ASUS-TUF-Gaming:~$ conda install --channel https://conda.anaconda.org/conda-forge kaggle
(base) masaru@ASUS-TUF-Gaming:~$ kaggle competitions download -c ga-customer-revenue-prediction