データ分析のためのパソコン環境構築
就活のほとぼりが冷めて
こんにちは、えもりです!
早くも(大嘘)2つ目の記事が投稿できてうれしいです!
前回の記事を投稿してから二か月ほど後になりましたが、何とか就職先を見つけることができました。終わってみれば、案外あっけなかったですね。ともあれ、これにて就職活動は打ち切りとさせていただきます。
これまで全然ブログを更新できませんでしたが、これからは月に1記事くらいは投稿できるよう努力したいと思います。
今回は、データ分析を行うための環境を構築していきます。
計算用コンピュータの必要性
データ分析では、大量のデータを扱うことがあります。数十行のデータなら、時間をかければパソコンなしでも全てのデータを調査できると思います。しかし、数千・数万ものデータが相手となると、そうはいきません。ここはパソコンという文明の利器を頼るべきでしょう。
ですので、まずは必要なパソコンの準備からです。一般的に、ビッグデータ分析では超高性能なコンピュータを求められることが多いです。
自前のパソコンではなく計算用サーバーを借りるという方法がよくとられます。例えばこの記事のように、データ分析のためにGoogleやAmazonのクラウドサーバーを間借りする、といったことが行われます。
ですが、現時点では収入がゼロなので、なるべくお金をかけずに計算用サーバーを用意したいです。上述のクラウドサーバーは、当然ながらタダでは利用できません。利用料金がゼロ円のサーバーがもし存在するのなら、それが理想なのですが...。
Colabを使おう
その願いを叶えてくれるのが、Google Colaboratory(Colab)です。Colabはディープラーニングなどの計算を手軽に回せるよう公開された計算用サーバーであり、ブラウザ上でありながら重たい計算を実行させることができます。
ブラウザが動かせるのなら、どのようなパソコンを使っても動かすことができます。ですので、自宅では自前のノートパソコンを使って、外出先ではスマートフォンからColabを操作したいと思います。
Colabはインターネットからアクセスすれば簡単に使えるようになります。Colabを開くとプログラムを記入するためのテキストボックスが表示されます。ここにコマンドなどを入力することで計算を実行します。
どれくらいの計算が実行できるのか、サーバーのスペックを見てみましょう。今回はCPU、主記憶(メモリ)量、データ記憶容量(ストレージ)を調べます。下記の通り、Colab上で実際に性能を確認してみました。
In [1]:
!cat /proc/cpuinfo | grep -E "processor|model.name|cpu.cores" | tail -n 3
Out [1]:
processor : 1
model name : Intel(R) Xeon(R) CPU @ 2.00GHz
cpu cores : 1
まずはCPUからです。CPUはコンピュータの命令を処理する機能を有するため、CPUの性能が良いほどより多くの計算が捌けるようになります。Core i7のような最新のCPUだとクロック数が3.5GHzくらいあるので、それらに比べるとやや劣るかな、という印象です。コア数も1個しかありません。
In [2]:
!free -h
Out [2]:
total used free shared buff/cache available
Mem: 12G 561M 10G 900K 2.0G 11G
Swap: 0B 0B 0B
CPUでの計算には、メモリに一時保存されたデータが使われます。メモリが小さすぎると全てのデータが入りきらず、計算が不可能となったり遅くなったりするので、ある程度大きなメモリが欲しいところです。
10ギガバイトほどのメモリが未使用となっているようです。デスクトップパソコンでも16ギガバイトメモリ収載のものが存在するくらいなので、サーバーにしては少なめなメモリ量だと思います。何をやるかにもよりますが、128ギガバイトくらいあれば文句なしでした。
In [3]:
!df -h ~/
Out [3]:
Filesystem Size Used Avail Use% Mounted on
overlay 69G 32G 34G 49% /
データ分析中に中間ファイルが作成される場合、それを置くための場所を確保する必要があります。扱うデータが大きいほど中間ファイルも大きくなりがちなので、相応のデータ保管場所(ストレージ)を用意しなければなりません。
Colabのホーム領域のストレージは、利用可能(Avail)なのが34ギガバイトでした。普通のパソコンでも1000ギガバイトくらい保存できるはずですから、これはかなり少ないと思います。メモリ量も考えると、あまり大きなデータは扱えないでしょう。
やはり無料で提供されているサーバーなので、総合的に見て性能は若干抑え気味になっているようです。しかし、私は高性能パソコンを持っていないので、これでもかなり助かります。今後、大規模なデータセットを扱う段階になりましたら、その時により良い計算用サーバーの導入を検討することにします。
Pythonも勉強する
先ほど、Colabで様々なコマンドを入力しました。当然ながら、好き勝手に入力してよい訳ではなく、決まったルールに従ってコマンドを記入しなければなりません。このように、コンピュータが理解できる言語のことを「プログラミング言語」と呼びます。
Colabでは、Pythonというプログラミング言語を使うことができます。(先ほど使用したのは「Linux」と呼ばれるものですが、これはコマンド先頭に「!」を付けると使用可能になります。)
すなわち、Colabを使うにはPythonを学ぶ必要があります。一つの言語を学ぶには、それなりの労力が必要です。そこまでしてプログラミング言語を学ぶメリットはあるのだろうかと、そう思う人もいると思います。
わざわざプログラミングをしなくとも、既にプログラムとして完成されたものがインターネット上にいくつか公開されています。例えばテキスト分析を行いたいとき、 このツールを使えば文章内での頻出単語を表示したり、二つの文章の傾向を比較することもできてしまいます。
それでは、入力されたメールの文章がスパムメールかどうかを判断させることは、このツールで可能でしょうか。または、似たような文章を自動的に作成してくれるような機能は持ち合わせているでしょうか。
答えは、どちらも不可能です。なぜなら、そのような機能は実装されていないからです。既存のツールを使えば簡単に分析が行えるようになりますが、自分が本当に行いたい分析手法はどこにも実装されていないかもしれません。特に、論文で発表されたばかりの方法論だと、実装を見つけるのがより困難となるでしょう。
そのような場合、プログラミングを習得していると便利です。多くの場合、試作品としてのプログラムが論文と共に公開されているので、それを自分で改良してデータ分析に応用させることができます。Pythonは数あるプログラミング言語の一つでしかありませんが、これを学べば後に他の言語を覚えるのも少し楽になるでしょう。
幸いにも、私は大学院での研究でPythonを少しだけ使っていたので、if文やforループなど超基本的な知識はあります。もし、これからPythonを勉強したいと考えているなら、Pythonの入門書を購入するか、入門サイトを探すなどすると良いと思います。
ですので、今後はPythonを用いた解析が多くなると思います。もし別の言語に鞍替えする場合は、おそらく開発環境も大きく変化するので、その時はまた環境構築の記事を書きます。
まとめると、以下のように環境を構築しました。データ分析のための処理を「Python」で記述し、「Colab」上で実行します。必要に応じて、計算用サーバーやプログラミング言語のアップデートを行っていきます。