月別アーカイブ 8月 2016

投稿者:

機械学習エンジニアが知っておくべき10のアルゴリズム

KDnuggetsの記事ですが、知っておくべきアルゴリズムは、
1. 決定木
2. 単純ベイズ分類器
3.(通常の)最小2乗回帰
4. ロジスティック回帰
5. サポートベクターマシン
6. アンサンブル手法
7. クラスタリング
8.主成分分析(PCA)
9.特異値分解(SVD)
10.独立成分分析(ICA)
だそうです。
つまり、1から5までは教師ありで、クラス分類または予測の手法です。アンサンブル手法というのは複数の分類器を使って、分類性能を上げる手法です。残りの4つが教師なしの手法で、データを分析して、内在する構造を理解するための手法です。
このうち、1,3,4,7,8は、一般的な統計解析ソフトにも搭載されているはずです。ちなみに弊社のXLSTATでは、1,2,3,4,5,7,8が利用できます(もちろん、それ以外の機能のほうがたくさんあって、むしろ、これらは一部の機能に過ぎません。)
ただし、クラスタリングに関しては、新しい手法がさまざまあるのですが、統計解析ソフトに搭載されているのは伝統的な手法に限られます。(クラスタリングに関しては、クラスタリングの結果を得るだけではあまり意味がなくて、各クラスタの統計的特徴を分析するところまでやるべきなのですが、それを効率化できるツールというのは、Viscovery SOMine以外にはあまり見当たらないと思います。)
目下、「機械学習」ブームで、機械学習が昨日今日降って涌いてきた新しい技術であるかのように世間では捉えられていそうなのですが、実際のところ、上記のほとんどは(専門家の間では)何10年もおなじみの技術です。しかも、膨大な数の手法の中の代表的なごく一部にすぎません。
特異値分解は、行列分解の手法で主成分分析とほとんど似たような手法、というか特異値分解によっても主成分を求めることができます。つまり、特異値分解で主成分分析を実装することができます。
独立成分分析も主成分分析と似ているのですが、こちらは主成分分析とはちょっと違う方向のことをします。いわゆるカクテルバーティー問題という種類の問題を解きます。つまり、複数の人がワイワイガヤガヤしゃべっているような状況のそれぞれの音声信号を分離するというイメージです。たとえば、売上の変動をいくつかの変動要因に分解するというような分析にも応用できます。
独立成分分析は、上記の10個の中で最も新しい手法で、21世紀初頭にホットな研究テーマとして注目されました。(これですらもう10数年も経っています。)独立成分分析の第一人者として、ヘルシンキ工科大学のヒバリネン先生が挙げられます。今後、商用の分析ツールにも独立成分分析が搭載されてくるのが待たれます。

投稿者:

XLSTAT 2016.5リリース

XLSTAT 2016.5がリリースされました。主な新機能は下記のとおりです:
PLS 回帰: 全体的な性能と正確度が著しく強化されました。すべてのXLSTAT ソリューションで利用可能です。
コンジョイント分析と選択ベースコンジョイント: 出力をより素早く操作するための複数のオプションが可能になりました。コンジョイントおよびCBC分析ダイアログ・ボックスで自動記入を可能にする新しいショートカット・ボタンが実装されました。ターゲット製品の属性を変更すると、マーケット・シミュレーションが直接更新されるようになりました。XLSTAT-Marketing および XLSTAT-Premiumで利用可能です。

投稿者:

ノーフリーランチ定理と事前知識

