データサイエンス全般

ビッグデータとスモールデータ

ビッグデータとは

ビッグデータ(Big Data)とは何でしょうか?

この回答は、構造化データと非構造化データ、時系列データと非時系列データ、あるいは実験データと観察データについて語るより、ずっと困難です。

ビッグデータというのは、一種のバズワード[1]説得力を高めるためによく用いられているが、じつは無意味、または定義の曖昧な言葉。です。データ容量がいくら以上だとビッグデータだ、という決まりもありません。

ここではビッグデータについての直截的な回答を避け、スモールデータとの対比において、どのような傾向的特徴があるかについて見ていきたいと思います。

ビッグデータとスモールデータ

題材として、次のような構造化データを取り上げます。[2]本例は、Rにプリセットされているcarsデータセットより、ランダムで1/5行(10行)を抜き出したもの。

10行2列のデータです。speedは自動車の速度、distはブレーキを踏んでから止まるまでの距離(distance)を表しています。

speed dist
4 2
7 22
12 24
13 34
14 80
18 76
18 56
20 32
20 64
25 85

散布図を描くと、次のようになります。

「speedからdistを予測する」というタスクを考えます。distを目的変数、speedを説明変数とした線形単回帰モデルをあてはめると、次のような回帰直線(予測式の直線)を描くことができます。

(既知のデータに対する)あてはまりの良さを表す指標として「決定係数」というものがありますが、このとき決定係数は0.592です。

これを仮に「スモールデータ」だとして、データを大きくしていったときに、どのような特徴が現れるかを見ていきます。

ここで「データが大きい」といった場合、2つの方向性があります。

1つは「列数が大きい場合(列方向にデータが大きい場合)」、そしてもう1つは「行数が大きい場合(行方向にデータが大きい場合)」です。それぞれ、まったく異なった性質を持ちます。

列数が大きい場合

列数は、変数の数に対応しています。

目的変数は1つ(dist)として、説明変数の数が大きい場合を考えます。つまりspeedの他に、説明変数として使える変数があるような状況です。

ここでは便宜上、次のような多項式回帰モデルを想定し、多項式の次数を大きくしていくことを考えます。[3] … Continue reading

$$ y = \sum_{i=0}^k \beta_i x^i + \varepsilon $$

$ y $がdistに、$ x $がspeedに対応しています。$ i $は多項式の次数、$ \beta_i $は回帰係数($ i=0 $のとき定数項)、$ \varepsilon $は誤差です。

まず、speedの2次項「speed2」を追加した場合です。

speed speed2 dist
12 144 24
7 49 22
20 400 32
4 16 2
18 324 76
14 196 80
20 400 64
25 625 85
13 169 34
18 324 56

2次の多項式回帰モデルをあてはめると、次のような回帰曲線(予測式の曲線)を描くことができます。

このとき決定係数は0.6037と、線形単回帰モデルよりも(既知のデータに対する)あてはまりが良くなっています。

さらに、speedの3次項「speed3」を追加します。

speed speed2 speed3 dist
12 144 1728 24
7 49 343 22
20 400 8000 32
4 16 64 2
18 324 5832 76
14 196 2744 80
20 400 8000 64
25 625 15625 85
13 169 2197 34
18 324 5832 56

3次の多項式回帰モデルをあてはめると、次のような回帰曲線を描くことができます。

このとき決定係数は0.6194と、2次の多項式モデルよりも(既知のデータに対する)あてはまりが良くなっています。

あとは同じことの繰り返しですので、speedの7次項(speed7)まで追加した状態を考えます。100,000を超える数字は省略して表示しています。

speed speed2 speed3 speed4 speed5 speed6 speed7 dist
12 144 1728 20736 248832 3E+06 4E+07 24
7 49 343 2401 16807 117649 823543 22
20 400 8000 160000 3E+06 6E+07 1E+09 32
4 16 64 256 1024 4096 16384 2
18 324 5832 104976 2E+06 3E+07 6E+08 76
14 196 2744 38416 537824 8E+06 1E+08 80
20 400 8000 160000 3E+06 6E+07 1E+09 64
25 625 15625 390625 1E+07 2E+08 6E+09 85
13 169 2197 28561 371293 5E+06 6E+07 34
18 324 5832 104976 2E+06 3E+07 6E+08 56

