بیز ساده Gaussian یه روش دستهبندی مبتنی بر احتماله که فرض میکنه توزیع ویژگیها توی دادهها به صورت نرماله. این به این معنیه که هر ویژگی دادههای آموزشی توسط میانگین و واریانسش توصیف میشه.
برای هر کلاس، میانگین و واریانس هر ویژگی محاسبه میشه. بعد، با استفاده از این پارامترها، احتمال تعلق یک نمونه جدید به هر کلاس تعیین میشه. این احتمالات با استفاده از تابع چگالی احتمال نرمال محاسبه میشن.
برای درک بهتر، فرض کنین میخوایم بر اساس ویژگیهایی مثل قد و وزن، افراد رو به گروههای ورزشی مختلف طبقهبندی کنیم. اول باید میانگین و واریانس قد و وزن توی هر گروه ورزشی رو محاسبه کنیم. در ادامه برای طبقهبندی یک نفر جدید، احتمال تعلقش به هر گروه بر اساس ویژگیهایش محاسبه میشه.
یکی از مزایای اصلی بیز ساده Gaussian سادگی و کارآمدیش در مواجهه با دادههای پیوستهست. اما مثل بقیه مدلهای بیز ساده، این روش هم فرض میکنه که ویژگیها مستقل از هم هستن، که در بسیاری از مثالهای دنیای واقعی کاربرد نداره. همچنین، عملکردش در مواجهه با دادههایی که توزیع نرمال ندارن، ممکنه کاهش پیدا کنه.
#Machine_Learning
#Naive_Bayes
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👌6❤2👍1👨💻1
❓کوئیز شماره ۴۰: کدوم گزینه یه پارامتر GaussianNB توی کتابخانه Scikit-Learn هست؟
Anonymous Quiz
33%
priors
19%
max_features
37%
n_estimators
12%
learning_rate
😎7❤2🤔2👍1
بعضی از روشهای متداول برای بهبود عملکرد طبقهبندی توی بیز ساده کاربردی نیستن. در ادامه روشهای موثر برای این الگوریتم رو بررسی میکنیم.
#Machine_Learning
#Naive_Bayes
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤1👨💻1
❓کوئیز شماره ۴۱: تکنیک Laplace Smoothing توی بیز ساده چطور مشکل احتمالات صفر رو برطرف میکنه؟
Anonymous Quiz
64%
با اضافه کردن یه مقدار ثابت به همه مقادیر، تا از اختصاص احتمال صفر جلوگیری شه.
7%
با کاهش اهمیت ویژگیهایی که احتمال بالایی دارن.
29%
با تغییر توزیع احتمالات به طوری که به حالت نرمال نزدیک شن.
❤7😎4👌2
#Machine_Learning
#Naive_Bayes
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8👌2❤1👨💻1
نایو بیز به طور گسترده توی طبقهبندی متن مثل تشخیص ایمیل اسپم و تجزیه و تحلیل احساسات محتوای شبکههای اجتماعی استفاده میشه. این روش به دلیل تواناییاش توی کار با ویژگیهای متنی که اکثرا بسیار بزرگ و پراکنده هستن، محبوبه.
توی حوزه پزشکی، نایو بیز میتونه برای تشخیص بیماریها و کمک به تصمیمگیریهای بالینی استفاده شه. این مدل با در نظر گرفتن ویژگیهای مختلف بیمار، پیشبینیهای دقیقی ارائه میده.
نایو بیز توی ساخت سیستمهای توصیهگر برای پیشنهاد محصولات یا خدمات به کاربران بر اساس علایق و رفتارهای گذشتهشون به کار میره. سرعت و کارایی بالا و سادگی مدل از دلایل دیگه استفاده نایو بیز توی سیستمهای توصیهگره.
یکی از بزرگترین مزایای نایو بیز، سادگی و سرعت آموزش و پیشبینیش هست. این مدل به راحتی قابل پیادهسازیه و به منابع کمتری نسبت به سایر مدلهای پیچیدهتر نیاز داره.
نایو بیز توی مواجهه با مجموعههای دادهی بزرگ و دارای ابعاد بالا عملکرد خوبی داره. این قابلیتش اونو را برای کاربردهایی مثل طبقهبندی متن و تجزیه و تحلیل دادههای بزرگ مفید میکنه.
نایو بیز میتونه توی شرایطی که بخشی از دادهها گم شده یا ناقصه، همچنان عملکرد خوبی داشته باشه. این ویژگی اونو برای کاربردهای دنیای واقعی که اغلب با دادههای ناکامل مواجه هستیم، ایدهآل میکنه.
نایو بیز به خوبی میتونه با تغییرات توی مجموعه دادهها سازگار شه. این انعطافپذیری به محققان و مهندسان اجازه میده که مدلها رو به سرعت بهروزرسانی کنن.
#Machine_Learning
#Naive_Bayes
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤1👌1👨💻1
❓کوئیز شماره ۴۲: چطور میشه توضیح داد که نایو بیز تا چه حد در برابر ویژگیهای نامربوط مقاومه و این موضوع چه تأثیری روی عملکرد کلیش داره؟
Anonymous Quiz
26%
مقاومت کامل، بدون تأثیر منفی بر دقت
46%
مقاومت متوسط، با کاهش جزئی در دقت
14%
حساسیت بالا، با کاهش قابل توجه در دقت
14%
حساسیت نسبی، با تغییرات پیچیده در عملکرد
😎6👌2❤1
- نایو بیز
- شبکههای بیزی
- میدانهای تصادفی مارکوف
- رگرسیون لجستیک
- ماشین بردار پشتیبان
- شبکههای عصبی سنتی
- KNN
#Machine_Learning
#Naive_Bayes
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👌8❤1👍1👨💻1
توی این کد انواع مختلف طبقهبندیکنندههای نایو بایز رو روی یک دیتاست پیاده سازی و عملکردها رو مقایسه کردیم. این کد برای هر مدل بیز ساده، دقت (accuracy) رو محاسبه میکنه و بهترین مدل رو بر اساس بالاترین دقت انتخاب میکنه.
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_iris
from sklearn.naive_bayes import GaussianNB, MultinomialNB, BernoulliNB
from sklearn.metrics import accuracy_score
data = load_iris()
X = data.data
y = data.target
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
models = {
"GaussianNB": GaussianNB(),
"MultinomialNB": MultinomialNB(),
"BernoulliNB": BernoulliNB()
}
for name, model in models.items():
model.fit(X_train, y_train)
y_pred = model.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
print(f"{name} Accuracy: {accuracy}")
best_model = max(models, key=lambda k: models[k].score(X_test, y_test))
print(f"Best Model: {best_model}")
MultinomialNB Accuracy: 0.95
BernoulliNB Accuracy: 0.28
Best Model: GaussianNB
#Machine_Learning
#Naive_Bayes
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤4👌2👏1
❓کوئیز شماره ۴۳: کدوم یک از پارامترهای زیر در مدلی که از sklearn.naive_bayes import GaussianNB ساخته میشه، وجود نداره؟
Anonymous Quiz
26%
var_smoothing
20%
priors
31%
alpha
23%
class_prior
😎7👍3🤔1
#Machine_Learning
#Naive_Bayes
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10👌2❤1👏1
https://t.iss.one/data_ml/139
#Weekend
#Machine_Learning
#Naive_Bayes
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👏6❤1🔥1
Audio
@DSLanders | دیاسلندرز
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤1🔥1
#Machine_Learning
#KNN
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12👌2👨💻1
الگوریتم یادگیری باناظر K-Nearest Neighbor(KNN) یا K نزدیکترین همسایه، برای حل مسائل طبقهبندی و رگرسیون به کار میره. این الگوریتم بر اساس این فرضیهست که دادههای مشابه توی فضای ویژگی نزدیک به هم دیگه قرار دارن.
الگوریتم KNN به دلیل غیر پارامتریک بودنش، یعنی اینکه هیچ فرضی راجع به توزیع دادهها نمیکنه (بر خلاف الگوریتمهای دیگه مثل GaussianNB که توزیع نرمال دادهها رو فرض میکنن)، توی مسائل واقعی بسیار قابل استفادهست. KNN یه الگوریتم مبتنی بر برداره و نزدیکترین همسایهها بر اساس روشهای محاسبه فاصله، مثل فاصله اقلیدسی انتخاب میشن.
این الگوریتم میتونه هم با دادههای عددی و هم با دادههای Categorical کار کنه، که این ویژگی KNN رو به گزینهای انعطافپذیر برای انواع مختلف مجموعههای داده تبدیل میکنه. K-NN نسبت به بقیه الگوریتمها به نویز و دادههای خارج از محدوده (outliers) کمتر حساسه.
توی تصویر، یه نمودار دو بعدی و دادههایی با دو طبقهبندی نشون داده شدن. دسته اول با رنگ قرمز، دسته دوم رنگ آبی و یه داده جدید (new data point) که هنوز به هیچ کدوم از دستهها اختصاص داده نشده وجود داره.
براساس الگوریتم KNN، برای طبقهبندی داده جدید، ما به دنبال نزدیکترین همسایگان به این نقطه توی فضای ویژگی هستیم. برای مثال، اگه K رو برابر 3 در نظر بگیریم، سه تا از نزدیکترین همسایهها به نقطه جدید رو در نظر میگیریم و براساس فاصله این سه همسایه، نقطه جدید رو طبقهبندی میکنیم.
مقدار K توی K-NN بسیار مهمه و تعداد همسایهها رو تعیین میکنه و انتخابش باید بر اساس دادههای ورودی صورت بگیره. اگه دادههای ورودی دارای نویز یا outliers بالایی باشن، انتخاب مقدار بالاتر برای K بهتره. توصیه میشه مقدار K به صورت عدد فرد انتخاب شه و روشهای اعتبارسنجی متقابل توی انتخاب بهترین مقدار K موثرن.
#Machine_Learning
#KNN
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
❤11👌2👨💻1
❓کوئیز شماره ۴۴: الگوریتم _______ روش یادگیری تنبل (lazy learner) داره. چون تابع تمیزدهنده (Discriminative function) رو از دادههای آموزشی یادنمیگیره.
Anonymous Quiz
71%
KNN
29%
K-means
👍6😎4👏1
هیچ قانون مشخصی برای انتخاب یک k استاندارد وجود نداره. این مقدار بسته به دیتاست متفاوته اما به طور کلی، هدف اصلی حفظ k در حدیه که:
- کوچک باشه تا نمونههای سایر کلاسها رو حذف کنه اما
- به اندازه کافی بزرگ باشه تا هرگونه نویز توی دادهها رو به حداقل برسونه.
یک راه برای جستجوی مقدار بهینه این پارامتر، Elbow method هست که شامل ایجاد یک حلقه for هست که مدلهای مختلف KNN رو با مقادیر k مختلف آموزش میده، و بعد از مدلی که بالاترین دقت رو داره، استفاده میکنه.
#Machine_Learning
#KNN
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤3👨💻1
توی K نزدیکترین همسایه، بیشترین هزینه محاسباتی برای فاز پیشبینی هست، جایی که الگوریتم باید K نزدیکترین همسایه به یک نقطه داده جدید رو شناسایی کنه.
الگوریتم K-NN باید برای هر نقطهای که مورد بررسی قرار میگیره، فاصلهاش رو با تمام n نقطه دیگه دادهها حساب کنه و برای این محاسبه، باید از تمام d ویژگیهای هر نقطه عبور کنه (O(n * d))، در نتیجه پیچیدگی محاسباتی زیادی داره.
#Machine_Learning
#KNN
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7👌2👏1
❓کوئیز شماره ۴۵: کدوم یک از الگوریتمهای یادگیری ماشین زیر میتونه برای جایگزین کردن مقادیر گمشده هم توی متغیرهای Categorical و هم توی متغیرهای پیوسته استفاده شه؟
Anonymous Quiz
71%
K-NN
10%
Linear Regression
19%
Logistic Regression
👍6😎4🔥1
الگوریتم k-Means یه الگوریتم خوشهبندیه که سعی میکنه مجموعهای از نقاط رو به k مجموعه تقسیم کنه؛ به طوری که نقاط هر خوشه نزدیک به هم باشن و بدون نظارته.
الگوریتم KNN یه الگوریتم طبقهبندی (یا رگرسیون) هست که برای تعیین طبقهبندی یه نقطه، طبقهبندی k نزدیکترین نقطه رو ترکیب میکنه. باناظره چون سعی میکنه یه نقطه رو بر اساس طبقهبندی شناخته شده سایر نقاط طبقهبندی کنه.
#Machine_Learning
#KNN
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👌9❤1👏1
درخت KD (درخت K-بعدی) ساختارهای داده پیچیدهای هست که برای سازماندهی و جستجوی کارآمد دادههای چند بعدی به کار میره.
الگوریتم درخت KD فضای داده رو با استفاده از صفحات hyperplanes که عمود بر محورهای مختصات هستن، تقسیم میکنه و یک ساختار درختی دودویی ایجاد میکنه. ساختار درختهای KD بسیار مناسب و مؤثر برای مرتبسازی و دستهبندی اطلاعات در فضاهای گسترده و چندبعدیه.
الگوریتم درخت KD توی کتابخانههای پایتونی مثل Scikit-learn پیادهسازی شده، که به کاربران ابزارهای قدرتمندی رو برای بهینهسازی عملیات جستجوی نزدیکترین همسایه در ابعاد و ویژگیهای مختلف دیتاست میده.
کاربرد در KNN
توی KNN، درختهای K-بعدی برای کاهش زمان جستجو توی فضای چندبعدی استفاده میشن. به جای بررسی تک تک نقاط، این الگوریتم میتونه با پیمایش درخت، سریعتر نقاط نزدیک رو پیدا کنه.
پیچیدگیها و بهینهسازیها
درختهای K-بعدی میتونن نامتعادل بشن. استفاده از الگوریتمهای متعادل کننده مثل درختهای AVL یا Red-Black میتونن مفید باشن. همچنین انتخاب تعداد همسایهها (K) تأثیر زیادی روی دقت پیشبینی داره.
from sklearn.neighbors import KDTree, KNeighborsClassifier
import numpy as np
X = np.array([[1, 2], [3, 4], [5, 6], [7, 8], [9, 10]])
y = np.array([0, 1, 0, 1, 0])
knn = KNeighborsClassifier(n_neighbors=3, algorithm='kd_tree')
knn.fit(X, y)
# Predicting the label for a new point using KNN
query_point = np.array([[2, 3]])
prediction = knn.predict(query_point)
print("KNN prediction for the new point: ", prediction)
# Creating an independent KD Tree using the data
kdtree = KDTree(X, leaf_size=30, metric='euclidean')
# Searching for the 3 nearest neighbors using the KD Tree
dist, ind = kdtree.query(query_point, k=3)
print("Nearest neighbors using KD Tree:")
print("Distances: ", dist)
print("Indices: ", ind)
Nearest neighbors using KD Tree:
Distances: [[1.41421356 1.41421356 4.24264069]]
Indices: [[0 1 2]]
#Machine_Learning
#KNN
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👌7👨💻2❤1👍1