Data analysis and Statistical computing with R

การวิเคราะห์ข้อมูลทางสถิติและการนำเข้ามูลมาทำนายข้อมูลในอนาคตด้วยโปรแกรม R

สวัสดีครับ เนื่องจากเป็นการบ้านรายวิชา Big Data ที่อาจารย์ได้ให้โจทย์การบ้านมาว่า ให้หาข้อมูลไม่ต่ำกว่า 10,000 records ทำการวิเคราะห์และสร้าง Model ทางสถิติด้วยโปรแกรม R

จากโจทย์การบ้านผมได้เลือกนำข้อมูลภาพยนต์มาวิเคราะห์ ข้อมูลเรตติ้ง ประเภทและข้อมูลหนังแสดง นำมาทำการวิเคราะห์หาความสัมพันธ์ระหว่างนักแสดง เรตติ้ง และประเภทของหนัง เพื่อที่ต้องการจะทำนายความเป็นไปได้หากต้องสร้างต้องการภาพยนต์เรื่องใหม่ว่า ควรเลือกนักแสดงคนใด แสดงภาพยนต์ประเภทใดบ้าง ถึงจะมีโอกาสที่เรตติ้งของหนังจะสูงมากขึ้น
โดยที่มาของข้อมูลดังกล่าวนี้มาจากเว็บไซต์ http://www.omdbapi.com ที่รวบรวมข้อมูลภาพยนต์มากกว่า 29,000 เรื่อง ตั้งแต่ปี 1974 – 2016

Screen Shot 2016-03-20 at 7.57.17 PM

Cleansing ข้อมูลที่ไม่สมบูรณ์

  • เริ่มจากขึ้นตอนการ Cleasing เพื่อเอาข้อมูลที่ไม่สมบูรณ์ออก ตัวอย่างเช่น
    • ภาพยนต์ที่ไม่มีรายชื่อนักแสดง (ข้อมูลจะเป็น N/A)
    • ภาพยนต์ที่ไม่มีประเภท (ข้อมูลจะเป็น N/A)
    • ภาพยนต์ที่ไม่มี Rating (ข้อมูลจะเป็น N/A)
  • เมื่อทำการ Cleansing ข้อมูลเรียบร้อยก็ทำการแปลงรูปแบบของข้อมูลจาก Unstuctrue (JSON Format) ให้รูปในรูปแบบ csv เพื่อง่ายต่อการใช้งานในโปรแกรม R

รูปแบบข้อมูลที่ได้ก่อนทำการแปลงข้อมูล

{“Title”:”Toy Story”,”Year”:”1995″,”Rated”:”G”,”Released”:”22 Nov 1995″,”Runtime”:”81 min”,”Genre”:”Animation, Adventure, Comedy”,”Director”:”John Lasseter”,”Writer”:”John Lasseter (original story by), Pete Docter (original story by), Andrew Stanton (original story by), Joe Ranft (original story by), Joss Whedon (screenplay), Andrew Stanton (screenplay), Joel Cohen (screenplay), Alec Sokolow (screenplay)”,”Actors”:”Tom Hanks, Tim Allen, Don Rickles, Jim Varney”,”Language”:”English”,”Country”:”USA”,”Awards”:”Nominated for 3 Oscars. Another 22 wins & 17 nominations.”,”Metascore”:”92″,”imdbRating”:”8.3″,”imdbVotes”:”591,836″,”imdbID”:”tt0114709″,”Type”:”movie”,”Response”:”True”},

ข้อมูลหลังการทำแปลงแล้ว

Screen Shot 2016-03-27 at 1.38.09 PM

การคัดเลือก Feature

  • ทำการคัดเลือกรายชื่อนักแสดงที่ต้องการนำมาเป็น Feature สำหรับการทำนายผล ซึ่งในงานนี้ ผมได้ทำการกำหนด Threshold สำหรับนักแสดงไว้ ดังต่อไปนี้
    • ต้องแสดงภาพยนต์ไม่ต่ำกว่า 30 เรื่อง
    • ภาพยนต์ที่แสดงต้องมีจำนวนปีตั้งแต่ปี 1980 เป็นต้นมา

