ویرگول
ورودثبت نام
حسین بحری
حسین بحریسالهاست برنامه نویسی رو چه به عنوان حرفه و چه به عنوان سرگرمی و علاقمندی شخصی دنبال می کنم.
حسین بحری
حسین بحری
خواندن ۱۷ دقیقه·۱۸ روز پیش

کدام مدل هوش مصنوعی برای کدام مسئله مناسب است؟ - بخش اول (Naive Bayes)

سایر بخشهای این سلسله مقالات را از دست ندهید:
کدام مدل هوش مصنوعی برای کدام مسئله مناسب است؟ - بخش اول
کدام مدل هوش مصنوعی برای کدام مسئله مناسب است؟ - بخش دوم
کدام مدل هوش مصنوعی برای کدام مسئله مناسب است؟ - بخش سوم
کدام مدل هوش مصنوعی برای کدام مسئله مناسب است؟ - بخش چهارم

کدام مدل هوش مصنوعی برای کدام مسئله مناسب است؟ - بخش پنجم(K-means)

کدام مدل هوش مصنوعی برای کدام مسئله مناسب است؟ بخش ششم و آخر(KNN)

برنامه‌های کاربردی در حوزه هوش مصنوعی مبتنی بر مدل‌ها و الگوریتم‌های شناخته‌شده‌ای هستند که عمدتاً مسائلی در حوزه‌های دسته‌بندی، پیش‌بینی و تشخیص الگو را هدف قرار می‌دهند. این مدل‌ها با پردازش حجم عظیمی از داده‌ها، توانایی استخراج روابط پیچیده و ارائه بینش‌های دقیق را دارند که پایه‌و‌اساس بسیاری از فناوری‌های نوین امروزی محسوب می‌شوند. از سیستم‌های توصیه‌گر گرفته تا ابزارهای تشخیص ناهنجاری، همگی بر شانه‌های این الگوریتم‌های ریاضیاتی استوارند که با بهینه‌سازی مداوم، دقت و کارایی خود را در مواجهه با چالش‌های دنیای واقعی افزایش می‌دهند.
با این حال، تنوع و تخصصی‌شدن نیازهای صنعتی و اجتماعی منجر به ظهور نسل جدیدی از مدل‌های هوش مصنوعی شده است که فراتر از وظایف سنتی عمل می‌کنند. امروزه ما با طیف وسیعی از معماری‌ها روبرو هستیم؛ از مدل‌های زبانی بزرگ که درک و تولید متن را متحول کرده‌اند، تا شبکه‌های مولد متخاصم که قادر به خلق آثار هنری و طراحی‌های مهندسی هستند. درک این تفاوت‌ها و شناخت ویژگی‌های منحصر‌به‌فرد هر مدل، کلید اصلی انتخاب ابزار مناسب برای حل مسائل خاص است و مرز میان یک پروژه موفق و یک شکست پرهزینه را تعیین می‌کند.
هر چند مدل‌های نوین مانند مدل‌های زبانی بزرگ در حل بسیاری از مسائل کارآمد نشان داده‌اند، اما در برخی موارد مدل‌های کلاسیک نیز همچنان از کارایی مناسبی برخوردار بوده و از نظر هزینه-فایده و توان محاسباتی مورد نیاز به مدل‌های زبانی بزرگ برتری دارند. برای مثال، در مسائلی با داده‌های ساختاریافته و محدود، الگوریتم‌هایی نظیر رگرسیون لجستیک، ماشین بردار پشتیبان یا درخت‌های تصمیم نه‌تنها با سرعت بسیار بالاتر و مصرف انرژی ناچیز آموزش می‌بینند، بلکه تفسیرپذیری و شفافیت تصمیم‌گیری آن‌ها نیز در حوزه‌های حساس مانند پزشکی و مالی، مزیتی انکارناپذیر نسبت به جعبه‌سیاهِ مدل‌های عصبی عمیق محسوب می‌شود.
بنابراین، انتخاب میان مدل‌های کلاسیک و نوین نباید صرفاً بر اساس جدید بودن فناوری صورت گیرد، بلکه باید حاصل ارزیابی دقیقی از ماهیت مسئله، حجم و کیفیت داده‌ها، بودجه محاسباتی و الزامات عملیاتی باشد. رویکرد هوشمندانه در مهندسی هوش مصنوعی، بهره‌گیری از ترکیب بهینه این دو نسل است؛ جایی که مدل‌های سبک و چابک بار اصلی پردازش‌های روزمره و بلادرنگ را بر دوش می‌کشند و مدل‌های بزرگ تنها برای وظایف پیچیده و خلاقانه که واقعاً به توانمندی‌های منحصربه‌فردشان نیاز است، فراخوانده می‌شوند تا تعادلی پایدار میان عملکرد، هزینه و پایداری ایجاد گردد.
یک مثال کاربردی در دنیای واقعی که این برتری را نشان می‌دهد را با هم مرور می‌کنیم: سامانه تشخیص تقلب در تراکنش‌های بانکی بلادرنگ. در حالی که یک مدل زبانی بزرگ برای تحلیل هر تراکنش به صدها میلی‌ثانیه زمان و زیرساخت ابری پرهزینه نیاز دارد، یک مدل کلاسیک مانند «جنگل تصادفی» یا «گرادیانت بوستینگ» می‌تواند همان تراکنش را در کمتر از ۵ میلی‌ثانیه و مستقیماً روی سرورهای لبه‌ای بانک پردازش کند. این تفاوت زمانی ظاهراً ناچیز، وقتی در مقیاس میلیون‌ها تراکنش روزانه ضرب شود، به معنای صرفه‌جویی میلیون‌ها هزار تومان در ماه هزینه زیرساخت و جلوگیری از مسدودشدن تجربه کاربری مشتریان است، بدون آنکه دقت تشخیص کاهش یابد.
نکته کلیدی اینجاست که داده‌های تراکنش بانکی ذاتاً ساختاریافته و عددی هستند و الگوهای تقلب در آن‌ها طی سال‌ها به‌خوبی شناخته و برچسب‌گذاری شده‌اند؛ دقیقاً همان شرایطی که مدل‌های کلاسیک در آن می‌درخشند. استفاده از یک مدل زبانی بزرگ در این سناریو، نه‌تنها هزینه و پیچیدگی غیرضروری تحمیل می‌کند، بلکه به دلیل ماهیت احتمالاتی و عدم قطعیت خروجی‌هایش، ریسک خطاهای غیرقابل پیش‌بینی را نیز افزایش می‌دهد؛ مثل اینست که بخواهید پشه‌ای را با آتش سنگین یک توپخانه هدف بگیرید. این مثال به‌وضوح نشان می‌دهد که در مهندسی هوش مصنوعی عملی، «بهترین» مدل لزوماً بزرگ‌ترین یا جدیدترین نیست، بلکه مدلی است که با کمترین منابع، بیشترین ارزش تجاری و قابل‌اعتمادترین عملکرد را ارائه دهد.
در این مقاله کوتاه قصد دارم به معرفی برخی از مهم‌ترین مدل‌های کلاسیک هوش مصنوعی به زبانی ساده با تکیه بر سناریوها و کاربردهای عملی و واقعی بپردازم. هدف این نیست که شما را درگیر فرمول‌های ریاضی پیچیده یا تاریخچه آکادمیک این الگوریتم‌ها کنم، بلکه می‌خواهم نشان دهم هر کدام از این ابزارها دقیقاً برای حل چه نوع مسئله‌ای ساخته شده‌اند و چگونه می‌توانند در پروژه‌های واقعی، از مدیریت موجودی انبار تا پیش‌بینی ریزش مشتریان، نقش ایفا کنند.
با این رویکرد کاربردی، خواننده نه‌تنها با نام و تعریف مدل‌ها آشنا می‌شود، بلکه یاد می‌گیرد که هنگام مواجهه با یک چالش جدید، چگونه ذهنیت مهندسی خود را فعال کرده و به جای پرسیدن «کدام مدل جدیدتر است؟»، بپرسد «کدام مدل با داده‌ها و محدودیت‌های من سازگارتر است؟». این تغییر زاویه دید، مرز میان یک علاقه‌مند به هوش مصنوعی و یک توسعه‌دهنده مؤثر است که می‌تواند راه‌حل‌های پایدار، مقرون‌به‌صرفه و قابل اتکا ارائه دهد.


