پیش‌بینی امتیاز فیلم‌ها

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

مقدمه

پیش بینی میزان استقبال مردم از فیلم و میزان فروش آن، بستگی به چند عامل مختلف دارد، از جمله: کارگردان، نویسنده، بازیگران، سایر عوامل و همچنین سابقه ی قبلی آن‌ها در این عرصه، میزان استقبال و فروش فیلم‌های گذشته ی این کارگردان و بازیگران و ... .
سایت آی ام دی بی، دیتابیس آنلاین فیلم، سریال و بازی‌های ویدئویی در سراسر جهان است که برای هر عنوان شامل عوامل ساخت، تریلر کار، عکس، خلاصه داستان، نکات جالب و مهم، حتی اشتباهات فنی و ناخواسته و ازهمه مهم تر یک عدد بین 1 تا 10 به عنوان امتیاز است. جالب است بدانید که این سایت متعلق به شرکت آمازون است.
اساس کار امتیازدهی این سایت به فیلم‌ها، نظرات و نمرات کاربران است. اما امتیازی که ما در صفحه هر فیلم می بینیم، دقیقاً میانگین نمرات کاربران نیست بلکه در این سایت از میانگین وزن دار استفاده می شود.

فرمول سایت به صورت زیر است:

  • weighted rating (WR) = (v ÷ (v+m)) × R + (m ÷ (v+m)) × C

که:

  • R = میانگین امتیاز برای فیلم

  • v = تعداد آراء برای فیلم

  • m = (حداقل تعداد رأی لازم برای قرارگرفتن در 250 فیلم برتر(هم اکنون 25000

  • C = (میانگین تمام امتیازات داده شده (هم اکنون 7.0

که البته برای فیلم‌هایی که در لیست 250 فیلم برتر قرار دارند، فقط رأی‌های رأی دهندگان عادی1 محاسبه می شود.
عدد حاصل تا یک رقم اعشار گرد می شود و این همان نمره ای است که ما می بینیم[1].

سایت برای هر فیلم، آمار تعداد افرادی که هر نمره ای از 1 تا 10 داده اند و همچنین تفکیک رأی دهندگان براساس سن و جنسیت و اینکه از امریکا بوده اند یا جاهای دیگر و ... را می دهد. برای دیدن این صفحه، کافی است پس از id فیلم، ratings/ را اضافه کنید. مثلا آمار زیر مربوط به این صفحه است:

شکل1- پراکندگی رأی دهندگان براساس نمره

شکل2- پراکندگی رأی دهندگان براساس سن و جنسیت و کشور

همانطور که مشخص است، میانگین حسابی آراء این فیلم 7.85 است که به 7.9 گرد می شود ولی اگر با فرمولی که در بالا آمده حساب کنیم، 7.83 می شود که به 7.8 گرد می شود.

از آنجا که سایت آی ام دی بی یکی از معتبرترین و پربازدیدترین سایت‌ها در این زمینه است و افراد زیادی از سراسر جهان، نظرات خود را در مورد فیلم‌ها در این سایت بازتاب می دهند، و همچنین خودِ سایت هم اطلاعات کاملی درمورد هر فیلم در اختیار می گذارد، از دیتابیس این سایت به عنوان دیتا در این پروژه استفاده می شود و سایت omdbapi به عنوان API مورد استفاده قرار می گیرد.
هم چنین از فیلم‌های مابین سال‌های 2004 تا 2014 استفاده خواهد شد.

کارهای انجام شده

کارهای انجام شده: مورد اول
در سال 2012 یک گروه از دانشگاه استنفورد، مقاله ای با عنوان پیش بینی نمرات فیلم‌ها با استفاده از گوگل ترندز2 منتشر کردند که به تشریح آن می پردازیم:

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

مجموعه داده4 :

  1. مجموعه داده آی ام دی بی :
    یکی از مجموعه داده‌های این گروه، دیتابیس خودِ آی ام دی بی است که اطلاعات خوب و مفیدی می دهد و از این API استفاده کرده اند. برای پروژه خود، 400 فیلم را مورد بررسی قرار داده اند (200 فیلم بد با نمره کمتر یا مساوی 6 و 200 فیلم خوب با نمره بیشتر از 6 ). و فیلم‌های قدیمی تر از 2004 مدنظرشان نبوده؛ چون آمارجستجوی گوگل برای آن‌ها در دسترس نبوده است. برای هر فیلم، آن‌ها 5 مشخصه را استفاده کرده اند:
    1) عنوان فیلم
    2) نام کارگردان
    3) نام بازیگر#1
    4) نام بازیگر#2( به ترتیب لیست بازیگران فیلم در سایت آی ام دی بی )
    5) تاریخ انتشار فیلم

  2. مجموعه داده google search frequencies :
    دو رویکرد برای سنجش میزان محبوبیت یک فیلم با این روش استفاده شده است:
    1) ترکیب آمار گوگل ترندز و گوگل اَدوُردز5
    2) فقط آمار گوگل ترندز

