不足と追加収集|データ要求・収集・利用条件

このページはプロモーション(広告)を含みます。

データ要求・収集・利用条件(中級・読む30分+演習40分)

この授業のゴール

仕事でどう使うか

必要なデータが最初から全部そろっていることは、ほとんどありません。足りないとわかったときに、何を、どの方法で、どれだけの期間で集めるかを計画できるかどうかで、プロジェクトの成否が決まります。

路線 この授業の使いどころ(成果物・意思決定)
DS 分析の途中で足りないデータを一覧にし、「今あるデータでどこまで言えるか」と「追加収集で何がわかるか」を依頼者に示す。追加収集の判断材料になる
ML 学習データの不足(件数・期間・対象)を見積もり、記録の追加やラベル付けの計画を立てる。必要期間から、モデルを作り始められる時期を決める
DX 業務システムへの記録項目の追加を要件にする。現場の入力負担・システム改修費と、得られる判断の改善を比べて優先順位を決める
RS 研究計画書の「データ収集の方法・期間・対象者数の根拠」を書く。倫理審査の申請書の中心になる

前提

この授業は DA01 のまとめです。次の内容をすべて使います。

計算は割り算と切り上げだけです。Python では math.ceil(小数を切り上げて整数にする関数)を使います。

身近な状況:要求表と手元のデータを並べたら、穴だらけだった

みどり商店の需要予測プロジェクトで、L01で作ったデータ要求表と、実際に受け取ったデータのデータ辞書を並べてみました。

要求表の項目 手元のデータ 状態
店舗×商品×日の販売数(2年分) POSから取得、2023-07〜 そろっている
品切れ時刻(1時間単位) 品切れの有無(0/1)だけ。時刻はない 粒度の不足
発注から納品までの日数 どこにもない 項目の不足
販促の有無 本部の販促カレンダー(Excel)。2024年4月以前はない 期間の不足
天気 Webサイトから自動取得したファイル 権利の不足(規約違反。L04)
15店舗すべて 改装中の2店舗はデータなし 対象範囲の不足
会員の位置情報 保留中(L04) 要求表にはない項目。そもそも必要か?

プロジェクトの責任者は「全部そろうまで待つのか」と不安になりました。しかし、すべての穴を同じように埋める必要はありません。

この授業では、不足を一覧にし、埋める方法を比べ、収集の計画を立てる方法を学びます。

直感的な説明:旅行の荷造りで足りない物をどうするか

旅行の前に持ち物リストと手元の荷物を見比べると、足りない物が見つかります。対処にはいくつかの方法があります。

方法 荷造りの例 特徴
手元の物で代用する 折りたたみ傘の代わりにレインコート すぐできるが、完全な代わりにはならない
家族に借りる 兄のスーツケースを借りる 安いが、借りる条件(いつ返すか)がある
買う 変換プラグを買う 確実だが費用がかかる
現地で調達する 日焼け止めは現地で買う 時間がかかり、手に入らない危険もある
持っていかない アイロンはなくても困らない 費用ゼロ。本当に不要か確認が必要

データの不足も同じ考え方で整理できます。大切なのは、足りない物ごとに「なくて困るのか」「どの方法が一番安く確実か」を決めることです。全部を買いそろえる(全部を新しく集める)のは、費用も時間もかかりすぎます。

もう1つの直感は、「集め始めてから使えるまでに時間がかかる」ことです。今日から品切れ時刻の記録を始めても、季節の違いを学べるだけの記録がたまるのは何か月も先です。だから、必要な期間を先に計算し、判断の時期と合わせて計画します。

正確な定義:ギャップ分析・収集方法・収集計画

不足の種類

種類 意味 例
項目の不足 必要な列がない 納品日数がない
粒度の不足 列はあるが細かさが足りない 品切れの有無はあるが時刻がない
期間の不足 必要な期間の記録がない 販促カレンダーが2024年4月から
対象範囲の不足 一部の対象の記録がない 改装中の2店舗
品質の不足 記録はあるが規則違反や欠損が多い 型違反・未記録が多い
権利の不足 記録はあるが使えない・保留 規約違反で取得した天気データ

埋める方法の比較

