負数・絶対値・数直線|算数から数式への橋渡し

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

算数から数式への橋渡し(初級・読む20分+演習25分)

この授業のゴール

仕事でどう使うか

データの仕事では、「増えた・減った」「高かった・低かった」を符号で表します。符号の読み違いは、結論を逆にします。

路線 この授業の使いどころ
DS(データサイエンティスト) 前月比、目標との差、予測誤差の符号を読む。平均で正負が打ち消し合う落とし穴を避ける
ML(機械学習エンジニア) 誤差(残差)が正か負かで、モデルが過大・過小のどちら側に偏っているかを診断する。MAE(Mean Absolute Error:平均絶対誤差)の基礎
DX(DX推進・AI企画) 削減額(マイナスの費用)や、改善前後の差を、符号の約束を決めて報告する
RS(研究者) 効果の向き(プラスかマイナスか)の報告、差の絶対値と相対的な差の使い分け

成果物でいえば、予測モデルの評価表、月次レポートの「前月差」欄、実験結果の効果量の表です。「−5」が良いのか悪いのかは、何から何を引いたかで決まります。

前提

次の言葉を使います。不安があれば先に戻ってください。

負の数が苦手でも大丈夫です。気温や口座残高など、身の回りの例から入ります。

身近な状況:予測より多く売れたのか、少なく売れたのか

ある店(架空)が、3日間のキャンドルの販売数を予測しました。

日 予測(個) 実績(個)
1日目 100 110
2日目 120 115
3日目 90 95

「予測のずれ」を誤差として、実績 − 予測で計算します。1日目は $110-100=+10$(予測より10個多く売れた)、2日目は $115-120=-5$(5個少なかった)、3日目は $95-90=+5$ です。

担当者は「誤差の平均を出してモデルの良し悪しを評価しよう」と考えました。$(10-5+5)\div3\approx3.33$ 個。小さく見えますが、これは正の誤差と負の誤差が打ち消し合った結果です。1日あたり平均して何個ずれているのかを知るには、符号を消した「ずれの大きさ」が必要です。それが絶対値です。

この授業では、符号付きの数を読み書きする力と、「符号を残す場面」「符号を消す場面」の使い分けを身につけます。

直感的な説明:数直線という「ものさし」

数直線は、0を原点として、右に正の数、左に負の数を並べた直線です。

 -5  -4  -3  -2  -1   0   1   2   3   4   5
  |---|---|---|---|---|---|---|---|---|---|

たとえ話の限界:借金のたとえは便利ですが、「負の数どうしの掛け算がなぜ正になるか」は説明しにくいです。これは次の節で、パターンで確かめます。

正確な定義:符号の規則と絶対値

負の数は0より小さい数で、$-3$ のように「−」を付けます。整数だけでなく、$-0.5$ や $-\frac{1}{3}$ のような負の小数・分数もあります。

絶対値の定義:

$$|x| = \begin{cases} x & (x \ge 0) \\ -x & (x < 0) \end{cases}$$

記号の意味:$|x|$ は $x$ の絶対値、$x\ge0$ は「$x$ は0以上」です。$x=-5$ のとき $x<0$ なので $|x|=-x=-(-5)=5$。符号を「消す」のではなく、負の数なら「符号を反転して」正にします。

加減は、数直線で考えます。乗除の符号は次の表のとおりです。

計算 符号 例
正 × 正、負 × 負 正 $3\times4=12$、$(-3)\times(-4)=12$
正 × 負、負 × 正 負 $3\times(-4)=-12$
割り算も同じ規則 $-12\div4=-3$、$-12\div(-4)=3$

「負×負が正」は、次のパターンで確かめられます。

$$3\times(-4)=-12,\quad 2\times(-4)=-8,\quad 1\times(-4)=-4,\quad 0\times(-4)=0,\quad (-1)\times(-4)=?$$

掛ける数が1減るたびに答えは4増えています。したがって $(-1)\times(-4)=+4$ です。規則性が崩れないように決められた約束です。

引き算は、符号の反転した数を足すことです。$a-b=a+(-b)$。$3-(-2)=3+2=5$。

誤差の記号:予測を $\hat{y}$(ワイハット)、実績を $y$ とすると、誤差は $e=y-\hat{y}$。

ここで $n$ はデータの個数、$e_i$ は $i$ 番目の誤差、$\sum$ は全部を足す記号です。

pred = [100, 120, 90]
actual = [110, 115, 95]
errors = [a - p for a, p in zip(actual, pred)]
print("誤差(実績-予測):", errors)
print("平均誤差:", sum(errors) / len(errors))
print("MAE:", sum(abs(e) for e in errors) / len(errors))

zip(actual, pred) は2つのリストを同じ位置で組にします。abs(e) は絶対値の関数です。出力は [10, -5, 5]、約3.33、約6.67 です。

段階付き例題:売上の前月比と増減率を符号付きで読む

問題:売上が1月120万円、2月100万円、3月90万円だった。前月比の増減と増減率を求め、意味を言え。