اما لازم است توضیحی درمورد گوگل ترندز و گوگل اَدوُردز داده شود:
به طور خلاصه، گوگل ترندز یکی از ابزار‌های جالب گوگل است که شما می توانید با استفاده از آن (Search Popularity Index (SPI یا شاخصِ- محبوبیت جستجوی یک کلمه یا عبارت خاص یا یک کوئری را دریک دوره زمانی و یک منطقه ی خاص به دست آورید. این شاخص برمبنای اشتراک کوئری است، یعنی نسبت تعداد جستجو‌های کوئری موردنظر به کل تعداد کوئری‌ها در یک منطقه ی خاص در یک محدوده ی زمانی خاص.البته گوگل یک مرحله نرمال سازی دیگرهم انجام می دهد که مقدار اشتراک کوئری را بر بیشترین مقدار اشتراک کوئری در محدوده زمانی خاص تقسیم می کند و حاصل را در 100 ضرب می کند. اما گوگل برای هر کوئری این محاسبات را جداگانه حساب می کند که این واقعیت، اجازه ی مقایسه ی میزان محبوبیت دو کوئری مختلف را باهم نمی دهد. برای حل این مشکل از ابزار گوگل اَدوُردز استفاده شده است.

ابزار گوگل اَدوُردز یکی دیگر از ابزار گوگل است که کارایی زیادی برای رساندن تبلیغات به کاربران دارایِ پتانسیل دارد. اما دراین پروژه، از
قسمت keyword tool این ابزار استفاده شده است. keyword tool میزان جستجوی یک کلمه یا عبارت را در یک منطقه ی خاص در بازه ی 12 ماه گذشته به ما می دهد. همچنین این اجازه را می دهد که ثابت نرمالسازی6 که در داده ی ترندز محاسبه نمی شد، بازیابی شود. به همین خاطر در آزمایش اول-که در ادامه توضیح داده شده است-، زمان پایان تا هم اکنون است. در دو روش ترندز و AdWords ضمانت نشده است که از یک دیتابیس استفاده شود. به هرحال گروه معتقد است که با این روش، مرتبه بزرگی ثابت نرمالسازی را به خوبی تخمین زده می شود.
اما مشکل بزرگ استفاده از google AdWords keyword tool این است که keyword توسعه دهنده در دست نیست؛ چون استفاده از این ابزار و امکانات آن برای انجام کار، در دستورکار نبوده است. بنابراین نمی توان به صورت خودکار data AdWords را جمع آوری کرد. به هرحال برای بررسی
این رویکرد، AdWords data برای عنوان فیلم، نام کارگردان، بازیگر#1 و بازیگر#2 برای مجموعه ی 120 فیلم ( 60 فیلم خوب و 60 فیلم بد ) جمع آوری شده است.

استفاده از داده‌ی ترندز در آزمایش:
در هردو آزمایش، مشخصاتی مثل عنوان فیلم، کارگردان، بازیگر#1 و بازیگر#2 استفاده شده است. آزمایش با فاصله زمانی ترندز کوئری7 به دو روش زیر انجام شده است:
1) از یک ماه قبل از انتشار فیلم تا هم اکنون برای آزمایش اول
2) از 8 ماه قبل از انتشار فیلم تا 4 ماه پس از انتشار برای آزمایش دوم
فاصله زمانی روش اول، روشی است که گوگل اتخاذ کرده است؛ و فاصله زمانی روش دوم، به این دلیل است که گروه معتقد است که خارج از این محدوده زمانی، اطلاعات معتبر نخواهد بود.

آزمایش اول ( استفاده از گوگل ترندز و گوگل اَدوُردز ):
با توجه به جمع آوری دستی اطلاعات (به دلیل استفاده از گوگل اَدوُردز ) مجموعه 120 فیلم اختیار شده است. برای اینکه نسبت m≈20n ( که m تعداد نقاط درون مجموعه آزمایشی و n تعداد خصوصیات است. ) حفظ شود، یک بردار 4بعدی شامل کل جستجوهای انجام شده برای عنوان این فیلم، کارگردان، بازیگر#1 و بازیگر#2 بر محور زمان درنظر گرفته شده است؛ که زمان از یک ماه قبل از انتشار تا 4ماه پس از تاریخ انتشار فیلم محاسبه شده است. محاسبات به صورت زیر انجام شده است:

  • A = .محاسبه می شود keyword با گرفتن یک Google AdWords میزان جستجو در 12ماه گذشته در ایالات متحده که توسط

  • t1 = یک ماه قبل ازتاریخ انتشار فیلم

  • t2 = ماه جاری

  • Xt = t1<t<t2 در آمریکا که keyword برای همان ترندز داده

  • G = ∑t Xt
    و

    توضیح تصویر

نتیجه آزمایش اول:
هر فیلم به یکی از دو کلاس صفر و یک تخصیص داده شده است. فیلم با نمره <6 در کلاس صفر و فیلم با نمره >=6 در کلاس یک قرار می گیرد. در این آزمایش کارایی 3 الگوریتمL1-SVM, Multilayer perception, Logistic مقایسه شده است:

توضیح تصویر

همانطور که از اطلاعات جدول مشخص است، هر سه الگوریتم خیلی بد عمل می کنند. الگوریتم Logistic مانند پرتاب سکه هم شانس، تقریبا 50-50 تقسیم می کند، L1-SVMتقریباً همه را در کلاس صفر قرار می دهد و Multilayer perceptron هم مانند پرتاب سکه غیرهم شانس به صورت 65-35 عمل می کند. در واقع، این آزمایش نتیجه ی مطلوبی نداشته است.