方法 費用 使えるまでの期間 主なリスク
既存データから作る(派生) 小 短い 代わりの値が知りたい量とずれる(測定のずれ)
他部署・別システムから借りる 小〜中 短〜中 利用条件・責任者の確認が必要
業務の記録を追加する 中〜大(改修・入力負担) 長い(記録がたまるまで) 現場の入力漏れ、記録開始前のデータはない
調査する(アンケート・聞き取り) 中 中 非回答・枠の偏り(L03)、同意の取得
外部から取得する(購入・公開データ) 無料〜大 短い 取得条件の不明、利用条件の制約
実験する(無作為に割り付ける) 中〜大 中〜長 本番との違い、対象者への影響
集めない(範囲を限定する) なし なし 判断の範囲が狭くなる。その旨を明記する

必要な期間の逆算:必要な記録の件数を $N$(件)、1日あたりに発生する記録の件数を $\lambda$(ラムダ、件/日)とすると、必要な日数 $T$(日)は次のとおりです。

$$T = \frac{N}{\lambda}$$

小数になったら切り上げます。たとえば品切れの記録が $N = 100$ 件必要で、1日あたり $\lambda = 0.8$ 件発生するなら、$T = 100 \div 0.8 = 125$ 日です。

調査の場合は、必要な回答数を $n$(人)、回答率を $r$(0〜1)とすると、依頼する人数 $m$(人)は $m = n \div r$ です。$n = 400$、$r = 0.2$ なら $m = 400 \div 0.2 = 2000$ 人です。ただし、回答率が低いほど非回答バイアスの心配が大きくなることも忘れないでください。

収集計画に書く項目

項目 内容
目的と判断 どの判断のための収集か(要求表と対応)
収集する項目 データ辞書の形で(名前・型・単位・欠損の意味)
方法と対象・期間 どの方法で、誰・何を、いつからいつまで
必要件数の根拠 $T = N \div \lambda$ などの計算
責任者 収集の実施者、承認者、保管の責任者
利用条件・根拠 利用目的、本人への説明・同意等の根拠、契約
品質確認 品質規則と確認の頻度
保管と削除 保管場所、アクセスできる人、保存期間
中止・見直しの条件 どうなったら止めるか、見直すか

段階付き例題:みどり商店の不足を埋める計画を立てる

ステップ1(入力:不足の一覧に優先度を付ける)

判断(翌日発注数)への影響で、優先度を付けます。

不足 判断への影響 優先度
品切れ時刻(粒度) 品切れ日の需要を推定できない。品切れの多い商品ほど発注が少なくなる 高
納品日数(項目) 何日先の需要を予測すべきかが決まらない 高
天気(権利) 精度の改善は見込めるが、なくても発注はできる 中
販促カレンダーの期間 2024年4月以前の販促の影響がわからない 中
改装中の2店舗(対象範囲) 2店舗には当面適用しない 低
会員の位置情報 店舗×商品×日の判断には不要 収集しない

ステップ2(処理:方法を選ぶ)

不足 選んだ方法 理由
品切れ時刻 まず在庫システムのログ(在庫が0になった時刻)を情報システム部から借りる。ログがない商品は、店員が品切れに気づいた時刻をハンディ端末で記録する 既存のログなら過去分も使える。記録の追加は過去にさかのぼれないので、ログで足りない部分だけにする
納品日数 購買部の発注システムから、商品ごとの発注日と納品日を借りる 既存データから計算できる
天気 公的機関が公開している気象データで、利用条件が明記されたものに替える 規約違反のファイルは削除する
販促(期間) 2024年4月以降だけで分析し、範囲を明記する 過去分を作り直す費用が大きい

ステップ3(処理:必要な期間を計算する)

在庫システムのログがない20商品について、店員の記録を始めるとします。1商品・1日あたりの品切れの起きやすさは、過去の記録から約0.041(731日中30日)でした。

ステップ4(出力と意味)

約4か月後に、品切れ時刻を使った需要推定を始められます。それまでは、品切れ日を除いて学習する暫定版で運用します。この見通しを依頼者に伝え、「4か月後に見直す」という判断の時期を合意します。さらに、記録を始めるのが秋なら、最初の4か月には年末が含まれ、夏が含まれない、という期間の偏りも計画に書いておきます。

