<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>نوشته های رضا مظاهری</title><link>https://virgool.ir/feed/@reza.mzk</link><description></description><language>fa</language><pubDate>2026-11-12 22:57:30</pubDate><image><url>https://virgool.ir/images/default-avatar.jpg</url><title>رضا مظاهری</title><link>https://virgool.ir/@reza.mzk</link></image><item><title>خیلی دور، خیلی نزدیک</title><link>https://virgool.ir/@reza.mzk/خیلی-دور-خیلی-نزدیک-uelusjoynfzc</link><description>مقدمهپروژه‌ی خیلی دور خیلی نزدیک، پروژه‌ی تحلیل تفاوت سلیقه‌ی سینمایی دو دسته از کاربران می‌باشد، کاربران ایرانیِ دوتا از وبسایت‌های معروف دانلود فیلم و سریال و کاربران وبسایت IMDb.اگر شما هم خود را عضوی از جامعه‌ی فیلمبازان می‌دانید، مطمئنا برایتان پیش آمده که هنگام انتخاب یک فیلم برای تماشا، به امتیاز IMDb آن اعتماد کنید یا برای قانع کردن دوستتان برای تماشای یک اثر، از امتیاز IMDb آن به عنوان مرجع استفاده کنید. حتما شما هم در موارد بسیاری شاهد اختلاف نظر خود و دوستانتان با این عدد بوده‌اید. اگر شما هم فیلم‌هایی در ذهن دارید که معتقدید لایق امتیاز IMDb بالاتری هستند یا به عکس، فیلمی دیده‌اید که به اندازه‌ی امتیازش نظرتان را جلب نکرده، این پروژه برای شماست.هدف از انجام این پروژه، پاسخ به این سوال است که سلیقه‌ی بینندگان ایرانی، تا چه اندازه به سلیقه‌ی بینندگان جهانی شباهت دارد، آیا تفاوت فرهنگی این دو دسته از کاربران در محبوبیت آثار سینمایی از نگاه آنان موثر است؟ یا به عبارت دیگر، برای تماشای یک فیلم به امتیاز IMDb آن باید توجه بیشتری کنیم یا امتیاز کاربران ایرانیِ وبسایت‌های دانلود فیلم و سریال؟پاسخ به این سوال، چه مثبت باشد و چه منفی، ما را به بازبینی عنوان‌ها و افرادی وادار می‌کند که با آن‌ها در طول سال‌ها خاطره ساخته‌ایم، در مورد آن‌ها بحث کرده و نگاه آنان را نقد کرده‌ایم. علاوه بر این، یافته‌های این پروژه می‌تواند به انتخاب فیلم‌هایی منجر شود که تجربه‌ای غنی‌تر و لذت‌بخش‌تر از هنر هفتم را ارائه دهند همچنین کنجکاوی ما را نسبت به تاثیر تفاوت‌های فرهنگی بر سلیقه سینمایی پاسخ دهد.آدرس لینکدین من: لینکهشدارپروژه‌ای که در ادامه می‌بینید بر اساس مجموعه‌ی دادگانی تهیه شده که از دو وبسایت‌ شناخته شده‌ی دانلود فیلم و سریال ایرانی به دست آمده و به کمک وبسایت IMDb تکمیل شده است. در شروع پروژه تلاش شد که وبسایت‌هایی که قرار است در اینجا نماینده‌ی نظر و سلایق ایرانیان باشند، از وبسایت‌های پرطرفدار و شناخته شده در جامعه‌ی فیلمبازان ایرانی انتخاب گردند. با این حال توجّه به این نکته ضروری است که این‌جا فقط فیلم‌هایی در ترازوی تحلیل قرار گرفتند که در هر دو وبسایت امکان دانلود آن‌ها فراهم بوده است.از طرف دیگر، متاسفانه با توجه به مسدود شدن پی‌درپی رسانه‌های آزاد دانلود فیلم و سریال، حجم کثیری از دادگان ما کاربران ایرانی از دست می‌رود، برای مثال بسیاری از ما، فیلم‌هایی را از وبسایت «تاینی موویز» دانلود و مشاهده کردیم، امتیاز و نظر دادیم که بعد از بسته شدن آن رسانه دوباره به ثبت امتیاز و نظر درباره‌ی آن‌ها نپرداختیم. واضح است که این از دست رفتن دادگان، می‌تواند نتایج به دست آمده را تا حدی غیر قابل اعتماد کند، با این حال تلاش در این‌جا بر این بوده که با آنچه در اختیار داریم، یک تحلیل عادلانه انجام گردد و به سوال‌های مطرح شده پاسخ داده شود. در طول این پروژه فقط فیلم‌هایی در ترازوی تحلیل قرار گرفتند که در هر دو وبسایت دانلود فیلم و سریال که برای انجام این پروژه انتخاب شدند، امکان دانلودشان فراهم بوده است.در ادامه، این نوشته به دو بخش تقسیم می‌گردد: بخش اول با عنوان «نتایج» یافته‌های حاصل از تحلیل را ارائه می‌دهد و بخش دوم با عنوان «شیوه‌ی پژوهش» به بررسی پیاده‌سازی‌های فنی و روش‌شناسی پروژه می‌پردازد.نتایج۱۰ فیلم برتر۱۰ فیلم با بیشترین تعداد نظر (کامنت)در این قسمت فیلم‌هایی را می‌بینیم که درباره‌ی آن‌ها بیشترین تعداد نظر (کامنت) به ثبت رسیده است. اشاره به این موضوع که در اینجا فقط تعداد نظرها مورد بررسی بوده نه مثبت و منفی بودن آن‌ها، حائز اهمیت است.در میان ۱۰ فیلم پربحث و نظر از طرف کاربران IMDb، چهار فیلم درباره شخصیت‌های کامیک دنیای DC، سه فیلم درباره شخصیت‌های کامیک دنیای Marvel و دو فیلم بر اساس رمان ساخته شده‌اند.۱۰ فیلم با بیشترین تعداد نقد حرفه‌ایاین فهرست شامل فیلم‌هایی است که در رسانه‌های نقد فیلم توسط منتقدان حرفه‌ای همچون نیویورک تایمز، رولینگ استون و ... بیشترین تعداد نقد را دریافت کرده‌اند.تحلیل تفاوت و شباهت سلیقه‌ی سینمایی ایرانیان و کاربران IMDbاین بخش را به چهار قسمت تقسیم می‌کنیم که دو بخش نخست به شباهت‌های سلیقه و دو بخش پایانی به تفاوت‌های سلیقه اختصاص یافته است:از بین فیلم‌های مجموعه داده‌ی در دست، ۱۳ درصد را هر دو گروه پسندیدند و ۸ درصد را هیچ کدام از دو گروه دوست نداشتند، ۴ درصد از فیلم‌ها را کاربران ایرانی دوست داشتند و کاربران وبسایت IMDb خیر، همچنین ۲ درصد از فیلم‌ها را کاربران IMDb دوست داشتند اما کاربران ایرانی خیر.بخش نخست شامل فیلم‌هایی است که هر دو گروه کاربران آن‌ها را دوست داشتند و درباره امتیازشان توافق نظر داشتند.بخش دوم شامل فیلم‌هایی است که هر دو گروه کاربران درباره کیفیت پایین آن‌ها توافق داشتند و هیچ‌کدام آن‌ها را نپسندیدند.شاید جالب باشد بدانید که نقش بتمن/بروس وین را در فیلم بتمن و رابین ((1997) Batman &amp; Robin) جورج کلونی بازی می‌کند.بخش سوم شامل فیلم‌هایی است که کاربران IMDb آن‌ها را پسندیدند، اما در فهرست مورد علاقه‌ی کاربران ایرانی جای نگرفتند.بخش چهارم شامل فیلم‌هایی است که کاربران ایرانی آن‌ها را پسندیدند، اما کاربران IMDb نظر مساعدی به آن‌ها نداشتند.یک حقیقت جالب (Fun Fact) درباره فیلم «اراگون» (Eragon 2006): این فیلم بر اساس مجموعه رمان چهارجلدی «حلقه‌ی وراثت» (The Inheritance Cycle) نوشته‌ی کریستوفر پائولینی (Christopher Paolini) ساخته شده است. انتقاد اصلی به فیلم درباره نحوه‌ی اقتباس از کتاب است؛ منتقدان آن را تقلیدی از «جنگ ستارگان» در دنیای «ارباب حلقه‌ها» می‌دانند. کاربران عادی نیز معتقدند این فیلم به دلیل کوتاه بودن، نمی‌تواند داستان کتاب را به خوبی منتقل کند. با این حال، در سال ۲۰۲۰ کمپانی دیزنی که صاحب حقوق معنوی اثر است، تصمیم گرفت تا یک نسخه‌ی (Live Action) در بستر دیزنی پلاس (Disney Plus) برای این مجموعه رمان تولید کند.برترین کارگردانانبرترین نویسندگانمحبوب‌ترین بازیگراندر بین بازیگران معرفی شده به عنوان بازیگران محبوب تنها دو بازیگر رنگین پوست حضور دارند، Morgan Freeman و Zoe Saldanaمحبوب‌ترین ژانر‌هاتاثیر بودجه‌ی ساخت بر محبوبیت فیلممحبوب‌ترین کشور‌های به جز هالیوودمحبوب‌ترین فیلم‌های کشورهای محبوب :)از ۵ فیلم محبوب کاربران ایرانی از کشور دانمارک ۴تا در ۵ سال گذشته ساخته شده‌اند.فیلم شماره‌ی سه «The Girl with the Dragon Tattoo»، دو سال قبل از نسخه‌ی هالیوودی آن با همین نام و با بازی Daniel Craig منتشر شده است.سخن پایانیحال که به انتهای این سفر رسیده‌ایم، شاید بتوانیم با اطمینان بیشتری به سؤال اصلی‌مان پاسخ دهیم: آیا می‌توان به امتیاز IMDb به عنوان معیاری قطعی برای انتخاب فیلم اعتماد کرد؟تحلیل‌های آماری انجام شده نشان می‌دهد که پاسخ چندان ساده نیست. بررسی‌های من آشکار می‌کند که حتی اگر فیلمی در IMDb امتیاز بالایی داشته باشد، تنها ۵۳ درصد احتمال دارد که مورد پسند مخاطبان ایرانی قرار گیرد. این عدد به خوبی نشان می‌دهد که چرا گاهی با دیدن فیلم‌های پرامتیاز IMDb، احساس رضایت چندانی نمی‌کنیم.این فاصله در سلیقه با معیارهای علمی دیگر نیز قابل تایید است. تحلیل همبستگی بین امتیازهای کاربران ایرانی و IMDb، ارتباطی نسبتاً ضعیف را نشان می‌دهد. ضریب همبستگی اسپیرمن ۰/۴۰۷ و معیار کندال تاو ۰/۲۸۶ (با p-value‌ی به اندازه‌ی ۰/۰۰ برای هر دو معیار) به ما می‌گوید که اگرچه سلیقه‌ی ما با مخاطبان جهانی بی‌ارتباط نیست، اما شباهت چشمگیری هم ندارد.شاید بهتر باشد از این پس، در کنار توجه به امتیاز IMDb، نگاهی هم به نظرات هم‌وطنان خود بیندازیم و با ترکیبی از این دو دیدگاه، انتخاب‌های آگاهانه‌تری داشته باشیم. در نهایت، این تفاوت سلیقه نه تنها نقطه‌ی ضعف نیست، بلکه نشان‌دهنده‌ی غنای فرهنگی و تنوع دیدگاه‌های ما در دنیای پهناور سینماست.۲۵۰ عنوان برتر به انتخاب کاربران ایرانی1- The Dark Knight (2008)2- The Lord of the Rings: The Fellowship of the Ring (2001)3- Interstellar (2014)4- The Shawshank Redemption (1994)5- The Wild Robot (2024)6- The Lord of the Rings: The Return of the King (2003)7- Shutter Island (2010)8- The Lord of the Rings: The Two Towers (2002)9- Puss in Boots: The Last Wish (2022)10- Hacksaw Ridge (2016)11- Batman Begins (2005)12- Guy Ritchie&#39;s the Covenant (2023)13- 12 Angry Men (1957)14- Se7en (1995)15- Green Book (2018)16- Harry Potter and the Deathly Hallows: Part 2 (2011)17- The Matrix (1999)18- CODA (2021)19- Oppenheimer (2023)20- Guardians of the Galaxy Vol. 3 (2023)21- PK (2014)22- Forrest Gump (1994)23- Titanic (1997)24- The Dark Knight Rises (2012)25- The Godfather (1972)26- V for Vendetta (2005)27- Harry Potter and the Sorcerer&#39;s Stone (2001)28- Pirates of the Caribbean: The Curse of the Black Pearl (2003)29- Dangal (2016)30- Grave of the Fireflies (1988)31- Elemental (2023)32- The Hobbit: The Battle of the Five Armies (2014)33- Extraction II (2023)34- The Prestige (2006)35- Mad Max: Fury Road (2015)36- Million Dollar Baby (2004)37- The Curious Case of Benjamin Button (2008)38- Prisoners (2013)39- Terminator 2: Judgment Day (1991)40- Schindler&#39;s List (1993)41- The Hobbit: An Unexpected Journey (2012)42- Ford v Ferrari (2019)43- Fight Club (1999)44- Spider-Man: Across the Spider-Verse (2023)45- Avatar (2009)46- Passengers (2016)47- The Boy, the Mole, the Fox and the Horse (2022)48- Spirited Away (2001)49- The Conjuring (2013)50- Troy (2004)51- Django Unchained (2012)52- The Hobbit: The Desolation of Smaug (2013)53- Lucy (2014)54- Logan (2017)55- In Time (2011)56- Gran Turismo (2023)57- Spider-Man: Into the Spider-Verse (2018)58- Fury (2014)59- Wrath of Man (2021)60- Harry Potter and the Prisoner of Azkaban (2004)61- Harry Potter and the Deathly Hallows: Part 1 (2010)62- Braveheart (1995)63- Memories of Murder (2003)64- About Time (2013)65- Scarface (1983)66- Inside Out 2 (2024)67- Inside Out (2015)68- Harry Potter and the Half-Blood Prince (2009)69- Soul (2020)70- Constantine (2005)71- Suzume (2022)72- Redeeming Love (2022)73- The Mask (1994)74- Capernaum (2018)75- Your Name. (2016)76- Where the Crawdads Sing (2022)77- Edge of Tomorrow (2014)78- Pirates of the Caribbean: At World&#39;s End (2007)79- The Departed (2006)80- Knives Out (2019)81- The Truman Show (1998)82- The Godfather Part II (1974)83- Pirates of the Caribbean: Dead Men Tell No Tales (2017)84- Cinema Paradiso (1988)85- All Quiet on the Western Front (2022)86- The Lives of Others (2006)87- Pirates of the Caribbean: Dead Man&#39;s Chest (2006)88- The Maze Runner (2014)89- WALL·E (2008)90- The Equalizer (2014)91- The Notebook (2004)92- Avengers: Endgame (2019)93- Charlie and the Chocolate Factory (2005)94- The Brothers Grimsby (2016)95- The Good, the Bad and the Ugly (1966)96- Mission: Impossible - Dead Reckoning Part One (2023)97- The Emperor&#39;s New Groove (2000)98- The Bad Guys (2022)99- The Dictator (2012)100- The Pale Blue Eye (2022)101- Saving Private Ryan (1998)102- Howl&#39;s Moving Castle (2004)103- I Saw the Devil (2010)104- Minions: The Rise of Gru (2022)105- Extraction (2020)106- Southpaw (2015)107- Pride &amp; Prejudice (2005)108- World War Z (2013)109- Detachment (2011)110- Deadpool (2016)111- Harry Potter and the Chamber of Secrets (2002)112- The Intouchables (2011)113- Deadpool 2 (2018)114- The Imitation Game (2014)115- Harry Potter and the Order of the Phoenix (2007)116- Apocalypto (2006)117- Avatar: The Way of Water (2022)118- We&#39;re the Millers (2013)119- Arrival (2016)120- Life Is Beautiful (1997)121- Train to Busan (2016)122- 8 Mile (2002)123- 3 Idiots (2009)124- Inception (2010)125- The Promised Land (2023)126- The Fault in Our Stars (2014)127- The Last Samurai (2003)128- Avengers: Infinity War (2018)129- Migration (2023)130- Blade Runner 2049 (2017)131- Society of the Snow (2023)132- Little Women (2019)133- Scent of a Woman (1992)134- Harry Potter and the Goblet of Fire (2005)135- Dead Poets Society (1989)136- Young Woman and the Sea (2024)137- Coco (2017)138- Once Upon a Studio (2023)139- Ready Player One (2018)140- Sound of Freedom (2023)141- The Pursuit of Happyness (2006)142- Fall (2022)143- The Revenant (2015)144- Maze Runner: The Death Cure (2018)145- Memento (2000)146- The Gray Man (2022)147- Requiem for a Dream (2000)148- Klaus (2019)149- The Gangster, the Cop, the Devil (2019)150- There Will Be Blood (2007)151- 3:10 to Yuma (2007)152- Jujutsu Kaisen 0 (2021)153- The Green Mile (1999)154- Me Before You (2016)155- Heat (1995)156- Spider-Man (2002)157- The Hangover (2009)158- The Blind Side (2009)159- Atonement (2007)160- Kingdom of Heaven (2005)161- The Sea Beast (2022)162- A Silent Voice: The Movie (2016)163- Need for Speed (2014)164- Coraline (2009)165- The Perks of Being a Wallflower (2012)166- Spider-Man 2 (2004)167- Cruella (2021)168- Thor: Ragnarok (2017)169- Dungeons &amp; Dragons: Honor Among Thieves (2023)170- Transformers One (2024)171- Friends: The Reunion (2021)172- Whiplash (2014)173- Purple Hearts (2022)174- It&#39;s a Wonderful Life (1946)175- A Man Called Otto (2022)176- Lone Survivor (2013)177- The Devil&#39;s Advocate (1997)178- Silenced (2011)179- El Camino (2019)180- Pathaan (2023)181- The Tomorrow War (2021)182- The Equalizer 3 (2023)183- Hustle (2022)184- A Separation (2011)185- Call Me by Your Name (2017)186- The Count of Monte-Cristo (2024)187- Downfall (2004)188- Silver Linings Playbook (2012)189- The Martian (2015)190- The Father (2020)191- John Wick (2014)192- Corpse Bride (2005)193- The Pianist (2002)194- The Invisible Guest (2016)195- No Country for Old Men (2007)196- Creed (2015)197- 9 (2009)198- Allied (2016)199- Warrior (2011)200- Mirage (2018)201- Kung Fu Panda (2008)202- Top Gun: Maverick (2022)203- Rush (2013)204- Cast Away (2000)205- Casino Royale (2006)206- Baby Driver (2017)207- Edward Scissorhands (1990)208- No Time to Die (2021)209- Rango (2011)210- A Street Cat Named Bob (2016)211- Ocean&#39;s Eight (2018)212- Pirates of the Caribbean: On Stranger Tides (2011)213- Ponyo (2008)214- Nowhere (2023)215- Plane (2023)216- Castle in the Sky (1986)217- Training Day (2001)218- The Terminal (2004)219- Grown Ups (2010)220- Anastasia (1997)221- Mission: Impossible - Ghost Protocol (2011)222- Love, Rosie (2014)223- Before Sunrise (1995)224- Parasite (2019)225- Thirteen Lives (2022)226- The Platform (2019)227- Rear Window (1954)228- Ratatouille (2007)229- Tangled (2010)230- Jeanne du Barry (2023)231- Amadeus (1984)232- Split (2016)233- Monsters, Inc. (2001)234- I Am Legend (2007)235- Manchester by the Sea (2016)236- The Wolverine (2013)237- Maze Runner: The Scorch Trials (2015)238- The Others (2001)239- Star Wars: Episode III - Revenge of the Sith (2005)240- John Wick: Chapter 4 (2023)241- Like Stars on Earth (2007)242- The Shining (1980)243- The Outfit (2022)244- The Body (2012)245- The Proposal (2009)246- For a Few Dollars More (1965)247- Zootopia (2016)248- Drive (2011)249- The Nice Guys (2016)250- Papillon (1973)در میان ۲۵۰ عنوان برتر به انتخاب کاربران ایرانی، ۲۰ فیلم ساخته شده در سال ۲۰۲۳، ۱۹ فیلم از سال ۲۰۲۲ و ۱۷ فیلم هم از سال ۲۰۱۶ وجود دارند. همچنین یک فیلم از سال ۱۹۴۶ و تنها پنج فیلم از سال ۲۰۲۴ در این دسته بندی قرار دارند.شیوه‌ی پژوهشمجموعه‌ی دادگان این پژوهش از دو منبع اصلی استخراج شده است:الف) دو وب‌سایت ایرانیِ دانلود فیلم و سریال ب) وب‌سایت IMDbدر این فرآیند، اطلاعات فیلم‌های هر دو وب‌سایت ایرانی (شامل امتیاز فیلم، تعداد رای‌دهندگان و تعداد نظرات) استخراج شد و فهرست فیلم‌های مشترک میان آن‌ها شناسایی گردید. سپس، داده‌های این فیلم‌ها با اطلاعات موجود در وب‌سایت IMDb (مانند سال تولید، بازیگران، بودجه‌ی ساخت، امتیاز، تعداد رای‌دهندگان و ... ) تکمیل شد.نرمال سازییکی از چالش‌های اساسی در فرآیند تحلیل داده‌ها، تفاوت در سیستم امتیازدهی در سه منبع مورد استفاده بود. دو وب‌سایت از مقیاس ۱ تا ۱۰ و یکی از مقیاس ۱ تا ۵ استفاده می‌کردند که این تفاوت، مقایسه‌‌ی امتیازها را ناممکن می‌ساخت. برای حل این مسئله و قرار دادن تمام امتیازها در یک بازه‌ی مشخص می‌توان از روش‌های نرمال‌سازی همانند Min-Max Scaler و Z-Score بهره گرفت.مجموعه‌ی دادگان مرتبط با فیلم‌ها از هر منبعی که استخراج شده باشند دارای تعداد زیادی داده‌ی پرت هستند؛ به طوری که شمار محدودی از فیلم‌ها که بسیار شناخته شده‌ هستند تعداد رای‌دهندگان بسیار بالایی دارند، درحالی که اکثریت فیلم‌ها تعداد رای‌دهندگان بسیار کمتری دارند. به عنوان مثال، در وب‌سایت IMDb فیلم «رستگاری در شاوشنک» (The Shawshank Redemption) دارای سه میلیون رای دهنده است، درحالی که میانه‌ی تعداد رای دهندگان در این وبسایت حدود ۴۴ هزار نفر می‌باشد. در این شرایط استفاده از نرمال ساز Min-Max منجر به فشرده شدن محدوده‌ی داده‌ها می‌شود و ترند‌ها (Trends) بسیار کمرنگ می‌گردند. بنابراین، در این پروژه از نرمال‌ساز Z-‌Score یا Standard Scaler استفاده شده است تا داده‌ها تراز شده و تفاوت‌های آماری به وضوح آشکار گردد.رتبه بندیچالش مهم دیگر این پژوهش،نحوه‌ی رتبه‌بندی فیلم‌ها بود. اگر فیلم‌ها صرفاً بر اساس میانگین امتیاز کاربران مرتب شوند، آثاری با امتیاز بالا (مثلاً ۱۰) اما تعداد رأی‌دهندگان کم (مثلاً ۲ نفر) در صدر جدول قرار می‌گیرند – مشکلی که در بسیاری از وب‌سایت‌های دانلود فیلم و سریال هنگام مرتب‌سازی بر اساس محبوبیت کاربران دیده می‌شود–. این در حالی است که تعداد افرادی که به یک فیلم امتیاز دادند باید به عنوان فاکتوری برای محبوبیت آن در نظر گرفته شود. برای حل این مشکل، از میانگین بیزی یا امتیاز وزن‌دار استفاده می‌شود، روشی که با در نظر گرفتن همزمانِ تعداد آرا و امتیاز فیلم، رتبه‌بندی منصفانه‌تری ارائه می‌دهد.از میانگین بیزی برای حل مشکل تصاحب صدر جدول فیلم‌های برتر توسط فیلم‌هایی با امتیاز بالا و تعداد رأی کم استفاده می‌شود.امتیاز وزن‌دارشکل شماره یک (۱): فرمول Bayesian averageR: (امتیاز فیلم) میانگین امتیاز کاربران به فیلمv: تعداد رأی دهندگانC: میانگین امتیاز همه‌ی فیلم‌های موجود در مجموعه دادهm: حداقل تعداد آرای لازم برای تأثیرگذاری (Threshold)در این پروژه، امتیاز وزن‌دار به ازای هر فیلم و برای هر سه پلتفرم (دو ایرانی و IMDb) محاسبه شده است. در عملیات محاسبه، نحوه‌ی یافتن همه‌ی متغیرها به‌جز m مشخص است. برای تعیین m، از یک روش آماری مقاوم (Robust) استفاده شده است. این مقدار با محاسبه‌ی سه معیار مختلف و گرفتن میانه‌ی آن‌ها به‌دست می‌آید. این سه معیار عبارت‌اند از: محدوده‌ی میان‌چارکی (IQR)، میانگین به‌علاوه‌ی انحراف معیار (Mean + Standard Deviation) و صدک هفتاد و پنجم (75th Percentile).شکل شماره دو (۲): نحوه‌ی محاسبه‌ی متغیر m در فرمول میانگین بیزی Q1 = چارک اول داده‌ها (25th percentile)Q3 = چارک سوم داده‌ها (75th percentile)Q3+1.5×(Q3−Q1) = روش محدوده‌ی میان‌چارکی (IQR)μ+σ = میانگین داده‌ها به‌علاوه‌ی انحراف معیارP₇₅​ = صدک هفتاد و پنجم داده‌هاMedian(⋅) = میانه‌ی این سه مقدارپس از محاسبه‌ی امتیازهای وزن‌دار هر فیلم، لازم است امتیازات به‌دست‌آمده از دو رسانه‌ی ایرانی را ترکیب کنیم تا به معیاری واحد برای رتبه‌بندی فیلم‌ها برسیم. همان‌طور که پیش‌تر نیز بیان شد، تعداد رأی‌دهندگان به یک فیلم باید به‌عنوان عاملی تأثیرگذار در رتبه‌بندی آن در نظر گرفته شود. این اصل در ترکیب امتیازات دو رسانه نیز برقرار است، چراکه هرچه تعداد رأی‌ها بیشتر باشد، اطمینان به صحت امتیاز محاسبه‌شده افزایش می‌یابد.برای محاسبه‌ی ضریب اطمینان هر امتیاز، ابتدا سهم هر پلتفرم ایرانی را نسبت به کل رأی‌های ثبت‌شده توسط کاربران ایرانی در تمامی فیلم‌ها محاسبه می‌کنیم. سپس، این سهم به‌عنوان یک ضریب وزنی در ترکیب امتیازات دو رسانه‌ی ایرانی به کار گرفته می‌شود تا میزان تأثیر هر رسانه متناسب با تعداد رأی‌های آن تعیین شود.شکل شماره‌ی سه (۳): نحوه‌ی محاسبه‌ی وزن هر پلتفرم ایرانیشکل شماره چهار (۴): نحوه‌ی محاسبه‌ی معیار رتبه بندی به انتخاب کاربران ایرانیدر نهایت، از این امتیاز وزن‌دار محاسبه شده در بالا برای رتبه‌بندی فیلم‌ها مطابق با سلیقه‌ی کاربران ایرانی و از امتیاز وزن‌دار IMDb برای رتبه‌بندی فیلم‌ها بر اساس دیدگاه کاربران این وب‌سایت استفاده می‌شود.تحلیل تفاوت و شباهت سلیقه‌ی سینمایی ایرانیان و کاربران IMDbبه منظور تحلیل تفاوت‌ها و شباهت‌های سلیقه‌ی این دو گروه از کاربران در حوزه‌ی سینما، فیلم‌ها را به پنج دسته تقسیم می‌کنیم:فیلم‌هایی که هر دو گروه دوست داشتند:این فیلم‌ها امتیاز بالاتر از صدک ۷۵ام را از هر دو گروه کاربران دریافت کرده‌اند.فیلم‌هایی که کاربران ایرانی دوست داشتند اما کاربران IMDb خیراین فیلم‌ها از کاربران ایرانی امتیاز بالای صدک ۷۵ام و از کاربران IMDb امتیاز پایین‌تر از صدک ۲۵ام را دریافت کرده‌اند.فیلم‌هایی که کاربران IMDb دوست داشتند اما کاربران ایرانی خیراین فیلم‌ها از کاربران IMDb امتیاز بالای صدک ۷۵ام و از کاربران ایرانی امتیاز پایین‌تر از صدک ۲۵ام را دریافت کرده‌اند.فیلم‌هایی که مورد علاقه‌ی هیچ گروهی نبودنداین فیلم‌ها از هر دو گروه امتیاز پایین‌تر از صدک ۲۵ام را دریافت کرده‌اند.فیلم‌های خنثیفیلم‌هایی که در هیچ‌کدام از دسته‌های بالا قرار نمی‌گیرند.پس از دسته‌بندی فیلم‌ها در این پنج گروه، برای هر فیلم قدرمطلق تفاضل امتیاز وزن‌دار IMDb و کاربران ایرانی و مجموع امتیاز کاربران IMDb و ایرانی محاسبه شده است. این دو مقدار در متغیرهای جدید ذخیره شدند و به‌عنوان معیار اصلی رتبه‌بندی فیلم‌ها در این بخش استفاده گردیدند.تحلیل کارگردانان محبوبمشکلی که درباره فیلم‌های با امتیاز بالا و تعداد رأی‌دهنده‌ی کم داشتیم، در این حوزه نیز می‌تواند مشکل‌ساز باشد. در صورت رتبه‌بندی کارگردانان تنها بر اساس میانگین امتیاز ساخته‌هایشان، کارگردانانی که تعداد فیلم‌های کمتری با امتیازات نسبتاً خوب دارند، رتبه‌های بالا را به خود اختصاص می‌دهند. از این رو در رتبه‌بندی کارگردانان نیز، همانند رتبه‌بندی فیلم‌ها، از امتیاز وزن‌دار استفاده می‌کنیم تا رتبه بندی عادلانه‌تری داشته باشیم.شکل شماره پنج (۵): فرمول Bayesian Averagen: تعداد فیلم‌های هر کارگردانm: آستانه‌ی اهمیت میانگین کل فیلم‌های مجموعه دادهC: میانه‌ی کل امتیاز‌های مجموعه دادهMean Rating: میانگین امتیاز فیلم‌های هر کارگرداندر اینجا نیز برای محاسبه‌ی m (حد آستانه‌ی اهمیت) از همان روش آماری مقاومی که پیش‌تر توضیح داده شد، استفاده شده است. گفتنی است که تحلیل نویسندگان برتر نیز از همین تکنیک کارگردانان و قطعه کد استفاده می‌کند.تحلیل محبوبیت بازیگرانبرای بررسی محبوبیت بازیگران، آنچه در این پروژه در دست داریم، محبوبیت فیلم‌هایی است که در آن‌ها به ایفای نقش پرداخته‌اند؛ اما برخلاف نویسندگان و کارگردانان که در صورت همکاری در یک فیلم، مشارکتشان هم‌اندازه تلقی می‌شود، افرادی که نامشان در ابتدای فهرست بازیگران هر فیلم ذکر می‌شود، نقش مهم‌تری را در آن فیلم به پردۀ نقره‌ای آورده‌اند. به منظور ترکیب میزان اهمیت هر فرد در فیلم و میزان محبوبیت خودِ فیلم، از تکنیک Weight Decay استفاده می‌کنیم.یک فیلم خاص را در نظر بگیرید، اگر متغیر Weight Decay را ۰/۹ در نظر بگیریم نفر اول فهرست بازیگران وزن ۱، نفر دوم ۰/۹، نفر سوم ۰/۸۱، نفر چهارم ۰/۷۲۹ و الی آخر را خواهند داشت. این عدد را وزن بازیگر مذکور در فیلم مورد بررسی می‌نامیم.شکل شماره‌ی شش (۶): وزن هر بازیگرحال که وزن هر بازیگر را در دست داریم، به منظور محاسبه‌ی نسبت مشارکت بازیگر در موفقیت یا عدم موفقیت فیلم، هر وزن را بر مجموع اوزان بازیگران آن فیلم تقسیم می‌کنیم تا عددی بین ۰ و ۱ به دست آید.شکل شماره هفت (۷): محاسبه‌ی نسبت مشارکت هر بازیگر در فیلمسپس عدد به دست آمده را در امتیاز وزن دار آن فیلم ضرب می‌کنیم تا سهم هر بازیگر از محبوبیت یا عدم محبوبیت فیلم مشخص شود.شکل شماره هشت (۸): سهم هر بازیگر در محبوبیت/عدم محبوبیت یک فیلمدر نهایت سهم‌های به دست آمده برای هر بازیگر در مجموعه داده را جمع می‌کنیم و در فرمول میانگین بیزی استفاده می‌کنیم.شکل شماره نه (۹): فرمول میانگین بیزی برای تحلیل محبوبیت بازیگراندر این فرمول:n: تعداد فیلم‌های موجود از هر بازیگر در مجموعه دادهm: حد آستانه‌ی تعداد فیلم‌های هر بازیگرSum of Actor&#39;s Contribution: مجموع مشارکت وزنی هر بازیگر در امتیازات فیلم‌هاC: میانگین کلی امتیازات تمام بازیگراندر اینجا نیز مقدار m از همان روش آماری مقاوم توضیح داده شده به دست آمده است. همچنین لازم به ذکر است با توجه به ترتیب اولویت ژانر ذکر شده در فهرست ژانر یک فیلم، از فرمول بالا در مرحله‌ی تحلیل ژانرهای محبوب نیز استفاده می‌کنیم.تحلیل تاثیر بودجه‌ی ساخت بر محبوبیت فیلمدر وب‌سایت IMDb، که منبع اطلاعات این پروژه بوده است، هزینه‌ی ساخت فیلم‌ها بر اساس واحد پولی کشور سازنده‌ی آن‌ها گزارش شده است. برای مثال، بودجه‌ی فیلم‌های تولیدشده در هند به روپیه ثبت شده است. به‌منظور مقایسه‌ی هزینه‌های ساخت، لازم بود تمامی این مقادیر به یک واحد پولی یکسان تبدیل شوند. ازاین‌رو، بودجه‌ها به دلار تبدیل شده‌اند تا امکان مقایسه‌ی دقیق آن‌ها فراهم شود. پس از این مرحله، فیلم‌ها بر اساس هزینه‌ی ساختشان به پنج دسته (Bin) تقسیم شده و میانگین امتیازات وزن‌دار هر گروه، بر اساس نظر هر دو دسته از کاربران، محاسبه گردید.محبوب‌ترین کشورهادر این بخش، هدف بررسی میزان محبوبیت صنعت سینمای کشورهای دیگر، به‌جز ایالات متحده‌ی آمریکا (هالیوود)، است. به بیان دیگر، بررسی می‌کنیم که در صورت حذف تولیدات هالیوود از مجموعه داده، کدام کشورها محبوب‌ترین فیلم‌ها را از دید دو گروه کاربران مورد بررسی در این پروژه تولید کرده‌اند و همچنین دوست‌داشتنی‌ترین فیلم‌های هر کشور کدام‌اند.چالش بعدی در این پروژه، شناسایی کشور اصلی سازنده‌ی فیلم بود. در وب‌سایت IMDb، در بخش «کشورهای مبدأ»، تمامی کشورهایی که به نحوی در ساخت یک فیلم نقش داشته‌اند ذکر می‌شوند. به‌عنوان مثال، برای فیلم جدایی نادر از سیمین، سه کشور ایران، فرانسه و استرالیا به‌عنوان کشورهای مبدأ ثبت شده‌اند.برای تعیین کشور اصلی سازنده‌ی هر فیلم، یک نگاشت بین اولین کشور مبدأ و اولین زبان ذکرشده برای فیلم انجام شد. به این صورت که اگر اولین کشور ذکرشده در لیست «کشورهای مبدأ» با اولین زبان ثبت‌شده در لیست «زبان‌های فیلم» مطابقت داشت، آن فیلم را محصول آن کشور در نظر گرفتیم. به‌عنوان مثال، چون در فیلم جدایی نادر از سیمین، اولین کشور ایران و اولین زبان، فارسی است، این فیلم را محصول کشور ایران در نظر می‌گیریم.بعد از شناسایی کشورهای سازنده، فیلم‌ها را بر این اساس دسته بندی و میانگین بیزی امتیازات فیلم‌های ساخته شده توسط آن کشور را محاسبه می‌کنیم.احتمال شرطیدر نهایت، برای پاسخ به این پرسش که &#34;اگر کاربران وب‌سایت IMDb یک اثر را پسندیده باشند، احتمال اینکه کاربران ایرانی نیز آن را بپسندند چقدر است؟&#34; از قانون احتمال شرطی یا احتمال برشی استفاده کردیم.در این محاسبه، معیار &#34;پسندیده شدن&#34; را حضور فیلم در چارک بالایی آثار، بر اساس امتیاز وزن‌دارشان، در نظر گرفتیم؛ به این معنا که فیلم‌ها ابتدا بر اساس امتیاز وزن‌دار مرتب شده و سپس آن‌هایی که در ۲۵٪ بالایی قرار گرفتند، به‌عنوان فیلم‌های محبوب شناخته شدند.</description><category>رضا مظاهری</category><author>رضا مظاهری</author><pubDate>Sat, 15 Feb 2025 14:28:20 +0330</pubDate></item><item><title>پیاده سازی رگرسیون لجستیک از صفر</title><link>https://virgool.ir/@reza.mzk/پیاده-سازی-رگرسیون-لجستیک-از-صفر-denpbzsnasu5</link><description>مقدمهدر مطلب قبلی که در ویرگول پست کردم با رگرسیون خطی ساده و نحوه‌ی پیاده سازی آن از صفر آشنا شدیم (لینک) ، در این مطلب یک مدل یادگیری ماشین دیگر به نام رگرسیون لجستیک را بررسی می‌کنیم. رگرسیون لجستیک از دسته الگوریتم‌های نظارت شده (Supervised) می‌باشد و برای دسته‌بندی (Classification) مورد استفاده قرار می‌گیرد. رگرسیون لجستیک یکی از پرکاربرد‌ترین الگوریتم‌های یادگیری ماشین است که در ادامه به تفصیل آن را بررسی می‌کنیم.محدودیت الگوریتم رگرسیون خطی در دسته‌بندیدر این مطلب هدف به دست آوردن الگوریتمی برای دسته‌بندی گروهی از داده‌ها می‌باشد. اما اول باید به این سوال پاسخ دهیم که چرا به الگوریتم جدیدی برای دسته‌بندی نیاز داریم، آيا نمی‌توان از الگوریتم رگرسیون خطی برای این امر استفاده کرد؟ برای پاسخ به این سوال تلاش می‌کنیم تا به کمک الگوریتم رگرسیون خطی، داده‌های زیر را دسته بندی کنیم. نمودار زیر نشان‌دهنده‌ی رابطه‌ی احتمال بیمار بودن و وزن شش (۶) موش مختلف می‌باشد، به این شکل که بر روی محور عرض‌ها (y) احتمال بیمار بودن یا نبودن موش مورد نظر مشخص شده و بر روی محور طول‌ها (x) وزن موش مورد نظر به واحد گِرم (g) نمایش داده شده است. نتایج به دست آمده در آزمایشگاه نشان می‌دهند که سه موش سنگین وزن شرکت کرده در این آزمایش بیمار هستند.شکل یک (۱): نمودار نسبت وزن به احتمال بیمار بودن در موش‌هاحال الگوریتم رگرسیون خطی ساده را با داده‌های ارائه شده در بالا آموزش می‌دهیم و آستانه‌ی انتخاب (Threshold) را ۰/۵ در نظر می‌گیریم. آستانه‌ی انتخاب به این معنی است که اگر مدل رگرسیون خطی برای وزن یک موش، عددی بزرگتر از ۰/۵ پیش‌بینی کرد موش را بیمار در نظر می‌گیریم و اگر عددی کوچکتر از ۰/۵ را پیش‌بینی کرد موش را سالم در نظر می‌گیریم، در نمودار پایین خط نقطه‌چین مشکی نشان‌دهنده‌ی آستانه‌ی انتخاب یا مقدار  ۰/۵ می‌باشد به عبارت دیگر اگر بر روی محور طول‌ها (x) از خط نقطه‌چین به سمت راست حرکت کنیم، مقدار پیش‌بینی شده بزرگتر از ۰/۵ و موش، بیمار می‌باشد، ولی اگر به سمت چپ حرکت کنیم مقدار پیش‌بینی شده توسط مدل رگرسیون خطی ساده کوچکتر از ۰/۵ و موش مورد نظر، سالم می‌باشد.شکل دو (۲): نمودار نسبت وزن به احتمال بیماری با نمایش آستانه‌ی انتخاب (Threshold)واضح است که مدل رگرسیون خطی ساده در دسته بندی این موش‌ها بسیار خوب و تا حدی بدون نقص عمل می‌کند. حال یک موش بسیار سنگین وزن به آزمایش اضافه می‌کنیم و رگرسیون خطی را دوباره اجرا می‌کنیم.شکل سه (۳): نمودار نسبت وزن به احتمال بیماری که اضافه شدن موش سنگین وزن باعث خراب شدن عملکرد رگرسیون خطی می‌گردد.با اضافه شدن یک داده‌ی پرت، الگوریتم رگرسیون خطی نمی‌تواند عملیات دسته‌بندی را به درستی اجرا کند و یکی از موش‌های بیمار را در دسته‌ی سالم پیش‌بینی می‌کند. از طرفی می‌دانیم مقادیر به دست آمده از طریق الگوریتم رگرسیون خطی می‌توانند بسیار بیشتر از یک و بسیار کمتر از صفر باشند فلذا نیاز به مدلی داریم که خروجی آن در بازه‌ی ۰ تا ۱ باشد.دو مشکل الگوریتم رگرسیون خطی ساده در دسته‌بندی، عبارتند از: ۱ـ عملکرد ضعیف و ۲ـ  تولید مقادیری که تفسیر آنها مشکل است.تابع سیگموئیدتوابع سیگموئیدی به توابعی کراندار، مشتق‌پذیر و حقیقی گفته می‌شود که نمودار آنها شکل حرف s انگلیسی دارد. یکی از معروف‌ترین این توابع، تابع لجستیک می‌باشد که مدل رگرسیون لجستیک نام خود را از این تابع وام گرفته است. نمودار این تابع را در شکل زیر می‌بینیم. این تابع اعداد حقیقی در بازه‌ی (∞+،∞-) را به بازه‌ی (۰،۱) نگاشت می‌کند. این کار باعث ساده‌سازی تفسیر خروجی مدل به عنوان احتمال می‌گردد و مشکل اعداد بزرگتر از یک (۱) و کوچکتر از صفر (۰) در رگرسیون خطی را برطرف می‌سازد.شکل چهار (۴): نمودار تابع لجستیک این تابع به کمک معادله‌ی زیر محاسبه می‌گردد.معادله‌ی یک (۱): تابع لجستیکمدل رگرسیون لجستیکدر مساله احتمال بیماری موش‌ها که در بالا بررسی کردیم فقط یک عامل (وزن) را در بیمار بودن موش‌ها موثر دانستیم و تاثیر آن را بررسی کردیم، در صورتی که در دنیای واقعی عوامل زیادی هستند که در نتیجه‌ی یک اتفاق (Event) موثر هستند از طرفی هر عامل به اندازه‌ی متفاوتی در نتیجه تاثیر دارد تاثیر این عوامل مختلف را با یک ضریب عددی وارد معادله کرده و آنها را وزن می‌نامیم. به این روش برای لحاظ کردن تاثیر وزن‌ها بر مدل حاصل‌جمع وزن‌دار گفته می‌شود که در پاراگراف بعدی آن را توضیح می‌دهم.فرض کنید مجموعه‌ی دادگانی دارای n ویژگی (Feature) باشد، همچنین در مجموعه‌ی دادگان m داده داشته باشیم. این مجموعه داده را به شکل زیر می‌توان نشان داد.شکل پنج (۵): نمایش مجموعه دادگانحاصل‌جمع وزن‌دار برای هر عضو از مجموعه‌ی دادگان نشان داده شده در بالا به شکل زیر محاسبه می‌گردد.معادله‌ی دو (۲): حاصل‌جمع وزن‌داربه منظور ساده‌سازی معادلات همچنین استفاده‌ی حداکثری از توان کامپیوتر (موازی سازی) فرمول بالا را به کمک جبر خطی و به شکل برداری بازنویسی می‌کنیم. در صورتی که وزن‌ها و متغیر‌ها را به شکل دو بردار زیر نشان دهیم، حاصل‌جمع وزن دار را می‌توانیم به شکل ضرب بردار نمایش دهیم که در آن T، ترانهاده‌ی بردار می‌باشد.معادله‌ی سه (۳): نمایش برداری وزن‌ها و متغیر‌هامعادله‌ی چهار (۴): نمایش برداری حاصل‌جمع وزن‌دارمفهوم بایاس (Bias) و الزام استفاده از آن خارج از بحث این مطلب می‌باشد اما به طور خلاصه به منظور عملکرد بهتر مدل و یادگیری روابط پیچیده‌تر، بایاس را نیز به عبارت بالا اضافه می‌نماییم و حاصل به دست آمده را z نام‌گذاری می‌کنیم.معادله‌ی پنج (۵): نمایش برداری حاصل‌جمع وزن دار با اضافه شدن بایاسحاصل عبارت بالا یک بردار از اعداد حقیقی خواهد بود که آن را به عنوان ورودی به تابع لجستیک می‌دهیم، در این گفتار تابع لجستیک را با نماد σ  (سیگمای کوچک) نمایش می‌دهیم.معادله‌ی شش (۶): مدل رگرسیون لجستیکعبارت به دست آمده در بالا مدل (فرضیه، Hypothesis، h_θ(x)) رگرسیون لجستیک می‌باشد. گفتنی‌است که حاصل به دست‌آمده از طریق تابع لجستیک یک بردار به اندازه‌ی m از اعداد در بازه‌ی (۰،۱) می‌باشد. هر عدد به دست آمده از طریق این معادله‌ (مدل) را می‌توان به صورت عبارت زیر که یک احتمال شرطی یا برشی می‌باشد تفسیر کرد. به طور مثال در مورد موشها عدد حاصل شده از مدل احتمال بیمار بودن موش، به شرط وزن آن می‌باشد.معادله‌ی هفت (۷): تفسیر جواب رگرسیون لجستیک به کمک احتمال شرطیتابع هزینهجهت ارزیابی عملکرد مدل همچنین بهبود آن به کمک الگوریتم گرادیان‌کاهشی که در ادامه به آن می‌پردازیم باید ابتدا یک تابع هزینه تعریف کنیم. تابع هزینه‌ای که از آن استفاده میکنیم Cross Entropy Cost Function یا به اختصار CEC می‌باشد، تابع هزینه را برای رگرسیون لجستیک به شکل زیر تعریف می‌کنیم.معادله‌ی هشت (۸): تابع هزینه‌ی رگرسیون لجستیک&#xA;گرادیان کاهشیمفهوم گرادیان کاهشی را در مطلب قبلی که در ویرگول پست کردم (لینک)، توضیح دادم اما به طور خلاصه باید گفت که گرادیان کاهشی یک الگوریتم بهینه سازیست که در اینجا برای کمینه (Minimize) کردن تابع هزینه از آن استفاده می‌کنیم. شبه کد گرادیان کاهشی به شکل زیر می‌باشد.شبه کد یک (۱): شبه کد الگوریتم گرادیان کاهشیبرای استفاده از گرادیان کاهشی، نیاز به محاسبه‌ی مشتق جزئی تابع هزینه نسبت به پارامتر θ داریم. این عملیات مشتق‌گیری نیاز به استفاده از قانون مشتق زنجیره‌ای (Chain Rule) دارد.معادله‌ی نه (۹): عملیات مشتق گرفتن از تابع هزینه و حاصل به دست آمده از آنحال که همه‌ی المان‌های مورد نیاز را داریم آنها را به کد تبدیل می‌کنیم.کدکد قابل اجرا و کامل این مطلب را می‌توانید از این مخزن گیتهاب دریافت کنید (لینک).مرحله‌ی اول import کردن کتابخانه‌ی numpy می‌باشد که برای انجام محاسبات ریاضی از آن کمک می‌گیریم.کد یک (۱): وارد کردن کتابخانه‌های مورد نیازحال داده‌ها را وارد برنامه می‌کنیم، داده‌های استفاده شده در این گفتار داده‌های مربوط به سرطان سینه هستند که در کتابخانه‌ی scikit موجود هستند. (لینک دادگان)کد دو (۲): وارد کردن داده‌ها‌ی سرطان سینه به کمک scikitحال مجموعه دادگان وارد شده را به دو گروه test و train تقسیم می‌کنیم. ۲۵ درصد از دادگان را در مجموعه‌ی test قرار داده و بقیه را در مجموعه‌ی train همچنین اگر می‌خواهید نتایج به دست آمده در این گفتار را تکرار کنید می‌توانید random_state را برابر با مقدار 42 قرار دهید، دقت کنید که در این امر اجباری نیست.کد سه (۳): تقسیم مجموعه دادگان به آموزش و تستحال کلاس رگرسیون لجستیک را تعریف می‌کنیم، در تابع سازند‌ه‌ی این کلاس دو پارامتر max_iter و learning_rate را مقداردهی می‌کنیم، این دو پارامتر هردو مربوط به الگوریتم گرادیان کاهشی می‌باشند، دقت کنید که به منظور ساده‌سازی موضوع از شرط همگرایی در گرادیان کاهشی صرف نظر کردیم، اما در گیتهاب کد مربوط به اعمال شرط همگرایی نیز موجود است.در متد fit ابتدا ابعاد مجموعه‌ی دادگان را میگیریم و آن را در دو متغیر n_samples (تعداد اعضای مجموعه) و n_features تعداد ویژگی‌ها میریزیم. سپس به کمک کتابخانه‌ی numpy بردار theta را با مقدار صفر مقداردهی می‌کنیم.در حلقه‌ی تکرار در هر مرتبه ابتدا حاصل‌جمع وزن دار را محاسبه می‌کنیم، دقت کنید که چون کتابخانه‌ی پانداس داده‌ها را به شکلی که ما در گفتار بالا بررسی کردیم، برنمی‌گرداند، در محاسبه‌ی حاصلجمع وزن‌دار مجبوریم مقادیر بردار دادگان (X) را نیز ترانهاده کنیم.پس از محسابه‌ی حاصل‌جمع وزن دار و محاسبه‌ی مقدار لجستیک نوبت به اجرای گرادیان کاهشی می‌رسد. دقت کنید که با محاسبه‌ی گرادیان بایاس متوجه می‌شویم، مقدار آن از رابطه‌ی زیر محاسبه می‌شود.معادله‌ی ده (۱۰): معادله‌ی گرادیان بایاس&#xA;کد چهار(۴): کلاس رگرسیون لجستیکحال که کلاس را داریم از آن استفاده کرده و دقت را محاسبه می‌کنیم.کد پنج (۵): استفاده از کلاسکد شش (۶): محسابه‌ی دقت</description><category>رضا مظاهری</category><author>رضا مظاهری</author><pubDate>Sun, 02 Apr 2023 14:34:32 +0330</pubDate></item><item><title>پیاده سازی رگرسیون خطی ساده از صفر</title><link>https://virgool.ir/@reza.mzk/پیاده-سازی-رگرسیون-خطی-ساده-از-صفر-uv5zwq4rajna</link><description>1.  درک مفهوم رگرسیون خطی ساده۱.۱. مقدمهبه پیش بینی یک متغیر از روی تغییرات یک یا چند متغیر دیگر رگرسیون گفته می‌شود. به متغیر یا متغیر‌های پیش‌بینی کننده متغیر مستقل و به متغیر پیش‌بینی شده متغیر وابسته می‌گویند. اگر در این پیش بینی بین متغیر وابسته و مستقل رابطه‌ای خطی برقرار باشد به آن رگرسیون خطی می‌گویند و اگر تنها از یک متغیر مستقل استفاده کنیم به آن رگرسیون خطی ساده می‌گویند. متغیر وابسته را با y و متغیر مستقل را با x نشان می‌دهیم.در یادگیری ماشین ما تلاش می‌کنیم با استفاده از داده‌ها و الگوریتم‌های یادگیرنده در مورد داده‌ها پیش بینی‌هایی انجام دهیم. این ‌کار به وسیله ساخت مدل‌های ریاضی از داده‌های ورودی محقق می‌شود.به نمودار زیر توجه کنید، نموداری که ارتباط چند اصطلاح علمی را نشان می‌دهد، این اصطلاحات علمی در ادامه‌ی این گفتار مورد استفاده قرار خواهند گرفت. در این نمودار بر این نکته تاکید داریم که با داده شدن داده‌آموزشی به الگوریتم رگرسیون‌خطی می‌توانیم یک فرضیه دریافت کنیم که پیش‌بینی کننده متغیر وابسته ماست.شکل شماره یک (۱): نحوه تولید شدن تابع h_θ (x)۲.۱.  مدل (فرضیه) رگرسیون خطی سادهرگرسیون خطی ساده را با معادله‌ی خط زیر نشان می‌دهیم که آن را مدل رگرسیون خطی ساده می‌نامیم. در مدل ارایه شده در زیر h_θ(x) متغیر وابسته و x متغیر مستقل می‌باشد، در اینجا ما سعی داریم با استفاده از h_θ(x)، x را پیش‌بینی کنیم.شکل شماره دو (۲): مدل رگرسیون خطی سادهمقادیر عرض از مبدأ و شیب خط معادله خط بالا که به ترتیب با نماد‌های θ₀ و θ₁ نمایش داده‌شده‌اند پارامتر‌های مدل نامیده می‌شوند که با پیدا کردن آن‌ها می‌توان پیش‌بینی را انجام داد به عبارت دیگر الگوریتم یادگیری این دو مقدار را برای ما پیدا می‌کند.۳.۱. محاسبه‌ی پارامتر‌هاما باید دو پارامتر θ₀ و θ₁ را به گونه‌ای انتخاب کنیم که حاصل به دست آمده از مدل، برای هر یک از اعضای مجموعه دادگان آموزشی به مقدار واقعی آن بسیار نزدیک باشد، این موضوع را به کمک نمادهای ریاضی به شکل زیر نمایش می‌دهیم. عبارت بالانویسی شده‌ی (Super script) (i) در این نمادگذاری به شماره‌ی (Index) هر عضو در مجموعه دادگان آموزشی اشاره دارد و نباید آن را با توان اشتباه گرفت.با توجه به این موضوع که حاصل عبارت بالا ممکن است منفی شود، ضروری است که آن را به توان ۲ برسانیم، همچنین با توجه به اینکه در مجموعه دادگان آموزشی ما m عضو وجود دارد حاصل جمع عبارت بالا برای تمامی این m عضو باید کمینه شود.فرمول بالا حاصل جمعی است از تفاوت مقدار تخمین زده شده توسط فرضیه‌ی ارائه شده و مقدار واقعی برای هر عضو، با تقسیم آن بر عبارت m آن را به میانگین حاصل جمع این فواصل تبدیل می‌کنیم و جهت ساده سازی محاسبات ریاضی در آینده آن را بر ۲ نیز تقسیم می‌کنیم. عبارت به دست آمده را تابع هزینه‌ی (Cost Function) الگوریتم رگرسیون خطی ساده می‌نامیم و آن را با نماد (θ)j نمایش می‌دهیم.شکل شماره سه (۳): تابع هزینه‌ی الگوریتم رگرسیون خطی سادهاجازه دهید تا مطالب گفته شده در بالا را با یک مثال عددی روشن‌تر کنیم. مجموعه دادگان آموزشی زیر که دارای ۶ عضو می‌باشد را در نظر بگیرید.شکل شماره‌ی چهار (۴): مجموعه دادگان آموزشیشکل شماره‌ی پنج (۵): تعداد اعضای مجموعه دادگان آموزشییک الگوریتم رگرسیون، با انجام یک سری محاسبات که در ادامه‌ی این مطلب بیشتر با آنها آشنا می‌شویم، برای مجموعه‌ی ما فرضیه‌ی زیر را پیشنهاد داده است؛ حال تابع هزینه را برای آن محاسبه می‌کنیم.شکل شماره‌ی شش (۶): فرضیه‌ی پیشنهاد شده توسط الگوریتم رگرسیون خطیشکل شماره‌ی هفت (۷): مقادیر تخمین زده شده توسط فرضیه‌ی پیشنهادیشکل شماره‌ی هشت (۸): محاسبه‌ی تابع هزینه برای فرضیه و مجموعه‌ی دادگانحاصل تابع هزینه برای (2-) = θ₀ و 2 = θ₁، مقدار ۰/۲۵ می‌باشد؛ با استفاده از مقادیر 1 = θ₀ و 1 = θ₁ و یا به عبارت دیگر فرضیه‌ی h_θ(x) = 1 + x مقدار تابع هزینه ۲۰ محاسبه می‌گردد. واضح است که با انتخاب مقادیر متفاوت برای پارامترهای عرض از مبدا و شیب خط مقدار تابع هزینه تغییر می‌کند. ما باید θ₀ و θ₁ را به گونه‌ای انتخاب کنیم که تابع هزینه کمینه شود.نمودار زیر را ببنید، این نمودار مقادیر مختلف j(θ) را برای θ₀ و θ₁ های متفاوت به نمایش می‌گذارد. هدف در بخش بعدی پیدا کردن θ₀ و θ₁ هایی است که به ازای آنها تابع هزینه کمینه می‌شود.شکل شماره نه (۹): مقدار تابع هزینه برای مقادیر مختلف پارامترهای عرض از مبدا و شیب خط۴.۱. گرادیان کاهشیگفتیم که تابع هزینه نشان‌دهنده‌ی آن است که نقاط تخمین زده شده توسط فرضیه، از نقاط اصلی چقدر دور هستند همچنین فهمیدیم که با انتخاب مقادیر متفاوت برای پارامترهای فرضیه می‌توان مقدار تابع هزینه را تغییر داد. با توجه به اینکه هدف اصلی ما نزدیک کردن مقادیر تخمین زده شده به مقادیر واقعی می‌باشد باید تابع هزینه را کمینه (Minimum) کنیم.الگوریتم گرادیان کاهشی یک الگوریتم بهینه سازی است که در بسیاری از قسمت‌های یادگیری ماشین مورد استفاده قرار می‌گیرد. تصور کنید که شخص نا‌بینایی در بالای یک قله قرار دارد و تصمیم دارد به یک میله‌‌ی پرچم که در دامنه قرار دارد برسد و درصورتی که میله‌ی پرچم را رد کند، تنبیه خواهد شد. وی ابتدا یک قدم بزرگ در جهت شیب پایین برمی‌دارد و سپس قدمی دیگر در جهت شیب پایین همینطور که شیب کوه کمتر می‌شود این فرد نیز طول قدم‌های خود را کوتاه‌تر می‌کند تا به پرچم برسد، الگوریتم گرادیان کاهشی نیز دقیقا مانند این شخص نا‌بینا عمل می‌کند.شکل شماره ده (۱۰): حرکت شخص نا‌بینا از قله به سمت نقطه‌ی مینیمم که با دایر‌ه‌های سیاه روی نمودار j(θ) بر حسب θ_0 و θ_1در شکل بالا یک نمونه از الگوریتم گرادیان کاهشی به نمایش گذاشته شده. فرد نابینا در این تصویر از بالاترین نقطه سیاه حرکت کرده و به سمت نقطه Minimum حرکت می‌کند و در ابتدا طول قدم‌های برداشته شده بزرگ و در نزدیکی نقطه‌ی Minimum طول قدم‌ها کوچک می‌شود. در نمودار بالا محورهای Y, X نمایشگر پارامترهای θ₀ و θ₁ و محور Z نمایشگر تابع هزینه (θ₀,θ₁)j می‌باشد.از توضیحات ارائه شده در بالا واضح است که طول قدم‌های ما در این الگوریتم با شیب نمودار ارتباط مستقیم دارد این ارتباط در فرمول ریاضی این الگوریتم نیز مشهود است؛ ما می‌دانیم که هر چه یک نمودار به نقاط اکسترمم (مینیمم و ماکسیمم) نزدیک می‌شود شیب آن کمتر می‌شود تا در نهایت در این نقاط شیب آن صفر می‌شود از طرفی باید بدانیم که که پارامتر α در این فرمول نشاندهنده‌ی طول قدم‌های برداشته شده می‌باشد. با ضرب شیب نمودار در مقدار α طول قدم‌های برداشته شده در ابتدا بزرگ و در نزدیکی نقطه‌ی مینیمم کوچک خواهد شد. توجه به ایننکته حائز اهمیت است که در صورت انتخاب مقدار بزرگ برای α ، الگوریتم نقطه‌ی بهینه را رد می‌کند و به اصطلاح همگرا نمی‌شود. در شکل زیر همگرا نشدن الگوریتم نشان داده شده است.شکل شماره یازده (۱۱): همگرا نشدن الگوریتم گرادیان کاهشی و دورشدن از نقطه‌ی مینیممهمچنین در صورت انتخاب مقداری بسیار کوچک برای α  الگوریتم دفعات زیادی نیاز به گردش (Iteration) دارد. شکل شماره‌ی دوازده همگرا نشدن الگوریتم را در یک نمودار دو بعدی نشان می‌دهد.شکل شماره دوازده (۱۲): در نمودارد سمت راست مقدار α بیش از اندازه بزرگ و در نمودار سمت چپ مقدار α بیش از اندازه کوچک انتخاب شده است.  این تصویر از وبسایت (www.jeremyjordan.me/nn-learning-rate) وام گرفته شده است.  طرح کلی الگوریتم گرادیان کاهشی در زیر نشان داده شده است.طرح کلی:با هر θ₀ و θ₁ دلخواه شروع می‌کنیم:آنقدر θ₀ و θ₁ را تغییر می‌دهیم تا مقدار (θ₀,θ₁)j کاهش یابد تا زمانی که به مینیمم برسد.در زیر می‌توانیم فرمول گرادیان کاهشی را ببنیم؛ در این فرمول علامت ∂ نشان دهنده‌ی مشتق جزئی نسبت به متغیر θⱼ می‌باشد. و همینطور زیرنویس (Subscript) j اشاره‌گر (index) به هر کدام از پارامتر‌ها می‌باشد. به طور مثال در اینجا j یکبار ۰ و یکبار ۱ خواهد بود.شکل شماره سیزده (۱۳): فرمول گرادیان کاهشیبا اعمال فرمول بالا بر فرمول تابع هزینه در رگرسیون خطی ساده مقادیر θ₀ و θ₁ به شکل زیر محاسبه می‌گردند.شکل شماره‌ی چهارده (۱۴): محاسبه مقادیر θ_0 و θ_1در مورد دو فرمول بالا دو نکته باید مد نظر قرار داده شود. اول آنکه مقادیر θ₀ و θ₁ در کد نوشته شده باید به طور همزمان به روز رسانی (Update) شوند در غیر اینصورت الگوریتم به درستی کار نمی‌کند. نکته دوم آنکه در عبارات xⁱ و yⁱ حرف i توان نیست بلکه شمارنده‌ی (index) هر عضو در مجموعه‌ی دادگان می‌باشد.۲. پیاده سازیدر پیاده سازی زیر از یک دیتاست که از سایت کگل گرفته شده است استفاده کرده‌ام. برای دسترسی به این دیتاست از این لینک استفاده کنید. کد رو در پایین براتون قرار دادم برای دانلودش و اجراش توسط خودتون از این لینک استفاده کنید. ولی پیشنهادم اینه که از این نسخه‌ای که توی گیتهاب (Github) گذاشتم استفاده کنید. نسخه‌ای که در زیر می‌بینید بر‌اساس قرارداد‌های متن بالاست و جهت سادگی و به شکل بی‌سلیقه‌ای غیرحرفه‌ای نوشته شده اما کد موجود در مخزن گیتهاب بسیار تمیزتر و جمع و جور تر می‌باشد.برای پیاده سازی ابتدا باید کتابخانه‌هایی که به آنها نیاز داریم را به کد وارد کنیم، کتابخانه pandas جهت خواندن فایل csv.که داده‌هامان در آن قرار دارد و کتابخانه numpy برای کار کردن راحتتر با اعداد و آرایه‌ها همچنین کتابخانه matplotlib.pyplot برای مصور سازی نتیجه‌ و دادگان.import pandas as pd&#xA;import numpy as np&#xA;import matplotlib.pyplot as pltحال باید مجموعه دادگان را به کد وارد کنیم با استفاده از pandas فایل csv را خوانده و و آن را در دو متغیر X و y قرار می‌دهیم.dataset = pd.read_csv(&#39;Salary_Data.csv&#39;)&#xA;X = dataset.iloc[:, :-1].values&#xA;y = dataset.iloc[:, -1].valuesبرای تست دقت الگوریتمی که آن را پیاده سازی می‌کنیم نیاز داریم تا داده‌ها را به داده‌های آموزش و تست تقسیم بندی کنیم در اینجا از کتابخانه scikit برای اینکار استفاده می‌کنیم و ۲۵ درصد از داده‌ها را در مجموعه تست و بقیه آن‌هارا در مجموعه آموزش قرار می‌دهیم.from sklearn.model_selection import train_test_split&#xA;X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.25)حال وقت پیاده سازی الگوریتم رگرسیون خطی ساده رسیده است. همانطور که در متن بالا به آن اشاره کردیم وظیفه ما یافتن دو مقدار theta_0و theta_1 می‌باشد، برای یافتن دو مقدار بالا به الگوریتم گرادیان کاهشی ۱۰۰۰ چرخش فرصت می‌دهیم در صورتی که الگوریتم در این ۱۰۰۰ چرخش در حلقه نتواند به مقدار مشخصی همگرا شود از حلقه خارج می‌شویم تا فر‌آیند یافتن ضرائب طولانی نشود.epochs = 1000&#xA;theta_0 = 0&#xA;theta_1 = 0&#xA;alpha = 0.01&#xA;m = len(X_train)&#xA;for i in range(0, epochs):&#xA;    temp_0 = (theta_0 - (alpha * (1 / m) * sum([((theta_0 + theta_1 * X_train[j]) - y_train[j]) for j in &#xA;    range(0, m)])))&#xA;    theta_1 = (theta_1 - (alpha * (1 / m) * sum([((theta_0 + theta_1 * X_train[j]) - y_train[j]) * &#xA;    X_train[j] for j in range(0, m)])))&#xA;    if abs(temp_0 - theta_0) &lt; 0.0000001:&#xA;    break&#xA;theta_0 = temp_0 شرط همگرایی را در قطعه کد بالا به اینصورت تعریف می‌کنیم که مقدار فعلی theta_0 با مقدار قبلی کمتر از ۰.۰۰۰۰۰۰۱ اختلاف داشته باشند به عبارت دیگر اگر مقدار فعلی و قبلی ضریب theta_0 کمتر از این مقدار باهم اختلاف داشته باشند الگوریتم را همگرا درنظر گرفته و استفاده از break از حلقه خارج می‌شویم.حال که مقدار ضرائب را داریم وقت آن رسیده تا عملکرد الگوریتم را محک بزنیم برای این کار مقادیر قسمتی از مجموعه دادگان را که به شکل test کنار گذاشته بودیم را با استفاده از ضرائب به دست آمده در بالا محاسبه می‌کنیم.y_pred = [theta_0 + theta_1 * X_test[k] for k in range(0, len(X_test))]و با استفاده از معیار r2 دقت رگرسیون را می‌سنجیم.from sklearn.metrics import r2_score&#xA;print(r2_score(y_test, y_test_pred))همچنین از دو قطعه کد زیر جهت مصور سازی نتایج استفاده می‌کنیم.plt.scatter(X_train, y_train, color = &#39;red&#39;)&#xA;plt.plot(X_train, y_train_pred, color = &#39;blue&#39;)&#xA;plt.title(&#39;Salary vs Experience (Test set)&#39;)&#xA;plt.xlabel(&#39;Years of Experience&#39;)&#xA;plt.ylabel(&#39;Salary&#39;)&#xA;plt.show()plt.scatter(X_test, y_test, color = &#39;red&#39;)&#xA;plt.plot(X_test, y_test_pred, color = &#39;blue&#39;)&#xA;plt.title(&#39;Salary vs Experience (Test set)&#39;)&#xA;plt.xlabel(&#39;Years of Experience&#39;)&#xA;plt.ylabel(&#39;Salary&#39;)&#xA;plt.show()</description><category>رضا مظاهری</category><author>رضا مظاهری</author><pubDate>Mon, 02 Jan 2023 14:36:49 +0330</pubDate></item></channel></rss>