اعتبارسنجی سایه‌نما (خوشه‌بندی) کیست؟ توضیح بده.
اعتبارسنجی سایه‌نما یا سیلوئت به روشی برای تفسیر و صحت ثبات در خوشه‌بندی اشاره دارد. این تکنیک یک نمایش گرافیکی مختصر از میزان طبقه‌بندی هر یک از اشیا ارائه می‌دهد.مقدار سیلوئت معیار میزان شباهت یک شی به خوشه خودش (انسجام) در مقایسه با خوشه‌های دیگر (جداسازی شده) است. محدوده سیلوئت از 1− تا ۱+ است، که در آن مقدار زیاد نشان می‌دهد که شی به خوبی با خوشه خود مطابقت دارد و با خوشه‌های همسایه همسان نیست. اگر بیشتر اشیا از مقدار بالایی برخوردار باشند، ساختار خوشه بندی مناسب است. اگر بسیاری از نقاط دارای مقدار کم یا منفی باشند، در این صورت ممکن است ساختار خوشه بندی دارای خوشه‌های بسیار زیاد یا بسیار کم باشد.سیلوئت را می‌توان با هر معیار سنجش فاصله، مانند فاصله اقلیدسی یا فاصله منهتن، محاسبه کرد.تعریف.فرض کنید داده‌ها به formula_1 خوشه از طریق هر تکنیکی مانند خوشه‌بندی کی-میانگین در آن خوشه بندی شده‌اندبرای داده‌ای مانند نقطهٔ formula_2 (نقطه formula_3 متعلق به خوشه formula_4)، قرار دهید:"کوچک‌ترین بودن" (از این رو formula_6 عملگر در فرمول) میانگین فاصله formula_3 با همه نقاط درخوشه‌های دیگر، که formula_3 عضو آنها نیست. خوشه ای با کوچک‌ترین میانگین عدم شباهت «خوشه همسایه» ی formula_3 نامیده می‌شود، زیرا این بهترین خوشه مناسب بعدی برای نقطه formula_3 است.اکنون (مقدار) "سیلوئت" یک نقطه داده formula_3 تعریف می‌کنیموکه می‌توان به صورت زیر نوشت:از تعریف بالا مشخص می‌شود کههمچنین، توجه داشته باشید که مقدار formula_18 برای خوشه‌هایی با اندازه مساوی ۱ مقدار عددی ۰ است. این محدودیت برای جلوگیری از افزایش قابل توجه تعداد خوشه‌ها اضافه شده‌است.برای formula_18 نزدیک به ۱ ما نیاز به formula_20 داریم. از آنجایی که formula_21 یک معیار چگونگی عدم شباهت formula_3 با خوشهٔ خودش است، پس مقدار کوچک آن به معنی مطابقت خوب آن است. بعلاوه بزرگی formula_23 حاکی از آن است که formula_3 با خوشه‌های همسایه مطابقت خوبی نداشته‌است. در نتیجه formula_18 نزدیک به یک به معنی خوشه بندی مناسب است.اگر formula_18 نزدیک به منفی یک باشد با همان منطق ما می‌بینیم که formula_3مناسب تر خواهد بود اگر در خوشه همسایه، خوشه بندی شده باشد. یک formula_18 نزدیک به صفر به این معنی است که داده در مرز طبیعی دو خوشه است.میانگین ای formula_18که روی همه نقاط یک خوشه بسته می‌شود، معیاری از این است که چه مقدار نقاط دسته‌بندی شده در یک خوشه به هم نزدیک هستند؛ بنابراین میانگین بر روی همهٔ داده‌های کل دیتاست به عنوان معیاری از میزان مناسب بودن داده‌های خوشه بندی شده‌است. اگر تعداد خوشه‌ها بسیار زیاد یا بسیار کم باشد، که این زمانی اتفاق می‌افتد که یک انتخاب بد برای k در الگوریتم خوشه بندی استفاده می‌شود، (به عنوان مثال: خوشه‌بندی کی-میانگین)، بعضی از خوشه‌ها معمولاً سیلوئت‌های باریک تری نسبت به بقیه نشان می‌دهند؛ بنابراین می‌توان از نمودارها، میانگین و ابزارهای سیلوئت برای تعیین تعداد طبیعی خوشه‌ها در یک مجموعه داده استفاده کرد. همچنین می‌توان با مقیاس گذاری مجدد داده‌ها با استفاده از وزن ویژگی‌های خاص خوشه، به حداکثر رساندن سیلوئت در تعداد صحیح خوشه‌ها را افزایش داد.کافمن و همکاران واژه "ضریب سیلوئت" را برای حداکثر رساندن مقدار میانگینformula_18 بر روی همهٔ داده‌های کل دیتاست معرفی کرده‌اند.بطوریکه formula_32 نشاندهندهٔ میانگین formula_18 را بر روی همهٔ داده‌های کل دیتاست برای یک تعداد خاصی از خوشه formula_1هااست.مثال امتیاز سایه نما خوشه بندی در پایتون.پکیج‌های پایتون که روش‌های مختلفی برای محاسبه امتیاز خوشه بندی در اختیار ما قرار می‌دهند:محاسبه امتیازبندی خوشه نما در k همسایه مجاور(k-means cluster) با n دسته.در زیر قطعه کدی برای محاسبه امتیاز سایه نما در پایتون برای الگوریتم k-means با n = ۳ (تعداد خوشه‌ها برابر ۳) در دیتاست IRIS نوشته شده.from sklearn import datasetsfrom sklearn.cluster import KMeansfrom sklearn.metrics import silhouette_scoreiris = datasets.load_iris()X = iris.datay = iris.targetkm = KMeans(n_clusters=3, random_state=42)km.fit_predict(X)score = silhouette_score(X, km.labels_, metric='euclidean')print('Silhouetter Score: %.3f' % score)با اجرای کد بالا به امتیاز ۰٫۵۵ می‌رسیم.روشی برای یافتن بهترین مقدار k با استفاده از امتیاز سایه نمادر ابتدا برای این کار از پکیج yellowBrick برای نمایش نمودارهای سایه نما برای الگوریتم k—means با مقادیر مختلف خوشه‌ها 2,3,4,5.from yellowbrick.cluster import SilhouetteVisualizerimport matplotlib.pyplot as pltfig, ax = plt.subplots(2, 2, figsize=(15,8))scores = []for i in [2, 3, 4, 5]: Create KMeans instance for different number of clusters km = KMeans(n_clusters=i, init='k-means++', n_init=10, max_iter=100, random_state=42) # Fit the KMeans model km.fit_predict(X) # Calculate Silhoutte Score score = silhouette_score(X, km.labels_, metric='euclidean') scores.append(score) q, mod = divmod(i, 2) Create SilhouetteVisualizer instance with KMeans instance Fit the visualizer visualizer = SilhouetteVisualizer(km, colors='yellowbrick', ax=ax[q-1][mod]) visualizer.fit(X)print(max(scores), scores.index(max(scores)))با اجرای کد بالا به ۴ نمودار زیر می‌رسیم که به ترتیب از چپ بالا به سمت راست پایین برای تعداد خوشه‌های ۲و ۳و۴و۵ می‌باشند.