데이터마이닝�프로젝트 최종발표
F팀
남하영 / 노준석
백찬우 / 이지윤
01
06
05
02
목차
결론
모델비교
랜덤포레스트 vs 부스팅
데이터 수집/ 전처리
주제
선정 배경 / 문제 정의 / 프로젝트 목표
03
기초 분석 결과
04
모델학습
랜덤포레스트
부스팅
주제
선정배경/문제정의/�프로젝트 목표
01
영화 산업이 막대한 손실을 기록하고 있음.
1. 주제
선정 배경
문제 정의
프로젝트 목표
데이터 수집 및 전처리
02
2. 데이터 수집 및 전처리
데이터 수집 – 기본 영화 데이터
영화 진흥 위원회
> 오픈 api 서비스 이용
> 2018~2020년도 데이터 수집
[영화 제목/개봉일/감독/주연배우1
/주연배우2/장르/관람등급/상영시간]
영화관 입장권 통합 전상망
> 2018~2020년도 개봉 영화별
전국 매출액 데이터 수집
>100만원 미만 데이터 삭제
영화 코드
일간 검색량
2. 데이터 수집 및 전처리
데이터 수집 – 배우&감독 점수 수치화
구글 트렌드
> 배우와 감독의 검색량 데이터
> 개봉 1일 전 ~ 100일 전, 영화당 총 100개의
일간 검색량 추출
2. 데이터 수집 및 전처리
변수 추가 – 배우&감독 점수 수치화 (1)
개봉 n일 전의 검색량 변수
> 감독, 배우1, 배우2에 대해
개봉 100일 / 70일 / 50일 / 20일 전의
검색량 변수 추가 (총 12개)
2. 데이터 수집 및 전처리
변수 추가 – 배우&감독 점수 수치화 (2)
개봉 n일 전의 검색량 변수
> 감독, 배우1, 배우2에 대해
개봉 100일 / 70일 / 50일 / 20일 전의
검색량 증감추세의 총합 변수 추가 (총 3개)
2. 데이터 수집 및 전처리
변수 추가 – 배우&감독 점수 수치화 (3)
개봉 n일 전의 검색량 변수
> 감독, 배우1, 배우2에 대해
개봉 100일 / 70일 / 50일 / 20일 전의
검색량 증감추세에 대한
범주화 변수 추가 (총 3개)
경우 | fac |
증증증 | 0 |
증증감 | 1 |
증감증 | 2 |
증감감 | 3 |
경우 | fac |
감증증 | 4 |
감증감 | 5 |
감감증 | 6 |
감감감 | 7 |
2. 데이터 수집 및 전처리
변수 추가 – 배우&감독 점수 수치화 (4)
종합 점수
> 감독, 배우1, 배우2의
‘개봉 전 100일간의 누적 검색량’
을 합산한 점수를 만듦
> 5단계로 범주화함
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 |
“김태구, 홍정식. (2013). 개봉 규모와 수익성에 따른 영화의 분류와 확산 패턴 분석. 대한산업공학회지, 39(5), 412-421.”
2. 데이터 수집 및 전처리
데이터 수집 – 코로나 누적 확진자 수
공공데이터포털
> 코로나 누적 확진자 수 데이터 수집
> 개봉일 전후 10일간의 (논문 참고)
코로나 누적 확진자 수를 변수로 설정함.
2. 데이터 수집 및 전처리
수치형 변수 표준화
> 수치형 변수에만 표준화 진행
2. 데이터 수집 및 전처리
매출 범위 범주화
-> 매출의 범위를 4개의 범주로 나누어 (0~3) 영화의 매출 범주를 예측함.
-> 데이터가 고루 분포할 수 있는 기준으로 정함.
기준
100만, 5000만, 3억
기초 분석 결과
03
3. 기초 분석 결과 - 장르
장르에 따른 영화 수 count
드라마 장르가 눈에 띄게 많고, 애니메이션과 멜로/로맨스 등의 장르가 많음.
장르에 따른 매출
3. 기초 분석 결과 - 장르
3. 기초 분석 결과 – 상영등급 / 상영시간
상영등급에 따른 영화 수 count
상영시간 분포
3. 기초 분석 결과 – 연도 / 날짜
개봉 연도에 따른 영화 수 count
개봉일에 따른 영화 수 count
3. 기초 분석 결과 - 날짜
날짜별 개봉 영화 수
날짜별 영화 매출액
3. 기초 분석 결과 – 검색량
감독명
주연배우2
주연배우1
합산
3. 기초 분석 결과 – 검색량
Reputation에 따른 영화 수 count
검색량에 따른 영화 매출액
3. 기초 분석 결과 - 코로나
사회적 거리두기 단계에 따른 매출
거리두기 단계에 따른 영화 수 count
3. 기초 분석 결과 - 코로나
날짜에 따른 확진자 수 column
3. 기초 분석 결과 - 전체
변수 상관성
모델 학습
- 랜덤 포레스트�- 부스팅�
04
4. 모델 학습
랜덤포레스트…?
> 앙상블 모델
> 여러 개의 결정 트리에 랜덤 샘플을 훈련시켜, 결과를 합하는 알고리즘.
4. 모델 학습
부스팅…?
> 앙상블 모델
> 성능이 약한 학습기(weak learner)를 여러개 연결하여 순차적으로 학습함으로써
강한 학습기 (strong learner)를 만드는 앙상블 학습기법
4. 모델 학습
랜덤 포레스트 & 부스팅
랜덤 포레스트
> 샘플을 랜덤으로 추출함.
> 각 모델이 독립
> 모든 샘플, 모델이 독립적이므로
다양성을 보장함.
> Voting을 통해 최종 결과를
나타냄.
부스팅
> 가중치를 두어 샘플을 추출함.
> 모든 모델이 의존함.
> 각 모델은 이전 모델이 맞히지
못한 부분을 맞히기 위해 노력함.
> 모든 결과에 모델 신뢰도 기반
가중치를 두어 최종 결과를 합함.
4. 모델 학습
정확도를 높이기 위한 시도(1) – 구글 검색량 데이터 조작
> 검색량 범주화 변수 추가
감독, 배우1, 배우2에 대해
개봉 100일 / 70일 / 50일 / 20일 전의
검색량 증감추세에 대한 변수 3개 추가
> ‘score’ 변수 생성
감독, 배우1, 배우2의
‘개봉 전 100일간의 누적 검색량’
을 합산한 점수를 만듦(5단계)
경우 | fac |
증증증 | 0 |
증증감 | 1 |
증감증 | 2 |
증감감 | 3 |
경우 | fac |
감증증 | 4 |
감증감 | 5 |
감감증 | 6 |
감감감 | 7 |
4. 모델 학습
정확도를 높이기 위한 시도(2) – 랜덤포레스트 및 여러 모델 적용
logistic regression
> 회귀를 사용하여 데이터가 어떤 범주에 속할 가능성이 더 높은 범주에 속하는 것으로 분류해주는 지도 학습 알고리즘
VotingClassifier
> 더 좋은 분류기를 만들기 위해 각 분류기의 예측을 모아 다수결 투표로 정하는 것
svc
> support vectors를 사용해서 Decision Boundary를 정의하고, 분류되지 않은 점을 해당 결정 경계와 비교해서 분류하는 알고리즘
pca
> 일반 차원 축소
> 차원 12개로 축소
고차원의 데이터를
저차원의 데이터로
환원시키는 기법
4. 모델 학습
정확도를 높이기 위한 시도(3) – 부스팅
pca
> 일반 차원 축소
> 차원 23개로 축소
ada boost
> 약한 분류기들이 순차적으로 학습하고, 이들을 조합하여 최종적으로 강한 분류기(strong classifier)의 성능을 향상시키는 알고리즘
xgboost
> CART(Classification And Regression Tree)를 기반으로 하여,
분류와 회귀가 둘 다 가능하다.
decision tree boost
> error를 미분한 gradient에 기반하여 기존 모델이 잘 맞추지 못한 데이터에 대해 additional model을 이용해서 모델의 표현력을 계속해서 높이는 방법
고차원의 데이터를
저차원의 데이터로
환원시키는 기법
모델 비교
랜덤포레스트 vs 부스팅�
05
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
결론
06
6. 결론
최종 모델
> RandomForest를 최적화 시킨 모델이 66.47%의 accuracy로 가장 정확도가 높았음
> 대부분의 모델에서 65% 전후의 정확도를 보임
> 검색량 정보를 변화시키면서 사용해본 결과, 검색량 정보가 있는지 없는지 여부가 중요했고, 세부적인 조정으로 정확도가 크게 변하지 않았음
추가적인 모델
+
7. 추가적인 모델
stacking
> 정확도가 높은 편이 아닌 점이 아쉬워 추가적인 모델을 찾음
> 여러 모델의 예측 결과를 바탕으로 다시 한 번 모델을 학습시키는 방식의 모델
> XGBoost + Random Forest + Ada boost + Ada boost (Decisiont Tree)
> Lgbm으로 최종 모델을 학습시킴
> 최종 accuracy : 69.73%
“감사합니다”
—Someone Famous