ステップ1:差の向きを決める。「前月比」は今月 − 前月とします。この向きを決めておけば、マイナスは「減った」を意味します。

ステップ2:差を計算する。

ステップ3:増減率を計算する。増減率 = 差 ÷ 前月の値(分母は前月)。

ステップ4:検算する。差の合計 $-20+(-10)=-30$ は、3月と1月の差 $90-120=-30$ に一致します。

ステップ5:意味を言う。「2月は前月から20万円(16.7%)減少、3月はさらに10万円(10%)減少。2か月で30万円減った」。減少額は2月の方が大きく、3月は縮小しています。

注意点:増減率の分母を「今月」にすると、2月は $-20\div100=-20\%$ と別の値になります。分母は比較の基準になる前月です。

距離で考える:「1月と3月の売上は何万円離れているか」なら $|90-120|=30$ 万円で、符号は不要です。差(符号付き)と距離(符号なし)を区別して使います。

操作して理解する:誤差の符号が打ち消し合う様子を見る

2つのモデルの誤差を比べます。実行前に、どちらがよいか予想してください。

errors_a = [10, -10, 10, -10]    # モデルA: 毎回10個ずれる
errors_b = [1, 1, 2, 0]          # モデルB: 小さくずれる

def summary(name, errors):
    n = len(errors)
    mean_err = sum(errors) / n
    mae = sum(abs(e) for e in errors) / n
    print(name, "平均誤差:", mean_err, " MAE:", mae)

summary("A", errors_a)
summary("B", errors_b)

出力は A が「平均誤差 0.0、MAE 10.0」、B が「平均誤差 1.0、MAE 1.0」です。

関数 summary は、名前(文字列)と誤差のリストを受け取り、結果を print で表示します(戻り値はありません)。errors_a の値を [10, 10, 10, 10] に変えると、平均誤差もMAEも10になり、「常に10個少なく予測している」偏りが見えます。偏りがあれば補正できますが、符号が不規則なずれは補正できません。

発展:絶対値の性質と、二乗誤差という別の道

三角不等式:任意の $a, b$ について $|a+b|\le|a|+|b|$ が成り立ちます。等号が成り立つのは、$a$ と $b$ が同符号のとき(どちらかが0のときを含む)だけです。例:$a=3,\ b=-5$ のとき $|a+b|=|-2|=2$、$|a|+|b|=8$。つまり「足してから絶対値」と「絶対値を取ってから足す」は一般に一致しません。 誤差の平均誤差の絶対値 $|\bar{e}|$ が MAE 以下になるのも、この性質のためです。

二乗誤差:符号を消すもう1つの方法は、二乗することです。$(+10)^2=(-10)^2=100$。平均二乗誤差(MSE:Mean Squared Error)は、大きなずれを強く重視します。ずれが2倍になると、MSEへの寄与は4倍になります。外れ値に敏感な指標を選ぶか、頑健な指標を選ぶかは、業務で「大きな外れが許されないか」で決めます(外れ値と頑健性)。

数直線と大小の反転:不等式の両辺に負の数を掛けると、向きが反転します。$2<3$ の両辺に $-1$ を掛けると $-2$ と $-3$ になり、数直線では $-2>-3$。この性質は 方程式と不等式 で、方程式・不等式を解くときに使います。

増減率の非対称:100から50への変化は $-50\%$、50から100への変化は $+100\%$。同じ幅でも、基準が違えば率が違います。増減を比べるときは、基準を明記します。

よくある失敗

失敗1:負の数の大小を、数字の大きさで判断する

誤った例:「$-10$ と $-2$ では、10の方が大きいので $-10$ の方が大きい」。

print(-10 > -2)          # False
print(max(-10, -2))      # -2
print(abs(-10) > abs(-2))  # True: これは「原点からの距離」の比較

数直線で $-10$ は $-2$ より左にあります。左にあるものは小さいです。気温が $-10$℃ か $-2$℃ かなら、$-2$℃ の方が高い(大きい)。大小の比較は数直線の位置、距離の比較は絶対値と区別します。

失敗2:引く数が負のとき、符号を処理し忘れる

誤った例:$3-(-2)=3-2=1$ と書いた。

print(3 - (-2))        # 5
print(3 - -2)          # 5: 同じ意味
print(3 - 2)           # 1: 括弧の中の負の符号を落とした別の式

括弧を外すとき、直前の引き算の記号と、負の数の符号が2つ重なると、符号が反転して足し算になります。$3-(-2)=3+2=5$。確認の方法:「負の数 $-2$ を引く」とは「$-2$ を取り去る」ことなので、元より大きくなる、と数直線で見ます。式が長いときは、必ず括弧を使います。

失敗3:誤差の平均だけを見て「ずれがない」と報告する

誤った例:予測の誤差が $+10, -10, +10, -10$ だった。平均誤差が0なので「このモデルは誤差がゼロ」と報告した。

errors = [10, -10, 10, -10]
print(sum(errors) / len(errors))                    # 0.0
print(sum(abs(e) for e in errors) / len(errors))    # 10.0

