아이디어 설명
- Linear Model로 유저 프로필 구성
- 선형 회귀 모델을 사용해 각 유저 별 특징을 가장 잘 나타내는 선형 회귀 직선을 찾도록 함
- 예) '조'의 정직한 후보 y = 3.5 + (0.5 * 1) + (-1 * 0) + (1.2 * 0) = 4라고 한다면 → 실제는 3.5이므로 에러는 0.5
스릴러를 좋아하지 않는다면, β2는 음의 계수 값을 가질 것으로 예상됨 - 이후 각 에러값을 제곱하고 평균을 내서 조의 MSE를 구하게 되고,
이 절편과 계수들이 조를 잘 판단하는지 조정하여 최적의 값을 찾음 - 선형 회귀 모델은 MSE가 최소값이 되는 절편과 계수를 찾며 이를 유저 프로필로 사용
- Linear Model이란?
- x를 가지고 y를 잘 설명하는 직선을 그리는 것
- 최소자승법
1. 각각의 점으로부터 직선까지의 거리를 잰다.
2. 전반적인 거리가 작아질 때까지의 직선을 이동하여 가장 두 변수 간의 관계를 설명하는 직선을 찾는다.
- 정규화
- 선형 회귀 모델에서 도출된 회귀 계수들에게 제약을 가하는 방법론으로
계수들의 크기를 제한하는 regularization term을 추가 - 과적합된 모델은 train 데이터는 아주 잘 설명하지만 test 데이터에 대한 설명은 아주 떨어지므로 이를 방지
이 방법 외로는 데이터 갯수를 늘려 정보의 양을 늘리는 방법이 존재 - 제 1 정규화 : 계수들의 절대값의 합을 제약조건으로 가짐 (α∑∣β∣)
→ Lasso 모델 : 쓸모 있는 계수는 남기고, 그렇지 않으면 제거하는 기능이 탁원 - 제 2 정규화 : 계수들의 제곱값의 합을 제약조건으로 가짐 (α∑β²)
→ Ridge 모델 - 제 1, 2 정규화를 모두 사용한다면 Elastic-Net 모델
제약조건의 비중을 크게 하고 싶다면 알파의 값을 크기를 키워줌
- 선형 회귀 모델에서 도출된 회귀 계수들에게 제약을 가하는 방법론으로
파이썬 구현
- 샘플 유저의 평점을 학습 데이터와 평가 데이터로 나누기
- 필요한 패키지 설치
- 데이터 읽어오기
- 샘플 유저 정하기
- 샘플 유저 414에 genres 데이터를 이너 조인으로 붙이기
- 샘플 유저 414의 데이터를 모델을 훈련하는 장르, 평점 데이터와 성능을 테스트하는 장르, 평점 데이터로 나눠주기
여기서 장르 정보는 평점 정보를 예측하기 위해 필요한 정보들인 특성이며, 평점 정보는 정답인 레이블을 나타냄
- 샘플 유저의 프로필 만들기
- Linear Model 모델 생성하기
- 샘플 유저 414의 프로필 훈련 시키기
- Linear Model의 각 장르에 대한 계수 살펴보기
- Linear Model의 절편 살펴보기
- 샘플 유저 414의 장르에 따른 계수 알아보기
- 샘플 유저 414의 액션 장르 영화에 대한 예상 평점 알아보기
- 샘플 유저 414의 액션 + 어드벤처 장르 영화에 대한 예상 평점 알아보기
- 샘플 유저 414의 평점 시각화하기
- 샘플 유저 414가 싫어하는 장르의 평점 시각화하기
- 샘플 유저 414가 좋아하는 장르의 평점 시각화하기
- 샘플 유저 414의 평점 예측하기
- RMSE로 평가
- 전체 유저의 프로필 만들기
- 전체 데이터로 확장
- 나의 유저 프로필 찾아보기
- 전체 유저의 평점 예측
- 직접 절편과 장르 점수를 더해서 유저에 따른 특정 장르에 대한 평점 예측하기
- 모델 평가
- RMSE로 평가
- 오버피팅
- 데이터가 적은 유저의 경우, 데이터의 갯수와 features의 갯수가 거의 같아
계수 계산이 정확하지 않으므로 오버피팅이 발생하여
새로운 데이터를 사용하여 예측 시 성능이 떨어짐 - 해결책 1) 빈도수가 낮은 장르를 없애 features 수를 줄여 설명해야 하는 요소를 줄이기
- 해결책 2) 상관관계가 높은 장르들 (자주 같이 등장하는 장르들)을 합치기
- 해결책 3) 데이터가 적은 유저의 경우만 계수 대신 전체 평균, 유저 별 평균, Content-Based Recommendation 1 사용
→ 모델 앙상블 - 해결책 4) 정규화가 가능한 Linear Model (Ridge, Lasso 등) 사용하여 중요하지 않는 계수 탈락 시키기
- 데이터가 적은 유저의 경우, 데이터의 갯수와 features의 갯수가 거의 같아
- Lasso 모델 적용
- Lasso 모델을 통해 절편과 계수를 업데이트하기 위한 새로운 유저 프로필 생성하기
- 직접 절편과 장르 점수를 더해서 유저에 따른 특정 장르에 대한 평점 예측하기
- RMSE로 평가
참고 자료 및 코드
더보기
[개념부터 실습까지] 추천 시스템 입문편
[추천 시스템 입문편] Content-Based Recommendation 2
'ML > 추천 시스템 입문편' 카테고리의 다른 글
[추천 시스템 입문편] 나와 친구를 위한 영화 추천 (0) | 2023.05.18 |
---|---|
[추천 시스템 입문편] Content-Based Recommendation 1 (0) | 2023.05.16 |
[추천 시스템 입문편] 아주 간단한 추천 시스템 만들기 (0) | 2023.05.12 |
[추천 시스템 입문편] Pandas 보충강의 (0) | 2023.05.12 |
[추천 시스템 입문편] 영화 데이터 읽고 기초 분석하기 (0) | 2023.05.12 |