در ابتدا مروری می‌کنیم بر چند مسئله کاربردی واقعی که حل آن‌ها با استفاده از مدل‌های هوش مصنوعی کلاسیک مقرون‌به‌صرفه‌تر است. این مسائل معمولاً سه ویژگی مشترک دارند: داده‌های ورودی آن‌ها ساختاریافته و عددی است، رابطه بین متغیرها نسبتاً پایدار و قابل تعریف است و هزینه خطا یا تأخیر در تصمیم‌گیری مستقیماً بر سودآوری یا تجربه کاربر اثر می‌گذارد. برای نمونه، پیش‌بینی تقاضای فصلی محصولات در یک فروشگاه زنجیره‌ای، امتیازدهی اعتباری متقاضیان وام خرد، یا دسته‌بندی خودکار تیکت‌های پشتیبانی مشتریان بر اساس موضوع و اولویت، همگی مسائلی هستند که دهه‌هاست با موفقیت توسط الگوریتم‌های کلاسیک حل می‌شوند و جایگزینی آن‌ها با مدل‌های سنگین نه تنها مزیتی ایجاد نمی‌کند، بلکه چرخه توسعه و نگهداری را بی‌دلیل پیچیده می‌سازد.
بررسی این سناریوها به ما کمک می‌کند تا پیش از ورود به معرفی مدل‌ها، یک «نقشه ذهنی» از قلمرو مناسب هر ابزار ترسیم کنیم. وقتی بدانیم چه نوع مسائلی ذاتاً با رویکرد کلاسیک سازگارند، دیگر وسوسه نمی‌شویم که برای هر چالش جدیدی به سراغ راه‌حل‌های پرزرق‌وبرق برویم. این شناخت زمینه‌ای، پایه‌ای محکم برای بخش بعدی مقاله فراهم می‌آورد که در آن به تشریح مشخصات فنی و نقاط قوت هر مدل خواهیم پرداخت؛ چرا که بدون درک درست «مسئله»، حتی دقیق‌ترین توضیح درباره «مدل» نیز در عمل بی‌حاصل خواهد بود.