操作して理解する:対象を増やすと、必要な期間はどう変わるか

内蔵データ demand.csv から品切れの起きやすさを求め、記録の対象にする商品数を変えたときの必要日数を計算します。

使う関数:d['stockout'].mean() は0/1の列の平均で、「1の割合」(品切れ日の割合)になります。math.ceil(x) は x 以上の最小の整数を返します(切り上げ)。f'{x:.3f}' は x を小数第3位まで表示する書き方です。

import math
import pandas as pd

d = pd.read_csv('/data/demand.csv')
rate = d['stockout'].mean()          # 1商品・1日あたりの品切れの起きやすさ
print('品切れ日の割合:', round(rate, 4), '(', d['stockout'].sum(), '日 /', len(d), '日)')

need = 100                            # 集めたい品切れの記録の件数
for items in [1, 20, 60]:             # 記録の対象にする商品数
    per_day = rate * items            # 1日に期待できる品切れの件数
    days = math.ceil(need / per_day)  # 必要な日数(切り上げ)
    print(f'{items:>3}商品を対象: 1日あたり {per_day:.3f} 件 → {days} 日')

出力:

品切れ日の割合: 0.041 ( 30 日 / 731 日)
  1商品を対象: 1日あたり 0.041 件 → 2437 日
 20商品を対象: 1日あたり 0.821 件 → 122 日
 60商品を対象: 1日あたり 2.462 件 → 41 日

1商品だけで100件集めるには約6.7年(2437日)かかりますが、60商品を対象にすれば41日で集まります。対象を増やせば期間は短くなる一方、店員の記録の負担は3倍になり、記録漏れが増えるかもしれません。

考えてみましょう。

  1. need = 100 を need = 200 にすると、20商品の必要日数はどうなるでしょう。答え:約2倍の244日です。
  2. 実際には、品切れは売れ筋の商品に集中します。品切れの多い商品から順に対象を選ぶと、少ない商品数で早く集まります。ただし、売れ筋だけの記録になるので、売れ筋以外の商品の品切れについては結論を出せません(L03の選択バイアス)。
  3. 店員の記録が7割しか行われない(記録率0.7)としたら? 1日あたりの件数に0.7を掛けます。20商品なら $0.82 \times 0.7 = 0.574$ 件/日で、$100 \div 0.574 \approx 174.2$ → 175日になります。記録率は計画の段階で見込んでおき、収集中に確認します。

発展:集める価値の見積もりと、段階的な収集

集める価値と費用:追加収集は、判断が良くなることで得られる価値が、収集の費用を上回るときに行います。たとえば品切れ時刻の記録で、品切れによる売り逃しと廃棄の合計が月30万円減ると見込まれ、記録の負担(店員の作業時間)が月5万円相当なら、収集する価値があります。見込みの数字には幅があるので、悲観的な場合でも価値が上回るかを確認します(費用と便益の比べ方は 「便益と費用」(有料版))。

段階的な収集(試行):いきなり全店で始めず、1〜2店舗で2〜4週間試し、記録率・入力にかかる時間・品質規則の違反率を確認してから広げます。試行の結果、記録率が低ければ、入力画面の改善やログからの自動取得を検討します。

実験で集める:「販促をすると販売数が何%増えるか」は、過去の記録では販促を実施する商品や日が偏っているので(売れる時期に販促しがち)、正確にわかりません。無作為に販促の有無を割り付ける実験で集めると、偏りの少ないデータが得られます(「実験の問いと割付」(有料版))。

記録の追加で起きる異常系:

中止・見直しの条件の例:記録率が2週間連続で50%を下回ったら入力方法を見直す。利用条件の確認で問題が見つかったら即時停止し、集めたデータを保留表に移す。

よくある失敗

失敗1:足りないものを全部集めようとする

誤った計画:不足の一覧にある項目を、すべて新しく集める。会員の位置情報も「あれば精度が上がるかも」と収集項目に入れる。

なぜ誤りか:費用と時間がかかり、肝心の品切れ時刻の記録が後回しになります。位置情報は判断に必要がないうえ、利用目的の確認(保留)が済んでおらず、データ最小化にも反します。

