分析と予測と生成の違い|データ・AI・4つの仕事を知る
このページはプロモーション(広告)を含みます。
データ・AI・4つの仕事を知る(初級・読む20分+演習25分)
この授業のゴール
- 依頼文を読んで、分析・予測・生成のどれが求められているかを分類できる
- 予測の誤差を平均絶対誤差(MAE)で計算し、単純な基準と比べられる
- 予測が当たることと、原因が分かったことを区別して説明できる
- 生成された文章の数字を、元データで確かめる手順を示せる
仕事でどう使うか
「AIで何かしたい」という依頼の多くは、よく聞くと3種類のどれかに分けられます。種類によって、必要なデータも、評価の方法も、失敗の仕方も違います。
| 路線 | この授業の使いどころ |
|---|---|
| DS(データサイエンティスト) | 「何が起きたか・なぜか」を答える分析。比較表・グラフ・分解で、会議の意思決定を支える |
| ML(機械学習エンジニア) | 「まだ分からない値」を当てる予測。未知のデータでの誤差を測り、単純な基準と比べる |
| DX(DX推進・AI企画) | 依頼を3種類に仕分け、そもそもAIが必要か、業務手順の見直しで足りるかを見極める |
| RS(研究者) | 説明(なぜ)と予測(いくつ)は別の問いで、検証方法も別だと明記する。生成物の評価基準を決める |
この授業の目的は、依頼を聞いた瞬間に「これは分析か、予測か、生成か」を言い分けられるようになることです。
前提
- データ・情報・判断の区別 → データ・情報・判断の違い
- 割合と平均の計算 → 比率・割合・パーセントポイント、平均・合計・中央値を手計算
- 絶対値(符号を取った大きさ。たとえば $|-3| = 3$)。この授業の中で説明するので、初見でも読めます。
この授業のPythonは、画面内で実行できます。for による繰り返しやリストの基本は出てきた箇所で説明します。
身近な状況:店長の3つの依頼
雑貨店「ことり堂」(架空)の店長が、データ担当者に3つの依頼を出しました。
- 依頼A:「先週、土曜の売上が普段より多かった。なぜだろう?」
- 依頼B:「来週の月曜から日曜まで、日ごとの売上をあらかじめ知りたい。仕入れ量を決めたい。」
- 依頼C:「お客様に送る、来週の営業時間のお知らせ文を書いてほしい。」
どれも「データを使う仕事」ですが、求められている答えが違います。
- Aは過去に起きたことの理由を説明する。答えは「土曜に近くでイベントがあり、来店者が増えたため」のような説明。
- Bはまだ観測されていない値を当てる。答えは「月曜42、火曜43、…」のような数値。
- Cは新しい文章を作る。答えはお知らせ文。
同じ売上データを持っていても、A・B・Cで「正しい」の意味が違います。Aは説明が筋道立っているか、Bは実際の値との誤差が小さいか、Cは書かれた内容が事実と合っているか、が評価の軸です。
直感的な説明:過去を説明する・未来を当てる・文章を作る
3つを、天気にたとえます。
- 分析:「昨日はなぜ雨だったか」を、気圧配置の図を見て説明する。
- 予測:「明日の降水量は何mmか」を、数字で言い当てる。説明できなくても、当たれば役に立つことがある。
- 生成:「天気予報の原稿」を、読みやすい文章として書く。文章が上手でも、内容の数字が間違っていれば使えない。
違いを一言でまとめます。
| 種類 | 出力 | 主な問い | 評価の軸 |
|---|---|---|---|
| 分析 | 説明・比較・分解 | 何が起きたか、なぜか | 筋道、根拠のデータ、反論への耐性 |
| 予測 | まだ分からない値 | いくつか、どれか | 見たことのないデータでの誤差、単純な基準との比較 |
| 生成 | 文章・画像・コードなどの新しい内容 | 何を書くか | 事実との一致、目的への適合、安全性 |
注意:1つの仕事の中で、3つが組み合わさることはよくあります。たとえば「予測をして、その理由を説明し、報告文を生成する」。ただし、どの部分が3種類のどれなのかを分けて、それぞれ別の方法で検証します。
正確な定義:分析・予測・生成と、その評価方法
それぞれを、入力・出力・評価の3点で定義します。
分析(analysis):観測済みのデータから、集計・比較・分解を行い、起きたことを説明する。出力は、表・グラフ・文章での説明です。評価は「他の人が同じデータと手順で同じ結果を再現できるか」「別の説明の可能性を検討したか」です。分析だけでは、相関と因果は区別されません。2つの量が一緒に動いていても、一方が他方を引き起こしたとは限りません。
予測(prediction):既知の入力から、まだ観測していない値を推定する。出力は、数値またはクラス(例:購入する/しない)。評価は、学習に使っていない期間・データでの誤差です。
予測の誤差の代表が、平均絶対誤差(MAE:Mean Absolute Error)です。
$$\text{MAE} = \frac{1}{n}\sum_{i=1}^{n} \left| y_i - \hat{y}_i \right|$$
- $n$:予測した日数や件数(個数)。
- $y_i$:$i$ 番目の実際の値(実績)。単位は売上と同じ(千円など)。
- $\hat{y}_i$:$i$ 番目の予測値($y$ の上の記号「ハット」は予測を表す)。
- $|\cdot|$:絶対値。誤差の符号(多い・少ない)を消して大きさだけを見る。
数値を代入します。実績が $(52, 48, 60)$、予測が $(50, 50, 57)$(単位:千円)のとき、誤差は $|52-50|=2$、$|48-50|=2$、$|60-57|=3$ なので、$\text{MAE} = (2+2+3)/3 = 7/3 \approx 2.33$ 千円です。
生成(generation):入力(指示や元データ)から、新しい文章・画像・コードなどを作る。評価は、(1)内容が事実と合っているか、(2)目的に合っているか、(3)問題のある内容を含まないか、です。文章がなめらかであることは、内容が正しいことの証拠になりません。生成物に含まれる数字や固有名詞は、元データで確かめます。
もう1つ、予測の基準(ベースライン)という考え方があります。複雑な方法を使う前に、「前の週の同じ曜日と同じ値にする」のような単純な方法の誤差を測ります。複雑な方法は、その単純な基準より誤差が小さくなって初めて、導入する理由になります。
段階付き例題:同じ売上データで、3種類の答えを出す
ことり堂の2週間の日別売上(千円)です。1週目は月曜から日曜、2週目も同じ並びです。
| 曜日 | 月 | 火 | 水 | 木 | 金 | 土 | 日 |
|---|---|---|---|---|---|---|---|
| 1週目 | 40 | 42 | 45 | 44 | 50 | 70 | 66 |
| 2週目 | 42 | 43 | 46 | 47 | 53 | 74 | 69 |
分析の例:曜日別の平均を出すと、土曜が72千円、日曜が67.5千円、月曜が41千円です。「週末が平日平均(45.2千円)の約1.5〜1.6倍」という情報が得られます。ただし、「なぜ週末が多いか」(近隣の人の休日の買い物か等)は、この表だけでは分かりません。
予測の例:1週目を材料に、2週目を予測します。方法は2つ比べます。
- 方法P:前日と同じ値(月曜の予測は、前日の日曜の値)。
- 方法Q:前の週の同じ曜日と同じ値。
方法Qの2週目の予測は 40, 42, 45, 44, 50, 70, 66 です。誤差は 2, 1, 1, 3, 3, 4, 3 で、MAE は $17 \div 7 \approx 2.43$ 千円。方法Pは予測が 66, 42, 43, 46, 47, 53, 74 で、誤差が 24, 1, 3, 1, 6, 21, 5、MAE は $61 \div 7 \approx 8.71$ 千円です。
方法Qのほうが、この週では誤差が小さくなります。理由は「曜日による変動が大きい」という、分析で得た情報を予測に使ったからです。分析で得た情報が、予測の設計に役立った例です。
生成の例:次のコードは、数字から報告文を作る「簡易な生成」のたとえです(本物の生成AIではなく、文章の型に数字を入れるだけの仕組みです)。作られた文章の主張を、元データと照合します。
week1 = [40, 42, 45, 44, 50, 70, 66]
week2 = [42, 43, 46, 47, 53, 74, 69]
total1, total2 = sum(week1), sum(week2)
change = (total2 / total1 - 1) * 100 # 週合計の相対変化(%)
# 文章の型に数字を入れる(本物の生成AIが作る文章にも、誤りが混じることがあるというたとえ)
draft = f"今週の売上は先週より {abs(change):.1f}% 減少しました。"
claims_ok = change < 0 # 「減少した」は事実と合うか
print("週合計", total1, "→", total2, "千円")
print("相対変化", round(change, 1), "%")
print("文章:", draft)
print("文章の主張は事実と合うか:", claims_ok)
出力は「週合計 357 → 374 千円」「相対変化 4.8 %」「文章: 今週の売上は先週より 4.8% 減少しました。」「文章の主張は事実と合うか: False」です。数字の大きさは合っていても、増減の向きが逆です。文として不自然ではないため、読むだけでは見落とします。照合の手順を決めておくことが必要です。
操作して理解する:誤差の測り方と基準を変えてみる
次のコードで、方法Qと方法Pの誤差を計算します。zip(a, b) は2つのリストを同じ位置どうしで組にして取り出す関数、abs() は絶対値、sum() は合計、len() は要素数です。
week1 = [40, 42, 45, 44, 50, 70, 66]
week2 = [42, 43, 46, 47, 53, 74, 69]
def mae(actual, pred):
errors = [abs(a - p) for a, p in zip(actual, pred)] # 日ごとの絶対誤差
return sum(errors) / len(errors)
pred_q = week1 # 前の週の同じ曜日
pred_p = [week1[-1]] + week2[:-1] # 前日の値(月曜は先週の日曜)
print("方法Q MAE:", round(mae(week2, pred_q), 2))
print("方法P MAE:", round(mae(week2, pred_p), 2))
出力は「方法Q MAE: 2.43」「方法P MAE: 8.71」です。
試してみましょう。
week2の土曜を74から90に変えると、方法QのMAEはいくつになるでしょう。誤差は 2, 1, 1, 3, 3, 20, 3 で、$33 \div 7 \approx 4.71$。外れ値(極端な日)が1日あるだけでMAEは大きく動きます。- 方法Qの予測を、
week1の値ではなく「全日の平均 $357 \div 7 = 51$ 千円」にしてみてください。MAEは大きくなるはずです。曜日の違いを無視した予測は、誤差が大きくなるからです。 week2を見てからpredを作ると、MAEは0にできてしまいます。これは予測ではなく答えを見て書いただけです。予測の評価は、必ず予測を作った後に観測した値で行います。
発展:なぜ「当たる予測」でも原因は分からないのか
予測が当たっていても、予測に使った入力が「原因」とは限りません。
例:アイスの売上が増える日は、日焼け止めの売上も増えます。日焼け止めの売上でアイスの売上を予測すると当たるかもしれません。しかし、日焼け止めを安売りしてもアイスは売れません。両方とも気温という別の要因で動いているからです(このような第3の要因を交絡と呼びます)。
| 目的 | 必要なもの |
|---|---|
| 予測(いくつか) | 予測に使う入力が、予測する時点で手に入ること。因果は不要 |
| 因果(何をすれば変わるか) | 介入(実際に変えてみる)や、交絡を調整する設計。単なる予測精度では示せない |
生成にも似た限界があります。生成された説明文が理屈として整っていても、その説明が正しい原因である証拠にはなりません。分析結果の文章化を生成に任せるときは、数字・因果の主張・出典を人が確認する工程を、業務手順に入れます。
また、予測の評価は、データの分け方で結果が変わります。時系列では、未来の値を学習に混ぜない、時間順の分け方が基本です。詳しくは MLの仕事を小例で体験 で小さな例を扱います。
よくある失敗
失敗1:予測の精度が高いから、原因が分かったと報告する
誤った報告:「気温を入力に使った予測モデルは誤差が小さい。したがって、気温が売上の原因だと分かった。」
予測が当たることは、入力と出力に安定した関係があることしか示しません。気温と一緒に動く別の要因(学校の休み、イベント)があっても、予測は当たります。原因かどうかは、別の方法(実際に変える試験、条件をそろえた比較)で確かめます。
直し方:報告では「気温を使うと予測誤差が下がった(MAE 3.1→2.2千円)」と書き、「原因」という言葉は使いません。原因を知りたいなら、別の分析や試験を提案します。
失敗2:生成された報告文をそのまま会議資料に貼る
前の節のコードのように、文章は「減少しました」と書いていますが、実際は+4.8%の増加です。こうした誤りは、書き手が悪意なく、もっともらしく書いてしまうところにあります。
week1 = [40, 42, 45, 44, 50, 70, 66]
week2 = [42, 43, 46, 47, 53, 74, 69]
sentence = "今週の売上合計は374千円で、先週の357千円より減少しました。"
t1, t2 = sum(week1), sum(week2)
print("数字は合っているか:", t1 == 357 and t2 == 374)
print("向きは合っているか:", (t2 < t1)) # 文は「減少」と言っている
出力は「数字は合っているか: True」「向きは合っているか: False」です。数字の一部が合っていても、主張が誤りという例です。
直し方:文章中の数字・増減の向き・固有名詞を、元データから計算した値と1つずつ照合する手順を作ります。重要な資料では、人の確認を省きません。
失敗3:予測の評価に、予測を作ったデータをそのまま使う
ある担当者は、2週目の売上を見てから「予測値」を作り、MAE=0.0千円と報告しました。
week2 = [42, 43, 46, 47, 53, 74, 69]
pred = week2[:] # 答えを見て、そのまま写した
errors = [abs(a - p) for a, p in zip(week2, pred)]
print("MAE:", sum(errors) / len(errors))
MAEは0.0になりますが、来週の売上を当てる役には立ちません。評価は、予測を作る時点では見えなかった期間のデータで行います。
直し方:1週目だけを材料にして予測を作り、2週目の実績と比べます。予測を作った後に観測された値で測ると、実際の使い方に近い誤差になります。
まとめ
- 分析は起きたことの説明、予測は未観測の値の推定、生成は新しい内容の作成。出力と評価の軸が違う。
- 予測の誤差は、予測を作った後の未知のデータで測り、単純な基準と比べる。MAEは |実績−予測| の平均。
- 予測が当たることは、原因が分かったことを意味しない。
- 生成された文章は、なめらかさではなく、数字・向き・固有名詞を元データで照合して使う。
- AIを使うこと自体を目的にせず、依頼を仕分けてから手段を選ぶ。
用語
- 分析(analysis)
観測済みのデータを集計・比較・分解して、起きたことを説明すること。
- 予測(prediction)
既知の入力から、まだ観測していない値を推定すること。
- 生成(generation)
指示や元データから、文章・画像・コードなどの新しい内容を作ること。
- 平均絶対誤差(MAE)(Mean Absolute Error)
実績と予測の差の絶対値を平均した値。実績と同じ単位で、誤差の大きさを表す。
- ベースライン(baseline)
比較の基準にする単純な方法。複雑な方法はこれより良いことを示す必要がある。
よくある質問
分析・予測・生成のうち、どれが一番むずかしいですか?
難しさの種類が違います。分析は問いの立て方と解釈、予測は評価の設計とデータの分け方、生成は事実確認と安全性が難所です。どれも、評価の方法を先に決めておくことが共通の基本です。
予測と分析の違いは、使う道具の違いですか?
道具は重なります(平均、回帰など)。違いは、問いと評価です。分析は「起きたことを正しく説明できたか」、予測は「見ていない値をどれだけ当てたか」で評価します。同じ回帰でも、目的で結論の書き方が変わります。
生成AIが書いた分析結果を、そのまま信用してよいですか?
信用してはいけません。生成された文章の数字・増減の向き・引用は、元データで確かめます。確認した人と日付を記録しておくと、あとで誤りを追跡できます。
単純な基準より誤差が小さくなるのに、導入しないほうがよいことはありますか?
あります。運用の手間が大きい、説明が難しく現場が使わない、誤差の改善が小さく利益に結びつかない、などの場合です。精度と事業価値は別の量なので、導入の前に費用と効果を比べます。
予測の誤差は、MAEだけを見ればよいですか?
足りません。大きな外れを重く見たいときは二乗誤差を使う指標もあります。また、欠品が出る日の誤差だけを別に見るなど、業務の損失に合わせて指標を選びます。MAEは、まず全体の誤差を理解する出発点です。
「AIを使えば何でもできる」と言われたとき、どう確認しますか?
依頼を「分析・予測・生成」に仕分け、出力、評価方法、必要なデータ、失敗したときの影響を聞きます。AIの導入自体を目的にせず、単純な集計や手順の見直しで足りないかを先に確かめます。
確認問題
問1 「来週月曜の来店者数を、0〜1,000人の数値で当てたい」という依頼は、どの種類に当たるか。
- ① 分析
- ② 生成
- ③ 予測
- ④ 判断
解答と解説
正解:③
まだ観測されていない値を推定するので、予測です。
問2 モデルの誤差が小さく、気温を入力にしたときによく当たる。この結果から言えることはどれか。
- ① 気温を入力にすると、見ていない期間でも予測が当たりやすい(因果は別に確認が必要)
- ② 気温を上げれば売上が増える
- ③ 気温以外の要因は存在しない
- ④ 気温が売上を引き起こしている
解答と解説
正解:①
予測が当たることは、入力と出力の関係が安定していることを示しますが、因果の証拠にはなりません。
問3 生成された報告文に「売上が4.8%減少しました」とある。実データでは4.8%増加だった。最も適切な対応はどれか。
- ① 文章がなめらかなので、そのまま採用する
- ② 数字の大きさが合っているので問題ない
- ③ 生成された文章は全部使わない
- ④ 増減の向きを含む主張を、元データで確かめて修正する
解答と解説
正解:④
生成物は、数字・向き・固有名詞を元データで照合してから使います。
問4 実績が (10, 20) 、予測が (13, 17) のとき、MAEはいくつか。
- ① 0
- ② 3
- ③ 6
- ④ 30
解答と解説
正解:②
絶対誤差は |10−13|=3、|20−17|=3。平均は3。符号付きの平均は (+3−3)÷2=0なので、符号を消さないと誤差0に見えます。
問5 予測モデルを導入するか決めるために、最初にすべきことはどれか。
- ① データを全部学習に使い、学習データで誤差を測る
- ② 最新の手法を選ぶ
- ③ 前週の同じ曜日と同じ値にするような単純な基準の誤差を測る
- ④ 予測を使わずに運用する
解答と解説
正解:③
複雑な方法は、単純な基準より誤差が小さいときに導入する理由があります。
問6 次の依頼のうち、「分析」に当たるものはどれか。
- ① 来週の売上を数値で出す
- ② お客様向けの案内文を書く
- ③ 新しい商品名の候補を10個作る
- ④ 先月の売上が下がった要因を、来店者数と客単価に分けて説明する
解答と解説
正解:④
観測済みのデータを分解して、起きたことを説明するのが分析です。
次に学ぶこと
次は DSの仕事を小例で体験 で、分析の仕事(DS)を、売上減少の小例で体験します。予測の仕事は MLの仕事を小例で体験 で扱い、そこで時間順の分け方を小さく実装します。
この授業の確認問題だけで習得とはしません。ON03 の総合テストと、自力課題で判定します。
キャリア学習:データサイエンティスト・機械学習エンジニア・DX推進・研究者を目指す人の学習アプリ。164モジュール・984授業を、ブラウザで動くSQLとPythonの演習で。基礎と各分野の最初のモジュールは無料。全部は2,980円の買い切り。
アプリを無料で開く有料版と無料版の違い