مدل‌ها و الگوریتمهای پرکاربرد

برخی از پرکاربردترین مدل‌های کلاسیک هوش مصنوعی عبارتند از: الگوریتم Naive Bayes برای دسته‌بندی سریع متن و داده‌های گسسته بر اساس احتمالات ساده‌شده، رگرسیون خطی و لجستیک برای پیش‌بینی مقادیر پیوسته و دسته‌بندی دوتایی، درخت تصمیم و جنگل تصادفی برای مسائل با قوانین شرطی شفاف و تفسیرپذیری بالا، ماشین بردار پشتیبان (SVM) برای مرزبندی دقیق در داده‌های با ابعاد متوسط، الگوریتم K-نزدیکترین همسایه (KNN) برای دسته‌بندی مبتنی بر شباهت محلی، خوشه‌بندی K-Means برای بخش‌بندی مشتریان یا شناسایی الگوهای پنهان بدون برچسب و تحلیل مؤلفه‌های اصلی (PCA) برای کاهش ابعاد داده و حذف نویز بدون از دست دادن اطلاعات مهم. هر یک از این مدل‌ها نه به عنوان جایگزین یکدیگر، بلکه به عنوان ابزارهایی مکمل در جعبه‌ابزار مهندس هوش مصنوعی عمل می‌کنند که انتخاب میان آن‌ها بیش از آنکه به «قدرت» مدل بستگی داشته باشد، به «تناسب» آن با ساختار داده و الزامات کسب‌وکار گره خورده است.

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

الگوریتم Naive Bayes

