LogoMark.png

DataScience

データサイエンス

Data Science

データサイエンス(Data Science)とは、データそのものの性質やデータを取り扱う手法を研究する科学全般を指す言葉で、統計学機械学習データマイニング、可視化・・など、様々な分野を包括する概念です。
 数値や文字(カテゴリ)として得られるデータを統計的手法や機械学習(近年の AI の技術ベース)などを用いて分析・処理することによって、世界に潜む様々な物事の関係(モデル)を見出す科学であるとも言えます。

CONTENTS


人類とデータ

人類は情報(データ)を交換・共有・蓄積することにより、独自の進化を遂げた生物です。その歴史には以下のような大きな転換点がありました。

数万年前言葉の発生情報の交換・リアルタイムコミュニケーション
BC3500年文字の発明情報の蓄積・非同期コミュニケーション
105年紙の発明情報のモバイル化
1440年頃活版印刷情報の拡散
1945年コンピュータ情報処理の自動化
1989年WWW情報共有のグローバル化




モデルを見出すこと

因果関係・相関関係

データサイエンスの最大の関心事は、物事の背景にある原理を探ることです。それは科学全般に言えることですが、従来の科学のように科学者の経験的な直感によってその仮説が生まれるのではなく、あくまでも、現実世界にあるデータからそれを数学的に導き出すということがデータサイエンスの特徴です。

 「アクセルを踏み込むとスピードが上がる」、「気温が上がると、商品Aの売上が上がる」、「身長が高い人は、体重も大きい」、「こういう動作をする人物は、商品を盗む可能性が高い」などなど、私たちのまわりには「ああすればこうなる(因果)」「ああであればこうである(相関)」という形でその関係を説明できることがたくさんあります。
 車のアクセルのように操作してすぐにわかる関係もあるし、気温上昇と商品Aの売上上昇の関係のように、気づくのに時間がかかるものもあります。いずれにせよ、人間の脳は、何度か同じような経験をする(複数のデータをとる)ことで、「ああすればこうなるんじゃないか」とか「ああいうときはこうなんじゃないか」という法則を直感的に見出すわけです。

ビッグデータ

しかし、人間の感覚・知覚や記憶力には限界があります。事項間の心理的な距離がありすぎてその関係に気づかない・・そんな法則がたくさん潜んでいる可能性があります。ここに登場したのが、大量のデータ(Big Data)から関係・ルールを見出すデータサイエンスの技術です。発想そのものは昔からあったものですが、近年のコンピュータの計算速度の飛躍的な向上、メモリーサイズの増大がそれをようやく可能にしました。

例えば、あるスーパーマーケットにおいて一定期間中の商品の売上データを全部使うと、「商品Aの売上と商品Xの売上が連動している」というような、人間では気づかないような相関関係が見つかることがあります。データから物事の背後にある仕組みを見出すことができれば、これを使って未来におこることを「予測」することができます。「商品Aを特売する日には、同時に商品Xの在庫も増やしておく・・」といった戦略が立てられるということです。

発見された連動関係を未来に利用するかどうかを決めるのは人間ですが、人間が気づかなかった参考情報が提供されるという点で、データサイエンスは、良くも悪くも、これからの社会の「意思決定」に大きな影響を与える存在となったといえるでしょう。




関数について

関数の式

この「入力(ああすれば)と出力(こうなる)」の間にある仕組みは、一般に「関数」と呼ばれます。

y = f ( x )

教科書に出てくる関数の式ですね。ここで嫌になる方もいるかもしれませんが、もう少しお付き合いください。関数 f を一次の関係式と仮定すると、

y = ax +b

と書くことができます。この「a, b によって特徴づけられた入力と出力の関係」というものが、物事の背景にある原理、未来を予測するためのモデル・・ということになります。

数学の教科書的な問題であれば・・

データとして (2,5) , (4,9) という2つのデータセットが与えられて、これらを満たす a ,b を求めよ・・ということになります。

