1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

猿でもわかるAIプログラミングシリーズ 🐵💻 AIにおける「教師あり」と「教師なし」の違いって何?

Posted at

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開発において一番重要なのは「適材適所」
アルゴリズムの種類を知っているだけでなく、“なぜそれを選ぶのか”という理由を持てることが、実務における差別化になります。


📎 参考リンク

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?