機械と学習する

統計解析、機械学習について学習したことをまとめていきます

データの性質を理解する

【概要】

  • 「AI」も統計量の算出もどちらも「統計モデリング」として解釈できる
  • 統計モデリングとはデータの背景を推定しデータを理解するための枠組み
  • 明示的にデータの背景を考えましょう

【目次】

はじめに

ビッグデータ」という言葉、覚えていますか? Wikipediaによると世の中で流行したのは2010年頃とのことです。 その前にも「データマイニング」という言葉が流行しましたし、 現在(2019年初め)はディープラーニングを中心とした「AI(人工知能)」という言葉が流行していますね*1

これら言葉は異なっていても、本質的には同じことを言っていると私は考えています。

それは、「データを活用した物事の理解」ということです。

ディープラーニングも含めて、無から何かを産み出すわけではなく、 データの中の統計的な差異を効率的に見出すための技術です。 本記事では、このようにデータを扱う上で最も基礎となる「統計」について、 その考え方や統計量を算出するとは結局何をすることに相当するのかという点について私の考えをまとめていきます。

【トップに戻る】

統計モデリング視点での「AI」

そもそも「AI」とは何か?

「AI」という言葉はとても曖昧で、特定の技術を指した言葉ではありません。 ちなみに私は「AI」という言葉は嫌いです。
SAS社のページでは以下のように記載されています。

人間の知的ふるまいの一部をソフトウェアを用いて人工的に再現したもの

人工知能学会では「人工知能って何?」というページで 以下のように述べています。*2

人工知能の研究には,人工知能研究で紹介しますようにいろいろな分野があります.ここでは,この中から「推論」と「学習」を取り上げます. 「推論」と「学習」が重要であるということでしょう。

これらを合わせると、 ある問題に対して「学習」と「推論」を行うソフトウェアという認識が持てそうです。

学習と推論

では、「学習」と「推論」とは何でしょう?
「AI」として最近の事例で多く使われるニューラルネット*3では、 判別問題を扱うことが多いので判別問題を例に考えてみます。

判別問題とは、猫と犬の画像の分類のように、あるデータXがいくつかあるクラスのうちどのクラスに属するのか判別する問題のことです。 例として以下のデータを見てください。

f:id:hippy-hikky:20190130233220p:plain

これはirisデータセット*4のうち、品種がversicolorとvirginicaの2種の花弁の幅(x軸)と長さ(y軸)の散布図です。

このような例題に対して判別問題では、品種のわかっていない新たなデータ(花弁の幅と長さ)がどちらの品種に属するのか判別することが目的となります。

人間だったらどう考えるでしょう?

散布図から明らかに、 versicolorは花弁の幅も長さも少し小さいんだなということが想像できるでしょう。 また、花弁の幅と長さでちょうど分類できるラインが引けそうだなと考えられますよね?

ここで、2.1節で記載したSAS社のAIの定義を思い出してください。

人間の知的ふるまいの一部をソフトウェアを用いて人工的に再現したもの

そう、花弁の幅と長さでちょうど分類できるラインを求めるのが「学習」のプロセスです。 学習の詳細についてはここでは触れませんが、 単純なニューラルネット*5で判別させてみた例を以下に示します。

f:id:hippy-hikky:20190131002552p:plain
irisの二つの品種を花弁の幅と長さの二つの特徴量で分類した例。背景の色がそれぞれの品種の領域を表す。

次に「推論」ですが、これは、品種のわかっていない新たなデータ(花弁の幅と長さ)がどちらの品種であるのか判定させるプロセスです。 ここでは、分類できるラインのどちら側にあるのかで判定できそうですね。

統計モデリングとしての解釈

上で説明した判別問題は、irisの花弁の幅と長さという特徴 (これらを合わせて特徴量と呼びます)を マッピングした空間(このような空間を特徴空間と呼びます)に識別のための境界線を引くという問題でした。 なお、特徴量は2種だけに限定されるわけではなく、1つ以上で上限はありません。

なぜ、識別線を引いて判別できるのでしょうか?

これは、特徴空間上で、同じカテゴリのデータは近くに分布することを前提としているからでしょう。 つまり、特徴空間上で、判別したいカテゴリのデータがどのような分布になっているのかを推定していると考えることができます。 *6

しかし、実際のデータでは回り込むような分布になっていたりするケース*7もあると思います。 そのような場合にも、特徴量をうまく加工することで判別できる場合があります。 深層学習では、この特徴量をうまく加工する部分も合わせてニューラルネットでやらせることで、人が手で特徴量を加工するよりも遥かに精度の高いモデルが構築できるようになりました。

一方、統計モデリングとは、データの背景を推定し、データを説明するための枠組みです。
データがどのような傾向を持っているのか、どのようにばらついているのかを理解することで、 今手元にあるデータとそのデータを作り出すことになった現象を理解して説明することができるというわけです。
そのために、 データの背景となる分布を明示的に推定しデータを説明するための枠組みが「統計モデリング」です。 なお、統計モデリングでは「説明」することが重要な役割なので、 特徴量を無闇に加工するような方法はあまり取らないですが。

ニューラルネットワークと統計モデリングとは実際の利用シーンこそ違いますが、 共にデータの性質(分布)を把握するための枠組みであると見れるんじゃないかなと考えます。 結局のところデータの性質を推定して、活用するという部分では共通しているだろうと。 (そう言っちゃうと、データを扱うもの全て同じくくりになるわけですが、 だからこそ「確率」や「統計」を学ぶことが重要なんだと思います。 ライブラリを扱うだけではなく、基礎をおさえることで正しく利用することができます。 自戒を込めて。)

【トップに戻る】

データの性質を理解する