5 = 2a + b
9 = 4a + b

これを解いて、a = 2, b =1 がわかります。

y = 2x + 1

では「x=10 のときに y はいくつ?」・・答えは 2 x 10 + 1 = 21 ということになります。いわば、未来予測です。
 しかし、数学の問題というのは、手計算で綺麗な解が導けるようになっているので、現実的ではありません。

LeastSquaresMethod.png

実際の問題になると・・

与えられるデータは必ずしも綺麗に直線上には並びません。例えば (2,5) , (3,6) , (4,9) だったりします。y = ax + b という直線的な関係を前提とした場合、データが2件であれば連立方程式を解いて a,b の解が求まりますが、3つ以上になると「解なし」となる可能性が出てきます。しかし、実際に複数のデータをグラフにプロットすると、明らかに比例関係が見てとれます(右上グラフ)。であれば、その関係を表現するための aとb を見出すことには意味があると言えるでしょう。
 現実世界から得られるデータには様々な誤差が含まれていたり、他の要因が影響していたりして、その値はブレるのが普通です。手計算で綺麗に解けるものなどありません。
 そこで実際には、最小二乗法という回帰分析の手法を使ってパラメータ a,bを推定するのですが、結果からいうと、上記の3つのデータから推定されるのは、a=2.0, b=0.67 となります。もし、入力(x)が 16 であると想定すると、予測値(y)は、32.67 となります。

データサイエンスがやろうとしていることは、基本的にこの応用です。関数モデルをつくって「前提(x)がこうなら、結果(y)はこうなる」といったようなことを予測できるようにしたいわけです。
 しかし、実際の現象は非常に複雑で、要因(変数)が多数ある(x0, x1, x2, x3, x4,・・・)だけでなく、それらが重層的に絡みあいます。この関数は非常に複雑なものになるので、関数の形を現実の予測に役立つように近づけるには過去の経験データも大量に必要になります。

プログラム例

上記の計算を実際に行うプログラムの例を以下に掲載しています。
ipynb(JupyterNotebook)形式で、GitHubに置いていますが、レンダリングがタイムアウトする場合は、下の nbviewer 経由でご覧下さい。




用語解説

説明変数と目的変数

関数モデルを y = f(X) と書いた場合の、X が説明変数で、y が目的変数です*1

データサイエンス の環境

プラットフォームと言語

以下のように、いくつかの選択肢がありますが、中でも Google Colaboratory は、Googleアカウントさえあれば、何の準備もなく学習をスタートさせることができる点、また個人のPCではハードルが高い GPU環境 を使うことができる点で注目を集めています。
 ローカル、つまり自分のPC内で完結させたい場合は、Anaconda 環境をインストールして、Python あるいは R を使うのが良いかと思います。

Python ライブラリ

Python を使う前提で、いくつかの定番ライブラリを紹介します。()の中はライセンス形式です。

Notebookの公開

分析の結果(JupyterNotebook)を他者に見せたい場合はどうするか・・
 JupyterNotebook のデータ(.ipynb)ファイルは、JSON 形式のテキストファイルなので、そのままだと意味不明の状態です。これを開発中のノート形式と同様に閲覧できるようにするには・・・





可視化

概要

可視化とは、物事の関係性を視覚的に捉えられるように、データを画像・グラフ・図表などに変換することを言います。代表的なのは「散布図」です。

用語解説


プログラム例

以下に、Matplotlib を用いたグラフ表示のサンプルを掲載しています。
ipynb(JupyterNotebook)形式で、GitHubに置いていますが、レンダリングがタイムアウトする場合は、下の nbviewer 経由でご覧下さい。





線形回帰|Linear Regression

概要(教師あり|回帰)