直し方:不足ごとに判断への影響で優先度を付け、「集めない」「範囲を限定する」も選択肢に入れます。集めないと決めた項目は、理由とともに計画に書きます。

失敗2:代わりのデータで、黙って置き換える

誤った処理:品切れ時刻がないので、「その日の最後に売れた時刻」を品切れ時刻として使い、そのことを報告に書かなかった。

日 最後に売れた時刻 実際
6/1 18時 18時に品切れ
6/2 18時 品切れなし。18時以降に買う客がいなかっただけ(在庫は残っていた)

なぜ誤りか:最後の販売時刻は、品切れ時刻の代わりにはなりません。6/2のように在庫が残っていた日まで「18時に品切れ」と扱われ、需要を高く見積もります。代わりのデータには、知りたい量とのずれ(L02の妥当性)があります。

直し方:代わりのデータを使うときは、(1) 何の代わりか、(2) どの場合にずれるか、(3) ずれの向き、を計画と報告に書きます。この例なら、閉店時在庫が0の日に限って最後の販売時刻を使う、のように条件を付けます。

失敗3:必要な期間を計算せずに収集を始める

誤った計画:「2週間記録すれば十分だろう」と考え、20商品で品切れ時刻の記録を2週間行った。

期待できる件数は $14 \times 0.82 \approx 11.5$ 件です。100件の目標の約1割しか集まらず、2週間後の会議で「データが足りないので判断できない」と報告することになりました。

なぜ誤りか:品切れのように、まれにしか起きない出来事は、集まるのに時間がかかります。期間を計算しないと、判断の時期に間に合いません。

直し方:計画の段階で $T = N \div \lambda$ を計算し、記録率の見込みも掛けます。期間が判断の時期に間に合わない場合は、対象を増やす、既存のログを探す、判断の時期を調整する、のどれかを依頼者と決めます。

失敗4:責任者・根拠・中止条件のない計画

誤った計画:「来月から、店員が品切れ時刻を記録する」とだけ決めて始めた。

起きたこと:

直し方:収集計画に、収集の実施者・承認者・保管の責任者、利用目的と本人への説明(同意等の根拠)、品質確認の頻度、中止・見直しの条件を書きます。開始前に承認者の確認を得ます。

まとめ

用語

ギャップ分析(gap analysis)

必要なデータ(要求表)と手元のデータ(辞書)を比べ、不足を種類ごとに一覧にすること。

収集計画(data collection plan)

不足を埋めるために、何を・どの方法で・誰の責任で・いつまでに・どの条件で集めるかを書いた計画。

記録率(recording rate)

実際に起きた出来事のうち、記録された割合。収集に必要な期間の見積もりに使う。

試行(パイロット)(pilot)

本格的に始める前に、小さな範囲で短期間試して、手順や品質を確かめること。

よくある質問

なぜ不足を「一覧」にする必要があるのですか? 気づいたものから集めればよいのでは?

気づいた順に集めると、集めやすいものから手を付けてしまい、判断に一番必要なもの(品切れ時刻など)が後回しになりがちです。一覧にして判断への影響で優先度を付けると、限られた時間と費用を正しい所に使えます。

「既存データから作る」と「記録を追加する」はどう使い分けますか?

既存データから作れるなら、過去分も使えて安く早いので、まずそちらを検討します。ただし代わりの値は知りたい量とずれることがあるので、ずれが判断に影響する場合は記録の追加を選びます。記録の追加は、過去にさかのぼれないことに注意します。

どこで失敗しやすいですか?

必要な期間の見積もりと、収集開始後の管理です。まれな出来事は集まるのに時間がかかります。また、記録を始めた後に誰も記録率を確認しないと、気づいたときにはデータが使えない状態になっています。

条件が変わって、判断の時期が早まったらどうしますか?

必要な件数・発生頻度・期間の関係(T=N÷λ)を使って、対象を増やす、既存のログを探す、目標件数を下げて結論の確かさが下がることを明記する、のどれが現実的かを検討し、依頼者に選択肢として示します。

追加収集の価値があるかどうかを、仕事ではどう判断しますか?

追加のデータで判断がどれだけ良くなるか(売り逃しや廃棄がいくら減るか)と、収集の費用(改修費、入力の時間、管理の手間)を比べます。見込みには幅があるので、悲観的な場合でも価値が上回るかを確認し、まず小さく試してから広げます。

