일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 선형회귀
- 영국석사
- 런던
- 다항회귀
- 오늘도코드잇
- 코드잇TIL
- 코딩독학
- HTML
- 코딩공부
- for반복문
- 코드잇 TIL
- 판다스
- 나혼자코딩
- sql연습문제
- 코드잇
- 코딩
- CSS
- 데이터분석
- SQL
- Seaborn
- 머신러닝
- 결정트리
- 로지스틱회귀
- 행렬
- numpy
- 파이썬
- 윈도우함수
- matplotlib
- 경사하강법
- 유학생
- Today
- Total
영국 척척석사 유학생 일기장👩🏻🎓
(Machine Learning) 내용 기반 추천 시스템, sklearn으로 유저 평점 예측하기 본문
(Machine Learning) 내용 기반 추천 시스템, sklearn으로 유저 평점 예측하기
life-of-nomad 2023. 10. 16. 09:17
선형 회귀를 사용해서 내용 기반 추천을 해 봅시다.
가장 먼저 선형 회귀에서는 데이터를 수학적으로 어떻게 표현하는지 봅시다. 먼저 아래 데이터를 실제로 사용할 떄는 영화 이름이나 속성 이름을 쓰지 않았는데, 구별을 하기 위해 몇 번째 데이터와 속성인지를 자연수로 표시해보겠습니다.
가장 기본적으로 입력 변수들, 위의 경우 영화 속성들은 x라는 문자로 나타내고, 목표 변수, 즉 유저 평점은 y라는 문자로 나타냅니다.
1. 입력 변수
각 영화에서 속성은 액션, 로맨스, 코미디, 감동 총 4개 입니다.
첫 번째 입력 변수인 액션 정도를 나타내기 위해 x_1, 로맨스 정도를 나타내기 위해 x_2, 나머지도 마찬가지로 x_3, x_4로 나타냅니다.
입력 변수의 개수는 n이라는 문자로 표현하는데 지금은 총 4개의 입력 변수가 있기 때문에 n=4입니다.
2. 각 데이터
학습 데이터의 개수는 m이라는 문자로 표현합니다. 별점을 예측하는 프로그램을 만드는 데 m이 50이면 50개의 영화데이터를 갖고 프로그램을 학습시키는 것입니다.
1번째 영화의 입력 변수는 x^(1)로 표현합니다. 그리고 1번째 영화 목표변수는 y^(1)로 표현합니다.
나머지도 마찬가지로 표현하면 됩니다.
이건 그냥 하나의 값이 아니라 여러 값을 담은 하나의 벡터입니다.
위 벡터는 3번째 영화가 얼마나 액션, 로맨스, 코미디, 감동인지가 들어있는 벡터입니다.
3. 합치기
따라서 3번째 영화의 2번째 속성인 로맨스 정도는 아래와 같이 표현하면 됩니다.
이걸 일반화하면 i번째 데이터의 j번째 속성은 아래와 같이 나타낼 수 있습니다.
4. sklearn으로 유저 평점 예측하기
sklearn 라이브러리를 사용해서 선형 회귀로 직접 유저 평점을 예측해보겠습니다.
코드는 아래와 같습니다.
#필요한 도구들 가지고 오기
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
import pandas as pd
import numpy as np
#유저 평점 + 영화 속성 데이터 경로 정의
MOVIE_DATA_PATH = './data/movie_rating.csv'
#pandas로 데이터 불러오기
movie_ratind_df = pd.read_csv(MOVIE_DATA_PATH)
#사용할 속성들 이름
features = ['romance', 'action', 'comedy', 'heart-warming']
#입력 변수와 목표 변수 나누기
X = movie_rating_df[features]
y = movie_rating_df[['rating']]
#선형 회귀 모델 학습 시키기
X_train, X_Test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=5)
model = LinearRegression()
model.fit(X_train, y_train)
#X_test 예측하기
y_test_predict = model.predict(X_test
'코딩공부 > Machine Learning' 카테고리의 다른 글
(Machine Learning) 에다 부스트 알고리즘, 스텀프 (2) | 2023.10.12 |
---|---|
(Machine Learning) 에다부스트(Adaboost) (1) | 2023.10.11 |
(Machine Learning) 결정트리 랜덤 포레스트, Bagging (0) | 2023.10.10 |
(Machine Learning) 결정 트리, 속성 중요도 (1) | 2023.10.08 |
(Machine Learning) 결정트리, 지니 불순도 (gini impurity) (1) | 2023.10.05 |