با الگوریتم Naive Bayes شروع می‌کنیم؛ مدلی که علی‌رغم سادگی ریاضی و فرض خوش‌بینانه «استقلال ویژگی‌ها»، همچنان یکی از سریع‌ترین و کارآمدترین ابزارها برای دسته‌بندی متنی و فیلتر کردن محتواست. این الگوریتم بر پایه قضیه بیز استوار است و به جای یادگیری روابط پیچیده میان کلمات، تنها احتمال تکرار هر واژه در هر دسته را محاسبه می‌کند؛ فرآیندی که حتی روی سخت‌افزارهای ضعیف و در کسری از ثانیه انجام می‌شود. به همین دلیل، Naive Bayes هنوز هم خط اول دفاعی در تشخیص ایمیل‌های ناخواسته یا همان اسپم‌، تحلیل احساسات نظرات کاربران و دسته‌بندی خودکار اخبار است؛ جایی که سرعت پردازش و نیاز ناچیز به داده آموزشی، بر دقت مطلق اولویت دارد.

قدرت واقعی این مدل نه در پیچیدگی، بلکه در «کفایت عملی» آن نهفته است. در بسیاری از سناریوهای واقعی، رسیدن به دقت ۹۰ درصد با هزینه محاسباتی نزدیک به صفر، ارزشمندتر از دستیابی به دقت ۹۵ درصد با مصرف منابعی صد برابر بیشتر است. Naive Bayes به ما می‌آموزد که در مهندسی هوش مصنوعی، گاهی بهترین راه‌حل، ساده‌ترین راه‌حل است؛ مشروط بر اینکه محدودیت‌های مدل را بشناسیم و آن را دقیقاً در قلمرویی به کار ببریم که فرضیات بنیادینش با ماهیت داده‌ها همخوانی دارند.

الگوریتم چه مشکلی را حل می‌کند؟

فرض کنید می‌خواهیم صرفاً بر اساس قد و وزن یک فرد، جنسیت او را حدس بزنیم (زن است یا مرد) و هیچ دادهٔ دیگری نداریم. ما قبلاً اطلاعات ۱۰۰ نفر را گردآوری کردیم که قد و وزن و جنسیت‌شان مشخص است(داده‌های آموزشی برچسب جنسیت خورده بر اساس مقدار ویژگیها که همان قد و زن است). حالا یک فرد (داده) جدید -که جنسیت او برای ما مجهول است- می‌آید با قد ۱۷۵ سانتی‌متر و وزن ۷۰ کیلوگرم. می‌خواهیم بگوییم زن است یا مرد؟

مرحله ۱: محاسبه شانس اولیه (احتمال پیشین)

قبل از اینکه هیچ ویژگی‌ای از افراد جدید را ببینیم، از روی داده‌هایی که داریم (داده های آموزشی که گردآوری کردیم) می‌بینیم چند درصد کل افراد در مجموعه داده ها زن و چند درصد مرد هستند.
مثال عددی:

  • از ۱۰۰ نفر: ۶۰ نفر مرد و ۴۰ نفر زن

  • شانس اولیه مرد بودن = ۶۰٪

  • شانس اولیه زن بودن = ۴۰٪
    مثل این می‌ماند که: اگر از شما بپرسم بدون هیچ اطلاعات دیگری، جنسیت این فرد جدید چیست؟ شما می‌گویید "مرد، و استدلال می کنید: چون مردها در جامعه ما بیشتر هستند."

مرحله ۲: یادگیری الگوی هر گروه (محاسبه پارامترها)

برای هر گروه (مردها و زنها) نگاه می‌کنیم که قد و وزن آنها معمولاً در چه محدوده‌ای است.
مثال عددی:

  • مردها: میانگین قد = ۱۷۸ سانتی‌متر، میانگین وزن = ۸۰ کیلوگرم (و میزان پراکندگی هم محاسبه میشود)

  • زنها: میانگین قد = ۱۶۵ سانتی‌متر، میانگین وزن = ۶۰ کیلوگرم
    مثل این می‌ماند که: در ذهن خودتان یک "الگوی کلی" از مردها و زنها بسازید. مثلاً ‌بگویید "مردها معمولاً بلندتر و سنگین‌تر هستند".

مرحله ۳: تطبیق فرد جدید با هر گروه (محاسبه شباهت)