آزمایش دوم ( فقط استفاده از گوگل ترندز ):
در این آزمایش از گوگل اَدوُردزگوگل اَدوُردز استفاده نشده است و فقط بر مبنای اطلاعات گوگل ترندز پیش بینی انجام شده است. طبق نموداری که گوگل ترندز در اختیار قرار داده است، این نتیجه گرفته می شود که اوج جستجوی یک فیلم در زمان انتشار فیلم است که پیک نمودار است و تقریباً از یک هفته قبل از انتشار فیلم، جستجوها شروع به افزایش می کند ( شیب نمودار زیاد می شود. ) و همچنین حدود 4 ماه پس از انتشار فیلم، میزان جستجو دوباره خیلی کم می شود. بنابراین از آنجا که تصور می شود اطلاعات این محدوده زمانی مفید است، از یک ماه قبل از انتشار تا 4ماه پس از انتشار (محدوده زمانی 5ماهه ) برای هر فیلم مورد بررسی قرار می گیرد. سپس این بازه زمانی به دو بخش 1) یک ماه قبل از انتشار و 2) بعد از انتشار تقسیم شده است؛ که بخش دوم به 6بازه ی 2هفته ای تقسیم شده و بقیه ی زمان، بازه ی هفتم را تشکیل داده است. سپس ویژگی ای به عنوان سطح زیرمنحنی تعریف شده است و از آنجا که بخش قبل از انتشار کوچک است، به زیربازه تقسیم نشده و کلاً یک ویژگی فرض شده است. بنابراین، یک بردار با 8ویژگی برای هر query داریم. اینجا هم برای هر فیلم، 4مورد 1) عنوان فیلم 2) کارگردان 3) بازیگر#1 4) بازیگر#2 را مورد استفاده قرار می دهیم که درنتیجه 4*8=32 ویژگی در مجموع خواهیم داشت.

شکل 3- نموداری که google trends برای یک فیلم دراختیار قرار داه است.

نتیجه آزمایش دوم:
بر روی داده‌های این آزمایش هم همان الگوریتم‌ها اجرا شده است و نتایج زیر به دست آمده است:

جدول 2- نتایج آزمایش دوم

همانطور که مشاهده می شود، L1-SVM خیلی بهتر عمل می کند و تقریباً 72% پیش بینی درست انجام می دهد که برای فیلم خوب و بد، تقریباً به یک صورت عمل می کند. ولی MLP کمی ضعیف تر نتیجه داده است. دلیل این قضیه یه این صورت توضیح داده شده است که گاهی فیلم‌هایی در آی ام دی بی نمره پایینی دارند، ولی جستجوی زیادی برای آن‌ها صورت گرفته است.( مثال خودِ مقاله، فیلم هرگز نگو هرگز8 با حضور جاستین بیبر است که نمره 1.6 دارد ولی در این الگوریتم در زمره ی فیلم‌های خوب قرار گرفته است. )

اما تست‌هایی نیز روی داده‌ها انجام شده است؛ به این صورت که 8بازه ی زمانی تعریف شده به ترتیب افزایشی تست شده است ( یعنی بار اول: فقط پیش از انتشار، بار دوم: پیش از انتشار و 2هفته اول و... ) که نمودار آن در ذیل آمده است:

شکل 4- نمودار دقت پیش بینی براساس تعداد feature‌ها

یعنی هر بار مقدار بیشتری از سطح زیرمنحنی مورد استفاده قرار گرفته است. همانطور که مشخص است، در حالتی که فقط پیش از انتشار بررسی شود، دقت بیشتر از حالتی است که 2هفته، 4هفته و حتی 6هفته پس از انتشار را در نظر بگیریم؛ یعنی اگر فقط پیش از انتشار را بررسی کنیم، بهتر از حالتی است که کمتراز 8هفته پس از انتشار را بررسی کنیم.
همچنین در میان ویژگی‌های هرفیلم که از آی ام دی بی می گیریم، اگر فقط هریک ازعنوان، کارگردان یا بازیگر#1 به جای همه 4ویژگی مورد بررسی قرار گیرد، نتایج نزدیکی به حالت کلی می دهد؛ ولی بازیگر#2 به تنهایی، معیار خوبی نیست[2].

کارهای انجام شده: مورد دوم
یکی دیگر از کارهای این زمینه، با عنوان "پیش بینی موفقیت فیلم برمبنای داده‌های آی ام دی بی"9 است که توسط سه نفر از دانشجویان دانشگاه کالیکوت 10هندوستان انجام گرفته است. دیتای اولیه آنها از آی ام دی بی است که شامل فیلم‌های بین سال‌های 2000 تا 2012 آمریکایی است که اطلاعات آن‌ها در باکس آفیس وجود دارد که 1050 فیلم می شود.

بخش پیش پردازش داده : به دلیل اینکه علاوه بر منبع اصلی یعنی آی ام دی بی، از منابع دیگر یعنی روتن تومیتو11 و ویکی پدیا12استفاده شده است، مشکل فیلد گم شده پیش می آید که برای حل این مشکل، اندازه ی گرایش مرکزی برای آن ویژگی حساب شده است.( هم از میانگین وهم از میانه استفاده می کنند و سپس موارد تکراری حذف شده اند. )

بخش ادغام و انتقال داده‌ها : دراین مرحله، داده‌های مرحله ی قبل، در یک پایگاه داده جدید جمع آوری شده اند. این داده‌ها یا انتقال داده شده ویا تثبیت شده اند تا پروسه ی رگرسیون راحت‌تر و کاراتر شود. اما داده‌ها هم عددی(مانند نمره، تعداد رأی‌ها و ...) و هم غیرعددی(مانند نام کارگردان و ...) هستند درحالیکه برای رگرسیون، باید تمام داده‌ها عددی باشند. برای حل این‌مشکل، اندازه ی‌گرایش مرکزی درآمد باکس آفیس استفاده شده است.

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