ซึ่งทั้งนี้พบว่ามีนักแสดงทั้งหมด 144 คนที่สามารถผ่านเกณฑ์ดังกล่าว ได้จึงนำมาเป็น Feature ในการสร้าง Model ทางสถิติ

  • ในส่วนประเภทของภาพยนต์ ได้ทำการเก็บข้อมูลและจำแนกประเภทภาพยนต์ ทั้งหมด 28 ประเภท
  • เมื่อได้ข้อมูลที่ต้องการเรียบร้อยแล้ว ทำการนำเข้าโปรแกรม R เพื่อเข้าสู่กระบวนการสร้าง Model ทางสถิติ

วิเคราะห์ข้อมูลโดยใช้เทคนิคทางสถิติเบื้องต้น

สำหรับการวิเคราะห์ข้อมูล ทางสถิติเบื้องต้น สามารถดูตามข้อมูลด่านล่างนี้

  • เรตติ้ง
    ภาพยนต์ส่วนใหญ่ มีเรตตั้งเฉลี่ยอยู่ที่ 6.41
  • 5 อันดับประเภทของภาพยนต์ที่ถูกผลิตมากที่สุด
    • Drama
    • Comedy
    • Romance
    • Action
    • Crime
  • 10 อันดับ นักแสดงภาพยนต์ที่ทำเรตติ้งภาพยนต์เฉลี่ยสูงที่สุด (ที่ผ่านเกณฑ์เท่านั้น)
    • Colin Firth (8.0)
    • Sean Bean (7.9)
    • Meryl Streep (7.7)
    • Jeff Bridges (7.7)
    • Leonardo DiCaprio (7.6)
    • Paul Giamatti (7.5)
    • Pierce Brosnan (7.5)
    • Joaquin Phoenix (7.4)
    • Robert Downey Jr. (7.3)
    • Woody Harrelson (7.3)
  • 10 อันดับประเภทภาพยนต์ที่ทำเรตติ้งเฉลี่ยสูงที่สุด
    • Talk-Show (7.8)
    • Animation (7.6)
    • Game-Show (7.6)
    • Short (7.6)
    • Drama (7.4)
    • Reality-TV (7.2)
    • News (7.2)
    • Family (7.2)
    • Romance (7.0)
    • Biography (6.9)

สร้าง Model สำหรับการทำนายข้อมูล

จากโจทย์ข้างต้น ต้องการทำนาย Rating ของภาพยนต์จาก รายชื่อนักแสดง ประเภทภาพยนต์ โดยกำหนด Feature ไว้ดังต่อไปนี้

  • Features
    • รายชื่อนักแสดงที่ผ่านเกณฑ์ 144 คน
    • ประเภทของภาพยนต์ 28 ประเภท
  • Predict
    • เรตติ้งของภาพยนต์

เริ่มต้นทำการเตรียมข้อมูลที่ได้ เข้าสู่โปรแกรม R ซึ่งโดยปกติแล้วในการสร้าง Model สำหรับวิเคราะห์ข้อมูลนั้นจำเป็นต้องมีการแบ่งข้อมูลออกเป็น 2 ส่วนได้แก่ Train Set และ Test Set แต่ทั้งนี้ผมได้เลือกใช้เทคนิค RandomForest ทำให้ไม่จำเป็นต้องแบ่งข้อมูลในการสร้าง Model