می‌بینیم قد و وزن فرد جدید - که جنسیتش مجهول است- چقدر با الگوی مردها جور درمی‌آید و چقدر با الگوی زنها.
مثال عددی (فرد جدید: قد ۱۷۵، وزن ۷۰):
مقایسه با الگوی مردها:

  • قد فرد (۱۷۵) به میانگین مردها (۱۷۸) نزدیک است ← نمره خوب

  • وزن فرد (۷۰) به میانگین مردها (۸۰) نسبتاً نزدیک است ← نمره متوسط

  • نمره نهایی شباهت به مردها = (نمره قد) × (نمره وزن) = ۰.۸ × ۰.۷ = ۰.۵۶
    مقایسه با الگوی زنها:

  • قد فرد (۱۷۵) از میانگین زنها (۱۶۵) دور است ← نمره بد (۰.۲)

  • وزن فرد (۷۰) از میانگین زنها (۶۰) دور است ← نمره بد (۰.۱)

  • نمره نهایی شباهت به زنها = ۰.۲ × ۰.۱ = ۰.۰۲

    توجه: این نمره‌ها بین ۰ تا ۱ هستند. هر چه به ۱ نزدیک‌تر باشد، شباهت بیشتر است.

مرحله ۴: ترکیب شانس اولیه با شباهت‌ها و تصمیم‌گیری (قانون بیز)

برای این فرد جدید شانس اولیه هر گروه (مرحله ۱) را در نمره شباهت فرد به آن گروه (مرحله ۳) ضرب می‌کنیم. هر گروه که عدد نهایی بزرگتری داشت، برنده می‌شود.
محاسبات مثال:
نمره نهایی برای مرد بودن:

  • شانس اولیه مرد = ۰.۶

  • شباهت به مردها = ۰.۵۶

  • نتیجه نهایی = ۰.۶ × ۰.۵۶ = ۰.۳۳۶ (حدود ۳۴٪)
    نمره نهایی برای زن بودن:

  • شانس اولیه زن = ۰.۴

  • شباهت به زنها = ۰.۰۲

  • نتیجه نهایی = ۰.۴ × ۰.۰۲ = ۰.۰۰۸ (کمتر از ۱٪)
    تصمیم نهایی: چون ۰.۳۳۶ از ۰.۰۰۸ بزرگتر است، می‌گوییم این فرد تنها بر اساس دو ویژگی وزن و قدی که از او می دانیم مرد است.

جمع‌بندی چهار مرحله به زبان ساده

مرحله نام فنی زبان ساده ۱ احتمال پیشین "افراد هر گروه چند درصد از کل هستند؟" ۲ تخمین پارامترها "الگوی معمول هر گروه چیست؟ (میانگین و پراکندگی)" ۳ تابع شباهت "فرد جدید چقدر به الگوی هر گروه شبیه است؟" ۴ قانون بیز "شانس اولیه × شباهت = شانس نهایی" و برنده مشخص می‌شود

نکته طلایی (همان "ساده‌لوحانه" یا Naive بودن)
الگوریتم فرض می‌کند که ویژگی‌ها به هم ربط ندارند. یعنی قد و وزن را مستقل از هم بررسی می‌کند، در حالی که در واقعیت قد و وزن به هم مرتبط هستند (معمولاً افراد بلند سنگین‌ترند).
این فرض "ساده‌لوحانه" (Naive) است، اما همانطور که دیدیم، در عمل بسیار خوب کار می‌کند!

یک مثال کاربردی دیگر

فرض کنید می‌خواهیم یک فیلتر ساده برای تشخیص پیامک‌های تبلیغاتی از پیامک‌های شخصی بسازیم. الگوریتم Naive Bayes به جای خواندن و فهمیدن معنای جمله، مانند یک حسابدار دقیق عمل می‌کند: او فقط کلمات کلیدی را می‌شمارد. اگر در هزاران پیامک تبلیغاتی قبلی(داده های آموزشی برچسب خورده)، کلمات «تخفیف»، «فوری» و «لینک» بارها تکرار شده باشند اما در پیامک‌های شخصی تقریباً دیده نشده باشند، مدل یاد می‌گیرد که حضور این کلمات نشانه قوی تبلیغاتی بودن است. وقتی پیامک جدیدی با متن «تخفیف فوری ویژه اعضای باشگاه» می‌رسد، الگوریتم احتمال تبلیغاتی بودن آن را بر اساس فراوانی این کلمات محاسبه کرده و بدون نیاز به پردازش سنگین زبانی، آن را در پوشه اسپم قرار می‌دهد.
زیبایی این مثال در شفافیت تصمیم‌گیری است؛ برخلاف مدل‌های پیچیده که دلیل دسته‌بندی را پنهان می‌کنند، اینجا دقیقاً می‌دانیم چرا پیام مسدود شد: چون ترکیب احتمالات کلمات موجود در آن، بیشتر شبیه به الگوی پیام‌های تبلیغاتی بود تا شخصی. این ویژگی باعث می‌شود رفع خطا هم ساده شود؛ اگر پیامکی اشتباهاً مسدود شد، کافیست کلمه خاصی را به عنوان «نشانه امن» به سیستم معرفی کنیم.

