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

۱. مقدمه

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

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

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

که:

  • R = average for the movie (mean) = (Rating)

  • v = number of votes for the movie = (votes)

  • m = minimum votes required to be listed in the Top 250 (currently 25000)

  • C = the mean vote across the whole report (currently 7.0)

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

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

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

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

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

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

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

مورد اول
در سال 2012 یک گروه از دانشگاه استنفورد متشکل از Deniz Demir, Olga Kapralova, Hongze Lai مقاله ای با عنوان “Predicting IMDB movie ratings using Google Trends” منتشر کردند که به تشریح آن می پردازیم:

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

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

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

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

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

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

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

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

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

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

  • t2 = ماه جاری

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

  • G = ∑t Xt
    و

    توضیح تصویر

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

توضیح تصویر

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

آزمایش دوم ( فقط استفاده از google trends ):
در این آزمایش از google AdWords استفاده نشده است و فقط بر مبنای اطلاعات google trends پیش بینی انجام شده است. طبق نموداری که google trends در اختیار قرار داده است، این نتیجه گرفته می شود که اوج جستجوی یک فیلم در زمان انتشار فیلم است که پیک نمودار است و تقریباً از یک هفته قبل از انتشار فیلم، جستجوها شروع به افزایش می کند ( شیب نمودار زیاد می شود. ) و همچنین حدود 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 کمی ضعیف تر نتیجه داده است. دلیل این قضیه یه این صورت توضیح داده شده است که گاهی فیلم هایی در imdbنمره پایینی دارند، ولی جستجوی زیادی برای آن ها صورت گرفته است.( مثال خودِ مقاله، فیلم never say never با حضورJustin Bieber است که نمره 1.6 دارد ولی در این الگوریتم در زمره ی فیلم های خوب قرار گرفته است. )

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

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

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

مورد دوم
یکی دیگراز کارهای این زمینه، با عنوان Predicting Movie Success Based on IMDB Data است که توسط سه نفر از دانشجویان دانشگاه Calicut هندوستان انجام گرفته است.
دیتای اولیه آنها از imdbاست که شامل فیلم های بین سال های 2000 تا 2012 آمریکایی است که اطلاعات آنها در box office وجود دارد که 1050 فیلم می شود.
بخش پیش پردازش داده : به دلیل اینکه علاوه بر منبع اصلی( ( imdb، از منابع دیگر یعنی Rotten Tomato و Wikipediaاستفاده شده است، مشکل فیلد گم شده پیش می آید که برای حل این مشکل، اندازه ی گرایش مرکزی برای آن ویژگی حساب شده است.( هم از میانگین وهم از میانه استفاده می کنند و سپس موارد تکراری حذف شده اند. )

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

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

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

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

    توضیح تصویر

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

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

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

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

۳. مراجع

1.http://www.imdb.com/chart/top?ref_=nb_mv_3_chttp
2 .Predicting IMDB movie ratings using Google Trends, by Deniz Demir, Olga Kapralova, Hongze Lai, Stanford University, December 2012. لینک
3 .Predicting Movie Success Based on IMDB Data, by Nithin VR, Pranav M, Sarath Babu PB, Lijiya A, Calicut University, International Journal of Data Mining Techniques and Applications ISSN: 2278-2419. لینک


  1. regular voters

  2. Data Set

  3. normalization constant

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

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

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

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

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

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

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

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

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

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