مرز تصمیم‌گیری

**مرز تصمیم‌گیری** از دیدگاه ریاضیات به‌صورت زیر تعریف می‌شود:

فرض کنید داده‌های ما در فضای ویژگی‌ها قرار دارند، هر داده توسط یک بردار ویژگی مشخص می‌شود. اگر n دسته‌ی مختلف در داده‌ها وجود داشته باشند، **مرز تصمیم‌گیری (Decision Boundary)** می‌تواند مرزی در فضای ویژگی‌ها باشد که این n دسته را از یکدیگر جدا کند.

در مسائل ساده، مرز تصمیم‌گیری می‌تواند خطی باشد، به این معنی که یک خط یا یک ابر صفحه در فضای ویژگی‌ها وجود دارد که داده‌ها را به چند دسته جدا می‌کند. مثلاً در یک مسئله دو کلاسه، اگر داده‌ها در فضای دوبعدی باشند، مرز تصمیم‌گیری می‌تواند یک خط باشد که داده‌های دسته اول را از داده‌های دسته دوم جدا کند.

در مسائل پیچیده‌تر، مرز تصمیم‌گیری ممکن است غیرخطی باشد، به این معنی که نمی‌تواند توسط یک خط یا یک ابر صفحه ساده نمایش داده شود. برای مثال، در یادگیری عمیق (Deep Learning)، مدل‌های عصبی با شبکه‌های عمیق قادر به یادگیری و نمایش مرزهای تصمیم غیرخطی هستند، که این مرزها قادر به تعیین دسته‌بندی دقیق‌تر بر روی داده‌ها هستند.

اهمیت مرزهای تصمیم‌گیری در توانایی آن‌ها در به تصویر کشیدن ساختار و الگوهای اساسی در داده ها نهفته است. با یادگیری و استفاده از این مرزها، مدل‌های یادگیری ماشین و یادگیری عمیق می‌توانند به طور دقیق نقاط داده را طبقه‌بندی کنند و کارهایی مانند تشخیص تصویر، تجزیه و تحلیل متن و غیره را انجام دهند. توانایی جدا کردن نقاط داده بر اساس ویژگی‌های آنها به ما این امکان را می دهد تا بین نمونه‌های مختلف تمایز قائل شویم و الگوها را شناسایی کنیم.

## انواع مرزهای تصمیم‌گیری

انتخاب نوع مرز تصمیم به پیچیدگی مسئله، داده‌ها و پیچیدگی مدل و توانایی تعمیم مدل بستگی دارد. با انتخاب نوع مناسب مرز تصمیم‌گیری، مدل‌ها می‌توانند به‌طور مؤثر الگوهای اساسی در داده‌ها را شناسایی کنند و پیش‌بینی‌های دقیقی را انجام دهند.

برخی از انواع مرزهای یادگیری تصمیم‌گیری عبارتند از:
***مرز تصمیم‌گیری خطی:**
مرز تصمیم‌گیری خطی، یک خط است که کلاس‌های متمایز یک مجموعه داده را، از هم جدا می‌کند. مدل‌های خطی مانند رگرسیون خطی و رگرسیون لجستیک و همچنین ماشین بردار پشتیبانی زمانی که داده ها را بتوان توسط یک تابع خطی از هم جدا کرد، به خوبی کار می کنند.

***مرز تصمیم گیری غیر خطی:**

مرز تصمیم گیری غیر خطی انعطاف پذیرتر هستند و می توانند روابط پیچیده بین ویژگی‌ها را مدیریت کنند.
آن‌ها می‌توانند اشکال مختلفی مانند منحنی، دایره یا خطوط نامنظم داشته باشند. مرزهای تصمیم غیرخطی را می‌توان با الگوریتم‌هایی مانند درخت تصمیم، جنگل‌های تصادفی، کی-نزدیک‌ترین همسایه یا روش های مبتنی بر هسته مانند ماشین بردار پشتیبانی با هسته‌های غیر خطی و همچنین شبکه‌های عصبی یاد گرفت.

***مرز تصمیم‌گیری خطی تکه‌ای:**
مرزهای تصمیم خطی تکه‌ای شامل بخش‌های خطی هستند که به هم متصل شده‌اند تا مرز پیچیده‌تری را تشکیل دهند. آن‌ها توسط الگوریتم‌هایی مانند درخت تصمیم یا مدل‌های مجموعه‌ای که به‌طور متوالی قوانین تصمیم‌گیری را برای ساختن مرز تصمیم‌گیری خطی تکه‌ای نهایی اضافه می‌کنند، مانند جنگل تصادفی یاد می‌گیرند. 

***مرز تصمیم‌گیری احتمالی:**
در برخی موارد، مرز تصمیم‌گیری قطعی نیست بلکه احتمالی است. مدل به جای تخصیص مستقیم نقاط داده به یک کلاس‌ خاص، احتمال تعلق به هر کلاس را تخمین می‌زند. سپس مرز تصمیم بر اساس احتمالاتی که تخمین زده شده تعیین می‌شود. نمونه‌هایی از مدل‌های احتمالی عبارتند از دسته‌بند بیز ساده و مدلِ ترکیبیِ گوسی.

## پیاده‌سازی [[پایتون (زبان برنامه‌نویسی)|پایتون]]
### مثالی از مرز تصمیم‌گیری خطی
* ابتدا یک مجموعه داده با استفاده از تابع **make_classification** از کتابخانه‌ی سایکیت-لرن تولید می کنیم.

```python3
from sklearn.datasets import make_classification
from sklearn.linear_model import LogisticRegression
import numpy as np
X, y = make_classification(n_samples=100, n_features=2, n_informative=2, n_redundant=0, n_clusters_per_class=1, random_state=42)
```

* سپس، یک مدل رگرسیون لجستیک بر روی این مجموعه داده با استفاده از **LogisticRegression** آموزش می‌دهیم. در مرحله بعد، نقاط داده را رسم می کنیم.

```python3
model = LogisticRegression()
model.fit(X, y)
plt.scatter(X[:, 0], X[:, 1], c=y, cmap='bwr', edgecolor='k')
x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1
y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1
xx, yy = np.meshgrid(np.arange(x_min, x_max, 0.02), np.arange(y_min, y_max, 0.02))
```

* در نهایت، از مدل آموزش‌دیده برای پیش‌بینی کلاس برای هر نقطه در شبکه استفاده می‌کنیم و مرز تصمیم‌گیری را با استفاده از کتابخانه‌ی مت‌پلات‌لیب ترسیم می‌کنیم، خروجی این قطعه کدها به‌صورت روبرو می‌باشد.


```python3
import matplotlib.pyplot as plt
Z = model.predict(np.c_[xx.ravel(), yy.ravel()])
Z = Z.reshape(xx.shape)
plt.contourf(xx, yy, Z, alpha=0.5, cmap='bwr')
plt.xlabel('Feature 1')
plt.ylabel('Feature 2')
plt.title('Linear Decision Boundary')
plt.show()
```


## منابع

رده:مقاله‌های ایجادشده توسط ایجادگر
رده:هوش مصنوعی
رده:یادگیری ماشین
رده:یادگیری عمیق
رده:الگوریتم‌های دسته‌بندی
رده:بازشناخت الگو
رده:دسته‌بندی آماری