Shikata Ga Nai

Private? There is no such things.

26. 機械学習の基礎① 〜教師あり学習と教師なし学習とは?〜

Hello there, ('ω')ノ

📌 1. 機械学習とは?

✅ AI・機械学習・ディープラーニングの違い

「AI(人工知能)」という言葉はよく聞きますが、機械学習やディープラーニングとの違いを整理すると以下のようになります。

📌 AI(人工知能) - 人間のように学習・判断する技術の総称 - 例: チャットボット、画像認識、自動運転

📌 機械学習(Machine Learning) - データを使ってコンピュータが学習する手法 - 例: 価格予測、スパムメール分類

📌 ディープラーニング(Deep Learning) - 機械学習の一種で、ニューラルネットワークを活用 - 例: 画像認識、音声認識、自然言語処理(ChatGPT)

AI ⊃ 機械学習 ⊃ ディープラーニング の関係になっている!


📌 2. 教師あり学習 vs 教師なし学習

機械学習は 「教師あり学習」「教師なし学習」 に大きく分けられます。

✅ 教師あり学習(Supervised Learning)

📌 「正解データ(ラベル)」があるデータで学習する手法

説明
メールのスパム分類 「スパム」「スパムでない」のラベル付きデータで学習
売上予測 過去のデータ(気温・広告費・売上)から未来の売上を予測
画像認識(犬 or 猫) 「犬」or「猫」のラベル付き画像データで学習

教師あり学習では、入力と正解データを使って学習する!


✅ 教師なし学習(Unsupervised Learning)

📌 「正解データ(ラベル)」がないデータからパターンを見つける手法

説明
顧客のグルーピング 購買履歴をもとに似たユーザーを分類(クラスタリング)
異常検知 クレジットカードの不正利用を発見
次元削減 画像の特徴を少ない要素に圧縮(PCA)

教師なし学習では、データの構造を自動的に学習する!


📌 3. 代表的なアルゴリズム

それぞれの学習方法における 代表的なアルゴリズム を紹介します!

学習方法 タスク 代表的な手法
教師あり学習 分類(Classification) ロジスティック回帰, ランダムフォレスト, XGBoost, CNN
教師あり学習 回帰(Regression) 線形回帰, ランダムフォレスト回帰, LSTM
教師なし学習 クラスタリング(Clustering) K-means, DBSCAN, 階層クラスタリング
教師なし学習 次元削減(Dimensionality Reduction) PCA, t-SNE

問題に応じて適切なアルゴリズムを選ぶことが重要!


📌 4. Pythonで簡単に試してみよう!

✅ 教師あり学習(分類)

scikit-learn を使って スパムメール分類 の簡単な例を実装してみます!

from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import load_digits
from sklearn.metrics import accuracy_score

# 手書き数字データ(MNIST)をロード
digits = load_digits()
X, y = digits.data, digits.target

# データを学習用・テスト用に分割
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# ランダムフォレストで学習
model = RandomForestClassifier(n_estimators=100, random_state=42)
model.fit(X_train, y_train)

# 予測
y_pred = model.predict(X_test)

# 精度を表示
print(f"Accuracy: {accuracy_score(y_test, y_pred):.2f}")

手書き数字(0〜9)を分類する簡単な機械学習モデル!
教師あり学習(分類問題)の実装例!


✅ 教師なし学習(クラスタリング)

今度は、教師なし学習(K-meansクラスタリング)を試してみましょう!

from sklearn.cluster import KMeans
import matplotlib.pyplot as plt
import japanize_matplotlib  # 日本語対応

# データの準備(digits.data が定義されていることを前提)
X = digits.data

# K-means クラスタリング(🔹 n_init を指定)
kmeans = KMeans(n_clusters=10, n_init=10, random_state=42)
clusters = kmeans.fit_predict(X)

# 結果の可視化
plt.scatter(X[:, 0], X[:, 1], c=clusters, cmap="viridis", alpha=0.5)
plt.title("K-means クラスタリング結果")
plt.show()

教師なし学習の代表的な手法「K-meansクラスタリング」!
似たデータを自動的に分類する!


📌 5. 機械学習の選び方(分類 vs 回帰 vs クラスタリング)

どの機械学習を使うべきか迷ったときは、以下の表を参考にしてください!

問題の種類 推奨手法
分類(Yes/No, カテゴリ) スパムメール判定, 犬 or 猫判別 ロジスティック回帰, RandomForest, CNN
回帰(数値予測) 売上予測, 住宅価格予測 線形回帰, ランダムフォレスト回帰
クラスタリング(グルーピング) 顧客セグメント分析 K-means, DBSCAN

タスクに応じて適切なアルゴリズムを選ぶ!


🎯 まとめ

機械学習は「教師あり学習」と「教師なし学習」に分かれる!
分類・回帰・クラスタリングなど、目的に応じた手法を選ぶ!
Pythonを使って簡単に実装できる!

Best regards, (^^ゞ