手持ちのデータを解析したり、データを用いて機械学習したりしたいとき、大きく分けて2つの方法があります。
- データ解析や機械学習ができるソフトウェアを用いる
- プログラミングを学び、データ解析や機械学習をする
です。ソフトウェアは、「データ解析 機械学習 ソフトウェア」 とかで検索するといろいろと出てきますが、ここでは XLSTAT (エクセルスタット) を想定しています。XLSTATは、文字通りエクセル上で利用できるソフトウェアです。
エクセルのシート上のデータを用いて、上の起動画面にあるようにデータの可視化・回帰分析・クラス分類などを実行できます。たとえば、
- 主成分分析 (Principal Component Analysis, PCA)
- 部分的最小二乗回帰 (Partial Least Squares regression, PLS)
- 線形判別分析 (Linear Discriminant Analysis, LDA)
- サポートベクターマシン (Support Vector Machine, SVM)
が搭載されています。さらに、R言語のライブラリを読み込んで実行する機能もあり、いろいろな手法を実行できます (XLSTAT の製品ごとに搭載されている機能も異なりますので、詳しくはこちらをご覧ください)。手法の使い方も、直感的でとてもわかりやすいです。XLSTAT を14日間の利用できる無償トライアルもありますので、エクセルをお使いの方は一度試されてはいかがでしょうか。
このようなソフトウェアのメリットの一つは、データ解析・機械学習をするまでの敷居が低いということです。データ解析のやり方や機械学習の手法を勉強して理解できたとしても、たとえばプログラミングができるようにならないといけないなど、実際にデータ解析をしたり機械学習の手法を実行したりするには、壁があることが多いです。ソフトウェアを使うことで、少なくとも XLSTAT は操作方法が直感的でわかりやすいため、使い方を少し学ぶことで、データがあればデータ解析できたり機械学習の手法を実行できたりします。手法についてあまり詳しくなくても、実行できてしまうほどです。
ソフトウェアでは、結果をどのように見ればよいかや、どのように解釈すればよいかの指針についても示してくれます。これもメリットの一つでしょう。結局、機械学習の各手法を実行して、それが成功したときに出力されるのは、ただの数値です。その数値が何を意味するのか、については手法について理解していないといけません。その数値を見やすいように解釈しやすいように、表示するにも工夫が必要です。ソフトウェアを使うことで、機械学習の手法を実行したあとに、結果の数値をわかりやすく表示してくれます。その手法についてあまり詳しくなくても、結果をどう見ればよいかわかりますし、さらには結果を解釈するために手法のどこをさらに勉強すればよいのか指針を立てられるわけです。
ソフトウェアを購入するとサポートセンサーを利用できるのもよいですね。もちろん操作方法に慣れる前は聞きたいこともあるでしょうし、データ解析や機械学習をはじめたころは質問も出てくると思います。疑問を解消できるのはうれしいですね。
ただし、データ解析や機械学習ができるソフトウェアを用いることは、メリットばかりではありません。デメリットの一つは、ソフトウェア内のソースコードを見られないということです。ソースコードとは、たとえば機械学習の手法を実行する元のプログラムのことです。データ解析・機械学習に慣れてきて詳しくなってくると、手法の細かい計算方法を確認したくなったり、ときには変更したくなったりします。市販のソフトウェアですと、そのようなことができないことが多いです。
それと関連して、ソフトウェアに搭載されている機能以外のことはできませんので、注意が必要です。ソースコードを変更しないとできないようなことはできないわけです。たとえば XLSTAT では、わたしが確認したところクロスバリデーションを行ったときの目的変数の推定値を出力することができませんでした。
一方で、プログラミングを勉強してできるようになれば、自分のやりたいようにデータ解析・機械学習をすることができます。プログラミングすれば、クロスバリデーション推定値を計算することもできます。もちろん過去のいろいろな手法を実行できますし、自分のオリジナルな手法を試すこともできるわけです。
ただし、市販のソフトウェアを使えるようになるのと比べて、プログラミングができるようになるまでのハードルが高いのも事実です。独学でプログラミングを勉強して、途中で挫折してしまった人もいるでしょう。プログラミングができてしまえば、いろいろなデータ解析・機械学習もできますが、プログラミングできるようになるまでが大変なのです。
もちろん、たとえば Python というプログラミング言語では numpy, pandas, scipy, matplotlib, scikit-learn などプログラミングやデータの読み込み・図示・保存、データ解析や機械学習をサポートするためのライブラリがあります。プログラミングを初めて学ぶ人でも、データ解析・機械学習しやすくなってはいます。
しかし、そのようなライブラリを使うため、そして機械学習の手法を実行して出力された “数値” を解釈するため、機械学習の手法について理解していないといけません。結果の表示の仕方についても学ぶ必要があります。ちょっとデータ解析・機械学習してみたい人には、市販のソフトウェアと比べてハードルは高いでしょう。
たとえるならば、ソフトウェアを使うことはできあがった自転車を買って使うようなもので、プログラミングを学ぶことは自転車の組み立て方を身につけるようなものです。自転車を買って乗り方を覚えてしまえば、すぐに自転車に乗って移動できます。パンクなど多少の不具合でしたら、購入した自転車屋のサポートで直してもらえます。ただし、自分で大掛かりな自転車の改造をすることは難しいです。一方で、自転車の組み立て方を身につけるのは難しいですが、一度身につけてしまえば、自分に適した自転車を自分で作ることができます。
まとめ
ソフトウェアを使うことのメリット・デメリット、プログラミングを勉強することのメリット・デメリットをまとめます。
ソフトウェアを使うことのメリット
- データ解析・機械学習をするまでの敷居が低い
- 結果の見方や見せ方、解釈の仕方まで示してくれる
- サポートセンサーがある
ソフトウェアを使うことのデメリット
- ソフトウェア内のコードがわからない
- 搭載されている機能以外のことができない
プログラミングを勉強することのメリット
- オリジナルのデータ解析・機械学習ができるようになる
- 他の人の成果を利用しやすい
- プログラミング言語を学びやすくなる
プログラミングを勉強することのデメリット
- データ解析・機械学習までの敷居が高い (プログラミングができなければならない)
- 結果の見方や見せ方も勉強しないといけない
以上です。
質問やコメントなどありましたら、twitter, facebook, メールなどでご連絡いただけるとうれしいです。