k-means法の「means」は平均です。なぜ代表点に平均を使うのか——答えは情報Ⅰの第83講にあります。平均は二乗和を最小にする点だから。この講では、10点のデータを手でk-meansにかけ、初期値を変えると答えが変わることを実演します。同じデータ・同じクラスタ数で、SSEが60と70の2つの答えが出ます。
こんにちは、数強塾グループ代表の藤原進之介です。本記事は参考書『藤原進之介の最強120講義』第114講のWeb版で、第6部「情報Ⅱへの橋」に置いた1講です。共通テスト重要度はC——情報Ⅱは共通テストの出題範囲外だからです。情報Ⅱ全体の地図は第109講、データサイエンスの進め方は第110講に置きました。本講はその「分析」の中身にあたります。
1. この講の問い
なぜ k-means は「平均」を代表点に使うのか。そしてなぜ、同じデータでも答えが1つに決まらないのか。
2. 結論
クラスタリングは、「代表点を決める」と「割り当てる」の往復である。
代表点に平均を使うのは、平均が二乗和を最小にする点だから。情報Ⅰで習った平均の性質が、そのままアルゴリズムの設計理由になっている。だから名前が k-means(平均)なのだ。
答えは1つに決まらない。初期値で変わり、クラスタ数は人間が決め、分けたあとに意味を与えるのも人間である。
3. なぜそうなるのか
3-1 まず、国が何と呼んでいるかを確かめる
「k-means法」という語を、高校の一次資料はどこで使っているのか。当方で3つの資料をテキスト化し、空白と改行を除いてから数えました(2026年8月3日実施)。
| 語 | 学習指導要領解説 情報編 | 情報Ⅰ教員研修用教材 | 情報Ⅱ教員研修用教材 |
|---|---|---|---|
| クラスタリング | 3 (すべて共通教科側) |
0 | 45 |
| k-means | 0 | 0 | 11 |
| 非階層 | 1 | 0 | 0 |
| 教師なし | 0 | 0 | 21 |
| 教師あり | 0 | 0 | 11 |
| デンドログラム | 0 | 0 | 10 |
| エルボー | 0 | 0 | 2 |
数えた範囲は、①解説 情報編の全文(共通教科=第1部と専門教科=第2部を分けて計数)②情報Ⅰ教員研修用教材 第1〜4章(章ごとに別PDF)③情報Ⅱ教員研修用教材 序章+第1〜5章の全7分冊(第3章は前半・後半の2分冊)です。
この表が示していることは2つあります。
第一に、クラスタリングは情報Ⅰの本文に1件も無い。「クラスタ」という語すら情報Ⅰ教員研修用教材の全4章に0件です(別の意味での混入すらありません)。完全に情報Ⅱ側の語です。
第二に、学習指導要領解説と教員研修用教材が、同じものを違う名前で呼んでいる。解説は「k-means」と一度も書かず、代わりにこう書きます。
全体を共通の特徴を持ったいくつかの集団に分割するクラスタリングに関しては、似たものを集団にしていく階層的方法と、集団の数を決めてから要素を所属させていく非階層的方法などについて扱い、適切なソフトウェアの活用を通して理解するようにする。
文部科学省「高等学校学習指導要領(平成30年告示)解説 情報編」情報Ⅱ(3)ア(イ)相当
「集団の数を決めてから要素を所属させていく」——これが k-means の定義そのものです。国の上位文書は手法名ではなく性質で書いている。逆に教員研修用教材は「非階層」を1回も使わず「k-means法(k平均法)」と書く。同じものに、上位文書と下位文書で別の名前がついているわけです。問題集で「非階層的クラスタリング」という語に出会ったら、それは k-means のことだと読み替えてください。
3-2 なぜ代表点が「平均」なのか——第83講が答えを先に出している
教員研修用教材は、k-means法の手順を4行で書いています。
1)あらかじめ分割するクラスタ数を決めておき、ランダムに代表点(セントロイド)を決める。
2)データと各代表点の距離を求め、最も近い代表点のクラスタに分類する。
3)クラスタごとの平均を求め、新しい代表点とする。
4)代表点の位置が変わっていたら2に戻る。変化がなければ分類終了となる。
文部科学省「情報Ⅱ」教員研修用教材 第3章後半 学習16「クラスタリングによる分類」p.154相当
そして、適切なクラスタ数を推定するエルボー法の説明では、縦軸に SSE(クラスタ内誤差の平方和) を取る、と書きます。
ここを並べて読んでください。代表点=平均。評価指標=平方和。これは偶然の一致ではありません。
第83講(代表値)で確かめたことを思い出します。データを1つの数 c で代表させるとき、
- 二乗和 Σ(x − c)2 を最小にする c は平均
- 絶対値の和 Σ|x − c| を最小にする c は中央値
でした。k-means が最小化しようとしている量は SSE、すなわち各点から自分のクラスタの代表点までの距離の2乗の合計です。ならば、割り当てを固定したときにその合計を最小にする代表点は、平均以外にありえない。手順3が「平均を求める」なのは、そう決めたからではなく、そうするしかないからです。
だからアルゴリズムの名前が k-means なのです。「k個の平均」——名前が設計理由をそのまま名乗っている。情報Ⅰで「平均は二乗和を最小にする点」と理解した人だけが、この名前を読めます。
中央値を使ったらどうなるか。評価指標を絶対値の和に変えれば、代表点は中央値になります。それは k-medians と呼ばれる別のアルゴリズムで、外れ値に強くなります。評価指標を変えると代表点が変わる——第83講の表が、そのまま設計の選択肢の表になっている、ということです。教員研修用教材はここまで踏み込みませんが、SSE と「平均」がセットで書かれている以上、裏側の理屈はこれです。
3-3 なぜ「往復」するのか——2つの最小化が絡まっている
手順2と手順3は、まったく別のことをしています。
- 手順2(割り当て):代表点を固定したとき、SSE を最小にする割り当ては「各点を最も近い代表点へ」。当たり前です。他の代表点へ回せば距離の2乗が増えるだけですから。
- 手順3(更新):割り当てを固定したとき、SSE を最小にする代表点は「そのクラスタの平均」。3-2で見たとおりです。
つまり k-means は、片方を固定してもう片方を最適にする、を交互に繰り返している。どちらの手も SSE を増やしません。SSE は下がるか、そのままか、のどちらかです。そして有限個のデータを k 個に分ける分け方は有限通りしかない。だから必ずどこかで止まります。これが手順4「変化がなければ終了」の理由です。
しかし、止まった場所が一番良い場所とは限りません。下り坂を下りることしかできないので、谷が2つあれば近いほうの谷に落ちて止まる。ここが次の話につながります。
3-4 なぜ答えが1つに決まらないのか
教員研修用教材は、自分で反証を書いています。
1)によりランダムに代表点を決めることによって、結果が大きく異なり、適切なクラスタリングとならない場合もある。何回か繰り返して分析をしたり、k-means++法を用いたりすることにより改善することができる。
同 学習16 p.154相当
k-means++ は初期値の決め方だけを変えたものです。
1’)データの中からランダムに一つの代表点を選び、その点からの距離の2乗に比例した確率で残りの代表点を選ぶ。
離れている点ほど選ばれやすくするわけです。第61講(乱数とモンテカルロ法)で扱った「重み付きの乱数」が、ここで出てきます。
そして、語数調査でねじれが見つかりました。
| 語 | 解説 情報編 | 情報Ⅰ教材 | 情報Ⅱ教材 |
|---|---|---|---|
| 乱数 | 1 (シミュレーションの文脈) |
59 (すべて第3章) |
0 |
「乱数」という語は、情報Ⅰ教員研修用教材に59件あって、情報Ⅱ教員研修用教材の全7分冊には1件も無い。ところが情報Ⅱの k-means は、手順1が「ランダムに代表点を決める」であり、乱数の上に立っています。語としては消え、実体としては土台に残る。第61講で「乱数を使うと同じプログラムでも毎回答えが変わる」と書きましたが、k-means は決定的なアルゴリズムに見えて、実は同じ側に立っているのです。
だからシードを固定しないと再現できない。教員研修用教材が載せている Python のコードは、まさにそうしています。
kmeans = KMeans( init='random', n_clusters=5, random_state=0 )
random_state=0 が乱数の種の固定です。一方、同じ教材の第5章(探究)に載っている R のコードは kmeans(pcs, centers=2) だけで、種の指定がありません(当方が第5章 p.253〜254相当を確認)。同じ教材の中に、種を固定した例と固定していない例が並んでいる。再現性を気にするなら、種を書く癖をつけてください。
3-5 なぜクラスタ数を人間が決めるのか——正解が無いから
学習16の【研修の目的】の一行目は「教師なし学習によるクラスタリングやアソシエーション分析の手法について理解し」で始まります。本文の定義はこうです。
一般に分類とは、人間が与える正解より得られる特徴から、データを分析することで、その特徴に基づいて新しいデータを予測する教師あり学習の一つである。それに対して、特に正解を与えずに(教師なし学習という)、似ているデータをまとめて、いくつかのクラスタといわれるグループに分割する手法をクラスタリングという。
同 学習16 p.152相当
正解が無い。だから「クラスタ数は3が正しい」と言ってくれる人はどこにもいません。エルボー法は目安にすぎず、教材自身が限界を書いています。
データによっては折れ曲がる点がはっきりしない場合があり、その場合にはシルエット図という図を用いたシルエット分析といった手法も併せて使われる。
さらに、国が公開している演習解答が決定的なことを書いています。
ここでは解釈の一例を示したが、問題の発見や解決のために何らかの視点に基づいて、クラスタ数を決めたりクラスタの特徴を解釈したりすることが必要である。
文部科学省「情報Ⅱ」教員研修用教材(演習解答)第3章 学習16 演習1
クラスタ数を決めるのも、分かれたクラスタに意味を与えるのも、人間の「視点」の仕事だと国の解答例が明言している。実際その解答例では、9つの地方が5クラスタに分かれた結果に対して「四国と東北のクラスタは、旅行費用、衣料費用、医療費用、家具費用が少ない点で類似性がある」というように、人間が言葉を当てています。アルゴリズムはグループを作るだけで、名前は付けません。
なお、階層的クラスタリングならクラスタ数を先に決めなくてよい、と教材は書きます。
階層的クラスタリングでは、あらかじめクラスタ数を決める必要がなく、結果を解釈する際に決めることができる。
デンドログラム(樹形図)に水平線を引き、交点の数がクラスタ数になる。「先に決める」のが k-means、「後から決められる」のが階層的。この対比が、解説の「非階層的方法/階層的方法」という言い分けと正確に対応しています。
3-6 なぜ基準化が要るのか。そして、要らないときがある
教材の演習1は、e-Stat の家計消費状況調査を加工した「地方別・1世帯当たり1か月間の支出」でクラスタリングします。そのとき、こう注意します。
分類ごとの支出額について地方間の差を比較すると、自動車費用は他の分類の差よりも大きな差になっている。このままクラスタリングを行ってしまうと、分類ごとの支出額の差を用いて距離を求めることになり、差が大きい自動車費用の影響が大きくなると考えられる。
距離は各変数の差を2乗して足すので、桁の大きい変数が距離を支配します。だから StandardScaler で基準化する。これは第84講(散らばり・標準偏差)で扱った z = (x − 平均) ÷ 標準偏差 そのものです。
ところが同じ学習16の演習2で、教材はこう書きます。
金額を用いてクラスタリングを行いたいので、値の基準化は行わない。
演習2の対象は卸売業者の顧客データで、使う6項目がすべて年間注文額(同じ単位・同じ桁)だからです。「いつでも基準化する」は誤りで、単位や尺度が違うときにそろえる手続きだ——教材が、同じ節の中で「する例」と「しない例」を並べてそれを示している。ここは見落とされがちな箇所です。
第29講(色の表現)で扱った減色も同じ理屈です。RGBは3成分とも0〜255で同一尺度なので、色を3次元空間の点とみなしてクラスタリングするとき、基準化は要りません。
⚠️ 語の乗り換えに注意——「標準化」で検索しても出てこない
ここで語数調査の落とし穴を1つ潰しておきます。
| 語 | 解説 情報編 | 情報Ⅰ教材 | 情報Ⅱ教材 |
|---|---|---|---|
| 基準化 | 0 | 0 | 16 |
| 標準化 | 3 (すべて専門教科側) |
1 | 1 |
「標準化」の3件はすべて解説の第2部=専門学科の専門教科「情報科」側で、しかも中身は ISO・JIS などの「規格の標準化」です(統計の標準化ではありません)。情報Ⅰ教員研修用教材の1件も「ISO(国際標準化機構)」で、人間中心設計の説明でした。統計の意味で「標準化」と書いてある箇所は、情報Ⅱ教員研修用教材 第3章前半にたった1件、しかも「基準化(標準化)」という括弧書きの並記だけです。
つまり、国の情報科の資料は、統計のスケーリングを「基準化」と呼びます。「標準化」で検索して0件だったから情報Ⅱでは扱わない、と結論すると間違えます。第84講で扱った z 得点は、名前を変えて情報Ⅱの前処理に生き残っています。
3-7 距離の定義を変えると、結果は変わる
「距離」はユークリッド距離だけではありません。教材は明示しています。
距離については、ここでは通常の距離(ユークリッド距離)を用いるが、他にはマンハッタン距離やジャッカード係数、コサイン類似度などがあり、データの特性に応じて選択する。……データの値の尺度やデータの単位が異なる場合などは、そのまま距離を求めることが適切でない場合もある。このような場合には、スケーリングしてから距離を求める必要がある。
同 学習16 p.153相当
そして距離の「次元」も、高校の想像を超えます。一つ前の学習15「分類による予測」は、MNIST(手書き数字画像)を k-近傍法で分類するとき 784次元のユークリッド距離を使い、こう注意します。
距離が何であるかを生徒に理解させるには、階調(0〜255)ではなく、0と1で2値化されたデータと考えると分かりやすくなる。
28×28=784個の数字の並びを1つの「点」とみなして距離を測る。散布図では絶対に描けない空間で、距離だけが計算できる——ここが「距離で分ける」という発想の本領です。クラスタリングも分類も、この一点の上に立っています。
4. 手で確かめる──10点のデータを、手で2回転させる
「数学的な内容に深入りせず、アルゴリズムの考え方が理解できるようにする」——これは教員研修用教材の学習16【展開1】の指導上の留意点です。少量のデータで手を動かせ、と国が言っている。やります。
4-1 データ
2次元・10点。座標はすべて整数です。
| 点 | A | B | C | D | E | F | G | H | I | J |
|---|---|---|---|---|---|---|---|---|---|---|
| x | 1 | 2 | 1 | 2 | 5 | 6 | 5 | 6 | 9 | 11 |
| y | 1 | 1 | 2 | 2 | 5 | 5 | 6 | 6 | 1 | 1 |
図に描くと、左下(A〜D)・中央(E〜H)・右下(I・J)の3つのかたまりに見えます。ここでクラスタ数2、つまり「2つに分けなさい」と命じたらどうなるか。3つのかたまりを2つに詰めるのだから、どこかで無理が生じる。そこがこの実験の狙いです。
距離は、大小を比べるだけなら2乗のままで構いません(平方根を取っても順序は変わりません)。以下、d2 で書きます。
4-2 初期値①:代表点として A(1,1) と B(2,1) を選ぶ
10点から2点をランダムに選ぶ、を実行して隣り合う2点を引いてしまった、という設定です。
【第1回・割り当て】 M1=(1,1)、M2=(2,1)
| 点 | 座標 | M1までの d2 | M2までの d2 | 所属 |
|---|---|---|---|---|
| A | (1,1) | 0 | 1 | M1 |
| B | (2,1) | 1 | 0 | M2 |
| C | (1,2) | 1 | 2 | M1 |
| D | (2,2) | 2 | 1 | M2 |
| E | (5,5) | 32 | 25 | M2 |
| F | (6,5) | 41 | 32 | M2 |
| G | (5,6) | 41 | 34 | M2 |
| H | (6,6) | 50 | 41 | M2 |
| I | (9,1) | 64 | 49 | M2 |
| J | (11,1) | 100 | 81 | M2 |
【第1回・更新】 クラスタ1={A, C} なので平均は ((1+1)÷2, (1+2)÷2) = (1, 1.5)。クラスタ2={B, D, E, F, G, H, I, J} なので平均は (46÷8, 27÷8) = (5.75, 3.375)。代表点が動いたので、手順4により手順2へ戻ります。
【第2回・割り当て】 M1=(1, 1.5)、M2=(5.75, 3.375)
| 点 | M1までの d2 | M2までの d2 | 所属 |
|---|---|---|---|
| A (1,1) | 0.25 | 28.203 | M1 |
| B (2,1) | 1.25 | 19.703 | M1 ←変わった |
| C (1,2) | 0.25 | 24.453 | M1 |
| D (2,2) | 1.25 | 15.953 | M1 ←変わった |
| E (5,5) | 28.25 | 3.203 | M2 |
| F (6,5) | 37.25 | 2.703 | M2 |
| G (5,6) | 36.25 | 7.453 | M2 |
| H (6,6) | 45.25 | 6.953 | M2 |
| I (9,1) | 64.25 | 16.203 | M2 |
| J (11,1) | 100.25 | 33.203 | M2 |
B と D が M2 から M1 へ移りました。これが「往復」です。代表点が動いたから割り当てが変わり、割り当てが変わればまた代表点が動く。
【第2回・更新】 クラスタ1={A, B, C, D} → 平均 (1.5, 1.5)。クラスタ2={E, F, G, H, I, J} → 平均 (42÷6, 24÷6) = (7, 4)。
【第3回】 この代表点で割り当て直しても {A,B,C,D} と {E,F,G,H,I,J} のままで、平均も変わりません。代表点が変わらないので終了です。
SSE を計算します。クラスタ1は、各点から (1.5,1.5) までの d2 が4点とも 0.5 なので合計 2。クラスタ2は (5,5)→5、(6,5)→2、(5,6)→8、(6,6)→5、(9,1)→13、(11,1)→25 で合計 58。SSE = 2 + 58 = 60。
4-3 初期値②:代表点として E(5,5) と I(9,1) を選ぶ
同じデータです。初期値だけ変えます。
【第1回・割り当て】 M1=(5,5)、M2=(9,1)
| 点 | M1までの d2 | M2までの d2 | 所属 |
|---|---|---|---|
| A (1,1) | 32 | 64 | M1 |
| B (2,1) | 25 | 49 | M1 |
| C (1,2) | 25 | 65 | M1 |
| D (2,2) | 18 | 50 | M1 |
| E (5,5) | 0 | 32 | M1 |
| F (6,5) | 1 | 25 | M1 |
| G (5,6) | 1 | 41 | M1 |
| H (6,6) | 2 | 34 | M1 |
| I (9,1) | 32 | 0 | M2 |
| J (11,1) | 52 | 4 | M2 |
【第1回・更新】 クラスタ1={A〜H}(8点)→ 平均 (28÷8, 28÷8) = (3.5, 3.5)。クラスタ2={I, J} → 平均 (10, 1)。
【第2回】 この代表点で割り当て直しても、同じ8点対2点。終了です。
SSE:クラスタ1は 12.5+8.5+8.5+4.5+4.5+8.5+8.5+12.5 = 68、クラスタ2は 1+1 = 2。SSE = 70。
4-4 同じデータ、同じクラスタ数、違う答え
| 初期値① A・B | 初期値② E・I | |
|---|---|---|
| 収束までの回数 | 3 | 2 |
| 結果 | {A,B,C,D} / {E,F,G,H,I,J} | {A〜H} / {I,J} |
| SSE | 60 | 70 |
同じデータを、同じクラスタ数2で分けたのに、答えが2つ出ました。SSE で比べれば①のほうが良い。しかし②も「代表点が動かない」という終了条件を正しく満たしています。アルゴリズムは、②で止まったことを間違いだと知りません。
これが教材の言う「ランダムに代表点を決めることによって、結果が大きく異なり、適切なクラスタリングとならない場合もある」の実物です。対策は教材が書いたとおり、何回か繰り返して SSE の一番小さいものを採るか、k-means++ で初期値を散らすか。ちなみにこの10点は、初期の2点の選び方(10点から2点=45通り)を全部試すと4種類の答えに落ち着きました(SSE = 60/70/78.92/102.67、そのうち45通り中19通りが SSE=60 に到達)。
4-5 Python で検算する(シードを固定する)
上の手計算を、実際に実行して確かめます。
import numpy as np
from sklearn.cluster import KMeans
from sklearn.preprocessing import StandardScaler
X = np.array([[1,1],[2,1],[1,2],[2,2],[5,5],[6,5],[5,6],[6,6],[9,1],[11,1]], dtype=float)
for name, init in [("初期値① A(1,1),B(2,1)", np.array([[1.,1.],[2.,1.]])),
("初期値② E(5,5),I(9,1)", np.array([[5.,5.],[9.,1.]]))]:
km = KMeans(n_clusters=2, init=init, n_init=1).fit(X)
print(name)
print(" ラベル :", "".join(str(v+1) for v in km.labels_))
print(" 代表点 :", km.cluster_centers_.tolist())
print(" SSE :", round(km.inertia_, 10), " 反復回数:", km.n_iter_)
実行結果(scikit-learn 1.6.1 / numpy 2.0.2、2026年8月3日に当方が実行):
初期値① A(1,1),B(2,1)
ラベル : 1111222222
代表点 : [[1.5, 1.5], [7.0, 4.0]]
SSE : 60.0 反復回数: 3
初期値② E(5,5),I(9,1)
ラベル : 1111111122
代表点 : [[3.4999999999999996, 3.5], [10.0, 1.0]]
SSE : 70.0 反復回数: 2
手計算と完全に一致しました。代表点も、SSE も、反復回数も。inertia_ が SSE です。
1か所だけ、3.4999999999999996 という値が出ています。手計算では 28÷8 = 3.5 ちょうどでした。これは浮動小数点数の丸め誤差で、8個の値を足して割る途中で 2進数では表せない端数が出たためです。同じ 3.5 でも、片方の座標は 3.5 と表示され、もう片方は 3.4999999999999996 と表示される。コンピュータの計算結果を、そのまま「等しいか」で比較してはいけないという、情報Ⅰで扱う誤差の話がここで顔を出します。
4-6 エルボー法をやってみる
for k in range(1, 7):
km = KMeans(n_clusters=k, init='random', n_init=10, random_state=0).fit(X)
print(f"k={k} SSE={km.inertia_:.4f}")
k=1 SSE=147.6000
k=2 SSE=60.0000
k=3 SSE=6.0000
k=4 SSE=4.0000
k=5 SSE=3.0000
k=6 SSE=2.5000
k が 1→2 で 87.6 減り、2→3 で 54 減り、3→4 では 2 しか減りません。折れ線を描けば k=3 で肘のように曲がる。「3つのかたまりに見える」という目の判断と、SSE の折れ曲がりが一致しました。
検算しておきます。k=1 のとき代表点は全体の平均 (4.8, 3.0) で、SSE = 103.6(x方向)+ 44(y方向)= 147.6。k=3 のときは {A,B,C,D} が 2、{E,F,G,H} が 2、{I,J} が 2 で計 6。どちらも手で追えます。
ただし k=3 が「正解」なのではありません。3-5 で見たとおり、決めるのは人間です。もし「よく買う客/たまに買う客」の2群に分けたいという目的があるなら、SSE が折れていなくても k=2 を選ぶ。エルボー法は目安であって、決定ではない。
4-7 基準化の有無で、答えが変わることを見る
単位の違う2変数を用意します。8人の「1日の勉強時間(分)」と「小テストの点(10点満点)」です(説明のための架空のデータです)。
| P1 | P2 | P3 | P4 | P5 | P6 | P7 | P8 | |
|---|---|---|---|---|---|---|---|---|
| 勉強時間(分) | 30 | 35 | 55 | 60 | 30 | 35 | 55 | 60 |
| 小テスト(点) | 1 | 2 | 1 | 2 | 9 | 10 | 9 | 10 |
Y = np.array([[30,1],[35,2],[55,1],[60,2],[30,9],[35,10],[55,9],[60,10]], dtype=float)
km1 = KMeans(n_clusters=2, init='random', n_init=10, random_state=0).fit(Y)
print("基準化なし:", "".join(str(v) for v in km1.labels_), " SSE=", round(km1.inertia_,4))
sc = StandardScaler(); Ys = sc.fit_transform(Y)
km2 = KMeans(n_clusters=2, init='random', n_init=10, random_state=0).fit(Ys)
print("基準化あり:", "".join(str(v) for v in km2.labels_), " SSE=", round(km2.inertia_,4))
print("平均:", sc.mean_.tolist(), " 標準偏差:", [round(float(v),6) for v in sc.scale_])
基準化なし: 00110011 SSE= 180.0
基準化あり: 11110000 SSE= 8.1231
平均: [45.0, 5.5] 標準偏差: [12.747549, 4.031129]
読み取ってください。
- 基準化なし:{P1,P2,P5,P6} と {P3,P4,P7,P8} に分かれました。これは勉強時間(30分・35分の組 対 55分・60分の組)で分かれています。
- 基準化あり:{P1,P2,P3,P4} と {P5,P6,P7,P8} に分かれました。これは小テストの点(1点・2点の組 対 9点・10点の組)で分かれています。
同じ8人が、前処理をするかしないかだけで、まったく違うグループに分かれた。基準化しないと、単位が「分」で数字が大きい勉強時間が距離を支配してしまうからです。教材の「差が大きい自動車費用の影響が大きくなる」が、そのまま再現されました。
標準偏差も検算できます。勉強時間の分散は ((152+102+102+152)×2)÷8 = 162.5 で、その平方根は 12.747549…。出力と一致します(StandardScaler は n で割る母標準偏差を使います)。
そして繰り返しますが、基準化が常に正しいのではありません。3-6 で見たとおり、教材の演習2は「金額を用いてクラスタリングを行いたいので、値の基準化は行わない」と書いています。変数の単位がそろっていて、しかも桁の大きさそのものに意味があるときは、そろえてはいけないのです。
5. 共通テストではこう出る
この講は共通テストと接続しません。情報Ⅱは共通テストの出題範囲外だからです。大学入試センターのプレス発表資料「令和9年度大学入学者選抜に係る大学入学共通テストの出題教科・科目の出題方法等及び問題作成方針について」(令和7年6月6日)では、教科「情報」の出題科目は『情報Ⅰ』のみ・60分(100点)で、当方が同資料の全文をテキスト化して検索したところ「情報Ⅱ」は0件でした。クラスタリング、k-means、SSE、デンドログラムは、共通テスト対策としては覚える必要がありません。重要度は C です。
ただし、逆向きの矢印は太い。共通テストに出る次の3つが、そのままこの講の材料になっていました。
- 平均(第83講)→ k-means の代表点そのもの。「平均は二乗和を最小にする点」を知らないと、なぜ手順3が平均なのか説明できません。
- 標準偏差(第84講)→ 基準化= (x − 平均) ÷ 標準偏差。情報Ⅰで「散らばりを読む数」だった標準偏差が、ここでは「単位をそろえるために割る数」になります。
- 散布図(第95講)→ 2変数なら目で見て分けられる。分けられなくなる境目が、クラスタリングの入口です。
3番目については、文部科学省の解説動画スライドが驚くほど率直に書いています(次の節)。情報Ⅰの復習として、この講を「平均と標準偏差と散布図が、どこまで通用してどこから通用しなくなるのか」の答え合わせに使ってください。入試に出ないぶん、気楽に読めるはずです。
6. 情報Ⅱではこうなる
本講自体が情報Ⅱ(3)「情報とデータサイエンス」の内容です。ここでは、情報Ⅰのどこで手が届かなくなり、その先に何があるのかを一次資料で確かめます。
6-1 国のスライドが「情報1でやったこと」と書いている場所
文部科学省の「情報Ⅱ解説動画」に、[4] クラスタリング「自分と近い性格の人は誰?」という回があります。そのスライドPDF(2024年3月公開、当方が2026年8月3日に取得してテキスト抽出)の展開が、この講の主張そのものでした。
どうやって似ている人を探す?
2変数だったら…(情報1でやったこと) → データ/散布図
3変数だったらギリギリ…?
もっと変数があったらどうしよう → ?
→こんな時に役立つ1つの方法が、クラスタリング
文部科学省「情報Ⅱ解説動画」情報とデータサイエンス [4] クラスタリング スライド
「情報1でやったこと」と国のスライドが明記している。2変数なら散布図で目で見て分けられる。3変数は3次元散布図でぎりぎり。それ以上は見えない。見えないものを分けるために、距離という数値だけを頼りにする——それがクラスタリングです。学習15が MNIST を 784次元のユークリッド距離で扱うのも同じ話でした。
このスライドの題材はクラスのアンケート(プログラミング・野球・楽器演奏などの好みを5段階で回答)で、環境は R、コードは dist() で距離を求め hclust() でクラスタリングする階層的クラスタリングです。補足で「クラスタリングには様々な手法がある」として、この回で使った最長距離法とウォード法(method="ward.D2")の結果を並べて比べています。この解説動画は k-means を扱っていません。デンドログラムまでで止めている。国の側でも、入口は階層的クラスタリング、という判断があるようです。
6-2 情報Ⅰとの分業を、語数で見る
| 語 | 解説 情報編 | 情報Ⅰ教材 | 情報Ⅱ教材 | 読み |
|---|---|---|---|---|
| クラスタリング | 3 | 0 | 45 | 完全に情報Ⅱ側の語 |
| 教師なし | 0 | 0 | 21 | 「正解が無い学習」という枠組み自体が情報Ⅱで初出 |
| k-means | 0 | 0 | 11 | 解説は「非階層的方法」と呼ぶ(1件) |
| 基準化 | 0 | 0 | 16 | 情報Ⅰの標準偏差の使い道が変わる |
| 乱数 | 1 | 59 | 0 | 語は情報Ⅰで終わるのに、実体は情報Ⅱの土台に残る |
最後の行が、本講で見つけた最も面白いねじれです。情報Ⅰは乱数を59回書いてシミュレーションを教え、情報Ⅱは乱数を1回も書かないまま、乱数に依存するアルゴリズムを教えている。
6-3 高校の外に出るとどうなるか——IPA試験の階梯
「クラスタリングは高校で終わりか」を確かめるため、IPA(情報処理推進機構)の試験シラバスを当方でテキスト化して数えました(2026年8月3日取得)。
| 語 | ITパスポート Ver.6.5 | 基本情報技術者 Ver.9.2 | 応用情報技術者 Ver.7.0 |
|---|---|---|---|
| 教師なし学習 | 2 | 2 | 2 |
| クラスタリング | 1 | 2 | 3 |
| 主成分分析 | 0 | 2 | 2 |
| k-means法 | 0 | 0 | 1 |
「教師なし学習」という枠組みは ITパスポート(レベル1)から出てきますが、手法名としての「k-means法」が用語例に現れるのは応用情報技術者試験(レベル3)です。つまり高校の情報Ⅱは、IT系国家試験ならレベル3で初めて名指しされる手法を、名前ごと扱っていることになります。情報Ⅱが「発展的な選択科目」と呼ばれる意味が、ここで数字になります。
⚠️ 数える前に、用法を目で見てください。応用情報のシラバスに出る「クラスタリング」3件のうち1件は、信頼性設計の「クラスタリング」(フォールトトレラント、予備切替、フェールセーフと並ぶ、サーバを束ねて可用性を上げる技術)で、機械学習とは無関係です。さらに「クラスタ分析法」は業務分析・業務計画の用語例に別枠で載っています。同じカタカナが3つの意味で使われている。件数だけを見て「応用情報は機械学習のクラスタリングを3回書いている」と言ってはいけません。
6-4 この先へ
情報Ⅱ教員研修用教材 第3章後半の学習16は、実は3部構成で、3節目はアソシエーション分析です。「おむつを買った人は缶ビールを買う傾向にある」で知られる、あの分析。支持度・確信度・リフト値の3指標を計算します。そして教材はこう書きます。
実際には商品は膨大な種類があるため、全ての組み合わせを考えることは計算量が多くなり、計算時間も現実的な時間で収まらなくなる。……このような工夫により計算量を減らす方法をアプリオリアルゴリズムという。
「計算量」という語は、学習指導要領解説にも情報Ⅰ教員研修用教材にも0件で、情報Ⅱ教員研修用教材の3件がすべて第3章後半にあります。手法を知ることと、それが現実的な時間で終わるかを見積もることは、別の能力である——本書の第6部では、この話を独立の講にしています。
そして次の学習17はニューラルネットワーク(情報Ⅱ教材に63件、情報Ⅰ教材に1件)。k-means が「代表点を動かして誤差を減らす」往復だったのに対し、ニューラルネットワークは「重みを動かして誤差を減らす」往復です。最小化したい量を決めて、少しずつ下る——構造は同じです。
まとめ
- クラスタリングは「代表点を決める」と「割り当てる」の往復。片方を固定してもう片方を最適にする、を繰り返している
- 代表点が平均なのは、SSE(クラスタ内誤差の平方和)を最小にする点が平均だから。第83講の性質が、そのままアルゴリズム名 k-means になっている
- 答えは1つに決まらない。初期値で変わる(実測:同じ10点・同じクラスタ数2で SSE 60 と 70 の2つの答え)。だからシードを固定する
- クラスタ数を決めるのも、クラスタに意味を与えるのも人間。国の演習解答が「何らかの視点に基づいて」と明記している
- 基準化は「いつでもする」ではない。単位が違うときにそろえる手続き。教材は演習1でして、演習2で「行わない」と書いている
- 国のスライドが「2変数だったら…(情報1でやったこと)」と書く。散布図が届かなくなる場所が、この手法の入口
基礎からの積み上げは第40講 基数変換から、シリーズ全体は『藤原進之介の最強120講義』目次およびカテゴリ一覧から読めます。
出典(すべて2026年8月3日に取得)
- 文部科学省「高等学校学習指導要領(平成30年告示)解説 情報編」平成30年7月 https://www.mext.go.jp/content/1407073_11_1_2.pdf
- 文部科学省「高等学校情報科『情報Ⅱ』教員研修用教材(本編)」令和2年3月発行 https://www.mext.go.jp/a_menu/shotou/zyouhou/detail/mext_00742.html(第3章後半 20200609-mxt_jogai01-000007843_007.pdf/第3章前半 20200702-mxt_jogai01-000007843_004.pdf/第5章 20200609-mxt_jogai01-000007843_006.pdf)
- 文部科学省「高等学校情報科『情報Ⅱ』教員研修用教材(演習解答)」 https://www.mext.go.jp/a_menu/shotou/zyouhou/detail/mext_01292.html
- 文部科学省「情報Ⅱ解説動画」[4] クラスタリング「自分と近い性格の人は誰?」スライド https://www.mext.go.jp/content/20240307-mxt_jogai01-000034455_004.pdf
- 文部科学省「高等学校情報科『情報Ⅰ』教員研修用教材」 https://www.mext.go.jp/a_menu/shotou/zyouhou/detail/1416756.htm
- 大学入試センター プレス発表資料「令和9年度大学入学者選抜に係る大学入学共通テストの出題教科・科目の出題方法等及び問題作成方針について」令和7年6月6日 https://www.dnc.ac.jp/news/albums/abm.php?d=447&f=abm00005364.pdf
- IPA「ITパスポート試験 シラバス Ver.6.5」 https://www.ipa.go.jp/shiken/syllabus/omgdg50000005kn1-att/syllabus_ip_ver6_5.pdf
- IPA「基本情報技術者試験 シラバス Ver.9.2」 https://www.ipa.go.jp/shiken/syllabus/omgdg50000005kpe-att/syllabus_fe_ver9_2.pdf
- IPA「応用情報技術者試験 シラバス Ver.7.0」 https://www.ipa.go.jp/shiken/syllabus/nq6ept000000149q-att/syllabus_ap_ver7_0.pdf
執筆:藤原進之介(数強塾グループ代表)
オンライン数学専門塾「数強塾」代表。累計3,500名以上の中高一貫校生を指導。東進ハイスクール・東進衛星予備校・代々木ゼミナールなど出講実績あり。情報Ⅰの参考書を複数執筆しており、KADOKAWA『ゼロから始める情報I』、Gakken『きめる!共通テスト 情報Ⅰ』などがあります。本記事は参考書『藤原進之介の最強120講義』第114講のWeb版です。
「情報Ⅰの先まで見据えて勉強したい」という方へ
数強塾では数学と情報Ⅰの両方に対応したオンライン個別指導を行っています。学習相談は無料、体験授業は3,000円(税込)でお受けしています。