اما سه مدل برای پیش بینی استفاده شده است:

  1. مدل رگرسیون خطی کمترین مربعات : برای این کار، از گرادیان نزولی تصادفی استفاده شده است. اگر به هر ویژگی یک وزن داده شود، به صورت زیر محاسبه می شود:

    توضیح تصویر

    که F‌ها ویژگی‌ها و تتا‌ها وزن‌ها هستند و nهم تعداد ویژگی‌هاست.

  2. مدل رگرسیون لاجستیک(منطقی) : برای این کار، مسأله ی رگرسیون به یک مسأله ی کلاس بندی تبدیل خواهد شد که باید متغیر هدف به تعداد متناهی بازه ی هم اندازه تقسیم شود. باید یک سابقه نما از درآمد فیلم مورد نظر موجود باشد تا بازه‌های مختلفی برای پیش بینی ایجاد شود.

  3. اس وی ام : این روش، به دنبال تابعی است که انحرافی حداکثر برابر با Ɛ با هدف y برای تمام مجموعه ی آزمایش داشته باشد و درعین حال، نمودار آن تا حد ممکن صاف و مستقیم باشد. از تابع کرنل خطی برای منطبق کردن داده‌ها بر یک فضای با بُعد بالا که رگرسیون خطی اجرا می شود، استفاده شده است.

نتایج:
برای رگرسیون خطی، دقت 51%، برای رگرسیون لاجستیک، دقت 42.2% و برای اس وی ام 39% دقت به دست آمده است[3].

آزمایش‌ها

تمام قسمت‌های پیاده‌سازی پروژه، در سایت گیت‌هاب13، از اینجا قابل مشاهده‎‌است.
برای فاز پیاده سازی، در ابتدا نیاز به دراختیار داشتن لیستی از فیلم‌های‌هالیوود مابین سال‌های 2004 تا 2014 بود. برای این کار، ابتدا صفحات ویکی پدیای فیلم‌های تک تک این سال‌ها، کراول14 شد ولی به دلیل اینکه این لیست خیلی با سایت آی ام دی بی سازگار نبود، لیست فیلم‌های این بازه‌ی زمانی، از خودِ سایت آی ام دی بی استخراج شد. مثلاْ صفحه مربوط به 50 فیلم‌ اول سال 2004 در اینجا قابل مشاهده است.
کد این قسمت در اینجا قابل مشاهده است.
در مرحله‌ی بعد، باید اطلاعات موجود در سایت آی ام دی بی، برای تک تک فیلم‌ها استخراج می‌شد که برای این‌کار، از API که قبلاً معرفی شد، استفاده شد؛ به این صورت که کافیست به آن نام فیلم و سال اکران آن داده شود و اطلاعات فیلم به صورت رشته ی جیسون15 فرستاده می شود.
کد این قسمت برای بازه 2004 تا 2013 در اینجا و برای سال 2014 در اینجا قابل مشاهده است.
سپس به‌این صورت عمل شده‌است که برای تمام کارگردان‌ها و بازیگران، تمام فیلم‌هایی که در این بازه‌ زمانی در آن حضور داشته‌اند و نمرات آن‌ها به‌دست آمده‌است؛ یعنی برای هرکدام یک دیکشنری تشکیل‌شده‌است که کلید16 آن نام بازیگر یا کارگردان، و مقدار17 آن لیستی است که هر عنصر آن یک لیست دیگر است که شامل نام فیلم، نمره آی ام دی بی آن و سال انتشار آن است. سپس با توجه به نمرات فیلم‌های گذشته شخص، نمره فیلم بعدی او پیش‌بینی می‌شود. در نتیجه هرچه تعداد فیلم‌های شخص در دیتاست بیشتر باشد، نمره فیلم بعدی او دقیق‌تر خواهدبود. پس اگر تعداد فیلم‌های کمی برای یک شخص در دیتاست ثبت‌شده‌باشد، پیش‌بینی فیلم بعدی او کم‌دقت‌تر خواهدشد و همین امر باعث کاهش دقت نتایج کلی خواهدشد.
حالا که اطلاعات مورد نیاز را در دست داریم باید الگوریتمی به کار بگیریم و این داده‌ها را به آن بدهیم و نتایج به‌دست آمده را مورد بررسی قرار دهیم.
همان‌طور که در بخش کارهای انجام‌شده ذکر شد برای تخمین‌زدن نمره فیلم‌ها باید از روش رگرسیون استفاده کرد.
در این فاز از کار برای پیش‌بینی نمره هر فیلم از کارگردان بازیگر#1 و بازیگر#2 استفاده می‌شود و سایر موارد نادیده گرفته‌ می‌شود که برای هر یک از سال‌های 2004 تا 2014 حدود 500 فیلم اول سایت آی ام دی بی به ترتیب لیست "یو اس باکس آفیس"18مورد بررسی قرار گرفته‌است. درمجموع برای کارگردان‌ها و بازیگران (که در لیست بازیگران که در آی ام دی بی برای آن فیلم ثبت شده‌است اول یا دوم هستند19) فیلم ثبت شد.
برای این‌کار از یکی از کتاب‌خانه‌های پایتون20به نام اِس کِی لِرن استفاده شده‌است که ابزاری برای داده‌کاوی21 و یادگیری ماشین22است و دراین‌جا از قسمت رگرسیون آن استفاده شده‌است[4].
رگرسیون دارای بخش‌های مختلفی است که یکی از آن‌ها، مدل‌های خطی عمومی23است که در این پروژه از این روش‌ها استفاده شده‌است.
اما قبل از توضیح این روش‌ها بیان این نکته ضروری‎است که اطلاعاتی که به‎‌دست‌آمده‌است، کاملاً خام بوده و فقط شامل اعداد و ارقام است؛ در حالیکه در پیش‌بینی هر موضوعی، به‌خصوص موضوعاتی که براساس رأی و نظر مردم تعیین می‌شود، به عوامل بسیار زیاد دیگری بستگی دارد. به‌خصوص موضوعاتی که به سلیقه و طبع هرکس بستگی دارد. برای مثال، در میزان استقبال از یک فیلم -که موضوع کار این پروژه است- عوامل بسیاری علاوه بر سابقه ی قبلی دست‌اندرکاران فیلم -که در این پروژه درنظر گرفته‌شده‌است- دخیل هستند که چند نمونه در زیر نام برده خواهدشد:

1. موضوع فیلم:
موضوع، خیلی روی میزان استقبال از یک فیلم تأثیرگذار است. ممکن است کارگردانی سابقه بسیار درخشان و خوبی داشته‌باشد و میزان استقبال از کارهای گذشته او خوب بوده‌باشد، ولی در فیلم جدیدش موضوعی را کار کرده‌باشد که برای جامعه تکراری و خسته‌کننده شده‌باشد و یا او نتوانسته‌باشد این موضوع را
به‌ خوبی به تصویر کشیده‌باشد و درنتیجه استقبال از کار جدید او هیچ تناسبی با کارهای قبلی او نداشته‌باشد؛ البته عکس این موضوع هم می‌تواند اتفاق بیفتد و کارگردان گمنامی، با یک اثر جدید مورد اقبال مردم قراربگیرد. درمورد بازیگر هم دقیقاً همین احتمال وجود دارد.

2. برهه زمانی نمایش فیلم:
اینکه فیلم در چه برهه زمانی به نمایش گذاشته‌شود، یکی دیگر از فاکتورهای مهم در میزان استقبال از یک فیلم است. بارها اتفاق افتاده که -حتی در کشور خودمان- کارگردانی فیلمی با توجه به مشکلات و مسایل روز جامعه ساخته، ولی به دلایلی در آن زمان، اجازه اکران به آن فیلم داده‌نشده و بعد از مدتی -شاید چند سال- که فیلم اکران‌شده‌است، دیگر آن موضوع برای جامعه دغدغه نبوده و استقبال چندانی از آن نشده‌ و چه‌بسا مورد نقد قرارگرفته و نکوهش‌شده‌است؛ درحالیکه اگر در همان زمان اکران می‌شد، مورد استقبال قرارمی‌گرفت.

3. تبلیغات:
این فاکتور نیز می‌تواند هم اثر منفی و هم اثر مثبت داشته‌باشد؛ مثلاً پیرامون یک فیلم با عوامل نه‌چندان خوش‌سابقه، بنا به هر دلیلی -سیاسی و ...- تبلیغات گسترده‌ای صورت‌بگیرد و ناخودآگاه، توجه و اقبال مردم را به‌سوی آن متوجه سازد. همچنین فیلم‌های زیادی، هرچند با عوامل قوی، به دلایلی -مثل مشکلات عوامل با دولت و ...- از تبلیغات مناسب محروم شوند و خیلی از مردم، از آن بی اطلاع بمانند و درنتیجه استقبال خوبی از آن نشود.

4. گرفتن جایزه در جشنواره:
همانطور که واضح و آشکار است، جشنواره‌های مختلفی که در رابطه با سینما و فیلم در گوشه و کنار دنیا برگزار می‌شوند، همواره به شایسته‌ترین فیلم‌ها و افراد جایزه نمی‌دهند و هرکدام اهداف و فاکتورهای موردقبول خودشان را دارند؛ چنانکه درمورد رعایت جنبه عدالت در دادن جایزه‎‌های هرساله مراسم‌های مختلف -از جمله آکادمی اسکار24- همواره بحث و تبادل‌نظر صورت‌می‌گیرد. اما به‌هرحال، وقتی فیلمی یا شخصی جایزه‌می‌برد، توجه همگان به آن جلب‌می‌شود و به‌خصوص در زمان کوتاهی پس از این اتفاق، استقبال مردم از آن فیلم یا شخص به‌صورت ناگهانی افزایش می‌یابد و اکثراً باعث ایجاد نمرات و نتایج غیرواقعی و کاذب می‌شود.

همچنین عوامل دیگری هم مؤثرند که مجال بحث آن‌ها در اینجا نیست. همه این عوامل وفاکتورها از دقت تخمین‌ها که فقط براساس اعداد و ارقام خام و گذشته افراد هستند، می‌کاهد و متأسفانه این عوامل آنقدر تأثیرگذارند که دقت را تا حد زیادی دست‌خوش تغییر می‌کنند.
به همین دلیل دوباره تأکید می‌شود که در این فاز فقط تأثیر کارگردان، بازیگر#1 و بازیگر#2 مورد بررسی قرار گرفته‌است و سایر موارد نادیده گرفته‎شده‌است و در فاز بعدی سعی خواهدشد با روش‌هایی میزان دقت تخمین افزایش یابد.
در زیر، به توضیح روش‌ها پرداخته‌شده‌است:
قبل از توضیح، این نکته قابل ذکر است که برای پیاده‌سازی، روش کلی به‌ این‌صورت است که اطلاعات مربوط به فیلم‌های 2004 تا 2013 برای تخمین فیلم‌های سال 2014 استفاده‌شده‌ و سپس با مقدار واقعی آن‌ها مقایسه‌شده‌است. البته از میان حدود 500 فیلم 2014 که در دیتاست موجود بود، تنها 104 فیلم به‌این‌روش قابل تخمین‌زدن بودند؛ چراکه در سایر فیلم‌ها، برای یکی از کارگردان، بازیگر#1 ویا بازیگر#2، اطلاعاتی در دیتاست مربوط به سال‌های 2004 تا 2013 موجود نبوده‌است25. همچنین میزان‌های‌مختلف تأثیر هریک از این 3 فاکتور درنظرگرفته‌شده‌است؛ در واقع، میانگین وزن‌دار این 3 فاکتور با وزن‌های مختلف برای هرکدام بررسی شده‌است؛ مثلاً یک‌بار تأثیر کارگردان پررنگ‌تر بوده و باردیگر تأثیر بازیگر#1 -البته با وزن‌های مختلف. کد نوشته‌شده برای گرفتن نتایج، و دادن ضرایب مختلف برای 3 فاکتور مورد بررسی، در اینجا قابل مشاهده‌است.

