۱. چکیده

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

۲. مقدمه

هرهفته تعداد بسیار زیادی فیلم منتشر می شود که در ژانرهای متفاوتی قرار می گیرند؛ مانند انیمیشن،کمدی،رمانتیک،وحشتناک ،تخیلی و غیره که به یکی از اساسی ترین مو ضوع های سرگرم کننده مردم تبدیل شده اند. بنابراین انتخاب فیلم مناسب و جذاب از میان آن ها کار بسیار دشوار و زمان بری است. در این میان پلتفرم های آنلاین بسیاری وجود دارد؛از جمله:RottenTamatoes، Metacritic و پایگاه داده فیلم اینترنتی IMDb که اطلاعات منصفانه و دقیقی در مورد فیلم مانند بازیگران،کارگردانان،بودجه و امتیاز دهی کاربران و نظرات آنها را در اختیار مخاطبان قرار می دهد.
در حال حاضر، بهترین و معتبرترین پایگاه داده فیلم اینترنتی،IMDb می باشد. این سایت شامل اطلاعاتی در مورد فیلم و سریال های تلویزیونی و سینمایی مثل سوابق مالی،بیوگرافی،امتیاز کاربران، بازیگران،کارگردانان،عوامل تولید،بررسی ها و ... می باشد.در حدود 3.4 میلیون عنوان فیلم و سریال در آن قرار گرفته است.این پایگاه فیلم بیشتر از 60 میلیون کاربر ثبت شده دارد.
براساس مطالعات انجام شده،صنعت فیلم سازی در آمریکا که سالانه بیش از 10 میلیارد دلار درآمد از فروش فیلم به دست می آورد، تاثیر بالایی را در اقتصاد این کشور به جا گذاشته است.همین موضوع ،مسئله پیش بینی امتیاز فیلم را پر اهمیت تر جلوه می دهد.تحقیقات زیادی در رابطه با پیش بینی امتیاز فیلم انجام گرفته است که اکثریت آن ها برمبنای رتبه دهی کاربران است .همچنین در برخی از آن ها برای پیش بینی از رسانه های اجتماعی مختلف استفاده می شود؛مانند:
یوتیوب،توییتر و غیره.با این حال،استفاده کمتری از شاخص های فیلم (مثل کارگردان،بازیگران و تاریخ) شده است.اما مهم ترین منبع اطلاعاتی برای پیش بینی، داده های موجود در اینترنت است.

۳. کارهای مرتبط

تاکنون پژوهش های وسیعی بر روی موضوع پیش بینی امتیاز فیلم انجام شده است.همان طور که گفتیم،اکثر محققان این فرایند را برپایه ی روزنامه ها،مقالات و شبکه های اجتماعی بررسی کرده اند.اما برخی از آن ها،مطالعات خود را براساس ویژگی های فیلم انجام داده اند.
در مقاله [1] این تحقیق به منظور پیش بینی آینده فیلم ها از نظر میزان کسب و کار با استفاده از داده ها در رسانه های اجتماعی و بهره گیری از تحلیل احساسات انجام شده است.یک کار مشابه دیگر درمقاله [2] ارائه شده است که در آن از رسانه های اجتماعی مانند توییتر و نظرات یوتیوب برای دست یابی به هدف قبلی به کار می رود.[3] با استفاده از داده های IMDb و داده های boxofficemojo و ضریب همبستگی به عنوان یک واحد اندازه گیری،دو مجموعه داده از فیلم های منتشر شده و فیلم های پس از انتشار و آزمایش های کاربردی بر روی آن ها ایجاد کرده است.[4] با استفاده از داده های IMDb،RottenTamatoes و ویکیپدیا در مورد فیلم ها و بهره گیری از الگوریتم های یادگیری ماشین مانند رگرسیون خطی، رگرسیون SVM و رگرسیون منطقی،امتیاز فیلم را پیش بینی خواهد شد.
آزمایشی در مقاله ی [5] انجام گرفته است که رویکرد آن،متناسب با چیزی است که ما به دنبال آن می گردیم. روش اصلی انجام آزمایش در شکل1 به نمایش گذاشته شده است :

  1. استخراج داده

  2. آماده سازی داده ها

  3. انتخاب ویژگی

  4. کلاس بندی

    شکل1

۳.۱. استخراج داده

مجموعه داده مورد استفاده از پایگاه داده فیلم اینترنتی (IMDb) جمع آوری شده است.فیلم های از سال 2004 تا 2014 بررسی شده اند. تنها فیلم هایی انتخاب شده اند که در ویکی پدیا صفحات سال آن ها ذکر شده بود و نیز فیلم های انگلیسی که در ایالات متحده منتشر شده اند. فیلم های دیگر حذف شده است.سپس باpython. داده مر بوطه را استخراج کرده و مجموعه حاوی 2000 داده شد.

