プログラミングの用語一覧へ
このページの目次
プログラミング中級図解あり

教師なし学習とは?

最終更新:2026/08/18

3秒でわかる

正解ラベルを与えず、データそのものに潜む構造を機械に見つけさせる学習方法。分類の答えが決まっていない場面で、傾向やまとまりを洗い出すために使います。

30秒図解

教師なし学習は来店回数と平均購入額の会員9点を正解ラベルなしで3クラスタに分け人が後から意味付けする
教師なし学習は正解ラベルなしでデータのまとまりを見つけます。分かれたクラスタの意味は、人が目的に照らして解釈します。

もう少し詳しく

どういうものか

教師なし学習は、入力データだけを渡し、正解にあたるラベルを与えずに学習させる枠組みです。何を当てるかが決まっていないので、目的は「データの構造を明らかにすること」になります。代表的な手法として、似たもの同士をまとめるクラスタリング、情報をできるだけ保ったまま項目数を減らす次元削減、他と大きく外れた点を見つける異常検知があります。

なぜ必要か

現実のデータには、ほとんどラベルが付いていません。1 万件の問い合わせ本文に「これは料金の質問」「これは不具合報告」と人手で印を付けるには膨大な時間がかかります。教師なし学習は、まずデータをまとまりに分けてから代表例だけを人が見る、という進め方を可能にします。

異常検知も同様です。不正利用の例は数が少なく種類も毎回違うため、事前に正解を集めきれません。「普段と違う」を基準にすれば、見たことのない手口にも反応できます。

具体例

from sklearn.cluster import KMeans import numpy as np # 会員ごとの [来店回数, 平均購入額] X = np.array([ [1, 800], [2, 950], [1, 700], [12, 3200], [15, 2900], [11, 3500], [30, 900], [28, 1100], [33, 850], ]) model = KMeans(n_clusters=3, n_init=10, random_state=0) labels = model.fit_predict(X) print(labels) # [0 0 0 1 1 1 2 2 2] のように分かれる print(model.cluster_centers_)

出てきた 0 と 1 と 2 に意味はありません。中心の値を見て「たまに来る層」「高単価の常連」「頻繁に来る少額層」と人が名前を付けます。

つまずきやすいところ

尺度を揃えずに距離を計算するのが定番の失敗です。上の例でも、購入額は数百から数千、来店回数は 1 から 33 と桁が違うため、そのままでは購入額だけで結果が決まります。標準化してから渡します。

もう 1 つは、分ける数を根拠なく決めることです。k-means は 3 と指定すれば必ず 3 つに割ります。意味のあるまとまりが 2 つしかなくても 3 つに割れてしまうため、エルボー法やシルエット係数で妥当性を確かめます。

似た用語との違い

枠組み与えるもの出てくるもの
教師あり学習入力と正解未知の入力への予測値
教師なし学習入力のみまとまりや圧縮された表現
強化学習行動への報酬報酬を高める方策


覚え方

答え合わせができないので、正しさではなく「使えるまとまりか」を人が判断します。ここが教師あり学習との最大の違いです。

知識のつながり

サイドバーと同じ推奨ルート・関連語を、まとめて確認できます。

現在地教師なし学習プログラミング

LEARN BY DOING

この用語を、教材で使ってみる

直接関連する編と、その編を含むコースです。用語だけで終わらず、ブラウザ上で実際に手を動かせます。

この用語を扱うコース

コース

はじめての生成AI

76レッスン
コース

生成AI資格対策(生成AIパスポート+G検定)

49レッスン
コース

データ分析入門 Python(pandas)

57レッスン
AI活用コースの全編を見る