平均0は、正と負が打ち消し合っただけで、予測が当たっているのではありません。MAEは10個です。偏りを知りたいときは符号付きの平均、ずれの大きさを知りたいときは絶対値(または二乗)の平均を使います。報告では両方を併記します。

まとめ

用語

絶対値(absolute value)

数直線上で原点0からの距離。|-5|=5。負の数のときは符号を反転した値になる。

数直線(number line)

0を原点に、右へ正の数、左へ負の数を並べた直線。大小・距離・加減を図で考えるために使う。

誤差と平均絶対誤差(MAE)(error / Mean Absolute Error)

誤差は実績−予測などの差。MAEは誤差の絶対値の平均で、ずれの大きさの目安。

増減率(rate of change)

(今回の値−前回の値)÷前回の値。前回の値が基準(分母)になる。

よくある質問

なぜ「負×負=正」になるのですか?

掛ける数を1つ減らすごとに答えが一定量変わるというパターンを、負の数まで延ばしても崩れないように決めた約束だからです。$3\times(-4)=-12$ から出発して、掛ける数を2、1、0、−1と下げると答えが −8、−4、0、+4 になることで確かめられます。

絶対値は「マイナスを取る」ことですか?

ほぼ正しいですが、正確には「0からの距離」です。負の数のときだけ符号を反転し、正の数や0はそのままです。$|{-5}|=5$、$|5|=5$、$|0|=0$。

誤差は実績−予測と予測−実績のどちらが正しいですか?

どちらも使われます。大事なのは定義を明記することです。報告書に「誤差=実績−予測。正は過少予測」と書けば読み手が迷いません。ライブラリの関数は向きが異なる場合があるので、使う前に小さな例で確認してください。

平均誤差とMAEは、どう使い分けますか?

偏り(系統的に多め・少なめ)を見たいときは平均誤差、ずれの大きさを見たいときはMAEや二乗誤差を使います。通常は両方を見ます。偏りがなくMAEが大きいなら、ばらつきの問題です。

増減率の分母は何ですか?どう判断しますか?

基準にしたい値、通常は前の値(前月、改善前)です。分母が違うと率が変わるので、報告書に「前月比=(今月−前月)÷前月」と書きます。基準が0のときは計算できません。

数がゼロの場合と、欠損の場合は何が違いますか?

ゼロは「0を観測した」、欠損は「値がわからない」です。誤差の平均で、欠損を0として入れると偏りが小さく見えてしまいます。欠損は計算から除くか、別途処理方針を決めます(数値・カテゴリ・日時・欠損)。

確認問題

問1 $-5$ と $-2$ では、どちらが大きいか。

  1. ① -5
  2. ② -2
  3. ③ 同じ
  4. ④ 絶対値が大きい方
解答と解説

正解:②

数直線では $-2$ の方が右にあります。右にあるものが大きいです。

問2 $3-(-2)$ の値はどれか。

  1. ① 1
  2. ② -1
  3. ③ 5
  4. ④ -5
解答と解説

正解:③

引く数が負なので、符号が反転して足し算になります。$3+2=5$。

問3 誤差(実績−予測)が、順に +10, −10, +10, −10 だった。報告として最も適切なのはどれか。

  1. ① 平均誤差は0だが、毎回10個ずれている(MAEは10)
  2. ② 平均誤差が0なので、予測は完全に当たっている
  3. ③ 誤差は正と負が混じっているので評価できない
  4. ④ 最後の誤差だけで評価する
解答と解説

正解:①

符号が打ち消し合って平均は0ですが、ずれの大きさの平均(MAE)は10個です。偏りとずれの大きさは別の指標です。

問4 誤差を「実績 − 予測」で定義したとき、誤差が正になるのはどんな場合か。

  1. ① 予測が実績より大きかった(過大予測)
  2. ② データが欠損していた
  3. ③ 予測が完全に当たった
  4. ④ 予測が実績より小さかった(過少予測)
解答と解説

正解:④

実績−予測>0 は、実績が予測より大きい=予測が少なすぎた(過少予測)という意味です。定義の向きを決めずに「プラス」とだけ報告すると、逆に読まれます。

問5 $(-4)\times(-3)\div(-2)$ の値はどれか。

  1. ① 6
  2. ② -6
  3. ③ -24
  4. ④ 24
解答と解説

正解:②

左から計算します。$(-4)\times(-3)=12$、$12\div(-2)=-6$。

問6 売上が200万円から150万円に変化した。前月比の増減率として正しいのはどれか。

  1. ① +25%
  2. ② -33.3%
  3. ③ -25%
  4. ④ -50%
解答と解説

正解:③

(150−200)÷200 = −0.25 で −25%。基準は前月の200です。

次に学ぶこと

次は 文字式と代入 で、文字式と代入を学びます。ここで学んだ符号を、文字に数を代入するときの括弧の使い方に生かします。

この授業の確認問題だけで習得とはしません。ON05 の総合テストと、損益分岐点の課題で判定します。割合の復習は 分数と小数と比 です。

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

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