新しく記録を始めるとき、本人への説明や同意はいつ必要ですか?

人に関する情報を集める場合、どんな目的で使うかを本人にどう説明するか、同意などの根拠は何かを、収集を始める前に組織の個人情報の担当者と決めます。後から目的を広げるのは難しいので、計画の段階で確認します(同意とデータ取得)。

確認問題

問1 品切れの「有無(0/1)」は記録されているが、「時刻」が記録されていない。この不足の種類はどれか。

  1. ① 粒度の不足
  2. ② 権利の不足
  3. ③ 対象範囲の不足
  4. ④ 項目の不足
解答と解説

正解:①

列はあるが、必要な細かさ(時刻)がない状態は粒度の不足です。

問2 不足の一覧に「会員の位置情報(利用目的の確認が保留中)」がある。判断(店舗×商品×日の発注数)には使わない。最も適切な扱いはどれか。

  1. ① 利用目的の確認を省いて集める
  2. ② 精度が上がるかもしれないので、優先して集める
  3. ③ 保留が解けるまで待ってから、プロジェクトを始める
  4. ④ 判断に必要ないので「集めない」と決め、理由を計画に書く
解答と解説

正解:④

すべての不足を埋める必要はありません。判断に不要な項目、特に個人情報は、集めないと決めることが正しい選択です。

問3 品切れの記録を100件集めたい。1日あたり平均0.5件発生する。記録率が100%なら何日かかるか。

  1. ① 100日
  2. ② 200日
  3. ③ 500日
  4. ④ 50日
解答と解説

正解:②

T=N÷λ=100÷0.5=200日です。

問4 必要な回答数が300人で、回答率が20%と見込まれる。何人に依頼すればよいか。また注意点は何か。

  1. ① 1500人。回答率が低いほど非回答バイアスに注意が必要
  2. ② 300人。全員が回答するはず
  3. ③ 1500人。依頼数を増やせば偏りもなくなる
  4. ④ 60人。回答率が低くても偏りの心配はない
解答と解説

正解:①

300÷0.2=1500人。依頼数を増やすと回答数は確保できますが、回答する人に偏りがある問題は残ります。

問5 品切れ時刻の代わりに「その日の最後に売れた時刻」を使うときの問題として正しいのはどれか。

  1. ① 代わりのデータは報告に書かなくてよい
  2. ② 問題はなく、完全な代わりになる
  3. ③ 在庫が残っていても客が来なかった日まで、品切れとして扱ってしまう
  4. ④ 最後に売れた時刻は必ず品切れ時刻より遅い
解答と解説

正解:③

最後の販売時刻は、品切れ以外の理由(客が来なかった)でも決まります。代わりのデータのずれを明記し、閉店時在庫0の日に限るなどの条件を付けます。

問6 収集計画に「中止・見直しの条件」を書く主な理由はどれか。

  1. ① 計画を長く見せるため
  2. ② 記録率の低下や利用条件の問題が起きたときに、誰が見ても同じ判断で止めたり直したりできるようにするため
  3. ③ 収集を絶対に止めないため
  4. ④ 法律で必ず書くことになっているから
解答と解説

正解:②

条件を先に決めておくと、問題に早く気づき、現場の負担だけが続くことや、問題のあるデータを集め続けることを防げます。

次に学ぶこと

これで DA01 の6授業は終わりです。モジュールの総合テストと、別の業務課題でデータ辞書と収集計画を作る自力課題で、習得を確認してください。

次のモジュール 欠損・重複・異常・品質検証(有料版) では、集めたデータの欠損・重複・異常値を検査し、品質を確かめる方法を学びます。データ辞書の品質規則がそのまま出発点になります。実験でデータを集める方法は 「実験の問いと割付」(有料版)、同意とデータ取得は 同意とデータ取得 で詳しく扱います。

キャリア学習:データサイエンティスト・機械学習エンジニア・DX推進・研究者を目指す人の学習アプリ。164モジュール・984授業を、ブラウザで動くSQLとPythonの演習で。基礎と各分野の最初のモジュールは無料。全部は2,980円の買い切り。

アプリを無料で開く有料版と無料版の違い