1. رگرسیون خطی کمترین مربعات:26
‫‬در این روش سعی بر کمینه‌کردن مقدار خطا با تقریب خطی خطاست که فرمول ریاضی آن به صورت زیر است:

روش کمترین مربعات

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

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

فرمول روش ریج

تصویر روش ریج

این روش با آلفاهای مختلف (شامل 0.1، 0.3، 0.5، 0.7و 0.9) و وزن‌های مختلف برای 3 فاکتور مورد بررسی، پیاده‌سازی شده‌است که بهترین نتیجه آن برای حالت زیر به‌دست‌آمد:
آلفا = 0.9
وزن کارگردان = 0.3
وزن بازیگر#1 = 0.4
وزن بازیگر#2 = 0.3
میزان میانگین خطای‌نسبی = 11.5141133096 %
برای نمونه، شرح نتایج بالا به این صورت است:

1

2

3

4

کد پیاده‌سازی و تمام نتایج آزمایشات این روش، در اینجا قابل مشاهده‌است.

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

روش لاسو

این روش هم با آلفاهای مختلف (شامل 0.1، 0.3، 0.5، 0.7و 0.9) و وزن‌های مختلف برای 3 فاکتور مورد بررسی، پیاده‌سازی شده‌است که بهترین نتیجه آن برای حالت زیر به‌دست‌آمد:
آلفا = 0.9
وزن کارگردان = 0.6
وزن بازیگر#1 = 0.3
وزن بازیگر#2 = 0.1
میزان میانگین خطای‌نسبی = 10.7591749291 %

کد پیاده‌سازی و تمام نتایج آزمایشات این روش، دراینجا قابل مشاهده‌است.

4. شبکه الِاستیک:29
این رگرسیون سعی بر ادغام هر دو روش ریج و لاسو دارد و زمانی بهتر عمل می‌کند که داده‌ها تعداد زیادی ویژگی همبسته به‌هم دارند. تابع هدف آن در زیر آمده‌است:

روش شبکه الاستیک

این روش نیز با آلفاهای مختلف (شامل 0.1، 0.3، 0.5، 0.7و 0.9) و وزن‌های مختلف برای 3 فاکتور مورد بررسی، پیاده‌سازی شده‌است که بهترین نتیجه آن برای حالت زیر به‌دست‌آمد:
آلفا = 0.9
وزن کارگردان = 0.6
وزن بازیگر#1 = 0.3
وزن بازیگر#2 = 0.1
میزان میانگین خطای‌نسبی = 11.0076593189 %

کد پیاده‌سازی و تمام نتایج آزمایشات این روش، در اینجا قابل مشاهده‌است.

با توجه به اجرای این 3 الگوریتم روی دیتاست موجود، مشاهده‌می‌شود که برای هرسه، آلفا = 0.9 بهترین نتیجه را داشته‌است؛ و همچنین در دو مورد از سه مورد، کارگردان با ضریب (وزن) 0.6 بهترین نتیجه را رقم زده‌است. پس میتوان درمجموع، کارگردان را مهم‌ترین عامل دانست.
همچنین روش لاسو دربین سه روش بهترین نتیجه را داده‌است؛ چراکه میانگین تمام خطاهای نسبی برای روش‌ها به ترتیب به‌صورت زیر به‌دست آمد:

  1. لاسو = 11.43%

  2. شبکه الاستیک = 11.60%

  3. ریج = 12.14%

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

تکمیل پیاده‌سازی و بهبود نتایج