7次の多項式回帰モデルをあてはめると、次のような回帰曲線を描くことができます。

このとき決定係数は0.9027と、これまででもっとも高い値になっています。

すべての点を縫うように、点の近傍を回帰曲線が通っていることがわかります。一方で、曲線は枠外にはみ出るくらい大きく波打っています

確かに(既知のデータに対する)あてはまりはよいのですが、これを未知のデータ(speed)に対してdistを予測するモデルとして使って問題ないでしょうか?

例えば、speedが5のときdistがマイナスの値になる、あるいはspeedが10のときdistが120を超える値になるなどと、予測してよいでしょうか? ドメイン知識から判断して、そうならないことは明らかです。

これが過学習(overfitting)と呼ばれる問題です。列数が大きくなるほど、過学習が起こりやすくなります[4]ドメイン知識だけでなく、過学習を抑制するための技術的な手法も存在します。

本例は比較的シンプルな例ですが、テーマによっては説明変数(特徴量)の数が数千、数万、あるいはそれ以上の場合も存在します。見えていないだけで、本例における「7次の多項式回帰モデル」のようなものを作っていた、ということが往々にしてあります。

行数が大きい場合

行数は、サンプルサイズ、観測値の数に対応しています。

これまで見てきたのは10行のデータでしたが、さらに観測を続け、全体で50行のデータを得られたとします。

speed dist
4 2
4 10
7 4
7 22
8 16
9 10
10 18
10 26
10 34
11 17
11 28
12 14
12 20
12 24
12 28
13 26
13 34
13 34
13 46
14 26
14 36
14 60
14 80
15 20
15 26
15 54
16 32
16 40
17 32
17 40
17 50
18 42
18 56
18 76
18 84
19 36
19 46
19 68
20 32
20 48
20 52
20 56
20 64
22 66
23 54
24 70
24 92
24 93
24 120
25 85

散布図を描くと、次のようになります。

線形単回帰モデルをあてはめると、次のような回帰直線を描くことができます。

さらに、2次の多項式回帰モデルをあてはめると、次のような回帰曲線を描くことができます。表は省略します。

下に膨らんだような曲線になっています。10行のデータを使った場合は、上に膨らんだような曲線になっていました。どちらが正しいのでしょうか?

(正しくサンプリングが行われていることを前提として)行数が大きくなるほど、当然ですが標本(観測値の集合)の特性は、母集団の特性に近づく傾向にあります

本例ではドメイン知識からも、下に膨らんだような曲線になるはずだ、ということがいえます。

また統計解析では仮説検定というフレームワークを利用しますが、行数が大きくなるほど統計的有意性の判断が難しくなる、という点には注意が必要です。

列数も行数も大きい場合

最後に考えるのは、列数と行数、どちらも大きい場合です。

50行のデータを得られ、かつspeedの7次項(speed7)まで追加した状態を考えます。100,000を超える数字は省略して表示しています。