線形回帰は、説明変数 x と目的変数 y との間にある関係を求める、つまり y = f(x) となる関数f を求める代表的な手法です(教師あり学習|回帰)。
 線形とは、文字通り説明変数と目的変数の関係を表すグラフが直線(2変数の場合は平面)になるもので、関係式は以下のような一次式の結合(線形結合)で表現されるます。複数のデータセットから、最適なパラメータ wi を求めることで、あらゆる状況下での y を予測できるようになります。

 y = w0 + w1・x1 + w2・x2・・・ + wn・xn

計算は、上記の式が表す直線(多次元)と実際のデータとの二乗誤差(距離)が最小になるように wi を求めます。最小二乗法といいます。


用語解説


参考解説


プログラム例

以下に、線形回帰のサンプルを掲載しています。
ipynb(JupyterNotebook)形式で、GitHubに置いていますが、レンダリングがタイムアウトする場合は、下の nbviewer 経由でご覧下さい。





ロジスティック回帰|Logistic Regression

ロジスティック回帰は、2値分類のアルゴリズムで、0から1の範囲の確率を示すロジスティッック関数を用いて推測します。例えば、商品を購入するか否か、衝突するか否か、採用すべきか否かなどの2値分類に用います。

σa(x) = 1 / ( 1 + e-ax )

(以下、準備中)

概要(教師あり|分類)

用語解説

プログラム例





サポートベクターマシン|Support Vector Machine(SVM)

サポートベクターマシンは、グループ間のマージン(余白)を最大化するという発想でデータを分類する手法です。
 与えられたデータが線形分離可能ではない場合は、カーネル法を併用して、データを高次元の特徴空間上へ写像するかたちで分類します。
GoogleImage:サポートベクターマシン カーネル法

(以下、準備中)

概要(教師あり|分類)

用語解説

プログラム例





決定木|Decision Tree

概要(教師あり|分類・回帰)

決定木は、対象がどのカテゴリー(名義尺度)に属するかを予測する「クラス分類(教師あり学習)」の代表的な手法の一つで、条件分岐によってグループを分割します。意志決定の参考となる情報を得るためのグラフとなるもので、文字どおり、幹から枝葉へと向かう樹木のような有向グラフになります。例えば、運動会の実施か延期かの意思決定を行うのに、説明変数(入力データ)として、天候、気温、湿度、風速といったものを与え、目的変数(分類結果)には、「実施する」、「実施しない」といった目的変数が設定されます。

プログラム例(分類)

以下に、決定木のサンプルを掲載しています。データ全体を、訓練データとテストデータに分けて機械学習を行っています。
 ipynb(JupyterNotebook)形式で、GitHubに置いていますが、レンダリングがタイムアウトする場合は、下の nbviewer 経由でご覧下さい。





ランダムフォレスト|Random Forest

条件分岐をもった幾つかの決定木をランダムに構築して、それらの結果を組み合わせて、「分類」または「回帰」を行う多数決的な手法です。決定木の集合体を用いた「アンサンブル学習」と言われます。

(以下、準備中)

概要(教師あり|分類・回帰)

用語解説

プログラム例




ニューラルネットワーク|Neural Network(NN)

ニューラルネットワークは、クラス分類(教師あり学習)の代表的な手法のひとつで、今話題のディープラーニングはその応用にあたります。

概要(教師あり|分類)

用語解説

プログラム例

記事を独立させました。> NeuralNetwork






主成分分析|Principal Component Analysis(PCA)

概要(教師なし|次元削減)

主成分分析とは多変量解析手法のひとつで、多数の説明変数を、少数の合成変数(複数の変数が合体したもの)に要約する手法です。私たちが視覚的にイメージできるのは、2次元の平面あるいは3次元の空間までで、変数がそれ以上に多くなると、何と何が連動するか、あるいは無関係か・・といった情報の意味を捉えにくくなります。そこで、複数の変数をまとめて2、3の変数に次元を落としてしまおう・・というのが次元削減の考え方です。

例えば、数学、物理、化学、生物、地理、歴史、国語、英語という8科目の成績(変数)からなるデータを、総合学力(高⇄低)と得意領域性(理系⇄文系)という2つの指標に要約して説明しよう・・というのがそれにあたります。

