පාඩම 4.3: නිරීක්ෂණ රහිත ඉගෙනුම

ලේබල් නොමැති දත්ත වලින් සැඟවුණු රටා සහ ව්‍යුහයන් සොයා ගැනීම.

1. නිරීක්ෂණ රහිත ඉගෙනුම (Unsupervised Learning) යනු කුමක්ද?

අධීක්ෂිත ඉගෙනුමේදී මෙන් නොව, නිරීක්ෂණ රහිත ඉගෙනුමේදී අපි පරිගණකයට ලේබල් නොකරන ලද දත්ත (unlabeled data) ලබා දෙමු. එනම්, "නිවැරදි පිළිතුර" කුමක්දැයි අපි කියා දෙන්නේ නැත. ඒ වෙනුවට, දත්තවල ඇති සැඟවුණු ව්‍යුහයන්, සම්බන්ධතා සහ රටා තනිවම සොයා ගැනීමට පරිගණකයට ඉඩ සලසමු.

ඇනලොජිය

විවිධ වර්ගයේ, ප්‍රමාණයේ, සහ වර්ණවලින් යුත් සෙල්ලම් බඩු ගොඩක් දරුවෙකුට දී, කිසිදු උපදෙසක් නොමැතිව ඒවා "කණ්ඩායම් වලට වෙන් කරන්න" යැයි පැවසීමක් වැනිය. දරුවා (ML model) සෙල්ලම් බඩු වල සමානකම් (උදා: සියලුම රතු පාට ඒවා, සියලුම රවුම් ඒවා) හඳුනාගෙන, ඒවා ස්වභාවික කණ්ඩායම් වලට වෙන් කරනු ඇත. "නිවැරදි" කණ්ඩායම් කිරීමක් නොමැත; ඇත්තේ දත්තවල ඇති ව්‍යුහය මත පදනම් වූ සොයාගැනීමක් පමණි.

ප්‍රධාන අරමුණ: දත්තවල අභ්‍යන්තර ව්‍යුහය (underlying structure) තේරුම් ගැනීම.

2. නිරීක්ෂණ රහිත ඉගෙනුමේ ප්‍රධාන වර්ග

A. පොකුරු ගැසීම (Clustering)

අරමුණ: දත්ත ඒවායේ සමානකම් (similarity) මත පදනම්ව ස්වභාවික කණ්ඩායම් (clusters) වලට වෙන් කිරීම. එකම cluster එකක ඇති දත්ත එකිනෙකට බෙහෙවින් සමාන වන අතර, විවිධ cluster වල ඇති දත්ත එකිනෙකට බෙහෙවින් වෙනස් වේ.

  • ප්‍රායෝගික භාවිතයන්:
    • පාරිභෝගික කොටස් කිරීම (Customer Segmentation): පාරිභෝගිකයන්ගේ මිලදී ගැනීමේ රටා, වයස, සහ රුචිකත්වයන් අනුව කණ්ඩායම් කර, එක් එක් කණ්ඩායමට ගැලපෙන අලෙවිකරණ දැන්වීම් යැවීම.
    • ප්‍රවෘත්ති ලිපි කාණ්ඩ කිරීම: දේශපාලනය, ක්‍රීඩා, විද්‍යා වැනි මාතෘකා යටතේ ප්‍රවෘත්ති ලිපි ස්වයංක්‍රීයව කාණ්ඩ කිරීම.
    • ජාන විද්‍යාව: සමාන ජානමය ප්‍රකාශන රටා ඇති පුද්ගලයින් කණ්ඩායම් කිරීම.
Python උදාහරණය: KMeans Clustering

මෙම උදාහරණයේදී, අපි දත්ත ලක්ෂ්‍යයන් ස්වභාවික පොකුරු 3කට වෙන් කරමු.

from sklearn.datasets import make_blobs
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt

# 1. ලේබල් නොකළ දත්ත කට්ටලයක් නිර්මාණය කිරීම (උදාහරණයක් ලෙස)
# X යනු දත්ත ලක්ෂ්‍ය වන අතර, y (ලේබල්) අපි භාවිතා නොකරමු.
X, y = make_blobs(n_samples=300, centers=3, cluster_std=0.80, random_state=0)

# 2. KMeans ආකෘතිය නිර්මාණය කර පුහුණු කිරීම
# අපි පොකුරු 3ක් (n_clusters=3) සොයන බව ආකෘතියට කියමු
kmeans = KMeans(n_clusters=3, random_state=0, n_init='auto')
kmeans.fit(X) # මෙහිදී අපි දෙන්නේ X (දත්ත) පමණයි, y (පිළිතුරු) නැත!

# 3. එක් එක් දත්ත ලක්ෂ්‍යය අයත් වන පොකුර (cluster) ලබා ගැනීම
predicted_clusters = kmeans.labels_
print("පළමු දත්ත ලක්ෂ්‍ය 10 අයත් වන පොකුරු:", predicted_clusters[:10])

# 4. ප්‍රතිඵලය දෘශ්‍යකරණය කිරීම (Optional)
plt.scatter(X[:, 0], X[:, 1], c=predicted_clusters, s=50, cmap='viridis')
centers = kmeans.cluster_centers_
plt.scatter(centers[:, 0], centers[:, 1], c='red', s=200, alpha=0.75)
plt.title('KMeans Clustering ප්‍රතිඵලය')
plt.show()

B. ආශ්‍රිත නීති ඉගෙනුම (Association Rule Learning)

අරමුණ: විශාල දත්ත කට්ටලයක, අයිතම අතර ඇති රසවත් සම්බන්ධතා සහ "if-then" රටා සොයා ගැනීම. මෙය "Market Basket Analysis" ලෙසද හැඳින්වේ.

  • ප්‍රායෝගික භාවිතයන්:
    • සුපිරි වෙළඳසැල්: "පාන් මිලදී ගන්නා පාරිභෝගිකයින්ගෙන් 70% ක්, බටර් ද මිලදී ගනී" වැනි රටා සොයාගෙන, එම භාණ්ඩ දෙක එකිනෙකට ආසන්නව තැබීමෙන් විකුණුම් වැඩි කර ගැනීම.
    • Recommendation Engines: "The Matrix චිත්‍රපටය නැරඹූ අය, Inception චිත්‍රපටයටද කැමති වීමට ඉඩ ඇත" වැනි රටා හඳුනාගෙන, පරිශීලකයින්ට නිර්දේශ ඉදිරිපත් කිරීම (Netflix, YouTube, Amazon).
සාරාංශය සහ ඉදිරි පියවර

මෙම පාඩමේදී ඔබ, ලේබල් නොමැති දත්ත වලින් ඉගෙන ගන්නා නිරීක්ෂණ රහිත ඉගෙනුම පිළිබඳව ඉගෙන ගත්තා. එහි ප්‍රධාන යෙදුම් වන පොකුරු ගැසීම (දත්ත කාණ්ඩ කිරීම) සහ ආශ්‍රිත නීති (සම්බන්ධතා සෙවීම) පිළිබඳව ඔබ දැන් දන්නවා.