できないと言ってはいけません
仕事をしていて思ったことを。
統計分析が求められる場面というものはいくつもあるが、その中で最もメジャーと言ってよいものの一つが「将来予測」だと思う。身近なもので言えば株価や天気で、「明日はどうなるか?」という問いについて、モデルは一つの答えを出してくれる。もちろん、その精度は検討した変数や手法によるところが大きいだろうが、単に勘や経験に頼ったものよりもよっぽど良い答えを出してくれるだろう。
そんな便利な統計モデルであるが、弱点もある。例えば、将来予測を行う際にはモデルに含まれる変数がすべて既知であらねばならない、というものだ。Rでpredict(newdata)を行うときや、SPSS Modelerで作成済みのモデルノードに新規データを渡す場面を想定してほしい。この時、新規データにはモデルに含まれる変数がすべて格納されている必要がある。
「何を今さらそんな…」と思われるかもしれない。しかし、データを触り、分析にかけ、予測を行うという行為の経験がなく、実際の作業としてはどのようなものであるかイメージができない場合には意外とこの辺りの感覚が抜け落ちている。つまり、一度分析を行ってしまえば無条件で新規のデータに対しても予測が可能であると思ってしまうらしい。
具体的な例を出そう。例えば携帯電話の顧客情報をもとにセグメンテーションしたいとする。顧客のデモグラ情報(年代や性別)の他、携帯電話の使用状況を変数として用いた結果、非常によいモデルができたとしよう。それではこのモデルを用いて、新規顧客がいずれのクラスターに分類されるかを判断できるだろうか?
答えはノーだ。なぜならば、新規顧客については携帯電話の使用状況に関するデータがなく、モデルを当てはめることができないからだ。クラスタリングでなく回帰モデルで例えれば、複数ある変数の内のいくつかがNULLになっている状況である。
それでは、このようなクラスタリングに意味はないのだろうか?
当然、そんなことはない。もし情報が足りなくてクラスタリングができないのであれば、どういった情報を取得すれば良いのか考えれば良い。あるいは取引が開始するまでの接触の段階で情報収集を重ね、少しずつクラスタリングの精度を向上させていくのも良い。最初は間違っていてもよいから、何らかのアクションが打てるように分析結果を活用する、というのがコンサルに求められる態度であり、データ分析者と異なるところなのだろう。
『「できない」という言葉は何の意味もないから、「どうすればできるか」を考えよう』
以前に上司から教えられた言葉である。データ分析者としてはすっきり納得がいくものではないが、コンサルとしては非常に大事な教えであったなぁと思う今日この頃。
Data Scientist Workbench
こんなサービスがあることを最近知った。
■Data Scientist Workbench
datascientistworkbench.com
IBMが提供しているサービスで、ブラウザ上でRStudioやJupyterが実行できる環境を提供してくれる(無料で!)。分析手法よりもHadoopやSparkなど大規模データの捌き方をメインにしている様子で、用意されているサンプルプログラムもRやPythonでのSparkの実行例などが多い。
Big Data Universityのオンラインコースへのリンクもあり、基礎的な学習とR/Pythonでの実装についてはここで十分に学べると思う。
Seahorseというツールは初めて見たけどAzure MLに似ている。このUIは個人的には使いにくいと思うんだけど、他の人はどうなんだろうか。。。
ちなみにBig Data Universityはこちら
Analytics, Big Data, and Data Science Courses - Big Data University
RでBI
忙しかったので久しぶりの更新です。
最近Rでこんなパッケージを発見して驚いた。その名もrpivotTable。なんとRでTableauのようなBIツールを再現してしまうという夢のようなパッケージだ。パッケージのインストールから実行までは以下のようになる:
install.packages("rpivotTable") library(rpivotTable) data(iris) rpivotTable(iris, rows="Species", "100%", "40pt")
上記を実行するとブラウザが開き、Tableauで見慣れたようなピボットテーブルが現れる。あとは好きなように変数を配置して表計算やグラフを作成すればよい。
もちろんTableauの方がグリグリ感は強いし、rpivotTableではドリルダウンなどもできないのだけれども、可視化と分析をシームレスに実行できるという点ではよっぽど使い勝手は良いと感じた。
出来映えも大変良く、shiny以来の衝撃を感じたので紹介しておく。
遺伝的アルゴリズムで変数選択を行うパッケージ
遺伝的アルゴリズム(GA)をRで実行するためのパッケージを探していたら、GAによる変数選択という非常に興味深いものを発見した。パッケージ名はGALGO。Genetic Algorithms to solve Optimization problemsらしい。早速使ってみたが、インストールに少し手間取ったので備忘として残しておく。
初めに成功したパターンを記載する。基本的にこちらのページに書いてある通りで良い。
"R.oo"や"R.methodsS3"、その他の必要なパッケージを予めインストールしておき、ダウンロードしておいたgalgo_1.2.tar.gzをソースからインストールするだけ。
CRANではなくソースからインストールする場合は、ソースが置いてある場所までsetwdした後に
install.packages("galgo_1.2.tar.gz", repos=NULL, type="source")
とすれば良い。
では何に手間取ったかというと、「galgo r example」などでGoogle検索した際にトップに表示される下のページ:
こちらに記載されている通りに進めると、古いバージョンのgalgoがリンクされていることから.tar.gzの中にNAMESPACEファイルが存在していないため、一度解凍したのちにNAMESPACEファイルを作成して再び圧縮する必要がある。
tar -xvf galgo_1.0-10.tar.gz cd galgo echo 'exportPattern( "." ) > NAMESPACE cd .. tar -zvf galgo_1.0_10mod.tar.gz galgo
こんな感じ。
ここまで進めて、さぁインストールするぞ!と思ってinstall.packages()を実行すると、エラーの嵐でインストールできない。Rのバージョンの問題なのかもしれないが未解決。
その後、再度他のページを探した結果、最初に紹介したページに行き着いてインストールが無事にできた。使用感はいずれ。
決定係数についての諸注意
決定係数は線形回帰分析においてモデルの精度を表す指標の一つで、1に近いほど良いモデルであるとされます。またこのは相関係数の二乗で求めることがあります。
しかしこれらの説明は必ずしも正しいとは言えないため、注意が必要です。