主成分分析は、より分散の大きな指標に注目します。分散が大きい方がデータ間の比較がしやすいからです(分散が小さい=どのデータも変わり映えしないということで、そのような変数はあまり注目に値しません)。上の例で、例えば「総合学力」の分散が最も大きい場合は、これを「第一主成分」、次に得意領域性であれば、これを「第2主成分」と言います。

参考イメージ:GoogleImage:主成分分析

プログラム例

以下に、主成分分析 のサンプルを掲載しています。
ipynb(JupyterNotebook)形式で、GitHubに置いていますが、レンダリングがタイムアウトする場合は、下の nbviewer 経由でご覧下さい。


用語解説





k-means法|k-means Clustering

概要(教師なし|クラスタリング)

k-means法は、クラスタリング(教師なし学習)の代表的な手法のひとつで、サンプルをグループ分けする目的で使用します。
 クラスターというのは「房」「集団」「群れ」のことで、類似したデータが集まっている様子を意味します。説明変数の数が多くなると、人間の目では直感的な分類ができませんが、例えば全体を3つに分類できるという前提で、多次元軸上でのグループの重心を仮定して、データ間の距離を測ると、それぞれの距離(ズレ)を最も小さくするような重心とデータセットを見出すことができます。対象を分けるという点では上記の分類と似ていますが、クラスタリングの場合は、いくつに分類するかを分析者が事前に決定するのみで、事前に目的変数を定義することはありません。3つに分けてみたら、それぞれこんなタイプのかたまりがあることがわかりました・・といった作業になります。
 k-means法の k はクラスターの個数を意味するもので、この手法では、いくつのクラスターに分類するかを事前に決めて、クラスター内では分散が小さく、クラスター間では分散が大きくなるように各データをクラスターに振り分けていきます。
 以下のような手順で、計算処理を繰り返し、結果が収束した時点で、処理をストップします。ひたすら計算を繰り返す・・という点で、当然ですが、これもコンピュータが登場してはじめて現実的なものとなりました。
1) 各データをランダムにクラスタに割り当てる(初期設定)
2) クラスタの重心を求める
3) 各データのクラスタを、一番重心の近いクラスタに変更する
4) 3) でデータの入れ替えがどの程度発生しているかチェック
5) 4) の結果、変化がなければ収束したとみなして終了。
 入れ替えが生じている場合は、2) に戻る(計算と入れ替えを繰り返す)

プログラム例

以下に、k-means法 のサンプルを掲載しています。
ipynb(JupyterNotebook)形式で、GitHubに置いていますが、レンダリングがタイムアウトする場合は、下の nbviewer 経由でご覧下さい。

クラスタ数を「3」に設定してクラスタリングすると、データの性質から、Species と一致するクラスタリングができていることがわかります。




付記:機械学習とデータマイニング

これまで紹介してきたいくつかの事例は、 機械学習データマイニングという言葉と深い関係があります。

機械学習とは、大量のデータを利用した反復的な学習によって情報処理モデルを作成する手法のことで、一方データマイニングとは、大量のデータから役立つ可能性のある未知の知見を抽出する発見的(heuristic)な手法のことです。
 両者の目的の違いから言うと、機械学習の主目的が、入力データを「既知」の特徴と照合させる(「教師あり」で訓練する)ことにあるのに対し、データマイニングの目的は、データから「未知」の特徴を発見する(「教師なし」)ことにある・・というふうに、説明することができます。応用先という視点で言えば、機械学習の(今話題の)応用先は主に AIシステム。データマイニングの応用先は新たなビジネス・・ということができます。

上記の事例をこれらの言葉で確認すると、以下のようになります。




データライブラリ

データサイエンスの学習には、プログラムの動作を試すのにサンプルデータが必要になります。よく用いられる統計データサンプルを紹介します。
 なお、ROrange には、はじめからデータサンプルが同梱されていて、その中には、以下で紹介する著名なデータセットも含まれています。