عبارت «نشانه امن» خودش یک اصطلاح رسمی در الگوریتم Naive Bayes نیست، اما مفهوم آن کاملاً با منطق این الگوریتم سازگار است و در عمل—به‌ویژه در سیستم‌های واقعی مانند فیلتر اسپم—به شکل‌های مختلف پیاده‌سازی می‌شود.
در Naive Bayes، هر کلمه (یا ویژگی) بر اساس فرکانس تجربی در داده‌های آموزشی وزن می‌گیرد. اگر کلمه‌ای مانند «فاکتور» یا «آقای کاظمی» تقریباً فقط در پیامک‌های غیراسپم دیده شده باشد، احتمال شرطی آن در دسته «شخصی» بسیار بالا و در دسته «تبلیغاتی» نزدیک به صفر خواهد بود. در نتیجه، حضور آن کلمه در یک پیامک جدید، احتمال «شخصی بودن» را به شدت افزایش می‌دهد—دقیقاً همان نقشی که «نشانه امن» ایفا می‌کند.
در پیاده‌سازی‌های عملی (مثل فیلترهای ایمیل)، گاهی از قوانین جانبی (rule-based overrides) همراه با Naive Bayes استفاده می‌شود: مثلاً اگر کلمه‌ای در لیست «همیشه امن» باشد، پیام بدون محاسبه احتمال، مستقیماً به پوشهٔ اصلی هدایت می‌شود. این رویکرد ترکیبی، ضعف احتمالی Naive Bayes در مواجهه با داده‌های کم‌فرکانس را جبران می‌کند.

برای درک عمیق‌تر، همان مثال پیامک را با اعداد واقعی دنبال می‌کنیم. فرض کنید در مجموعه داده آموزشی خود ۱۰۰ پیامک داریم که ۳۰ تای آن تبلیغاتی و ۷۰ تای آن شخصی است. احتمال پیشین (Prior) صرفاً بازتاب همین نسبت پایه است: احتمال تبلیغاتی بودن یک پیامک جدید قبل از دیدن متن آن ۰.۳ و شخصی بودن آن ۰.۷ است. این عدد، نقطه شروع و «پیش‌فرض» مدل است که با مشاهده شواهد جدید (کلمات متن) به‌روزرسانی خواهد شد.
بنابراین بدون دیدن محتوای پیامک جدید، فقط از روی آمار گذشته فکر می‌کنید:
«از هر ۱۰۰ پیامک، ۳۰ تا تبلیغ بوده. پس شانس اینکه پیامک بعدی هم تبلیغ باشد، ۳۰٪ است.»
در مرحله تخمین پارامترها، مدل فراوانی کلمات را در هر دسته محاسبه می‌کند. مثلاً اگر کلمه «تخفیف» در کلِ ۳۰ پیامک تبلیغاتی ۱۵ بار و در ۷۰ پیامک شخصی تنها ۲ بار آمده باشد، احتمال شرطی مشاهده «تخفیف» در صورت تبلیغاتی بودن پیام برابر با ۱۵/۳۰ = ۰.۵ بوده یعنی ۵۰٪ پیامک‌های تبلیغاتی این کلمه را دارند و در صورت شخصی بودن برابر با ۲/۷۰ ≈ ۰.۰۲۹ خواهد بود، یعنی فقط ۲.۹٪ پیامک‌های شخصی این کلمه را دارند. این اعداد به ما می‌گویند: «اگر کلمه تخفیف دیدید، احتمالاً پیام تبلیغ است.».
سپس تابع شباهت (Likelihood) وارد عمل می‌شود که در واقع حاصل‌ضرب احتمالات شرطی تمام کلمات موجود در پیامک جدید است. برای پیامک «تخفیف فوری ویژه اعضای باشگاه»، احتمال «تخفیف» همان است که محاسبه شد حال اگر احتمال «فوری» در دسته تبلیغاتی ۰.۴ و در شخصی ۰.۰۱ باشد، شباهت تبلیغاتی بودن برابر با ۰.۵ × ۰.۴ = ۰.۲ و شباهت شخصی بودن برابر با ۰.۰۲۹ × ۰.۰۱ ≈ ۰.۰۰۰۲۹ خواهد بود. این اعداد نشان می‌دهند پیام جدید خیلی بیشتر به الگوی تبلیغاتی شبیه است. توجه کنید که این مقادیر هنوز احتمال نهایی نیستند، بلکه فقط نشان‌دهنده میزان سازگاری متن با هر دسته‌اند.
در نهایت، قانون بیز این شواهد را با احتمال پیشین ترکیب کرده و احتمال پسین را تولید می‌کند. با ضرب شباهت در احتمال پیشین و نرمال‌سازی نتیجه، احتمال تبلیغاتی بودن پیامک «تخفیف فوری» برابر با (۰.۲ × ۰.۳) / [(۰.۲ × ۰.۳) + (۰.۰۰۰۲۹ × ۰.۷)] ≈ ۰.۹۹۷ به دست می‌آید. امتیاز تبلیغ حدود ۹۹.۷٪ از کل امتیازها را تشکیل می‌دهد.
پس نتیجه می‌گیریم: «این پیامک با اطمینان بسیار بالا تبلیغاتی است.»
کل این محاسبات با چهار عمل اصلی ریاضی انجام شده و هیچ نیازی به ماتریس‌های عظیم یا پردازنده‌های گرافیکی ندارد؛همین امر Naive Bayes را برای کاربردهای بلادرنگ و با منابع اندک بی‌رقیب می‌سازد.

