「データサイエンス」とは
データサイエンス(data science)とは、さまざまなデータを収集・整理・分析し、そこから傾向や規則性などの有用な情報や知見を得て、問題の解決や意思決定に役立てることです。
データサイエンスでは、まず「何を知りたいのか」という目的を明確にし、その目的に必要なデータを集め、分析できる状態に整え、統計的な方法や機械学習などを用いて分析します。そして、分析結果を解釈し、必要に応じて予測や具体的な施策につなげます。
たとえば、店舗の売上を増やしたい場合には、POSデータから「どの商品が、どの店舗で、何時ごろ、どれくらい売れているか」を調べることができます。その結果から販売傾向を発見し、商品の品ぞろえや営業時間、在庫量などの改善に役立てることができます。
データ分析の基本的な流れ
データ分析は、おおむね次のような流れで行います。
目的を決める → データを収集する → データを整える → 分析・可視化する → 結果を解釈する → 活用する
たとえば、ある地域の気温の変化を調べる場合を考えます。
「なにのために、どの地域の、どの期間の気温を調べるか」という目的や対象を決める。
気象庁などから必要なデータを収集する。
欠損値や表記の違いなどを確認し、分析しやすい形へ整える。
平均値を計算したりグラフを作ったりして、分析・可視化する。
気温が上昇しているかなど、分析結果から意味を読み取る。
必要であれば、将来予測や対策などの意思決定に活用する。
したがって、
収集 → 前処理 → 分析
という順序は、データ分析の基本として重要です。
分析に必要なデータを考える
データ分析では、「どんなデータでも大量に集めればよい」というわけではありません。調べたいことに必要な項目が記録されているかを考える必要があります。
たとえば、小売店などでは、POS(Point of Sales:販売時点情報管理)システムによって、商品が販売されたときの情報を記録することがあります。
POSデータには、たとえば、
- 商品コード
- 販売数量
- 販売日時
- 店舗コード
- 販売金額
などが記録されます。
これらから、
店舗別・時間帯別・商品別の販売数量や売上額
などを分析できます。
また、ポイントカードなどと組み合わせることにより、
- 年齢層ごとの購入商品の違い
- 性別による来店時間帯の違い
- 同じ顧客が繰り返し購入する商品の傾向
などを分析できます。
しかし、「なぜその商品を購入したのか」という理由をデータだけから直接知ることはできません。
データから分かることは、原則として記録されているデータの内容に制約される。
という考え方が重要です。
前処理
収集したデータをそのまま分析できるとは限りません。
たとえば、
- 欠損値がある
- 同じデータが重複している
- 「東京都」と「東京」のような表記ゆれがある
- 日付の形式が異なる
- 数値として扱うべきものが文字列になっている
- 異常に大きな値が含まれている
といった問題があることがあります。
そこで、分析を行う前にデータを整えます。この作業を広く前処理といいます。
前処理には、
- 欠損値への対応
- 重複データの削除
- 表記の統一
- データ形式の変換
- 必要な項目の抽出
- 項目の粒度の統一
などが含まれます。
データクレンジング
前処理のうち、特にデータに含まれる
などを修正して、データの品質を高める処理をデータクレンジング(data cleansing)といいます。
たとえば、
「大阪」「大阪府」「Osaka」
という表記をすべて「大阪府」に統一するといった処理が該当します。
異なるデータを組み合わせる
異なる時期や異なるシステムから得たデータを組み合わせる場合は、データの意味や粒度をそろえることが重要です。
たとえば、10年前のデータでは年齢が
「23歳」
と記録され、現在のデータでは
「20~29歳」
と記録されているなら、10年前の年齢を10歳刻みの年齢層に変換することで比較しやすくなります。
住所も、
「○○市○○町」
と
「○○市」
を比較するなら、市単位に統一する方法が考えられます。
さらに、
調査年を区別したデータ
| 調査年 | 年齢層 | 市 |
| 2016 | 20~29歳 | A市 |
| 2026 | 20~29歳 | A市 |
のように調査年を表す列を追加すると、どの年のデータかを区別しながら分析できます。
データの代表値
大量の数値をそのまま眺めても特徴を把握しにくくなります。そのため、データ全体の特徴を一つの数値で表す代表値が用いられます。
代表的なものに、
があります。
平均値
平均値は、
データの合計 ÷ データの個数
で求めます。
たとえば、
10、20、20、26、40、50、100、440、2000
の平均値は、
(10+20+20+26+40+50+100+440+2000)÷9
=2706÷9
≒300.7
となります。
加重平均
アンケートなどで、同じ得点を取った人数が分かっている場合には、
値×人数
を利用して平均値を求めます。
たとえば、
- 5点:50人
- 4点:250人
- 3点:150人
- 2点:50人
- 1点:0人
なら、
(5×50+4×250+3×150+2×50+1×0)÷500
=3.6
となります。
目標が4.0点で、目標達成率を
実績÷目標
で求めるなら、
3.6÷4.0=0.90
となります。
中央値
中央値は、データを小さい順に並べたときの中央の値です。
データ数が奇数なら中央の1個、偶数なら中央の2個の平均を求めます。
先ほどの
10、20、20、26、40、50、100、440、2000
では9個のデータがあるため、5番目の
40
が中央値となります。
外れ値と平均値
上のデータでは2000という非常に大きな値が含まれているため、
と大きく異なります。
このように、他の値から大きく離れた値を外れ値といいます。
平均値は外れ値の影響を強く受ける一方、中央値は比較的影響を受けにくくなります。
したがって、データの特徴を調べるときには、平均値だけを見るのではなく、中央値やデータの分布も確認することが重要です。
データのばらつき
平均値が同じでも、データの散らばり方は異なることがあります。
たとえば、
A:49、50、51
B:10、50、90
はいずれも平均値50ですが、Bの方が値が広く散らばっています。
このようなデータのばらつきを表す代表的な指標が、
です。
分散
分散は、各データが平均値からどれくらい離れているかをもとに求めます。
基本的な考え方は、
各データについて「値-平均値」を求める
それを2乗する
その平均を求める
というものです。
平均値の近くにデータが集中していれば分散は小さく、平均値から離れたデータが多ければ分散は大きくなります。
平均値の近くに集まっているデータほど分散が小さい。
標準偏差
分散の平方根をとったものが標準偏差です。
標準偏差もデータのばらつきを表し、
- 標準偏差が小さい → 平均値の近くに集まっている
- 標準偏差が大きい → 広くばらついている
と判断できます。
たとえば、
- A組:平均62点、標準偏差8点
- B組:平均64点、標準偏差5点
なら、B組の方が標準偏差が小さいため、得点が平均点の近くに集まっています。
クロス集計
クロス集計とは、二つ以上のカテゴリ変数を組み合わせ、それぞれの組合せに該当する件数や割合を表にまとめる方法です。
たとえば、生徒の「学年」とアンケートの「回答」を組み合わせると、
学年とアンケート回答のクロス集計
| 賛成 | 反対 |
| 1年 | 40 | 10 |
| 2年 | 30 | 20 |
| 3年 | 20 | 30 |
のような表を作ることができます。
これを見ることで、
「学年によって回答の傾向が異なるか」
などを調べられます。
クロス集計は、単なる数値の大小ではなく、カテゴリ同士の関係を調べるときによく使われます。
データの可視化
データをグラフや図で表し、特徴を分かりやすくすることを可視化(visualization)といいます。
たとえば、
- 棒グラフ
- 折れ線グラフ
- 散布図
- ヒストグラム
- 箱ひげ図
- ヒートマップ
などが使われます。
可視化すると、表だけでは分かりにくい傾向や外れ値を発見しやすくなります。
棒グラフ
棒グラフは、複数の項目について、数量や割合の大きさを比較するときに適しています。
たとえば、
- 商品A・B・Cの売上額
- 都道府県ごとの人口
- 教科ごとの平均点
- アンケートの各回答を選んだ人数
などを比較するときに用います。
横軸には「商品」「地域」「教科」のようなカテゴリを置き、縦軸には売上額や人数などの数値を置きます。
棒の長さや高さを比べることで、
「どの項目が大きいか、小さいか」
を読み取ることができます。
たとえば、
A商品:100個
B商品:150個
C商品:80個
なら、棒グラフにすることで、B商品の販売数量が最も多いことが視覚的に分かります。
棒グラフでは、それぞれの棒が別々のカテゴリを表しているため、通常、棒と棒の間には間隔を空けます。
折れ線グラフ
折れ線グラフは、時間の経過などに伴う連続的な変化や推移を見るときに適しています。
たとえば、
- 1年間の月別平均気温
- 日ごとの売上額
- 年ごとの人口
- 時間ごとのアクセス数
などを表します。
通常は横軸に時間、縦軸に測定した値を置き、各時点の値を線で結びます。
折れ線を見ることで、
- 増加している
- 減少している
- 一時的に急増している
- 周期的な変化がある
といった変化の傾向を把握しやすくなります。
棒グラフが「項目同士の大きさの比較」に適しているのに対して、折れ線グラフは時間などの順序に沿った変化を見ることに適しています。
散布図
散布図は、二つの数値データの間にどのような関係があるかを調べるときに用います。
一つ一つのデータについて、
をとり、一つの点として表します。
たとえば、
- 気温と飲料の販売数
- 身長と体重
- 勉強時間とテストの得点
- 広告費と売上額
などの関係を見ることができます。
点が全体として右上がりに分布していれば、一方が大きくなるほどもう一方も大きくなる傾向があります。
反対に右下がりなら、一方が大きくなるほどもう一方が小さくなる傾向があります。
このような二つの変数の関係を相関といいます。
ただし、散布図から関係が見つかったとしても、それだけで一方がもう一方の原因であるとは限りません。
また、折れ線グラフでは点を順番につないで「変化」を見るのに対し、散布図では通常、点を線で結ばず、点の分布のしかたから二つの変数の関係を見ることになります。
ヒストグラム
ヒストグラムは、多数の数値データがどの範囲にどれくらい分布しているかを見るためのグラフです。
たとえば、100人のテスト得点について、
- 0点以上10点未満
- 10点以上20点未満
- 20点以上30点未満
- …
のように一定の範囲に区切り、それぞれに何人いるかを棒の高さで表します。
このとき、数値を区切った一つ一つの範囲を階級、その階級に入るデータの個数を度数といいます。
ヒストグラムを見ると、
- どのあたりの値が多いか
- データがどのくらい広がっているか
- 左右対称に近いか
- 一方に偏っているか
- 山が一つか複数あるか
など、データ全体の分布の形を把握できます。
棒グラフとヒストグラムは見た目が似ていますが、用途が異なります。
棒グラフ
→ 商品A、商品B、商品Cなど、別々のカテゴリの大きさを比較する。
棒の高さで値を表します。
ヒストグラム
→ 得点や身長などの連続した数値を範囲ごとに分け、その分布を見る。
棒の面積で値を表します。階級の幅が変わる場合(年収の集計で100万円ごとに区切り、最後に1000万円以上とまとめるなど)棒の横幅を大きくして、その分高さを低くすることがあります。
ヒストグラムでは隣り合う階級が連続していることを表すため、通常、棒同士を隙間なく並べます。
箱ひげ図
箱ひげ図は、数値データの中心やばらつき、分布の違いを簡潔に比較するためのグラフです。
主に、
- 最小値
- 第1四分位数
- 中央値
- 第3四分位数
- 最大値
などを用いてデータの分布を表します。
データを小さい順に並べたとき、
- 全体の25%付近の値が第1四分位数
- 中央の値が中央値
- 全体の75%付近の値が第3四分位数
です。
箱ひげ図では、第1四分位数から第3四分位数までを箱で表し、その中に中央値を示す線を引きます。
たとえば、A組とB組のテスト結果を箱ひげ図で並べれば、
- どちらの中央値が高いか
- どちらの得点が広くばらついているか
- 得点の分布がどちら側に偏っているか
などを比較しやすくなります。
ヒストグラムが分布の形を詳しく見るのに向いているのに対し、箱ひげ図は、複数の集団について中心やばらつきをコンパクトに比較するときに便利です。
ヒートマップ
ヒートマップは、数値の大小を色の違いや濃淡で表す方法です。
たとえば、
- 曜日と時間帯ごとの店舗の来客数
- 地域ごとの人口移動量
- Webサイト上でよくクリックされる位置
- 二つの項目を組み合わせた値の大小
などを表すときに用いられます。
たとえば、横方向に「時刻」、縦方向に「曜日」を置き、来客数が多いところを濃い色、少ないところを薄い色にすると、
「金曜日の18時ごろに来客が集中している」
といったパターンを視覚的に発見しやすくなります。
ヒートマップは、一つ一つの値を正確に比較するというより、多数の値の中から全体的なパターンや集中している場所を見つけるのに適しています。
ただし、一部の値だけが非常に大きい場合、その値に色の範囲が引っ張られ、小さい値同士の違いが見えにくくなることがあります。
たとえば、
0、1、2、3、10、100、10000
のようなデータでは、10000が非常に大きいため、0~100程度の違いがほとんど同じ色に見えることがあります。
そのような場合には、値を
log(1+x)
のように変換してから色に対応させる方法があります。
この変換では、
log(1+0)=0
なので0を扱うことができ、非常に大きな値の差を圧縮できます。その結果、小さい値の違いもヒートマップ上で見やすくなります。
グラフの使い分け
どのグラフを使うかは、何を知りたいかによって決まります。
グラフの使い分け
| グラフ | 主に見るもの | 例 |
| 棒グラフ | カテゴリごとの大きさの比較 | 商品別の売上額 |
| 折れ線グラフ | 時間などに沿った変化 | 月別の平均気温 |
| 散布図 | 二つの数値の関係 | 気温と飲料販売数 |
| ヒストグラム | 一つの数値データの分布 | テスト得点の分布 |
| 箱ひげ図 | 分布の中心・ばらつきの比較 | クラス別のテスト結果 |
| ヒートマップ | 多数の値の大小やパターン | 曜日・時間帯別の来客数 |
特に、
「項目同士を比較する」なら棒グラフ
「時間による変化を見る」なら折れ線グラフ
「二つの数値の関係を見る」なら散布図
「一つの数値の分布を見る」ならヒストグラム
「複数の分布を比較する」なら箱ひげ図
「多数の値のパターンを色で見る」ならヒートマップ
と考えると使い分けやすくなります。
ビッグデータ
ビッグデータ(big data)とは、従来の方法では扱うことが難しいほど、大量で多様かつ高速に生成されるデータを指します。
代表的な特徴として、次の3Vがよく挙げられます。
- Volume(量):データ量が非常に多い
- Variety(多様性):表、文章、画像、動画、音声、位置情報など形式が多様
- Velocity(速度):データが高速に生成・更新される
たとえば、
- 交通ICカードの利用履歴
- Webサイトの閲覧履歴
- SNSへの投稿
- スマートフォンの位置情報
- センサーから送られるデータ
- 自動車の走行データ
- 画像や動画
などがビッグデータとして扱われることがあります。
ビッグデータは、表形式の数値だけに限りません。
大量のデータを分析することで、
- 商品の需要予測
- 交通量の予測
- 故障の予測
- 顧客行動の分析
- 危険地点の発見
などに利用できます。
たとえば、多数の自動車から
を収集し、それらを分析すると、
急ブレーキが頻繁に発生する危険な地点
を発見できる可能性があります。
これは、単にデータを保存するだけでなく、データを分析して新しい知見を得ている例です。
データマイニング
大量のデータの中から、これまで分かっていなかった有用な規則性、パターン、関連性などを発見することをデータマイニング(data mining)といいます。
たとえば、大量の購買履歴から、
「商品Aを購入した人は商品Bも購入することが多い」
という関連性を発見することなどが該当します。
前処理との違いを整理すると、
前処理
→ データを分析できる状態に整えます。
データマイニング
→ 整えたデータから有用な規則性などを発見します。
という違いがあります。
統計と機械学習
大量のデータから特徴を見つけたり、将来を予測したりする場合には、統計的手法のほかに機械学習を利用することもあります。
機械学習では、多数のデータからコンピュータに規則性を学習させ、
- 売上予測
- 需要予測
- 画像認識
- 迷惑メール判定
- 故障予測
などを行うことができます。
したがって、ビッグデータ分析では、
統計的手法だけでなく機械学習も有効な分析手段になり得ます。
帰納的推論
データから結論を考えるときには、帰納的推論がよく利用されます。
帰納的推論とは、
複数の具体的な観察結果から、より一般的な傾向や規則を推測する方法
です。
たとえば、
- A地域で気温が高い日に飲料の販売数が多かった
- B地域でも同じ傾向だった
- C地域でも同じ傾向だった
という観察結果から、
「気温が高いほど飲料の販売数が多くなる傾向があるのではないか」
という一般的な仮説を立てます。
これは、
個別の観察 → 一般的な傾向
へ進むため、帰納的推論です。
一方、
「気温が30℃を超えると販売数が増える」という一般法則を前提として、
「今日は32℃だから販売数が増える」
と個別の結論を導くのは演繹的推論です。
なお、帰納的推論によって得られる結論は、観察されたデータに基づく仮説や傾向であり、必ず成り立つことを論理的に保証するものではありません。
実験によって関係を調べる
二つの要因の関係を調べたい場合、単にデータを集めるだけでなく、実験を行うこともあります。
たとえば、
「ダーツを投げる速度が、中心からの距離に影響するか」
を調べるとします。
この場合、
- 投げる速度を複数設定する
- 距離や投げる人など、できるだけ他の条件をそろえる
- 各速度について複数回試行する
- 中心からの距離を記録する
- 各条件の平均値やばらつきを比較する
という方法が適切です。
ここでは、
投げる速度
が結果に影響を与えると考えて操作する変数であり、
中心からの距離
がその結果として測定する変数です。
一度だけ試行した場合、その結果が速度によるものなのか偶然なのか判断できません。
そのため、各条件で十分な回数を反復することが重要です。
また、調べたい要因以外の条件をできるだけそろえることを統制といいます。
データ分析で重要な考え方
データサイエンスでは、計算方法を覚えるだけでなく、
「このデータから何が分かり、何が分からないか」
を判断することが特に重要です。
たとえば、購入履歴から
「気温が高い日に飲料の販売数が多い」
という関係が見つかったとしても、それだけで
「気温の上昇だけが販売数増加の原因である」
と断定できるとは限りません。
休日、イベント、広告、店舗の立地など、別の要因が影響している可能性もあります。
したがって、
データに関係が見られることと、一方が他方の原因であることは同じではありません。
また、分析結果が正しくても、収集したデータ自体に偏りがあれば、得られる結論も偏る可能性があります。
そのためデータ分析では、
- 目的に合ったデータを集めているか
- 必要な項目が記録されているか
- 欠損値や外れ値がないか
- データの形式や粒度がそろっているか
- 十分なデータ数があるか
- 分析結果から言える範囲を超えて結論づけていないか
を確認することが重要です。
データサイエンスの全体像
データサイエンスの基本的な流れをまとめると、
① 問題・目的を設定する
何を知りたいのか、何を解決したいのかを明確にします。
↓
② 必要なデータを考える
目的を達成するために、どの項目が必要なのかを考えます。
↓
③ データを収集する
アンケート、POS、センサー、公開データなどからデータを集めます。
↓
④ 前処理・データクレンジングを行う
欠損、重複、表記ゆれなどを処理し、分析可能な形式へ整えます。
↓
⑤ 分析・可視化する
平均値、中央値、分散、標準偏差、クロス集計、グラフなどを利用して特徴を調べます。必要に応じて統計的手法や機械学習も利用します。
↓
⑥ 結果を解釈する
データからどのような傾向が読み取れるかを考えます。
↓
⑦ 予測・意思決定・改善へつなげる
得られた知見を実際の問題解決に利用します。
という流れになります。
データサイエンスでは、「大量のデータを持っていること」そのものが目的ではありません。データを適切に集め、整え、分析し、その結果を正しく解釈して問題解決につなげることが重要です。