speed speed2 speed3 speed4 speed5 speed6 speed7 dist
4 16 64 256 1024 4096 16384 2
4 16 64 256 1024 4096 16384 10
7 49 343 2401 16807 117649 823543 4
7 49 343 2401 16807 117649 823543 22
8 64 512 4096 32768 262144 2E+06 16
9 81 729 6561 59049 531441 5E+06 10
10 100 1000 10000 100000 1E+06 1E+07 18
10 100 1000 10000 100000 1E+06 1E+07 26
10 100 1000 10000 100000 1E+06 1E+07 34
11 121 1331 14641 161051 2E+06 2E+07 17
11 121 1331 14641 161051 2E+06 2E+07 28
12 144 1728 20736 248832 3E+06 4E+07 14
12 144 1728 20736 248832 3E+06 4E+07 20
12 144 1728 20736 248832 3E+06 4E+07 24
12 144 1728 20736 248832 3E+06 4E+07 28
13 169 2197 28561 371293 5E+06 6E+07 26
13 169 2197 28561 371293 5E+06 6E+07 34
13 169 2197 28561 371293 5E+06 6E+07 34
13 169 2197 28561 371293 5E+06 6E+07 46
14 196 2744 38416 537824 8E+06 1E+08 26
14 196 2744 38416 537824 8E+06 1E+08 36
14 196 2744 38416 537824 8E+06 1E+08 60
14 196 2744 38416 537824 8E+06 1E+08 80
15 225 3375 50625 759375 1E+07 2E+08 20
15 225 3375 50625 759375 1E+07 2E+08 26
15 225 3375 50625 759375 1E+07 2E+08 54
16 256 4096 65536 1E+06 2E+07 3E+08 32
16 256 4096 65536 1E+06 2E+07 3E+08 40
17 289 4913 83521 1E+06 2E+07 4E+08 32
17 289 4913 83521 1E+06 2E+07 4E+08 40
17 289 4913 83521 1E+06 2E+07 4E+08 50
18 324 5832 104976 2E+06 3E+07 6E+08 42
18 324 5832 104976 2E+06 3E+07 6E+08 56
18 324 5832 104976 2E+06 3E+07 6E+08 76
18 324 5832 104976 2E+06 3E+07 6E+08 84
19 361 6859 130321 2E+06 5E+07 9E+08 36
19 361 6859 130321 2E+06 5E+07 9E+08 46
19 361 6859 130321 2E+06 5E+07 9E+08 68
20 400 8000 160000 3E+06 6E+07 1E+09 32
20 400 8000 160000 3E+06 6E+07 1E+09 48
20 400 8000 160000 3E+06 6E+07 1E+09 52
20 400 8000 160000 3E+06 6E+07 1E+09 56
20 400 8000 160000 3E+06 6E+07 1E+09 64
22 484 10648 234256 5E+06 1E+08 2E+09 66
23 529 12167 279841 6E+06 1E+08 3E+09 54
24 576 13824 331776 8E+06 2E+08 5E+09 70
24 576 13824 331776 8E+06 2E+08 5E+09 92
24 576 13824 331776 8E+06 2E+08 5E+09 93
24 576 13824 331776 8E+06 2E+08 5E+09 120
25 625 15625 390625 1E+07 2E+08 6E+09 85

7次の多項式回帰モデルをあてはめると、次のような回帰曲線を描くことができます。

10行のデータでは枠外にはみ出るほど大きく波打っていたのが、50行のデータだと波の高さがかなり抑えれてされていることがわかります。

列数が大きくなるほど、過学習しやすくなることは上でお伝えした通りですが、一方で行数が大きくなるほど、過学習を抑制する効果が働きます。気にするべきは、列数と行数のバランスです。

ここで、50行のデータがあれば7次の多項式回帰モデルをあてはめるべきだ、といっているわけではありません[5]本例では、distを平方根変換した上で線形単回帰モデルをあてはめるのが、ベストな解法ではないでしょうか。。7次の多項式回帰モデルのように(無駄に)モデルを複雑にしたとしても、行数が大きければすくなくとも、極端な過学習を回避することができるということです。

データの種類(良いデータの条件)
データの種類 様々な観点から、データを種類分けすることができます。 ここでは、構造化データと非構造化データ、時系列データと非時系列データ、実験データと観察データ、ビッグデータとスモールデータについて投稿した記事をまとめています。...

脚注

脚注
1 説得力を高めるためによく用いられているが、じつは無意味、または定義の曖昧な言葉。
2 本例は、Rにプリセットされているcarsデータセットより、ランダムで1/5行(10行)を抜き出したもの。
3 多項式回帰モデルはどれだけ次数が大きくなっても、回帰曲線(予測式の曲線)を平面上に描くことができるという、説明上好ましい特徴があります。多項式回帰モデルは、線形重回帰モデルの一種と考えることができます。
4 ドメイン知識だけでなく、過学習を抑制するための技術的な手法も存在します。
5 本例では、distを平方根変換した上で線形単回帰モデルをあてはめるのが、ベストな解法ではないでしょうか。
タイトルとURLをコピーしました