2章では、多少強引ながらも、 「AI」もデータ解析もデータの性質を推定することが基礎であることを述べました。 では、「データの性質を推定する」とは具体的にどのように実現するのでしょう?

平均と分散

多くの方、経験があると思うのですが、 データを集計する場合に「平均」と「分散」を出すことが多いですよね。

どうして「平均」と「分散」を算出するのでしょうか?

平均や分散を算出することで、対象のデータは「平均値」の周りに集まっており、 そのバラつきは「分散(標準偏差)」の大きさ程度で均等にばらついているであろう ということを期待していらっしゃるのではないでしょうか?

実はこの「平均」と「分散」を算出することも一つの統計モデリングであり、 データの性質を理解するための一つの方法です。

これは、データは正規分布に従っているものと考え、 正規分布のパラメータである平均と分散を推定しているという解釈ができます *8。 実際、正規分布最尤推定量を計算すると、標本平均と標本分散が最尤推定量となることがわかります。 (このあたりの計算は別の機会にまとめます)

データの性質の表現

上記のように平均と分散を算出するということは、 データは正規分布に従うと仮定し、 そのパラメータである「平均」と「分散」を推定していることになります *9

しかし、データが正規分布に従うであろうという仮定はいつも当てはまるわけではないですよね?

正規分布は、身長のばらつきのように連続的なデータを扱う分布です。
一方、世帯収入の分布は連続的な数値データ*10ですが、 この資料の分布を見ると明らかに正規分布とは異なります*11。 収入なので、原理的に下限は0ですが、上限はありませんよね。

調査の概要|厚生労働省

このような分布を表現するには、正規分布ではなく、「対数正規分布」を使うと当てはまりが良くなると言われています。 対数正規分布とは、以下の式で定義され、log X正規分布N(\mu, \sigma^{2})に従うならば、 元のXは以下の対数正規分布に従うとされます。

{ \displaystyle
f(x | \mu, \sigma) = \frac{1}{\sqrt{2\pi}\sigma x}\exp( -(\log x - \mu)^{2}/2\sigma^{2} )
}

また、お菓子の当たりくじを引くか引かないかのような離散的な現象も正規分布とは言えなさそうです。 このような、当たりか外れかを表現する分布としては「ベルヌーイ分布」というものがあります。

{ \displaystyle
f(x | p) = p^{x}(1-p)^{1-x}
}

これは、確率pで生じる現象(当たりの確率等)が1度の試行で生じるか否かを表現したものです。 ベルヌーイ分布を一般化すると二項分布になります。

世の中にはたくさんの現象がありますが、 統計モデリングでは、これらの現象を上記のような確率分布(単独だけではなく、組み合わせたりもします)を使って表現します。 これがモデリングという作業で、 目の前にある問題がどのような分布で表現できるのかを考えることになります。 生のデータは複雑ですが、その背景にある現象をできるだけシンプルに表現するための具体的な作業です。

確率分布を使って対象がモデル化できると、 ボリュームゾーンはどこなのかを見つけたり、 外れ値を定義して異常を検知したりと応用できるようになります。 また、全く別の現象だが同じ種類の確率分布でモデル化できる場合があり、 そこから新たな発見が生まれるかもしれません。

ここでは、確率分布をただ並べただけなので、 データに基づいてどのような分布なのか推定する問題(パラメータの推定)についてや、 応用の仕方については別の記事で書こうと思います。

【トップに戻る】

まとめ

この記事では、 平均値の算出から「AI」まで「統計モデリング」の一つとして解釈できるだろう という考えを述べてきました。
NNやRandomForestなど単純に何らかのモデルを当てはめたり、 平均や分散を算出して満足するのではなく、 データの背景を見ていくことが重要でありとても面白いと思います。 データを扱う際には、このデータはどのような背景があるのかを想像してみると より良い分析法を思いついたり、問題点の改善ができたりするんじゃないかなと思います。
それに、何より楽しいじゃないですか。

【トップに戻る】

おわりに

統計学の教科書では、様々な確率分布を説明する章があることが多いです。 しかし、初学者の人と話した時に、なぜ確率分布というものが出てきたのかがわかっておらず、 教科書のそれ以降の説明が理解できない場合が散見されたので、 基礎的な部分ですが私の考えをまとめました。 統計って何が嬉しいのか理解できていない方に少しでも参考になれば幸いです。

【トップに戻る】

参考文献

  • 統計モデリングの入門書
  • 線形モデルをベースにベイズ線形回帰や階層ベイズまでとてもわかり易く書かれた良書と思います
  • 比較的応用よりなので、まずはこれを読んで手を動かせるようになると理論面の理解も進む気がする

統計学入門 (基礎統計学?)

統計学入門 (基礎統計学?)

  • 統計学の有名な教科書
  • 理論面を抑えたい場合にはこれが良い
  • ただ、ほんとに初学者がこれを読み始めるのはおすすめしない

*1:2019年1月現在、「AI」は既に下降トレンドとも言われていますが

*2:「何?」という疑問には明確に答えられてはいませんね

*3:deep learning, 深層学習とも言われますがこれらはニューラルネットを拡張子多段にしたものと見ることができます

*4:機械学習等の演習でよく用いられるデータセット。多くのPythonライブラリに導入されている(Python以外でもよく用いられる)

*5:中間層なしの単純パーセプトロン、つまり線形分離です

*6:判別問題ではデータの分布を明示的に推定するわけでは無い場合が多いですが

*7:XORみたいな

*8:単純にデータの「代表値」として算出しているだけというケースもあるかもしれませんが、 分布のボリュームゾーンを表現できない代表値にどのような意味があるのか私は理解できないです。

*9:データのタイプに依ってはポアソン分布かもしれませんが

*10:金額に小数は無いので本当の連続量とは違いますが

*11:政府統計について問題が生じている中であれですが、、、