1 of 40

데이터마이닝�프로젝트 최종발표

F팀

남하영 / 노준석

백찬우 / 이지윤

2 of 40

01

06

05

02

목차

결론

모델비교

랜덤포레스트 vs 부스팅

데이터 수집/ 전처리

주제

선정 배경 / 문제 정의 / 프로젝트 목표

03

기초 분석 결과

04

모델학습

랜덤포레스트

부스팅

3 of 40

주제

선정배경/문제정의/�프로젝트 목표

01

4 of 40

  • 코로나19로 인한 사회적 거리두기 운동이 장기화되면서,

영화 산업이 막대한 손실을 기록하고 있음.

  • 투자자의 어려움을 도울 수 있는 영화의 흥행 예상 모델 구축.

1. 주제

선정 배경

문제 정의

프로젝트 목표

5 of 40

데이터 수집 및 전처리

02

6 of 40

2. 데이터 수집 및 전처리

데이터 수집 – 기본 영화 데이터

영화 진흥 위원회

> 오픈 api 서비스 이용

> 2018~2020년도 데이터 수집

[영화 제목/개봉일/감독/주연배우1

/주연배우2/장르/관람등급/상영시간]

영화관 입장권 통합 전상망

> 2018~2020년도 개봉 영화별

전국 매출액 데이터 수집

>100만원 미만 데이터 삭제

7 of 40

영화 코드

일간 검색량

2. 데이터 수집 및 전처리

데이터 수집 – 배우&감독 점수 수치화

구글 트렌드

> 배우와 감독의 검색량 데이터

> 개봉 1일 전 ~ 100일 전, 영화당 총 100개의

일간 검색량 추출

8 of 40

2. 데이터 수집 및 전처리

변수 추가 – 배우&감독 점수 수치화 (1)

개봉 n일 전의 검색량 변수

> 감독, 배우1, 배우2에 대해

개봉 100일 / 70일 / 50일 / 20일 전의

검색량 변수 추가 (총 12개)

9 of 40

2. 데이터 수집 및 전처리

변수 추가 – 배우&감독 점수 수치화 (2)

개봉 n일 전의 검색량 변수

> 감독, 배우1, 배우2에 대해

개봉 100일 / 70일 / 50일 / 20일 전의

검색량 증감추세의 총합 변수 추가 (총 3개)

10 of 40

2. 데이터 수집 및 전처리

변수 추가 – 배우&감독 점수 수치화 (3)

개봉 n일 전의 검색량 변수

> 감독, 배우1, 배우2에 대해

개봉 100일 / 70일 / 50일 / 20일 전의

검색량 증감추세에 대한

범주화 변수 추가 (총 3개)

경우

fac

증증증

0

증증감

1

증감증

2

증감감

3

경우

fac

감증증

4

감증감

5

감감증

6

감감감

7

11 of 40

2. 데이터 수집 및 전처리

변수 추가 – 배우&감독 점수 수치화 (4)

종합 점수

> 감독, 배우1, 배우2의

‘개봉 전 100일간의 누적 검색량’

을 합산한 점수를 만듦

> 5단계로 범주화함

12 of 40

2. 데이터 수집 및 전처리

데이터 수집 – 사회적 거리두기 단계

대한민국 정책 프리핑

> 거리두기 단계 데이터

> 개봉일 당시의 사회적 거리두기

단계를 기준으로 함.

기간

상황

부여한 값

20/05/06

거리두기 시작

1

20/08/16 ~ 20/08/29

2단계 격상

2

20/08/30 ~ 20/09/13

2.5단계 격상

3

20/09/14 ~ 20/10/11

2단계 하향

2

20/10/12 ~ 20/11/23

1단계 하향

1

20/11/24 ~ 20/12/07

2단계 격상

(5단계 체제)

4

20/12/08 ~

2.5단계 격상

5

13 of 40

“김태구, 홍정식. (2013). 개봉 규모와 수익성에 따른 영화의 분류와 확산 패턴 분석. 대한산업공학회지, 39(5), 412-421.”

2. 데이터 수집 및 전처리

데이터 수집 – 코로나 누적 확진자 수

공공데이터포털

> 코로나 누적 확진자 수 데이터 수집

> 개봉일 전후 10일간의 (논문 참고)

코로나 누적 확진자 수를 변수로 설정함.

14 of 40

2. 데이터 수집 및 전처리

수치형 변수 표준화

> 수치형 변수에만 표준화 진행

15 of 40

2. 데이터 수집 및 전처리

매출 범위 범주화

-> 매출의 범위를 4개의 범주로 나누어 (0~3) 영화의 매출 범주를 예측함.

-> 데이터가 고루 분포할 수 있는 기준으로 정함.

기준

100만, 5000만, 3억

16 of 40

기초 분석 결과

03

17 of 40

3. 기초 분석 결과 - 장르

장르에 따른 영화 수 count

드라마 장르가 눈에 띄게 많고, 애니메이션과 멜로/로맨스 등의 장르가 많음.

18 of 40

장르에 따른 매출

3. 기초 분석 결과 - 장르

19 of 40

3. 기초 분석 결과 – 상영등급 / 상영시간

상영등급에 따른 영화 수 count

상영시간 분포

20 of 40

3. 기초 분석 결과 – 연도 / 날짜

개봉 연도에 따른 영화 수 count

개봉일에 따른 영화 수 count

21 of 40

3. 기초 분석 결과 - 날짜

날짜별 개봉 영화 수

날짜별 영화 매출액