۳.۲. آماده سازی داده ها

داده های استخراج شده از IMDb باید به داده های عددی (Numeric) تبدیل می شدند تا بتوان برای تجزیه و تحلیل و طبقه بندی مورد استفاده قرار می گرفت.در زیر تعدادی از آن ها بیان شده است.

۳.۲.۱. امتیاز فیلم (Rating )

هر فیلم در IMDb یک امتیاز از 0 تا 10 دارد. هر کاربر می تواند به فیلم ها رای دهد و میانگین رای گیری همان امتیاز فیلم است. ما امتیاز فیلم(rating) را برای تجزیه و تحلیل وکلاس بندی استفاده می کنیم و این برچسب (label) کلاس برای پیش بینی خواهد بود.

۳.۲.۲. امتیاز MPAA

انجمن فیلم آمریکا (MPAA) سازمانی است که رتبه بندی فیلم ها را تعیین می کند که نشان دهنده خشونت و زبان در یک فیلم می باشد. پنج نشان برای هر یک از فیلم ها به طور عمده وجود دارد: R، PG، PG13، G و NR.امتیاز MPAA را برای هر فیلم با پنج مقدار باینری نشان داده است.

۳.۲.۳. ژانر

ژانر نوع محتوای موجود در یک فیلم را نشان می دهد. یک فیلم می تواند یک ژانر واحد داشته باشد؛ برای مثال Fish Tank فیلم منتشر شده در سال 2009 دارای ژانر درام است و یا شامل ژانر های متعدد باشد؛ مانند فیلم Exodus: Gods and Kings منتشر شده در سال 2014 دارای 3 ژانر است که شامل اکشن، ماجراجویی و بیوگرافی است. مجموعه داده ها شامل ژانرهای زیر برای هر فیلم است که عبارتند از:اکشن، ماجراجویی، هیجان انگیز، بیوگرافی، جرم و جنایی، درام، ترسناک، کمدی،فانتزی،انیمیشن، رمز و راز، موسیقی، جنگ، مستند، عاشقانه، علمی تخیلی، غرب،خانواده، ورزش و کوتاه. برای نشان دادن ژانر برای هر یک از فیلم ها،20 متغیر باینری را به هر یک از آن ها اختصاص داده است.

۳.۲.۴. جوایز

اسکار و طلایی جزء معتبرترین جوایز فیلم ها هستند. بسیاری از فیلم ها برنده جایزه و تعدادی نامزد دریافت آن می شوند. حتی نامزد شدن، دستاورد بزرگی است.4 ارزش باینری برای نمایش جوایز برای برنده شدن و نامزدی در اسکار و طلایی اختصاص داده است.

۳.۲.۵. تعداد نمایش ها

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

۳.۲.۶. میزان فروش هفته اول

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

۳.۲.۷. بودجه فیلم

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

۳.۲.۸. تعداد آرا

کاربر می تواند به سایت IMDB وارد شود و فیلم ها را نقد و بررسی کند.هم چنین می تواند فیلم را در بازه بین 0 تا 10 امتیاز دهی کند . برای هر فیلم، تعداد آرا نیز موجود است که آن را می توان به عنوان یک ویژگی برای پیش بینی امتیاز فیلم در نظر گرفت .

۳.۳. کلاس بندی

تعداد بسیار زیادی ابزار داده کاوی وجود دارد. در این مقاله از ابزار WEKA استفاده کرده است.WEKA برای داده کاوی با مجموعه ای از الگوریتم های یادگیری ماشین مناسب است و می تواند طبقه بندی، پیش پردازش داده ها، خوشه بندی و ...را انجام دهد.در این مقاله ،از الگوریتم هایLogistic regression، وNaive Bayes بهره گرفته است.سپس هر یک از نتایج را با 10-fold cross validation مورد صحت قرار داده است.

نتایج simple logistic و logistic regression و Naive Bayes به ترتیب 84.34٪ و 84.15٪و79% شده است.نیز در برخی از طبقه بندی کننده های دیگر(classifiers)، مانند شبکه عصبی اجرا شده،اما هدف مورد نظر حاصل نشده است.با توجه به این که در مقاله [4] دقت 39% برای ماشین بردار پشتیبان و دقت 42.2% برای رگرسیون منطقی به دست آمده است،این آزمایش،نتیجه بسیار خوبی را در مقایسه با آن نشان داده است.
در آزمایشی که در مقاله [5]مطرح شد،برای پیش بینی امتیاز فیلم،نزدیک به 7 ویژگی استفاده شده است که می توان با کاهش بعد به وسیله PCA ویا الگوریتم انتخاب ویژگی به نتایج بهتری دست یافت.
برای به دست آوردن نتایج بهتر شاید بتوان از روش های دیگر یادگیری ماشین از جمله ماشین بردار پشتیبان (SVM)و یا ماشین بردار پشتیبان دوقلو برای بهبود یا افزایش سرعت پاسخگویی بهره برد.