مثال کاربردی در حوزه بانکداری

پیش‌بینی اینکه آیا یک مشتری جدید، وام خود را بازپرداخت خواهد کرد یا خیر (یعنی تشخیص «خوب» یا «بد» بودن اعتبار مشتری).
مرحله ۱: محاسبه شانس اولیه (احتمال پیشین)
از داده‌های تاریخی بانک می‌دانیم که از هر ۱۰۰۰ مشتری که وام گرفته‌اند، ۸۵۰ نفر آن را به‌موقع بازپرداخت کرده‌اند و ۱۵۰ نفر دچار سوءاستفاده یا تأخیر طولانی شده‌اند.

  • احتمال پیشین «خوش حسابی» = ۸۵۰ / ۱۰۰۰ = ۰.۸۵

  • احتمال پیشین «بدحسابی» = ۱۵۰ / ۱۰۰۰ = ۰.۱۵
    این یعنی بدون دیدن هیچ اطلاعاتی از مشتری جدید، بانک به‌طور کلی فکر می‌کند ۸۵٪ شانس دارد وام او بازپرداخت شود.

مرحله ۲: یادگیری الگوی هر گروه (تخمین پارامترها)
دو ویژگی کلیدی را در نظر می‌گیریم:

  • درآمد ماهانه (میلیون تومان)

  • سابقه اعتباری (تعداد ماه‌هایی که قبلاً وام داشته و به‌موقع پرداخت کرده)
    با بررسی مشتریان قبلی:

  • مشتریان خوش حساب:

    • میانگین درآمد = ۳۰ میلیون، انحراف معیار = ۳

    • میانگین سابقه = ۲۴ ماه، انحراف معیار = ۸

  • مشتریان بدحساب:

    • میانگین درآمد = ۱۵ میلیون، انحراف معیار = ۴

    • میانگین سابقه = ۶ ماه، انحراف معیار = ۵
      مشاهده می‌شود که مشتریان معتبر معمولاً درآمد بالاتر و سابقه طولانی‌تری دارند.

مرحله ۳: تطبیق مشتری جدید با هر گروه (تابع شباهت)