تمام پیاده‌سازی‌های این قسمت‌ در اینجا قابل مشاهده‌است.
در قسمت‌ قبل توضیح داده‌شد که برای پیش‌بینی نمرات فیلم‌ها فقط از کارگردان و بازیگران نقش اول و دوم استفاده‌شد. در این فاز بنابراین شد که دقت پیش‌بینی نسبت به فاز قبل افزایش یابد. یکی از روش‌هایی که در راستای دستیابی به این هدف می‌تواند به‌کارگرفته‌شود افزایش تعداد آیتم‌های دخیل در نمره یک فیلم در محاسبات مربوط به نمره ی آن است. در این فاز برای انجام این کار دو آیتم بازیگر#3 و نویسنده به آیتم‌های قبلی اضافه‌شده‌است.
برای آزمایش‌کردن روش با این داده‌های اضافی جدید باز هم از مجموعه فیلم‌های سال 2014 استفاده می‌شود. اما به دلیل اینکه نویسنده ی یک فیلم ممکن است در بین سال‌های 2004 تا 2013 سابقه‌ای نداشته‌باشد تعداد فیلم‌هایی که در این فاز قابل پیش‌بینی هستند کاهش یافته‌ و به 47 فیلم رسیده‌است.
در این فاز هم از سه روش رگرسیون که در فاز قبل استفاده‌شد (یعنی ریج، لاسو و شبکه الاستیک) استفاده می‌شود و آلفاهای 0.5، 0.7 و 0.9 برای آن‌ها استفاده‌شد و برای 5 آیتم دخیل -کارگردان، بازیگر#1، بازیگر#2، بازیگر#3 و نویسنده- وزن‌های مختلفی آزمایش شد.
در رگرسیون ریج که نتایج آن، در اینجا قابل مشاهده‌است، بهترین حالت به صورت زیر است:
آلفا = 0.9
وزن کارگردان =0.15
وزن بازیگر#1 = 0.45
وزن بازیگر#2 = 0.25
وزن بازیگر#3 = 0.05
وزن نویسنده = 0.1
میزان میانگین خطای‌نسبی = 10.0405941966 %

در رگرسیون لاسو که نتایج آن، در اینجا قابل مشاهده‌است، بهترین حالت به صورت زیر است:
آلفا = 0.9
وزن کارگردان =0.3
وزن بازیگر#1 = 0.4
وزن بازیگر#2 = 0.2
وزن بازیگر#3 = 0.05
وزن نویسنده = 0.05
میزان میانگین خطای‌نسبی = 9.48966260931 %

در رگرسیون شبکه الاستیک که نتایج آن، در اینجا قابل مشاهده‌است، بهترین حالت به صورت زیر است:
آلفا = 0.7
وزن کارگردان =0.3
وزن بازیگر#1 = 0.45
وزن بازیگر#2 = 0.1
وزن بازیگر#3 = 0.05
وزن نویسنده = 0.1
میزان میانگین خطای‌نسبی = 9.54131895558 %

در این فاز با توجه به بهترین نتیجه برای هریک از سه روش، به نظر می‌رسد بازیگر#1 مهم‌ترین و بیشترین نقش را دارد و درمورد آلفا، باز هم آلفاهای نزدیک‌تر به یک (در این حالت دو مورد آلفا = 0.9 و یک مورد آلفا = 0.7) نتایج بهتری می‌دهد.

همچنین در این حالت هم روش رگرسیون لاسو بهترین نتایج را داراست؛ چراکه میانگین تمام خطاهای نسبی برای روش‌ها به ترتیب به‌صورت زیر به‌دست آمد:

  1. لاسو = 10.87%

  2. شبکه الاستیک = 10.95%

  3. ریج = 11.37%
    که رگرسیون لاسو کمترین خطا را داراست و بعد از آن شبکه الاستیک و در انتها هم طبق انتظار رگرسیون ریج قرار دارد.

کارهای آینده

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

مراجع

  1. http://www.imdb.com/chart/top?ref_=nb_mv_3_chttp as visited on 13 May 2015

  2. Predicting IMDb Movie Rating Using Google Trends, By Deniz Demir, Olga Kapralova, Hongze Lai, Stanford University, 2012 لینک

  3. Predicting Movie Success Based on IMDB Data,By Nithin VR, Pranav M, Sarath Babu PB, Lijiya A, Department of CSE, National Institute of Technology, Calicut, 2014 لینک

  4. http://scikit-learn.org/stable/modules/linear_model.html as visited on 16 May 2015


  1. regular voters

  2. Data Set

  3. google AdWords

  4. normalization constant

  5. never say never

  6. Predicting Movie Success Based on IMDB Data

  7. Calicut

  8. Rotten Tomato

  9. Wikipedia

  10. GitHub

  11. crawl

  12. json

  13. key

  14. value

  15. US Box Office

  16. یعنی ممکن است بازیگری در مدت این ۱۰ سال در فیلم‌های دیگری هم بازی کرده‌باشد ولی چون نامش در لیست بازیگران در جای اول یا دوم نیست آن فیلم برایش ثبت نشده‌باشد.

  17. Python

  18. Data Mining

  19. Machine Learning

  20. Generalized Linear Models

  21. Oscar Academy

  22. مثلاً اولین فیلم آن بازیگر به عنوان نقش اول یا دوم بوده‌است.

  23. Ordinary Least Squares

  24. Ridge Regression

  25. Lasso Regression

  26. Elastic Net

سعید عادل مهربان

سلام، خسته نباشید.
کاری که انتخاب کردید، به نسبت جدیده و این لذّت خوندن و دنبال کردن مطالب رو بیشتر می‌کنه. نکاتی رو در ادامه متذکّر می‌شم تا انشاءالله در انتها کار شما پخته و عالی باشه:

  1. اوّلین نکته‌ای که به ذهن می‌رسه عدم توازن بین قسمت‌های مختلف نوشتار شماست. روش اوّلی رو که توضیح می‌دید خیلی وارد جزئیات می‌شید و روش دوم رو خیلی سریع از کنارش می‌گذرید. به همین نسبت در قسمت مقدّمه هم، بخش مربوط به IMDB که در روش اوّل ازش استفاده شده خیلی با جزئیات شرح دادید و دیگه اشاره‌ای به بقیه موارد نکردید. سعی کنید این مورد رو حتماً برطرف کنید.

  2. کمی بیشتر به تحلیل نتایج بپردازید. اصل کار در واقع تحلیل نتایج محسوب می‌شه.

  3. در رعایت قواعد نگارشی و رعایت شیوهٔ ارائهٔ مطلب دقّت بیشتری به خرج بدید؛ مثلاً:

  4. از نیم‌فاصله استفاده کنید.

  5. به جای کلمات انگلیسی از معادل فارسی اون‌ها یا در صورتی که امکان این کار وجود ندارد (مثل اسم نویسنده‌ها) صورت نوشتاری اون‌ها در رسم‌الخط فارسی استفاده کنید.

  6. توضیحات فرمول‌ها رو به فارسی بنویسید.

  7. استفاده از عناوینی مثل «روش اول» و «روش دوم» برای متن علمی صحیح نیست. روش‌ها رو با ویژگی‌هایی که دارند ارائه کنید. ضمن اینکه می‌تونید همگی اون‌ها رو ذیل یک عنوان قرار بدید .

  8. سعی کنید متن روان‌تری داشته باشید. با چند بار مرور کردن چیزی که نوشتید این امر قابل دستیابیه.
    امیدوارم در قسمت‌های بعدی نواقص این چنینی نداشته باشید و با قدرت به کار خوبتون ادامه بدید.