no-free-lunch theoremについてWikipediaより、
「数学的にありうべき全ての問題の集合について、どの探索アルゴリズムも同じ平均性能を示すこと」
「探索アルゴリズムに必ず何らかの偏向があるため、そのアルゴリズムが前提としている事が問題に当てはまらないことがある」
「あらゆる問題で性能の良い汎用最適化戦略は理論上不可能であり、ある戦略が他の戦略より性能がよいのは、現に解こうとしている特定の問題に対して特殊化(専門化)されている場合のみである」(Ho and Pepyne、2002年)
「問題領域に関する知識を使わずに遺伝的アルゴリズムや焼きなまし法などの汎用探索アルゴリズムを使うことに反対する論拠」
あるいは、朱鷺の杜Wikiより、
事例の分布などについて事前知識がなければ, あらゆる目的関数について他を常に上回るような学習アルゴリズムは存在しないという定理」
ということですが、これはモデルを作成するときに「問題領域に関する知識(事前知識)」を使わないで、アルゴリズムまかせにすることの愚を指摘していると捉えるべきかと思います。
それがどういうわけか、「たくさんの種類のモデリング手法(機械学習アルゴリズム)を網羅的に試して、その問題に最も適した手法を探さなければならない」というふうに読み違えられているような気がします。それで、SASがよいか?Rがよいか?はたまたPythonか?ということなのですが、実際使ってみると、どうもうまくモデルの精度が上がらないというのが、最近の傾向かと思います。
私は何度も口酸っぱく言っているのですが、それぞれの手法はどれか1つでも深く勉強すれば、それだけで研究者になれるぐらい奥が深いものです。たくさんの手法を上っ面だけ勉強して、あれもこれも使おうとしたら、どれもこれも初心者レベルを脱することができず、実践的な結果は何も得られないということになります。
そこで悪知恵の働く人々は、「機械学習は幅広く深い専門知識が必要ですから、専門家の指導を仰ぎなさい」と言って、企業からたんまりとコンサルティング料をせしめています。大きな会社がそういうビジネスをやっていると、つい信用してしまいそうなのですが、SASやR、Pythonのような基礎的ツールで実践的な結果の出せるデータサイエンティストというのは、世界中探してもそうたくさんはいないと思います。
データサイエンティストを数10人とかそれ以上も擁しているデータサイエンティストの派遣会社というのもあるのですが、実際そこに在籍している人材のほとんどは、ほぼ経験のない人ばかりです。これは、(海外ではありえないことですが)コンピュータの知識を持たない文系SEというのが跋扈する我が国のシステム開発の伝統をそのまま引き継いでいます。
どんどんと本質から外れて、金食い虫になってしまうのがオチです。
あれもこれも、たくさんのツール・手法を使いないこなせることよりも、問題領域に対する洞察力が重要です。といっても、これも「どうすればそのような洞察力が得られるか?」という問題は残るのですが。
たとえば、数千点とか数万点の商品があって、特定の商品の販促を行う際に、ほかの商品の購入履歴から、目的の商品を購入しそうな顧客を見つけよう、という問題に取り組むとします。アソシエーションルールがよいか、線形回帰がよいか、あるいはロジスティック回帰か、あるいは単純ベイズか、というような議論になりがちです。
ここで、「どの商品とどの商品を購入しているかの組み合わせパターン」に着目するのは当然のことなのですが、たとえば「購入の合計金額」という新しい説明変数を追加することによって、リフト・チャートが劇的に改善されることがよくあります。なぜなら、消費者は個々の購買力によっても、購買行動のパターンが異なるからです。
問題領域の知識(事前知識)を活用するとは、こういうことです。モデリングの手法にどれを選ぶかよりも、こういうことの方が大きく結果に影響することがあります。
このような知識を使わないでアルゴリズムまかせにするアプローチとして、「潜在クラス回帰」があります。ユーザーが「購入の合計金額」という新しい変数を計算しなくても、購買履歴データから自動的に「購買力」をクラス分けして、層別のモデルを作成するはずです。今のところの私の感触としては、潜在クラス回帰を使用するよりも、「購入の合計金額」というような特徴を抽出できるなら、その方が効率的です。
このような特徴を抽出するのは、ちょうど幾何学の問題を解くときに「補助線」を発見するのが重要な糸口になるのと同じようなことかと思います。
弊社がSOMアプローチのデータマイニングを提唱する理由は、こういうところにあるのです。ViscoveryのSOMローカル回帰が他のどの手法よりも優れているということはありません。SOMローカル回帰が意図しているような非線形性がデータに内在する場合は、ドンピシャですぐれた結果をたたき出します。しかし、当然、データによっては、通常の線形回帰とそれほど変わらないということもよく起こります。つまり、それがノーフリーランチ定理で示されているのと同じ状態です。
しかしながら、SOMアプローチの他と異なるところは、「腹の底からデータを理解できる」というところです。解決の糸口、注目するべき特徴を見つけるためのツールです。