یک مشتری جدید درخواست وام می‌دهد با:

  • درآمد = ۱۷ میلیون تومان

  • سابقه اعتباری = ۱۰ ماه
    محاسبه احتمال شرطی هر ویژگی (با فرض توزیع نرمال):
    در گروه خوش‌حساب:

  • احتمال درآمد ۱۷ میلیون ≈ بسیار دور از میانگین ۳۰ → ≈ ۰.۰۰۰۱

  • احتمال سابقه ۱۰ ماه ≈ نسبتاً دور از میانگین ۲۴ → ≈ ۰.۰۸

  • نتیجه نهایی بررسی شباهت به "خوش حساب" ≈ ۰.۰۰۰۱ × ۰.۰۸ = ۰.۰۰۰۰۰۸
    در گروه بدحساب:

  • احتمال درآمد ۱۷ میلیون ≈ نزدیک به میانگین ۱۵ → ≈ ۰.۳۵

  • احتمال سابقه ۱۰ ماه ≈ نسبتاً نزدیک به میانگین ۶ → ≈ ۰.۲۹

  • نتیجه نهایی بررسی شباهت به "بد حساب" ≈ ۰.۳۵ × ۰.۲۹ = ۰.۱۰۱۵

مرحله ۴: تصمیم‌گیری نهایی (قانون بیز)

امتیاز نهایی هر گروه:

  • امتیاز "خوش حساب" = ۰.۸۵ × ۰.۰۰۰۰۰۸ ≈ ۰.۰۰۰۰۰۶۸

  • امتیاز "بد حساب" = ۰.۱۵ × ۰.۱۰۱۵ ≈ ۰.۰۱۵۲
    نسبت امتیاز "بدحساب" به "خوش حساب" ≈ ۲,۲۴۰ برابر است.
    تصمیم نهایی: با وجود اینکه اکثر مشتریان تاریخی بانک خوش‌حساب هستند، داده‌های این مشتری جدید (درآمد ۱۷ میلیون و سابقه ۱۰ ماه) بسیار شبیه به الگوی مشتریان بدحساب و کاملاً دور از الگوی خوش‌حساب‌هاست. بنابراین، سیستم با اطمینان بالا پیش‌بینی می‌کند که این مشتری بدحساب است و پیشنهاد می‌کند وام به او تعلق نگیرد—مگر آنکه شرایط امنیتی اضافه (مانند ضامن معتبر یا وثیقه) فراهم شود.


باید بدانیم که بسیاری از بانک‌های کوچک و متوسط هنوز از مدل‌هایی شبیه Naive Bayes (یا ترکیب آن با قوانین ساده) برای امتیازدهی اعتباری استفاده می‌کنند، چون:

  • روی سرورهای داخلی و بدون اینترنت قابل اجرا است (مهم برای امنیت داده‌های مالی)،

  • تصمیماتشان قابل تفسیر است (مثلاً «وام رد شد چون سابقه کمتر از ۶ ماه بود»)،

  • و هزینه توسعه و نگهداری آن‌ها بسیار پایین است.
    و این دقیقاً همان «تعادل هوشمندانه» است که در این مقاله‌ مطرح شد: همه‌جا نباید از مدل‌های عظیم استفاده کرد، بلکه بهتر است از مناسب‌ترین ابزار برای مسئله واقعی بهره برد.

در سایر بخشهای این مقاله به بررسی دیگر مدلهای کلاسیک خواهم پرداخت.

سایر بخشهای این سلسله مقالات را از دست ندهید:
کدام مدل هوش مصنوعی برای کدام مسئله مناسب است؟ - بخش اول
کدام مدل هوش مصنوعی برای کدام مسئله مناسب است؟ - بخش دوم
کدام مدل هوش مصنوعی برای کدام مسئله مناسب است؟ - بخش سوم
کدام مدل هوش مصنوعی برای کدام مسئله مناسب است؟ - بخش چهارم

کدام مدل هوش مصنوعی برای کدام مسئله مناسب است؟ - بخش پنجم(K-means)

هوش مصنوعیکاربرد هوش مصنوعی
۳
۰
حسین بحری
حسین بحری
سالهاست برنامه نویسی رو چه به عنوان حرفه و چه به عنوان سرگرمی و علاقمندی شخصی دنبال می کنم.
شاید از این پست‌ها خوشتان بیاید