تایید شده

با سلام و خسته نباشید
با توجه به توضیح هایی که در قسمت های مختلف پروژه و به خصوص پیاده سازی خود داده اید، مشخص می شود که کاملا بر پروژه ی خود مسلط هستید که این یکی از نقاط قوت پروژه می باشد. همچنین در هر قسمت اطلاعات به اندازه کافی به خواننده داده شده است که باعث می شود برای خواننده ابهامی باقی نماند.
اما چند نکته ای که در پروژه ی شما قابل ذکر است در ادامه بیان می شود :
1 ) در چندین مورد خطاهای نگارشی در توضیحات شما دیده می شود که از ارزش کار شما می کاهد . به طور مثال :
برای پروژه خود، از 400 فیلم را مورد بررسی قرار داده اند.
ابزار Google AdWords یکی دیگر از ابزار گوگل است که کارایی زیادی برای رساندن تبلیغات به کاربران دارای پتانسیل است.
هر فیلم به دویکی از دو کلاس صفر و یک تخصیص داده شده است
2 ) بهتر بود یک نوع نگارش را برای نوشتن متن خود انتخاب می کردید. مثلا در عبارت گوگل ترندز و google AdWord که در چندین جای متن آمده است یا هر دو کلمه را فارسی می نوشتید یا انگلیسی
3 ) شکلی که برای نشان دادن مراجعه ی افراد در بازه های زمانی گذاشته اید، دارای 9 بازه می باشد (post3 دوبار تکرار شده است) در صورتی که قبل از آن توضیح داده اید که باید به 8 بازه تقسیم شود. بهتر بود شکل را تصحیح می کردید.
4 ) در قسمت پیاده سازی خود از رگرسیون خطی مربعات نام برده اید که آن را پیاده سازی نکرده اید. به نظر می رسد که نیازی به ذکر آن نبوده است. چون مثلا روش های متعدد رگرسیون وجود دارد که در این پروژه از آن استفاده نشده است و نیاز به توضیح در پروژه ندارد.
باتشکر . موفق باشید

رد شده

عالی بود واقعا خسته نباشید
در لینک شماره 4 شما یعنی http://scikit-learn.org/stable/modules/linear_model.html
از کتابخانه sklearn پایتون استفاده شده است که با توجه به اهمیت این کتابخانه و این که شما تمام موضوعات را مطرح کرده به نظر بنده لازم بود در مورد این کتابخانه
قدری توضیح می فرمودید.
لینک پروژه شما را در گیت مشاهده کردم کامل بود خیلی زحمت کشیده بودید خسته نباشید

سعید عادل مهربان

سلام، خسته نباشید.
لازمه در ابتدا برای توجّه به بازبینی مرحلهٔ قبل و نظرات دوستان از شما تشکّر کنم.
در مجموع کار خوبی هست و من فقط چند مورد اساسی که برای بهبود کار لازم هستند خدمت شما عرض می‌کنم:

  • توضیحات شما در خصوص ارزیابی نتایج کافی نیستند. عددی که گزارش کردید چه معنایی داره؟ فرمول محاسبه‌اش چیه؟

  • در خصوص مقایسهٔ نتایج مدل‌های مختلف با هم بهتر بود بیشتر توضیح می‌دادید. این طوری این شائبه پیش میاد که شما مدل‌های دم دست رو انتخاب کردید و با اون‌ها کار کردید. بهتره بگید اگه یک مدل خوب کار می‌کنه چرا این طوره.

  • در یک قسمت به خوبی دارید توضیح می‌دید نتایج به پارامترهای دیگه مثل تبلیغات و جوایز بستگی دارند. می‌تونید در قسمت بررسی نتایج گریزی به اون صحبت‌ها داشته باشید و بگید مثلاً چرا برای یک مورد خاص فاصلهٔ مقدار پیش‌بینی‌شده با مقدار واقعی تفاوت زیادی داره.

تایید شده

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

سعید عادل مهربان

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

  • مقایسهٔ نتایج در قالب نمودار/جدول به خواننده کمک می‌کنه در یک نگاه به ارزش کار شما پی ببره.

  • بررسی مواردی که دقّت شما در خصوص اون‌ها افزایش داشته می‌تونه علّت این افزایش رو نشون بده.

  • در قالب یک جمع‌بندی، باید مطالب خودتون رو می‌بستید و به نتیجه‌گیری می‌رسیدید.
    در کل کاری که انجام داده بودید جالب و قابل توجّه بود.