AIにおける「教師あり」と「教師なし」の違いって何?〜実務で使い分けるための思考法と実装例〜
1. はじめに:機械学習、結局どれを選べばいいの?
AIや機械学習のプロジェクトに携わっていると、よく聞かれるのがこの質問:
「教師あり学習」と「教師なし学習」ってどう違うの?
そして、どちらを選べばいいの?
現場の実務でも、「とりあえずscikit-learnで試してみたけど、しっくりこない」ということ、ありますよね。
本記事では、両者の理論的な違いに加え、Pythonコードを用いた実装例と、現場での選定ポイントを交えながら、徹底的にわかりやすく解説します!
2. 概要:教師あり vs 教師なし 〜概念の違い〜
分類 | 教師あり学習(Supervised Learning) | 教師なし学習(Unsupervised Learning) |
---|---|---|
データ | 入力 + 正解ラベルあり | 入力のみ(ラベルなし) |
目的 | 予測・分類・回帰 | パターン抽出・構造発見 |
代表的な手法 | 決定木、SVM、ロジスティック回帰、ニューラルネットワーク | K-Means、主成分分析(PCA)、t-SNE、自己符号化器 |
ポイント:
- ラベル(正解)があるかどうかが、両者の大きな違い。
- 教師ありは「答えを当てに行く」学習。
- 教師なしは「隠れた構造を見つけに行く」探索。
3. 実践で学ぶ!Pythonでの具体的な実装例
今回は分かりやすく、以下のデータを用いてそれぞれの学習方法を試してみます:
- 教師あり:Titanicの生存予測(Kaggleでおなじみ)
- 教師なし:Irisのクラスタリング(有名な花のデータ)
🧪 3.1 教師あり学習の例:Titanic生存予測
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score
# データ読み込み
df = pd.read_csv('https://raw.githubusercontent.com/datasciencedojo/datasets/master/titanic.csv')
X = df[['Pclass', 'Sex', 'Age', 'Fare']].copy()
X['Sex'] = X['Sex'].map({'male': 0, 'female': 1})
X['Age'] = X['Age'].fillna(X['Age'].mean())
y = df['Survived']
# 分割・学習
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
model = LogisticRegression()
model.fit(X_train, y_train)
# 評価
y_pred = model.predict(X_test)
print("Accuracy: {:.2f}".format(accuracy_score(y_test, y_pred)))
🧪 3.2 教師なし学習の例:Irisクラスタリング
from sklearn.datasets import load_iris
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt
# データ読み込み
iris = load_iris()
X = iris.data
# KMeansクラスタリング
kmeans = KMeans(n_clusters=3, random_state=42)
clusters = kmeans.fit_predict(X)
# 結果の可視化
plt.scatter(X[:, 0], X[:, 1], c=clusters, cmap='viridis')
plt.title("KMeansによるクラスタリング")
plt.xlabel("Sepal Length")
plt.ylabel("Sepal Width")
plt.show()
4. 実務Tips:どちらを使えばいい?どう使い分ける?
✅ 教師ありが向いているケース
- 売上予測、顧客離脱予測、需要予測など、明確な出力がある場合
- 学習用に十分なラベル付きデータが揃っている場合
✅ 教師なしが向いているケース
- データを分類したいが答えがない、未知のパターンを発見したい場合
- 特徴抽出、前処理、異常検知(Anomaly Detection)など
❌ よくある失敗
- ラベルなしなのに教師ありを無理やり使う
- 教師なしを使って得られたクラスタを「正解」と勘違いする
- 教師なし結果をそのまま意思決定に使ってしまう(→補助的に使うのが吉)
5. 応用:半教師あり学習、自己教師あり学習とは?
最近注目されているのが、両者の中間に位置する手法:
📌 半教師あり学習(Semi-supervised Learning)
- ラベル付きデータが少ないけど、ラベルなしデータが大量にあるときに有効。
- pseudo-labelingやconsistency regularizationが代表例。
📌 自己教師あり学習(Self-supervised Learning)
- 画像認識や自然言語処理でブレイク中。
- 「自分で自分にラベルをつけて学習」→BERTやSimCLRなど。
6. まとめ:違いを理解して、技術を「選べる人」になる
観点 | 教師あり | 教師なし |
---|---|---|
精度 | 高い(ラベルが正しければ) | 解釈が難しいが柔軟 |
用途 | 明確な目標予測 | パターン探索・分析 |
必要なデータ | ラベル付き | ラベル不要 |
AI開発において一番重要なのは「適材適所」。
アルゴリズムの種類を知っているだけでなく、“なぜそれを選ぶのか”という理由を持てることが、実務における差別化になります。