22 of 40

3. 기초 분석 결과 – 검색량

감독명

주연배우2

주연배우1

합산

23 of 40

3. 기초 분석 결과 – 검색량

Reputation에 따른 영화 수 count

검색량에 따른 영화 매출액

24 of 40

3. 기초 분석 결과 - 코로나

사회적 거리두기 단계에 따른 매출

거리두기 단계에 따른 영화 수 count

25 of 40

3. 기초 분석 결과 - 코로나

날짜에 따른 확진자 수 column

26 of 40

3. 기초 분석 결과 - 전체

변수 상관성

27 of 40

모델 학습

- 랜덤 포레스트�- 부스팅�

04

28 of 40

4. 모델 학습

랜덤포레스트…?

> 앙상블 모델

> 여러 개의 결정 트리에 랜덤 샘플을 훈련시켜, 결과를 합하는 알고리즘.

29 of 40

4. 모델 학습

부스팅…?

> 앙상블 모델

> 성능이 약한 학습기(weak learner)를 여러개 연결하여 순차적으로 학습함으로써

강한 학습기 (strong learner)를 만드는 앙상블 학습기법

30 of 40

4. 모델 학습

랜덤 포레스트 & 부스팅

 랜덤 포레스트

> 샘플을 랜덤으로 추출함.

> 각 모델이 독립

> 모든 샘플, 모델이 독립적이므로

다양성을 보장함.

> Voting을 통해 최종 결과를

나타냄.

 부스팅

> 가중치를 두어 샘플을 추출함.

> 모든 모델이 의존함.

> 각 모델은 이전 모델이 맞히지

못한 부분을 맞히기 위해 노력함.

> 모든 결과에 모델 신뢰도 기반

가중치를 두어 최종 결과를 합함.

31 of 40

4. 모델 학습

정확도를 높이기 위한 시도(1) – 구글 검색량 데이터 조작

> 검색량 범주화 변수 추가

감독, 배우1, 배우2에 대해

개봉 100일 / 70일 / 50일 / 20일 전의

검색량 증감추세에 대한 변수 3개 추가

> ‘score’ 변수 생성

감독, 배우1, 배우2의

‘개봉 전 100일간의 누적 검색량’

을 합산한 점수를 만듦(5단계)

경우

fac

증증증

0

증증감

1

증감증

2

증감감

3

경우

fac

감증증

4

감증감

5

감감증

6

감감감

7

32 of 40

4. 모델 학습

정확도를 높이기 위한 시도(2) – 랜덤포레스트 및 여러 모델 적용

logistic regression

> 회귀를 사용하여 데이터가 어떤 범주에 속할 가능성이 더 높은 범주에 속하는 것으로 분류해주는 지도 학습 알고리즘

 VotingClassifier

> 더 좋은 분류기를 만들기 위해 각 분류기의 예측을 모아 다수결 투표로 정하는 것

 svc

> support vectors를 사용해서 Decision Boundary를 정의하고, 분류되지 않은 점을 해당 결정 경계와 비교해서 분류하는 알고리즘

 pca

> 일반 차원 축소

> 차원 12개로 축소

고차원의 데이터를

저차원의 데이터로

환원시키는 기법

33 of 40

4. 모델 학습

정확도를 높이기 위한 시도(3) – 부스팅

 pca

> 일반 차원 축소

> 차원 23개로 축소

ada boost

> 약한 분류기들이 순차적으로 학습하고, 이들을 조합하여 최종적으로 강한 분류기(strong classifier)의 성능을 향상시키는 알고리즘

 xgboost

> CART(Classification And Regression Tree)를 기반으로 하여,

분류와 회귀가 둘 다 가능하다.

decision tree boost

> error를 미분한 gradient에 기반하여 기존 모델이 잘 맞추지 못한 데이터에 대해 additional model을 이용해서 모델의 표현력을 계속해서 높이는 방법

고차원의 데이터를

저차원의 데이터로

환원시키는 기법

34 of 40

모델 비교

랜덤포레스트 vs 부스팅�

05

35 of 40

5. 모델 비교

랜덤포레스트 vs 부스팅

accuracy

rf

66.47%

rf pca

(차원

12개로 축소)

66.09%

Logistic regression

63.98%

svc

63.79%

VotingClassifier

64.75%

accuracy

XGBoost

62%

XGBoost pca

65%

AdaBoost

63%

AdaBoost pca

65%

DecisionTree AdaBoost

63%

DecisionTree AdaBoost pca

65%

Random Forest

Boosting

36 of 40

결론

06

37 of 40

6. 결론

최종 모델

> RandomForest를 최적화 시킨 모델이 66.47%의 accuracy로 가장 정확도가 높았음

> 대부분의 모델에서 65% 전후의 정확도를 보임

> 검색량 정보를 변화시키면서 사용해본 결과, 검색량 정보가 있는지 없는지 여부가 중요했고, 세부적인 조정으로 정확도가 크게 변하지 않았음

38 of 40

추가적인 모델

+

39 of 40

7. 추가적인 모델

stacking

> 정확도가 높은 편이 아닌 점이 아쉬워 추가적인 모델을 찾음

> 여러 모델의 예측 결과를 바탕으로 다시 한 번 모델을 학습시키는 방식의 모델

> XGBoost + Random Forest + Ada boost + Ada boost (Decisiont Tree)

> Lgbm으로 최종 모델을 학습시킴

> 최종 accuracy : 69.73%

40 of 40

“감사합니다”

—Someone Famous