In random forests, there is no need for cross-validation or a separate test set to get an unbiased estimate of the test set error. It is estimated internally, during the run
(อ้างอิงจาก https://www.stat.berkeley.edu/~breiman/RandomForests/cc_home.htm)

RandomForest เป็นวิธีการแบบ Ensemble ประเภทหนึ่ง คือ การสร้างโมเดลหลายๆโมเดล แล้วนำผลลัพธ์ที่ได้จากหลายๆโมเดล มารวมกัน(combined) และทำการสุ่มแอตทริบิวต์ของ subset ที่สร้างขึ้นด้วย แทนที่จะเป็นการสุ่มเฉพาะข้อมูลตัวอย่างเพียงอย่างเดียว ส่วนเทคนิคที่ใช้ในการสร้างโมเดลก็เป็น Decision Tree

  • ข้อดี
    • ค่าความแปรปรวน (variance) จะน้อย ส่งผลให้ความเม่นยำ (precision) เพิ่มขึ้น
    • ลดค่า Correlation ระหว่าง Tree ได้ ในกรณีใช้เทคนิคแบบ Ensemble

เมื่อกำหนด Feature และ Predict ได้แล้วก็ทำการสร้าง Script ในการสร้าง Model สำหรับวิเคราะห์ข้อมูลบนโปรแกม R

  • เรียกใช้ Library สำหรับ RandomForest

library(randomForest)

  • นำเข้าข้อมูลจากไฟล์ csv

csv_file <- “/Users/ASPIREi7/Desktop/bigdata-movies/apis-request-cleansing.json.csv”
> actors <- read.csv(file=csv_file,head=TRUE,sep=”,”)

  • เตรียมข้อมูล (สลับข้อมูล)

train <- sample(1:nrow( actors), 1 * nrow(actors))

  • เริ่มการสร้าง Model สำหรับใช้พยากรณ์ข้อมูล

pred <- randomForest(rating~Animation+Adventure+…, data=actors[train, ], importance=TRUE)

เมื่อได้ Model ที่ต้องการแล้ว ทำการนำ Test Set ที่เตรียมไว้มาทดสอบประสิทธิภาพของ Model

predict(pred, test_set)

ผลการวิเคราะห์ข้อมูลภาพยนต์จำนวนท้ังหมด 21,167 เรื่อง โดย ประสิทธิภาพ Model ที่ได้จากการวิเคราะห์โดยใช้เทคนิค RandomForest ได้ผลดังต่อไปนี้

  • MSE 0.63

ตัวอย่างผลการทดสอบ

กับตัวอย่างหนังที่มีนักแสดงที่ผ่านเกณฑ์ 144 คน

Genre: Drama, Crime
Actors: Tim.Robbins, Morgan.Freeman
Rating: 9.3
Predict: 7.9

 

Genre: Animation, Adventure, Comedy
Actors: Tom.Hanks
Rating: 8.3
Predict: 7.9

 

Genre: Comedy, Family, Crime
Actors: Christopher.Lloyd
Rating: 2.5
Predict: 3.6

 

Genre: Comedy
Actors: Adam.Sandler
Rating: 1.9
Predict: 5.3

 

Genre: Comedy, Family, Romance
Actors: Brendan.Fraser
Rating: 3.8
Predict: 4.2

จะเห็นได้ว่า Model ที่สร้างขึ้นสามารถทำนายผลได้ดีส่วนหนึ่ง ทั้งนี้ผมคิดว่ายังสามารถเพิ่มความถูกต้องของการทำนายได้มากขึ้นโดยการใช้ข้อมูล Feature ที่มีนัยสำคัญ (Significant) มากกว่านี้ในการสร้าง Model สำหรับทำนายเรตติ้งที่ควรจะได้ให้ดียิ่งขึ้น

อ้างอิง

http://analyticsth.blogspot.com/2015/09/ensemble-method.html
http://dataminingtrend.com/2014/data-mining-techniques/ensemble-model/
https://www.quora.com/How-does-randomization-in-a-random-forest-work
http://www.dummies.com/how-to/content/how-to-predict-new-data-values-with-r.html
https://www.stat.berkeley.edu/~breiman/RandomForests/cc_home.htm
http://www.statmethods.net/graphs/

Recent Posts

Recent Comments

Archives

Categories

Meta

imalice Written by:

Be First to Comment

Leave a Reply

Your email address will not be published. Required fields are marked *