الذكاء الاصطناعي | التعلم غير المراقب

التعلم غير المراقب مع Iris Dataset (Prof Aboubakr)

نستخدم البيانات دون تصنيفات جاهزة، ثم نترك النموذج يكتشف التجمعات والأنماط بنفسه.

KMeans Iris Dataset Clustering PCA

ما معنى التعلم غير المراقب؟

🔍

اكتشاف الأنماط

نبحث عن عينات متشابهة بدون تصنيفات محددة مسبقاً.

📊

التجميع

نجمع العناصر القريبة في نفس المجموعة أو الكتلة.

🧠

بدون labels

لا يوجد عمود هدف، وإنما نبحث عن البنية داخل البيانات.

في التعلم المراقب نعرف الإجابة الصحيحة مسبقاً، لكن في التعلم غير المراقب نطلب من النموذج أن يكتشف الفئات بنفسه من خلال التشابه بين العينات.

ما هو Iris Dataset؟

مجموعة بيانات Iris من أشهر مجموعات البيانات في الذكاء الاصطناعي. وهي تحتوي على 150 عينة، وكل عينة تمثل زهرة من أحد أنواع Iris الثلاثة: Setosa، Versicolor، و Virginica.

150
عدد العينات
4
عدد الميزات
3
عدد الأنواع
Sepal Length Sepal Width Petal Length Petal Width Species
5.1 3.5 1.4 0.2 Setosa
6.2 3.4 5.4 2.3 Virginica
5.9 3.0 4.2 1.5 Versicolor
Sepal Length
طول الكأس
Sepal Width
عرض الكأس
Petal Length
طول البتلة
Petal Width
عرض البتلة

لماذا هذا المثال مهم؟

  • • مثال بسيط جدًا لفهم clustering.
  • • يحتوي على ثلاث مجموعات واضحة تقريباً.
  • • مناسب جدًا لتطبيق KMeans و PCA.
  • • يساعدنا في فهم فكرة التجميع بدون تصنيفات.
ملاحظة:
البيانات في Iris ليست متطابقة 100% مع الأنواع الحقيقية، لكن الخوارزمية غالباً تكتشف ثلاث مجموعات رئيسية متقاربة جداً في الأبعاد.

رؤية بصرية: تجميع Iris

كيف يرى النموذج التشابه؟

1. نقاط البيانات
2. حساب المسافة
d = sqrt((x2-x1)^2 + (y2-y1)^2)
3. التجميع
أي نقطة يتم ربطها بالمجموعة الأقرب إليها حسب المسافة، وهذا هو جوهر خوارزمية KMeans.

مخطط KMeans

from sklearn.datasets import load_iris
from sklearn.cluster import KMeans
from sklearn.metrics import silhouette_score

iris = load_iris()
X = iris.data

model = KMeans(n_clusters=3, random_state=42)
labels = model.fit_predict(X)

score = silhouette_score(X, labels)
print("Cluster labels:", labels)
print("Silhouette Score:", round(score, 3))

نقوم بتحميل Iris، ثم نطلب من KMeans أن يجد 3 مجموعات مختلفة داخل البيانات.

كل عينة تُسند إلى المجموعة الأقرب إلى مركزها. التكرار المستمر يحسن مواقع المراكز.

الفكرة الأساسية: المجموعات تُشكل من المدى المشترك بين العينات، لا من تصنيف جاهز.

PCA: تقليل الأبعاد لتسهيل التصور

في Iris توجد 4 ميزات، وهذا يعني أننا نعمل في فضاء 4D، وهو صعب جدًا للتصور البصري.

عند استخدام PCA نختزل هذه الميزات إلى بعدين فقط، مع الحفاظ على أكبر قدر ممكن من المعلومات.

الفكرة: نستخدم PCA قبل الرسم أو قبل clustering عندما نريد رؤية البنية الأساسية للبيانات بشكل أبسط.

كود PCA

from sklearn.datasets import load_iris
from sklearn.decomposition import PCA
from sklearn.cluster import KMeans

iris = load_iris()
X = iris.data

pca = PCA(n_components=2)
X_pca = pca.fit_transform(X)

kmeans = KMeans(n_clusters=3, random_state=42)
labels = kmeans.fit_predict(X_pca)

print(X_pca[:5])
print(labels[:10])

نستخدم PCA لتحويل 4 ميزات إلى 2 فقط، ثم نطبق KMeans على البيانات المختزلة.

هذا يجعل الرسم أسهل ومفيداً جداً عندما نريد شرح النتائج للطلاب أو للمديرين.

متى نستخدم PCA؟ عندما نريد تقليل الأبعاد أو تسهيل الرؤية، وليس بالضرورة عند تدريب نموذج كلي.

كود كامل: KMeans + PCA

from sklearn.datasets import load_iris
from sklearn.decomposition import PCA
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt

iris = load_iris()
X = iris.data

pca = PCA(n_components=2)
X_pca = pca.fit_transform(X)

kmeans = KMeans(n_clusters=3, random_state=42)
labels = kmeans.fit_predict(X_pca)

plt.figure(figsize=(8, 6))
plt.scatter(X_pca[:, 0], X_pca[:, 1], c=labels, cmap='viridis', s=60)
plt.title('Iris Clustering after PCA')
plt.xlabel('Principal Component 1')
plt.ylabel('Principal Component 2')
plt.show()