۴. آزمایش ها

در بخش کارهای مرتبط از الگوریتم ها و روش های مختلفی در مقالات متفاوت برای پیاده سازی بهره گرفته شده است.اما با توجه به پژوهش هایی که در رابطه با موضوع پیش بینی فیلم انجام 'داده ایم ،رویکردی که برای این پروژه تعبیه شده است،استفاده از الگوریتم SVM (Support Vector Machines) یا همان ماشین بردار پشتیبان است.
کار الگوریتم ماشین بردار پشتیبان،طبقه بندی یا کلاس بندی (classification)می باشد.در این آزمایش،خروجی ها که در واقع همان امتیاز فیلم ها می باشند،در بازه ی صفر تا ده هستند که آن را به چهار کلاس طبقه بندی می کنیم:

  1. فیلم های ضعیف (0-2.4)

  2. فیلم های متوسط (2.4-5)

  3. فیلم های خوب (5.1-7.4)

  4. فیلم های عالی (7.4-10)

اما اشکالی وجود دارد و آن این است که خروجی های ما داده هایی پیوسته می باشند و کلاس SVM،تنها داده های باینری را می پذیرد.در واقع الگوریتم SVM دو کلاسه می باشد.لذا به هریک از این کلاس ها،یک مقدار تخصیص می دهیم(1 به فیلم های ضعیف و به همین ترتیب برای عالی ترین فیلم ها عدد 4 را مقداردهی می کنیم).اما در حال حاضر چهار کلاسه هستیم.به همین دلیل باید از الگوریتم های Multiclass استفاده نماییم.روش های Multiclass عبارتند از:

  1. One-vs.-One

  2. One-vs.-One 2

  3. DAG(Directed Acyclic Graph) 3

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

۴.۱. انتخاب ویژگی

برای این آزمایش از مجموعه داده ای که دراینجا قرار دارد،استفاده می شود.این مجموعه شامل 5000 فیلم می باشد.با استفاده از تابع dropna داده های missing یا در واقع داده هایی که بعضی از ویژگی هایشان وجود نداشت را از بین بردیم که در نهایت تعداد داده های ما حدود 2000تا می شود.در این آزمایش 75% داده ها به عنوان یادگیری(Train) و 15% آن ها را برای آزمایش(Test)قرار می دهیم.حال با توجه به میزان تاثیر هر ویژگی در پیش بینی امتیاز فیلم ، ویژگی های زیر را برای مدل سازی روش خود به کار می بریم :

۴.۱.۱. بودجه فیلم

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

۴.۱.۲. محبوبیت

محبوبیت را می توان جزو ویژگی های مهم یک فیلم تلقی نمود.میزان علاقه مردم و محبوبیت آن در بینشان می تواند تاثیر چشمگیری برروی امتیاز آن فیلم داشته باشد.این نوع داده ای،عددی می باشد.

۴.۱.۳. میزان درآمد

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

۴.۱.۴. زمان اجرا

تعداد دفعاتی که یک فیلم بر روی پرده سینما به اکران درآمده است که می تواند فاکتور خوبی برای پیش بینی امتیاز فیلم محسوب شود.

۴.۱.۵. تعداد آرا

در قسمت کارهای مرتبط توضیح داده شده است.

۴.۱.۶. کارگردان

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

۴.۱.۷. بازیگر نقش اول

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

شرح جزییات پیاده سازی
زبان پایتون به دلیل داشتن کتابخانه ها (Libraries)و ماژول های (Modules)متعدد و نیز انعطاف پذیری آن،مورد توجه دانشمندان علم داده کاوی قرار گرفته است.لذا ما در این برنامه نیز با همین زبان پیاده سازی کردیم تا سرعت و کارایی طبقه بندی خود را افزایش دهیم .
در این پروژه ما از تعدادی ماژول و کتابخانه به شرح زیر استفاده نمودیم که عبارت اند از:

1.ماژول pandas: با استفاده از این ماژول،داده هایمان را که از نوع csv می باشد،خوانده وبه نوع DataFrame تبدیل می کنیم تا بتوانیم با آن ها کار کنیم.

  1. ماژول sklearn :این ماژول ،بسیار پرکاربرد است.در داخل این ماژول کلاس های متنوعی وجود دارد که ما از تعدادی از آن ها استفاده کردیم.در کتابخانه ای با نام sklearn.svm کلاس SVC وجود دارد .این کتابخانه شامل تمامی الگوریتم های SVMمی باشد. یکی دیگر از موارد استفاده شد،تابع train_test_split است که داده ها را به نسبتی که تعیین می کنیم به دو قسمت train و test تبدیل می کند.accuracy_score تابعی می باشد که دقت برنامه را اندازه می گیرد و درصدی را گزارش می دهد.این تابع دو پارامتر Y_Predict و Y_Real را به عنوان ورودی دریافت می کند.کلاس دیگر همان Multiclass می باشد که در قسمت قبل دلیل استفاده از آن توضیح داده شد.در آخر برای ارزیابی ضربدری(cross validation)با استفاده از کلاس KFOLD تمام داده های dataset را مورد train و test قرار می دهیم.لذا جواب دقیقی از دقت برنامه به ما می دهد.

  2. ماژول numpy:این کلاس که با زبان C نوشته شده است،در مورد کار با آرایه ها بسیار سریع و کاربردی است.

  3. ماژول time:این تابع زمان کلاس بندی(classification) را مشخص می کند.

کد برنامه در سایت github قرار داده شده است،در اینجا قابل مشاهده است.
به طور کلی،در ابتدا پس از خواندن مجموعه داده،داده های از جاافتاده را حذف می کنیم.سپس از بین ویژگی های موجود،هفت ویژگی برتر را انتخاب نموده و به دلیل عددی نبودن دو ویژگی کارگردان و بازیگر،با استفاده از تابع replace در ماژول pandas ،آن ها را به داده عددی تبدیل کرده و مجموعه ویژگی ها را به کلاس بند OVA-SVM می دهیم.سپس برای دستیابی به نتایج واقع بینانه تر،با استفاده از الگوریتم KFOLD cross validation داده ها را مورد ارزیابی قرار می دهیم.

۵. نتایج

در نمودار زیر نتایج این آزمایش و مقاله های [4] و [5] آمده است.ما در این آزمایش به دقتی معادل 83% رسیده ایم.در حالی که مقاله [4] دقتی معادل 39% به دست آورده است.همچنین دقت به دست آمده بسیار نزدیک به نتایج مقاله [5] می باشد که حاکی از عملکرد مناسب برنامه ی ما می باشد.

شکل2.مقایسه نتایج

۶. کارهای آینده

شاید بتوان برنامه را با روش های دیگر Multiclass مانند DAG پیاده سازی نمود تا به نتایج دقیق تر و بهتری دست پیدا کرد.هم چنین می توانیم با استفاده از الگوریتم ماشین بردار پشتیبان دو قلو (TSVM) نتایج بهتری با دقت و سرعت بیشتر را به دست آورد.نیز می توان با استفاده از الگوریتم های تکاملی مانند PSO وPCA ویژگی های برتر را انتخاب نمود.

۷. مراجع

  • [1] Asur, S., & Huberman, B. A. (2010, August). Predicting the future with social media. In Web Intelligence and Intelligent Agent Technology (WI-IAT), 2010 IEEE/WIC/ACM International Conference on (Vol. 1, pp. 492-499). IEEE.

  • [2] Mestyán, M., Yasseri, T., & Kertész, J. (2013). Early prediction of movie box office success based on Wikipedia activity big data. PloS one, 8(8), e71226.

  • [3] Asad, K. I., Ahmed, T., & Rahman, M. S. (2012, May). Movie popularity classification based on inherent movie attributes using C4. 5, PART and correlation coefficient. In Informatics, Electronics & Vision (ICIEV), 2012 International Conference on (pp. 747-752). IEEE.

    • [4] Nithin VR, 2Pranav M, 3Sarath Babu PB, 4Lijiya.Predicting Movie Success Based on IMDB Data.Volume: 03, June 2014, Pages: 365-368.International Journal of Data Mining Techniques and ApplicationsISSN: 2278-2419 .

  • [5] Latif, M. H., & Afzal, H. (2016). Prediction of movies popularity using machine learning techniques. International Journal of Computer Science and Network Security (IJCSNS), 16(8), 127.

۷.۱. پیوندهای مفید

تایید شده

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

وحید خرازی

سلام
پیاده‌سازی شما برای این فاز خوب است فقط چند نکته:

  • هنوز در این اسنپ‌شات از متن شما مشکلات نگارشی زیادی وجود دارد که در ارزیابی قبلی هم گفته شد مثل توضیح و شماره نداشتن شکل‌ها و ...(عکس دیکاپریو چه کمکی به توضیحات شما می‌کنه؟!:)‌ )
    *‌ به نظر میرسه بخشی‌هایی از متن شما ترجمه منابعتون هست بدون ذکر منبع.

  • در کد داده‌ها را قرار نداده‌اید و اجرای کد شما به مشکل می‌خورد.

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

  • در فاز بعدی تحلیل بیشتری از نتایج بدست آمده خودتان و انواع دقت(پارامتر‌های ارزیابی رده‌بند) انجام دهید و بنویسید