データセット

統計や機械学習で用いるデータ集合体
DX魔法少女
会計処理や統計解析、機械学習などの目的で集められ、ある一定の形式や構造に整えられたデータの集合体のことをデータセット(data set)と呼ぶ。
コンピュータはかつて電子計算機と呼ばれたように、データセットを扱う機会がとても多い。プログラム開発に追われて忘れしまいがちだが、そのプログラムが扱うデータセットが「ある一定の形式や構造」に整えられていないと、実行時エラーが発生してしまう。
そこで今回は、データセットの「ある一定の形式や構造」について振り返っておこう。

データの属性を合わせる

データの属性を合わせる
これまで「配列、辞書」「多次元配列、連想配列」「リスト構造」「キュー構造」「スタック構造」「ツリー構造」「二分探索木」「平衡木とAVL木」「ヒープ」といったデータ構造を学んできた。これらはデータセットの構造を表す代表的なものだ。
そして、これらのデータ構造に共通していることは、要素やノードといったデータ構造の最小単位に入っているデータの形式(属性)は同じでなければならない――すなわち、データセットは同じ形式(属性)をもったデータの集合体である、ということだ。
たとえば、こんなデータセットがあるとする。\[ 139.8 ,145.6, 142.3, 150.2, 141.7, 136.5, 147.9, 143.1, 144.4, 138.7 \] これは、ある小学校5年生のクラスから男子10人分を抜き出して、その身長を並べたものだ。
これらのデータの尺度は、量的データのうちの比例尺度をもつ。つまり、0が原点であり、間隔と比率に意味をもつ。そして、すべてのデータの単位はセンチメートルに統一されている。また、有効数字は小数第1位だ。
このデータセットに体重が混じっていたら、クラスの男子の平均身長を計算できなくなってしまう。また、有効数字がバラバラだと、平均値を小数以下第何位で丸めればよいのか分からなくなってしまう――この場合、有効数字の桁数が一番大きいものに合わせることになりますが、それより小さいデータは計測値としては〈細かすぎる〉ということになる。

個々のデータは有限小数で、正の数だ。
ただし、注意すべきことがある。それは、欠席して身体検査を受けられなかった児童のデータをどう扱うかだ。データが無いからといって \( 0.0 \) にしてしまうと、クラスの身長の平均値が間違った値になってしまう。
NULL (ヌル) nil (ニル)  として扱うべきだが、配列やリストにNULL値を入れると、正しく統計計算できない処理系(例:Python)があるので工夫しよう。

データの尺度

比例尺度以外の尺度を一覧にした。
尺度名ゼロの意味順序
名義尺度なし×××
順序尺度なし××
間隔尺度便宜的×
比例尺度絶対的
たとえば、社員番号は名義尺度である。便宜上、社員番号順に並べることはあっても、それが社員の序列を示すわけではない。社員番号の差や比には意味がない。かつて、スティーブ・ジョブズはAppleの社員番号「ゼロ」だったことがあるが、これも大して意味はない。
順序尺度は、たとえば「初めて買ったデジカメで新宿夜景を撮る」に掲載している新宿西口の超高層ビルの高さ順一覧がそれである。順位が「ゼロ」になることはないし、差や比には意味がない。
摂氏(℃)は、意外に思われるかもしれないが、間隔尺度である。水の氷点を0℃、沸点を100℃と定義した人工的な温度スケールです。10℃より20℃のほうが高いので順序はあるし、差にも意味があります。しかし、20℃は10℃の2倍暖かいとは言えませんし、0℃は温度が無いと言うわけではありません。

データの次元

たとえば、こんな健診データがあったとする。
社員番号性別年齢身長体重最大血圧最小血圧
1001451726813585
1002321585212276
1003391807514090
1004281656012580
1005501758214592
1006411605513084
1007361787713888
1008301625912678
1009291707012882
1010351595412075
横方向(行方向)にデータを見た場合、社員1人当たり7つのデータがある。これを 7次元のデータと呼ぶ。数学や物理学で学んだ空間が3次元という意味とは異なり、異なる属性をもったデータのかたまりを次元と呼ぶ。
次に、縦方向(列方向)にデータを見ていくと、各々の行のデータの属性は一致している。身長(単位:cm)に体重(単位:kg)が混じることはない。

このように、次元をもっており、個々の次元のデータの属性が合っているデータセットのことをデータ表、またはテーブルと呼ぶ。これは Excelのシートに似ており、また、データベースのテーブルも同じ構造になっている。

データ構造と NULL

前述のように Excelでもデータセットを扱うことができるのだが、このとき注意することがある。それは、空行や空列、セル結合を用いないことである。つまり、Excelのシートをテーブル化できるようなデータ構造に保つ必要がある。そうしないと、データベースやデータウェアハウスに投入したり、BI(Business Intelligence)や BA(Business Analytics)で2次利用することができなくなる。Microsoft Copilotを使った分析もできない。
つまり、他人に見せるための見栄えではなく、データ構造を正しく保つことが肝要である。

ここで問題になるのが、データセットの一部が欠けている場合だ。
たとえば、上述の健診データの場合、何かの都合で血圧を計測できなかった社員がいたとする。それをどう表現するかという問題である。
Excelであれば空セルにするのが常道だが、データとしては「ゼロ」「空文字」「undefined」ではない。欠損値を表す NULL が妥当だろうが、プログラミング言語によっては None や NaN、nil と表記することがあるので注意が必要だ。
(この項おわり)
header