著名なリポジトリ

以下、個別のデータセットで著名なものの一例です。

iris.csv

irisデータとは、英国の植物学者ロナルド・フィッシャー氏が 1936年の論文に発表した多変量データです。 Iris setosaIris virginicaIris versicolor という3種類のアイリス(あやめ)について、それぞれ 50サンプルずつ集めた、計150件のデータからなるデータセットで、変数は、がく片の長さ、がく片の幅、花びら長さ、花びらの幅(単位はいずれも cm)の4つです。
 以下、様々なURLから、そのデータを取得することができます。また Python のライブラリにも付属しているので、回帰分析や多変量解析など、様々な事例学習にサンプルとして利用できます。


HairEyeColor

統計学を受講する592人の学生について、髪と目の色と性別の分布。

The Boston Housing Dataset

ボストンの物件の価格と、物件の人口統計に関する情報。

CRIM・・・犯罪発生率(人口単位)
ZN・・・25,000平方フィート以上の住宅区画の割合
INDUS・・・非小売業の土地面積の割合(人口単位)
CHAS・・・チャールズ川沿いかどうか(1:Yes、0:No)
NOX・・・窒素酸化物の濃度(pphm単位)
RM・・・1戸あたりの平均部屋数
AGE・・・1940年よりも前に建てられた家屋の割合
DIS・・・ボストンの主な5つの雇用圏までの重み付きの郷里
RAD・・・幹線道路へのアクセス指数
TAX・・・10,000ドルあたりの所得税率
PTRATIO・・・教師あたりの生徒の数(人口単位)
B・・・アフリカ系アメリカ人居住者の割合(人口単位)
LSTAT(%)・・・低所得者の割合
MEDV・・・ 所有者が住んでいる住宅価格の中央値(単位 $1000's)

Wine Quality

ポルトガルワインの一種であるヴィーニョ・ヴェルデ(Vinho Verde)を測定したデータで、データセットは赤ワインと白ワインの2種類のデータ群からなります。ワイン(銘柄不明)ごとに測定された13種類の成分データとそのワインの味を評価したグレード(数値)がわかります(グレードは3人以上のワイン査定士が評価した結果の中間値で、「0:とてもまずい」 から 「10:絶品」まで。

Alcohol・・・アルコール
Malic acid・・・リンゴ酸
Ash・・・灰
Alcalinity of ash・・・灰のアルカリ性
Magnesium・・・マグネシウム
Total phenols・・・フェノール類全量
Flavanoids・・・フラバノイド
Nonflavanoid phenols・・・非フラバノイドフェノール類
Proanthocyanins・・・プロアントシアニン
Color intensity・・・色彩強度
Hue・・・色調
OD280/OD315 of diluted wines・・・蒸留ワインのOD280/OD315
Proline・・・プロリン

THE MNIST DATABASE

手書き文字のサンプルデータ配布サイト。MNIST(エムニスト)は、手書きの数字画像セットで、28 x 28 ピクセル、0 (白) ~ 255 (黒) の値からなる画像が計70,000枚。そのうち60,000枚はトレーニングセットで10,000枚はテストセット。画像認識のサンプルとして有名です。
http://yann.lecun.com/exdb/mnist/

MegaFace and MF2

約70万人分の顔写真(同一人につき複数画像)が用意されています。顔認証の機械学習のサンプルに使えます。




APPENDIX

関連ページ




PAGES

GUIDE

DATA


*1 一般に入力の方が数(次元)が多いので y は小文字、X は大文字で書いたりします。y が値とすれば、X(大文字のエックス)はベクトル、 y がベクトルとすれば、Xは行列・・というイメージです。
添付ファイル: fileLeastSquaresMethod.png 77件 [詳細] fileMNIST.jpg 73件 [詳細]
Last-modified: 2019-11-12 (火) 17:57:35