{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# **7장 프로젝트 1: 영화 추천 시스템**\n", "- **머신러닝 실무 프로젝트** (한빛출판사) 7장 영화추천 시스템 만들기\n", "- 유형 : **개요추천, 사용자 평가, 알림서비스, 연관아이템 추천, 개인화**\n", "- 추천 알고리즘 시스템 만들기\n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## **1 추천 알고리즘**\n", "**협업 필터링은 cold start** 단점을, **내용기반 필터링은 한글에 분석기법이** 필요 합니다\n", "- **내용기반 필터링** : 개별 영화정보를 구조화 하여 추천하는 알고리즘\n", "- **모델 기반 협업 필터링** (회귀/ 분류와 같은 예측모델을 바탕으로 추천)\n", "- **메모리 기반 협업 필터링** (저장된 데이터를 바탕으로 추천)\n", " - 사용자 기반 협업 필터링\n", " - 아이템 기반 협업 필터링" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### **01 사용자 기반 협업 필터링**\n", "유사도 측정값은 두 대상이 **비슷할수록 값이 커지고, 다를수록 작아진다**\n", "- **피어슨 상관계수 : -1~1** 사이의 값을 출력\n", "- **코싸인 유사도 : 0~1** 사이의 값을 출력\n", "- **자카드 계수 : 0~1** 사이의 값을 갖는다" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "from scipy.spatial.distance import correlation # 피어슨 상관계수\n", "from scipy.spatial.distance import cosine # 코싸인 유사도 \n", "from scipy.spatial.distance import jaccard # 자카드 계수" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### **02 아이템 기반 협업 필터링**\n", "위와 동일한 **피어슨, 코싸인** 유사도를 활용한다\n", "- 평점 데이터를 **영화별 평균(코싸인유사도), 사용자별 평균(개선된 코싸인 유사도)** 을 분모로 사용한다\n", "- **평점 평균을 뺀** 데이터를 사용하면 **데이터 표준화로** 모델성능이 개선됩니다" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### **03 모델 기반 협업 필터링**\n", "**Topic Model** 로써 평점행렬의 차원을 축소하여 **잠재적 의미가 드러나는 모델** 을 구축합니다\n", "- **확률적 잠재의미 분석 (PLSA)**\n", "- **잠재 디리클레 할당 (LDA)**\n", "- **묵시적 행렬분해 (Matrix Decomposition)** : 밀집된 **사용자 행렬 U** 와 **아이템 행렬 I** 의 곱으로 예측" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### **04 내용 기반 협업 필터링**\n", "영화제목, 감독, 장르, 배우, 평판등의 정보를 활용하여 추천항목을 선별하여 모델을 구성합니다" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### **05 평가 척도**\n", "추천모델을 만든 뒤 모델간 평가를 진행합니다\n", "- 정확도, 정밀도, 재현율\n", "- **평균제곱오차(MAE)** : 회귀모델의 척도\n", "- **평균제곱근오차(RMSE)** : MAE가 너무커서 root 값으로, MAE와 비교시 outlier에 취약\n", "- 순위 상관값" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## **3 영화리뷰 데이터 살펴보기**\n", "영화리뷰 데이터를 살펴보며 경향을 탐색 합니다" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
user_idagesexoccupationzip_code
0124Mtechnician85711
1253Fother94043
2323Mwriter32067
\n", "
" ], "text/plain": [ " user_id age sex occupation zip_code\n", "0 1 24 M technician 85711\n", "1 2 53 F other 94043\n", "2 3 23 M writer 32067" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# 사용자 정보\n", "import pandas as pd\n", "u_cols = ['user_id', 'age', 'sex', 'occupation', 'zip_code']\n", "users = pd.read_csv('data/ml-100k/u.user', sep='|', names=u_cols)\n", "users.head(3)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
user_idmovie_idratingunix_timestampdate
019624238812509491997-12-04 15:55:49
118630238917177421998-04-04 19:22:22
22237718788871161997-11-07 07:18:36
\n", "
" ], "text/plain": [ " user_id movie_id rating unix_timestamp date\n", "0 196 242 3 881250949 1997-12-04 15:55:49\n", "1 186 302 3 891717742 1998-04-04 19:22:22\n", "2 22 377 1 878887116 1997-11-07 07:18:36" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# 영화 평점 정보\n", "r_cols = ['user_id', 'movie_id', 'rating', 'unix_timestamp']\n", "ratings = pd.read_csv('data/ml-100k/u.data', sep='\\t', names=r_cols)\n", "ratings['date'] = pd.to_datetime(ratings['unix_timestamp'], unit='s')\n", "ratings.head(3)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
movie_idtitlerelease_datevideo_release_dateimdb_url
01Toy Story (1995)01-Jan-1995NaNhttp://us.imdb.com/M/title-exact?Toy%20Story%2...
12GoldenEye (1995)01-Jan-1995NaNhttp://us.imdb.com/M/title-exact?GoldenEye%20(...
23Four Rooms (1995)01-Jan-1995NaNhttp://us.imdb.com/M/title-exact?Four%20Rooms%...
\n", "
" ], "text/plain": [ " movie_id title release_date video_release_date \\\n", "0 1 Toy Story (1995) 01-Jan-1995 NaN \n", "1 2 GoldenEye (1995) 01-Jan-1995 NaN \n", "2 3 Four Rooms (1995) 01-Jan-1995 NaN \n", "\n", " imdb_url \n", "0 http://us.imdb.com/M/title-exact?Toy%20Story%2... \n", "1 http://us.imdb.com/M/title-exact?GoldenEye%20(... \n", "2 http://us.imdb.com/M/title-exact?Four%20Rooms%... " ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# 영화 정보\n", "m_cols = ['movie_id', 'title', 'release_date', 'video_release_date', 'imdb_url']\n", "movies = pd.read_csv('data/ml-100k/u.item', sep='|', names=m_cols, usecols=range(5), encoding=\"latin1\")\n", "movies.head(3)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
movie_idtitlerelease_datevideo_release_dateimdb_urluser_idratingunix_timestampdateagesexoccupationzip_code
01Toy Story (1995)01-Jan-1995NaNhttp://us.imdb.com/M/title-exact?Toy%20Story%2...30848877365321998-02-17 17:28:5260Mretired95076
14Get Shorty (1995)01-Jan-1995NaNhttp://us.imdb.com/M/title-exact?Get%20Shorty%...30858877378901998-02-17 17:51:3060Mretired95076
25Copycat (1995)01-Jan-1995NaNhttp://us.imdb.com/M/title-exact?Copycat%20(1995)30848877396081998-02-17 18:20:0860Mretired95076
\n", "
" ], "text/plain": [ " movie_id title release_date video_release_date \\\n", "0 1 Toy Story (1995) 01-Jan-1995 NaN \n", "1 4 Get Shorty (1995) 01-Jan-1995 NaN \n", "2 5 Copycat (1995) 01-Jan-1995 NaN \n", "\n", " imdb_url user_id rating \\\n", "0 http://us.imdb.com/M/title-exact?Toy%20Story%2... 308 4 \n", "1 http://us.imdb.com/M/title-exact?Get%20Shorty%... 308 5 \n", "2 http://us.imdb.com/M/title-exact?Copycat%20(1995) 308 4 \n", "\n", " unix_timestamp date age sex occupation zip_code \n", "0 887736532 1998-02-17 17:28:52 60 M retired 95076 \n", "1 887737890 1998-02-17 17:51:30 60 M retired 95076 \n", "2 887739608 1998-02-17 18:20:08 60 M retired 95076 " ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# 사용자-영화-평점 3 정보를 한 데이터프레임으로 합치기\n", "movie_rating = pd.merge(movies, ratings)\n", "lens = pd.merge(movie_rating, users)\n", "lens.head(3)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Star Wars (1977) 583\n", "Contact (1997) 509\n", "Fargo (1996) 508\n", "Return of the Jedi (1983) 507\n", "Liar Liar (1997) 485\n", "Name: title, dtype: int64" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# 가장 평점갯수가 많은 25개 작품\n", "# 결과) 오래된 영화 일수록 평점갯수가 많다\n", "lens.title.value_counts()[:5]" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
rating
sizemean
title
They Made Me a Criminal (1939)15.0
Marlene Dietrich: Shadow and Light (1996)15.0
Saint of Fort Washington, The (1993)25.0
\n", "
" ], "text/plain": [ " rating \n", " size mean\n", "title \n", "They Made Me a Criminal (1939) 1 5.0\n", "Marlene Dietrich: Shadow and Light (1996) 1 5.0\n", "Saint of Fort Washington, The (1993) 2 5.0" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# 평점 수와 평균 평점을 집계한 다음 평균 평점 순으로 정렬\n", "# 결과) 평점 갯수가 너무 적은 영화들이 상위에 존재한다\n", "import numpy as np\n", "movie_stats = lens.groupby('title').agg({'rating': [np.size, np.mean]})\n", "movie_stats.sort_values(by=[('rating', 'mean')], ascending=False).head(3)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
rating
sizemean
title
Close Shave, A (1995)1124.491071
Schindler's List (1993)2984.466443
Wrong Trousers, The (1993)1184.466102
Casablanca (1942)2434.456790
Shawshank Redemption, The (1994)2834.445230
\n", "
" ], "text/plain": [ " rating \n", " size mean\n", "title \n", "Close Shave, A (1995) 112 4.491071\n", "Schindler's List (1993) 298 4.466443\n", "Wrong Trousers, The (1993) 118 4.466102\n", "Casablanca (1942) 243 4.456790\n", "Shawshank Redemption, The (1994) 283 4.445230" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# 표본의 선별) 최소 평점 갯수가 100건 이상인 영화를 대상으로 상위작품 확인\n", "atleast_100 = movie_stats['rating']['size'] >=100\n", "movie_stats[atleast_100].sort_values(by=[('rating','mean')], ascending=False)[:5]" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0, 0.5, '(사용자별) 평가 횟수')" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "%matplotlib inline\n", "# 시각적 분석결과 Long-tail 분포를 보여준다\n", "# Zip's Law (두번 중요단어는 1/2빈도, 세번 중요단어는 1/3빈도)\n", "from matplotlib import rc\n", "from matplotlib import pyplot as plt\n", "rc('font', family=['NanumGothic','Malgun Gothic'])\n", "\n", "# plt.style.use('ggplot') # user_id 별 평가횟수 히스토그램\n", "lens.groupby('user_id').size().sort_values(ascending=False).hist()\n", "plt.xlabel('(영화별) 평점 개수')\n", "plt.ylabel('(사용자별) 평가 횟수')" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
sizemean
count943.000000943.000000
mean106.0445393.588191
std100.9317430.445233
min20.0000001.491954
25%33.0000003.323054
50%65.0000003.620690
75%148.0000003.869565
max737.0000004.869565
\n", "
" ], "text/plain": [ " size mean\n", "count 943.000000 943.000000\n", "mean 106.044539 3.588191\n", "std 100.931743 0.445233\n", "min 20.000000 1.491954\n", "25% 33.000000 3.323054\n", "50% 65.000000 3.620690\n", "75% 148.000000 3.869565\n", "max 737.000000 4.869565" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# 사용자별 평가 횟수와 평점 평균\n", "user_stats = lens.groupby('user_id').agg({'rating': [np.size, np.mean]})\n", "user_stats['rating'].describe()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## **2 추천 알고리즘과 파라미터**\n", "위에서 분석한 데이터를 기반으로 영화평점을 예측합니다\n", "- 인수분해 머신 알고리즘을 활용합니다\n", "- 행렬 인수분해는 **사용자** 와 **아이템** 만 다루지만, 인수분해머신은 **기타 다양한 특징** 으로도 모델을 만들 수 있습니다\n", "- 로지스틱회귀 모델과 달리, **행렬 인수분해처럼 희소한 행렬** 도 다룰 수 있습니다.\n", "- **특징간의 상호작용** 을 계산에 포함하여 다룹니다\n", "- **Surprise** 모듈의 내용은 [데이터사이언스](https://datascienceschool.net/view-notebook/fcd3550f11ac4537acec8d18136f2066/) 등을 참고합니다" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### **01 fastFM 라이브러리 (factorization machine 알고리즘)**\n", "인수분해 모듈로는 **libFM**이 가장 유명하지만 **C++** 로 구현되어서, 파이선 모듈인 [(**fastFM**)](http://ibayer.github.io/fastFM/tutorial.html#regression-with-als-solver) 을 사용합니다\n", "- **교대 최소제곱법 (ALS):** 예측이 빠르고 SGD에 비해 **파라미터가 적다** // 규제가 필수\n", "- **확률경사하강법 (SGD):** 예측이 빠르고 **대용량에** 적합 // 파라미터가 많고 규제가 필수\n", "- **마르코프 연쇄 몬테카를로 (MCMC):** 하이퍼 파라미터가 적어서 **자동규제** 가능 // 학습이 오래 걸린다" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[[19. 0. 0. 0. 1. 1. 0. 0. 0.]\n", " [33. 0. 0. 1. 0. 0. 1. 0. 0.]\n", " [55. 0. 1. 0. 0. 0. 0. 1. 0.]\n", " [20. 1. 0. 0. 0. 0. 0. 0. 1.]]\n" ] } ], "source": [ "from sklearn.feature_extraction import DictVectorizer\n", "train = [\n", " {\"user\": \"1\", \"item\": \"5\", \"age\": 19},\n", " {\"user\": \"2\", \"item\": \"43\", \"age\": 33},\n", " {\"user\": \"3\", \"item\": \"20\", \"age\": 55},\n", " {\"user\": \"4\", \"item\": \"10\", \"age\": 20},\n", "]\n", "v = DictVectorizer() # 피쳐값은 v.feature_names_ 저장\n", "X = v.fit_transform(train) # age값, user BOW(4), item BOW(4) 매트릭스\n", "print(X.toarray())" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([3.60775939])" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# 나이정보를 Integer로 변환 후 모델을 학습합니다\n", "# 실제해와 근사해의 오차가 최소로 되는 모델을 학습\n", "import numpy as np\n", "from fastFM import als\n", "y = np.array([5.0, 1.0, 2.0, 4.0]) \n", "fm = als.FMRegression(n_iter=1000, init_stdev=0.1, rank=2, l2_reg_w=0.1, l2_reg_V=0.5)\n", "fm.fit(X, y)\n", "\n", "# 입력 행렬에는 없지만 모델에서 예측한 3.6 평점을 출력합니다\n", "fm.predict(v.transform({\"user\": \"5\", \"item\": \"10\", \"age\": 24}))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### **02 MCMC 모델로 인수분해 학습**\n", "- MovieLens 데이터는 **Train (ua.base)** 과 **Test(ua.test)** 데이터를 분리하여 제공합니다\n", "- 읽은 자료들은 **사용자 ID, 영화 ID 필드를** 더미변수로 정리합니다\n", "- 학습을 위한 파라미터로 **alpha, lambda_w, mu_w** 값을 변화 합니다\n", "- **Q!)** 왜!! 파라미터는 (n_iter-1, 3+2*rank) 인가? **(특히 3, 2는???)**" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "# Train(모델링/미세조정), Test(훈련모델의 검증) 불러오기\n", "def loadData(filename, path=\"data/ml-100k/\"):\n", " data, y = [], []\n", " users, items = set(), set()\n", " with open(path + filename) as f:\n", " for line in f:\n", " (user, movieid, rating, ts) = line.split('\\t')\n", " data.append({ \"user_id\": str(user), \"movie_id\": str(movieid)})\n", " y.append(float(rating))\n", " users.add(user)\n", " items.add(movieid)\n", " return (data, np.array(y), users, items)\n", "\n", "(dev_data, y_dev, dev_users, dev_items) = loadData(\"ua.base\")\n", "(test_data, y_test, test_users, test_items) = loadData(\"ua.test\")" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [], "source": [ "# Train(dev_data) 을 9:1로 X_train(훈련데이터), X_dev_test(검증데이터) 분할\n", "from sklearn.model_selection import train_test_split\n", "v = DictVectorizer()\n", "X_dev = v.fit_transform(dev_data)\n", "X_test = v.transform(test_data)\n", "np.std(y_test)\n", "X_train, X_dev_test, y_train, y_dev_test = train_test_split(X_dev, y_dev, test_size=0.1, random_state=42)" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "FMRegression(copy_X=True, init_stdev=0.1, n_iter=0, random_state=123, rank=4)" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# 모델 및 하이퍼파리미터 초기화\n", "from sklearn.metrics import mean_squared_error\n", "from fastFM import mcmc\n", "\n", "n_iter, step_size = 300, 1\n", "seed, rank = 123, 4\n", "fm = mcmc.FMRegression(n_iter=0, rank=rank, random_state=seed) # 초기화\n", "fm.fit_predict(X_train, y_train, X_dev_test)\n", "fm" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "학습결과 RMSE 측정값: 0.8960\n", "CPU times: user 7.63 s, sys: 4.5 ms, total: 7.63 s\n", "Wall time: 7.64 s\n" ] } ], "source": [ "%%time\n", "# hyper_param 학습 파라미터와 RMSE 변화를 저장 \n", "rmse_test = []\n", "hyper_param = np.zeros((n_iter-1, 3+2*rank), dtype=np.float64)\n", "\n", "for nr, i in enumerate(range(1, n_iter)):\n", " fm.random_state = i * seed\n", " y_pred = fm.fit_predict(X_train, y_train, X_dev_test, n_more_iter=step_size)\n", " rmse_test.append(np.sqrt(mean_squared_error(y_pred, y_dev_test)))\n", " hyper_param[nr, :] = fm.hyper_param_\n", "\n", "values = np.arange(1, n_iter)\n", "x = values * step_size\n", "burn_in = 5\n", "x = x[burn_in:]\n", "print(\"학습결과 RMSE 측정값: {:.4f}\".format(np.min(rmse_test)))" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAssAAAHUCAYAAADMYGUIAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAAIABJREFUeJzs3XeYVOX5//H3TQcp0hQFKYrYEQSj2CKWKIoSG8YYC/YSgyaxG40NFU2isWONJtFYIqBGUX+xYcEvViyoEQVXFGEB6dLu3x/3HmZ22dmdXWZntnxe1zXXOWfOmTnPDMvuZ565z/OYuyMiIiIiImtrVOgGiIiIiIjUVgrLIiIiIiIZKCyLiIiIiGSgsCwiIiIikoHCsoiIiIhIBgrLIiIiIiIZKCyLiIiIiGSgsCwiIiIikoHCsoiIiIhIBk0K3YB0nTp18p49exa6GSIi1fL222/PcffOhW5HPun3tojUVdn+zq5VYblnz55Mnjy50M0QEakWM5te6Dbkm35vi0hdle3v7FoVlkVEZN2ZWWPgCmCAu+9fwXGjge3dfb+S7XuAZsDikkOud/cvarq9IiK1mcKyiEj9MxQYD+yU6QAzO6PkmB3S7m4MXOjuRTXbPBGRukNhWUSknnH3cQBmVu5+M9sTWOnuE8scsxg428w6AVOB0e6+upzHnwKcAtC9e/ectl1EpLZRWBapg1asWEFRURHLli0rdFMapBYtWtCtWzeaNm1a6KZUmZltAvzM3S8qu8/dz0w77iLgeODeco4bA4wBGDhwoJfd39B+Puvyz4OIVE5hWaQOKioqok2bNvTs2TNj76HUDHenuLiYoqIievXqVejmVMdhQBczu6Nke0sz+4O7X1nmuHHAydU5QUP6+awHPw8iUgmFZZE6aNmyZQ0iiNRGZkbHjh2ZPXt2oZtSLe5+Y/q2mb1QTlAG+CnwVnXO0ZB+Puv6z4OIVK7uT0oyZgz07g0rVxa6JSJ51RCCSG1Vh977FVkc82OyYmYXmdmYklExNnD3f1b3xHXoPVpnDem11kZffQWLF1d6WE6NHQv335/fc/7f/8Hhh+c37ixYAD/7GUydmr9zAlx4IfzrX/k9Z0XqflhesgS++CL+RUVEZA13H5Ksm9mdZrZhOcccmLY+yt1PcfcT3f2PeWqmSLUtXw69esExx+T3vIccAiNG5PecP/sZPP44FOVxrJpHHoHnn4dRo/J3zuXL4dpr4Re/yN85K1P3w3K7drFUWBYpmGuuuYZXX3212o+/6qqrePPNN6v0mKKiIk477bRqn7OhcfdT3X1WodtRKCeeeCLffvttxv2vvvoq11xzTR5bJLnw0UexfOWVqj/2zTdhypSqP25FNt/XZDBxIpx7LsyfD998U7XHzp8fy6peNzt7Nhx4IEyfDi+8ULXHfvZZLDfbrGqPAzj99AjazzwDixZl/7iPP676uWpa3a9Zbts2lj/8UNh2iBTK2WfDe+/l9jn79YMbb6z8uBKrVq1i1apV1T7dypUrWVnF7xar8xjJv1rw4wlU/jO6rj/Dsm5efBF22glatoRsq1o++QT+859Y79On6uccNCiWe+4JBx8M55xT+WP++1+45ZaqnytxyCEwZw5Mnhw9xJ9/Xvlj/vc/OOmk1HZVgifAY4/F+5TMSv/BB7DddhU/ZtUq2Guv1IeQJlVMiytXwh13xA1g9Oj4kFCZiy+Gv/411jfaqGrnrEl1PyyrZ1mkIEaOHMnixYtp2bIln332GbvtthsAF198MT/88AOLFi3ipJNOolu3btxwww3cUvIXZsSIEVx33XVssMEGAIwfP55nn32Wjz/+mJUrV9KvXz/OPfdc1ltvPebPn88111xDu3btOOOMM2jfvj3t2rXjtNNO44orruCtt95i9OjRnHfeeWva9eqrr/Lggw8ye/ZsjjvuOMaPH8+GG27I6tWrKSoqYq+99mLKlCnMmjWLCy64gO23355LL72U+fPn07RpUy644AKaNm26Vhs2qk2/uaVSf/zjH1mwYAErV67koIMOWnP/gw8+yJNPPsnAgQOZM2cO3bt359e//jUAzzzzDMXFxSxfvpyOHTtyxRVXlPtc++67b0FeU301Z04Es622ivrj55+HXXet/HFbb51a33CtAqPsvfQS/PhjdmF5xAiYMaP65+rSJV7vSy/F9nffxX0VGT8eXn45tV3VsNy+fentN9+sPCzPnFm6t76q5yx7/BtvZPe49HKPdfk3zbW6H5bVsywNXVW72HJg0qRJNGnShLvvvhuAIUOiNPaZZ56hTZs2XH311WuCxTPPPMM333zDihUr+PHHH1m+fPmaoAxw8MEH884777DPPvuw2267cf7553PiiSey8847M3XqVEaNGsVZZ53F6tWr+fOf/7zmYqpLL72Uq666qlRQhughnD59OhMmTABg7NixHHzwwQwaNIjbb7+dDz/8kBtvvJEvv/ySa665hjFjxjBx4kTGjx9P69atAcptw80331zj72t9VIAfTwB69uzJW2+9RevWrbnllltoX5IYVq1aRc+ePdf83Bx11FEMHz4cgO23356//OUvAOy3334sWbKEVq1arfVcCsvl++EHOO+86EVM+rGykZQXfPJJLJ9+uvKwXPZLpSVLsj9fed5+OwJz8+YVH9e5c+mwvHw5NGuW/Xk22ww+/DC1/X//B2mf5cpVNt4sXJj9+WDt4PrWW3ByJYNClv1AUNWwXLb/8q0sxtXxMiO2r+u/aS7V/bCsnmWRvPvqq6/Ydttt12zvsEPMmDxlyhTee+89LrjgAgCal/zlGTp0KBMmTKC4uJijjjqqwueeMmUK7s7YsWMBaNasGX369GHEiBH85je/YbfdduPII4+s8DkGJd+vlthkk00AaNOmDX379l2zvqTkt/GYMWO48soradu2LRdccEG5bZC6Y+zYsbz99tvceuutLF68mJ///OdrwjLAFltssWa9R48eFJVcMbXxxhuvuX+jjTZi3rx5PPfcc2s9l5TvyitjgKrttoOSzvqslP3z/dprlT9m5szS21UNc2WD2fLl8M47qdKMTL7/PsoDOnSIeunFi6sWln/8sfR2NmF5xgxo0QJOPBFuvXXdgmvjxtkF1yQsn3delJ1UNaCnH9+kSdRnf/MNdO2a+THz5sXygAPi33dWLbrCov6EZfUsi+TNFltswQMPPLBm+80332Tfffdl8803p1mzZpx99tmljj/iiCP43e9+x/Lly7n33rUmhKNx48Zr6o8333xzfvnLX9KvX79SxwwePJjBgwczZMgQDjjggFKPKatJBQV25Q3z1bt3b6677jpGjRrFhAkTMrZB6obPP/+cIUOGYGa88MILa/2bv/3225x44okAfPTRR/Tu3Zt33nlnredx90qfS1KS4cU6dKja48rrhaysx3b69FhOmBB1sf/7X9XOmX6R3O67w6uvwuuvVxyWV6yIwHfxxdC9e/TOLlq0dplDRZLXuv32sHp19sG1f/8YTq06YTkJrj16wN57x5B3ixfDeutVfE6ASy6Bp55at4B+9tlwww0waRIcemjl5zzhhLgQ8p57qnbOmlT3w3JS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9lp1gZ+IiIiISG2immURERERkQwUlkVEREREMlBYFhERERHJQGFZRERERCQDhWURERERkQwUlkVEREREMlBYFhERERHJQGFZRERERCQDhWURERERkQwUlkVEREREMlBYFhERERHJQGFZRERERCQDhWURERERkQwUlkVEREREMlBYFhERERHJQGFZRERERCQDhWURERERkQwUlkVEREREMlBYFhERERHJQGFZRERERCQDhWURERERkQwUlkVEREREMlBYFhERERHJQGFZRERERCQDhWURERERkQwUlkVEREREMlBYFhERERHJQGFZRERERCQDhWURERERkQwUlkVEREREMlBYFhERERHJQGFZRERERCQDhWURERERkQyaFLoB6Tp16uQ9e/YsdDNERKrl7bffnuPunQvdjnzS720Rqauy/Z1dq8Jyz549mTx5cqGbISJSLWY2vdBtyDf93haRuirb39kqwxARERERyUBhWUREREQkA4VlEREREZEMalXNcnlWrFhBUVERy5YtK3RT6oUWLVrQrVs3mjZtWuimiIiISB409Cy1rtlnncKymW0GXFyyuQq4zN1npu0/GjiyZN8b7j66qucoKiqiTZs29OzZEzNbl+Y2eO5OcXExRUVF9OrVq9DNERERkTxoyFnq/7N33nFylWX7v57pZUt2k9mS3htJaAGEEIQYFF6kCPhKU5AXEw1BUEBQVJSIiKggCC9goQn8AIEgSH2pITRDjQnpvW02W2dmd/rz++Ps88xzzpyZbTNzdmfv7+fDh9nZM+d5zuzCXuea677vfGifPotlpr3bvwGwmHPebPL9cgDfBHAy55wzxh5ijE3hnG/szTqRSGRI/nALAWMMw4cPR2Njo9VbIQiCIAiiSAxlLZUP7dOfzPIRAHYC+DVj7GHG2CWG7x8D4BXOOe/6+hkAJxhPwhhbxBhbxRhble1ChuIPt1DQe0mUKuFYGH949w94cdOLVm+FyMGa/Wtwzj/OwZaWLVZvhSCGFEP5739/r70/Ynk8gFkAruCcnw/gcMbYfOX7wwGojnNz13M6OOf3cs7ncs7nBgJDqpc/QRB55PsvfB9XvnwlfvLqT6zeCpEDG7PhsTWP4bWtr1m9FYIgiB7RH7HcAc05FmnxfwI4XPl+E4Aq5evqrucIghgCPL/xeTR3ZiS0CsaG5g0AAK/TW7Q1id4z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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# MCMC 반복에 따른 파라미터 변화 \n", "# 결과분석 : 대략 100번 반복하면 수렴모델이 생성된다\n", "from matplotlib import pyplot as plt\n", "fig, axes = plt.subplots(nrows=2, ncols=2, sharex=True, figsize=(12, 8))\n", "axes[0,0].plot(x, rmse_test[burn_in:], label='dev test rmse', color=\"r\")\n", "axes[0,1].plot(x, hyper_param[burn_in:,0], label='alpha', color=\"b\")\n", "axes[1,0].plot(x, hyper_param[burn_in:,1], label='lambda_w', color=\"g\")\n", "axes[1,1].plot(x, hyper_param[burn_in:,3], label='mu_w', color=\"g\")\n", "axes[0,0].legend(); axes[0,1].legend(); axes[1,0].legend(); axes[1,1].legend()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### **03 Rank 에 따른 RMSE 변화**\n", "- **rank가** RMSE값에 미치는 영향을 평가해 봅니다\n", "- 시뮬레이션 결과 **rank가 32를 넘으면** RMSE가 크게 줄어듬을 알 수 있습니다" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "rank:4\trmse:0.903\n", "rank:8\trmse:0.898\n", "rank:16\trmse:0.896\n", "rank:32\trmse:0.893\n", "rank:64\trmse:0.893\n", "시뮬레이션 결과 최소 rmse 값: 0.893\n", "CPU times: user 43.4 s, sys: 118 ms, total: 43.5 s\n", "Wall time: 43.3 s\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "%%time\n", "n_iter, seed, rmse_test = 100, 333, []\n", "ranks = [4, 8, 16, 32, 64]\n", "\n", "for rank in ranks:\n", " fm = mcmc.FMRegression(n_iter=n_iter, rank=rank, random_state=seed)\n", " y_pred = fm.fit_predict(X_train, y_train, X_dev_test)\n", " rmse = np.sqrt(mean_squared_error(y_pred, y_dev_test))\n", " rmse_test.append(rmse)\n", " print('rank:{}\\trmse:{:.3f}'.format(rank, rmse))\n", "\n", "plt.plot(ranks, rmse_test, label='dev test rmse', color=\"r\"); plt.legend()\n", "print(\"시뮬레이션 결과 최소 rmse 값: {:.3f}\".format(np.min(rmse_test)))" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "test 데이터 적용결과 rmse: 0.921497\n", "CPU times: user 32.1 s, sys: 220 ms, total: 32.3 s\n", "Wall time: 32.1 s\n" ] } ], "source": [ "%%time\n", "# 위에서 학습한 모델을 Test 데이터로 평가합니다\n", "fm = mcmc.FMRegression(n_iter=300, rank=32, random_state=seed)\n", "y_pred = fm.fit_predict(X_train, y_train, X_test)\n", "rmse_t = np.sqrt(mean_squared_error(y_pred, y_test))\n", "print(\"test 데이터 적용결과 rmse: {:4f}\".format(rmse_t))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## **3 추천 알고리즘의 성능 높이기**\n", "### **01 데이터 표준화**\n", "- 훈련데이터에 비해, test 결과값이 낮은건 데이터 분포가 불균질 하기 때문으로 생각된다\n", "- 이를 극복하기 위해 raw_data 를 **표준화(standardization)** 한 후 모델링 합니다\n", "- 표준화 후 학습하는 경우 외부 설정에 따른 민감도가 높아지는걸 볼 수 있습니다" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.9203443782544464" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from sklearn.preprocessing import StandardScaler\n", "scaler = StandardScaler()\n", "y_train_norm = scaler.fit_transform(y_train.reshape(-1, 1)).ravel()\n", "fm = mcmc.FMRegression(n_iter=300, rank=32, random_state=seed)\n", "y_pred = fm.fit_predict(X_train, y_train_norm, X_test)\n", "np.sqrt(mean_squared_error(scaler.inverse_transform(y_pred), y_test))" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "iter: 20 rmse:0.961\n", "iter: 40 rmse:0.943\n", "iter: 60 rmse:0.932\n", "iter: 80 rmse:0.930\n", "iter:100 rmse:0.930\n", "iter:120 rmse:0.932\n", "iter:140 rmse:0.934\n", "iter:160 rmse:0.936\n", "iter:180 rmse:0.939\n", "min rmse: 0.930, argmin: 96\n" ] } ], "source": [ "# 표준화 데이터를 활용하여 반복학습 진행하기\n", "n_iter, rank = 200, 32\n", "step_size, seed = 1, 123\n", "fm = mcmc.FMRegression(n_iter=0, rank=rank, random_state=seed)\n", "# 모델 및 하이퍼 파라미터 초기화\n", "fm.fit_predict(X_train, y_train_norm, X_test)\n", "\n", "rmse_test, rmse_new = [], []\n", "hyper_param = np.zeros((n_iter -1, 3 + 2 * rank), dtype=np.float64)\n", "for nr, i in enumerate(range(1, n_iter)):\n", " fm.random_state = i * seed\n", " y_pred = fm.fit_predict(X_train, y_train_norm, X_test, n_more_iter=step_size)\n", " rmse = np.sqrt(mean_squared_error(scaler.inverse_transform(y_pred), y_test))\n", " rmse_test.append(rmse)\n", " hyper_param[nr, :] = fm.hyper_param_\n", " if i % 20 == 0:\n", " print('iter:{:3} rmse:{:.3f}'.format(i, rmse))\n", "print(\"min rmse: {:.3f}, argmin: {}\".format(np.min(rmse_test), x[np.argmin(rmse_test)]))" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA3kAAAHUCAYAAACH7eHMAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAAIABJREFUeJzs3Xmc1vP6x/HX1VTSKamMQlLIrixzUHZKsisK/WQtUSpZooPTkSzZkmxZOyFLluyOfRc5yJGOyimK0iLaSM31++O6R3fTTM1MM/Odmfv9fDzmcc/93ea6mem+r+/n87kuc3dERERERESkaqiWdAAiIiIiIiJSepTkiYiIiIiIVCFK8kRERERERKoQJXkiIiIiIiJViJI8ERERERGRKkRJnoiIiIiISBWiJE9ERERERKQKUZInIiIiIiJShSjJExERERERqUKqJx1AUW2yySberFmzpMMQEZEy9umnn85z9+yk46gs9P4oIpI5ivoeWaQkz8y6Al2AlcCH7j40bZ8BQ4DGwDJgurvfYGbZwOC0y+wCDHf3x82sLXABsASY6e791xVDs2bNmDBhQlHCFRGRSszMZiQdQ2Wi90cRkcxR1PfIdSZ5ZlYXOBXo4O5uZqPNrIW7T0kd0g5Y5u5npo7vbmYt3X0i0DPtOk8Cz6eSwsuAI9z9dzO72szaufurxXuJIiIiIiIikl9R1uS1AV51d089HwccnLZ/KdAw7Xk20Dr9Ama2F/C1uy8FtgMmufvvqd3P5Lte+nk9zGyCmU2YO3duEUIVERERERHJbEVJ8hoCC9KeLyAtqXP394BJZnafmQ0DHKid7xr9gBFFuV46dx/p7jnunpOdreUZIiIiIiIi61KUNXnzgZ3TnjdIbfuTu48ERgKYWS/gx7x9ZtYCWOLus9OuV39t1xMRqWz++OMPZs6cyW+//ZZ0KJVGrVq1aNKkCTVq1Eg6lConE38f9fskIrJKUZK88UBfM7slNWXzGOCagg40s3pAZ+CItM0XAsPSnk8FdjGzDVJTNo8F3i5J8CIiFcXMmTOpW7cuzZo1I5Yey9q4O/Pnz2fmzJk0b9486XCqnEz7fdTvk4jI6taZ5Ln7QjMbDYwxsxXA5+4+OW9/qpDKbUAusAnQ192XpPZtCmS7+1dp11tpZoOBh81sMTAX+FdpvigRkfL222+/ZcwH6tJgZjRs2BCtty4bmfb7qN8nEZHVFamFgruPAcakb0tVy+zs7iuB3oWc9xPQqYDtbwJvFjva9XHggbDvvnBNgYOQIiLrLVM+UJcW/fcqW5n23zfTXq+IVAxPPw2PPAIPPQQbbJB0NKuUuBm6u6+RvFVoS5aA+giJiIiIiMh6+PZbqFkTvvoKunSBP/6Anj3h0EOTjmyVolTXrBp22gm+/jrpKEREykz37t2ZPXv2ug9M895773HdddeVUUQiqzvrrLP48ccfC93/7rvvcu2115ZjRCIihZs/H/73v9W3TZsGO+4IW24Jhx8e39eoAa+8kkyMhSnxSF6ls9NOMHo0/PorbLRR0tGISFXWrx98/nnpXnO33WDYsLUe8scff7BixYpiXXbFihXFPkcql4R+HQu0cuVKVq5cWeL9IiLl4aef4K9/he++i+dt28I//gFt2sDAgVC9Olx/fSSBvXvDySdHkjd0aLJxp8usJA9iNG/vvZONRUSklD344IN8/PHHDBo0iD59+lC/fn2uuOIKNt54Y5YuXcpNN93E0qVLufDCC9l0001p1qwZbdu2ZcSIEfzwww80btyYs88++8/rjR49mgkTJvD9999z4YUXctNNN7H99tuzfPlyFi9ezE477cT06dOZPXs2Q4cOZcstt6RXr15Ur16d6tWrc/311/Pjjz+uEUPdunUT/K8k5W3QoEH8+uuvrFixgqOPPvrP7aNHj+a5554jJyeHefPm0bRpU3r3juX9L730EvPnz2f58uU0bNiQq666qsBrtWvXLpHXJCKVw08/wfnnw/jx8M9/wgEHFP3cTz+NBO+ii6B+fRg+HPbbD848Ex5/HK68Mm6g5TnsMLjsMvjxR9hss9J/LSWReUnepElK8kSkbJVkiGM9nX766bz11lsMGjSIJk2acMoppzB06FCaNGnCyy+/zMiRI2nZsiVbbbUVQ4YM+fO83r178957762W4EGMqPz222889dRTAFx++eX06dOHzTbbjAEDBgBwyy238OabbzJ69Gj69OnDtGnTeO655/7sUzZgwIA1YrjwwgvL6b+I5Eng1/FPzZo14+OPP6ZOnTqMGDGC+vWjTe7KlStp1qwZl1xyCQAnn3wynTt3BqBVq1bccsstALRv356lS5dSu3btNa6lJE9ECuIOTzwBvXrFBL7GjeGQQ6L24kUX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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "values = np.arange(1, n_iter)\n", "burn_in = 5\n", "x = values * step_size\n", "x = x[burn_in:]\n", "\n", "fig, axes = plt.subplots(nrows=2, ncols=2, sharex=True, figsize=(15, 8))\n", "axes[0,0].plot(x, rmse_test[burn_in:], label='test rmse', color=\"r\")\n", "axes[0,1].plot(x, hyper_param[burn_in:,0], label='alpha', color=\"b\")\n", "axes[1,0].plot(x, hyper_param[burn_in:,1], label='lambda_w', color=\"g\")\n", "axes[1,1].plot(x, hyper_param[burn_in:,3], label='mu_w', color=\"g\")\n", "axes[0,0].legend(); axes[0,1].legend(); axes[1,0].legend(); axes[1,1].legend()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### **02 상황인지 추천 모델 만들기**\n", "- 사용자와 아이템 이외의 정보를 활용하는 **context-aware recommandation** 모델링\n", "- 개봉연도, 사용자나이, 성별, 평가년도 등 **다양한 필드간의 조합을 활용하여**(인수분해) 모델을 구성합니다\n", "- 즉, **특징값을 다르게 조합해가며** 어떤 효과가 있는지 확인해 본다.\n", "- 실시간 모델링을 원하는 경우 **SGD** 학습을 사용합니다" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "rmse: 0.897 분석필드 목록 ['user_id', 'movie_id', 'release_year', 'age', 'sex', 'year', 'rating']\n", "rmse: 0.894 분석필드 목록 ['user_id', 'movie_id', 'age', 'sex', 'year', 'rating']\n", "rmse: 0.885 분석필드 목록 ['user_id', 'movie_id', 'sex', 'year', 'rating']\n", "rmse: 0.892 분석필드 목록 ['user_id', 'movie_id', 'age', 'sex', 'rating']\n", "rmse: 0.888 분석필드 목록 ['user_id', 'movie_id', 'rating']\n", "CPU times: user 2min 55s, sys: 476 ms, total: 2min 55s\n", "Wall time: 2min 55s\n" ] } ], "source": [ "%%time\n", "lens['user_id'] = lens['user_id'].astype(str)\n", "lens['movie_id'] = lens['movie_id'].astype(str)\n", "lens['year'] = lens['date'].apply(str).str.split('-').str.get(0)\n", "lens['release_year'] = lens['release_date'].apply(str).str.split('-').str.get(2)\n", "\n", "rmse_test = []\n", "n_iter, rank, seed = 500, 8, 123\n", "candidate_columns = [\n", " ['user_id','movie_id', 'release_year', 'age', 'sex', 'year', 'rating'],\n", " ['user_id','movie_id', 'age', 'sex', 'year', 'rating'],\n", " ['user_id','movie_id', 'sex', 'year', 'rating'],\n", " ['user_id','movie_id', 'age', 'sex', 'rating'], \n", " ['user_id','movie_id', 'rating'],\n", "]\n", "\n", "# filtered_lens = filtered_lens.astype('float') # 성별등 숫자만 있진 않아서 오류를 발생\n", "import warnings\n", "warnings.simplefilter('ignore')\n", "for column in candidate_columns:\n", " filtered_lens = lens[column].dropna() # 누락된 필드들은 제거합니다\n", " v = DictVectorizer()\n", " X_more_feature = v.fit_transform(list(filtered_lens.drop('rating', axis=1).T.to_dict().values()))\n", " y_more_feature = filtered_lens['rating'].tolist()\n", " \n", " # 훈련용/검증용을 9:1 로 분할 후, \"y_mf_train\" 평점 데이터를 표준화 합니다\n", " X_mf_train, X_mf_test, y_mf_train, y_mf_test = train_test_split(\n", " X_more_feature, y_more_feature, test_size=0.1, random_state=42)\n", " scaler = StandardScaler() # int64 데이터를 float64로 변환\n", " y_mf_train_norm = scaler.fit_transform(np.array(y_mf_train).reshape(-1, 1)).ravel()\n", " fm = mcmc.FMRegression(n_iter=n_iter, rank=rank, random_state=seed)\n", "\n", " # 모델 및 하이퍼 파라미터 초기화\n", " y_pred = fm.fit_predict(X_mf_train, y_mf_train_norm, X_mf_test)\n", " rmse = np.sqrt(mean_squared_error(scaler.inverse_transform(y_pred.reshape(-1, 1)), y_mf_test))\n", " rmse_test.append(rmse)\n", " print('rmse: {:.3f} 분석목록 {}'.format(rmse,column))" ] }, { "cell_type": "code", "execution_count": 31, "metadata": { "scrolled": false }, "outputs": [ { "data": { "text/plain": [ "(0.88, 0.9)" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# 분석결과의 시각화\n", "ind = np.arange(len(rmse_test))\n", "bar = plt.bar(ind, height=rmse_test)\n", "plt.xticks(ind, ('A조합', 'B조합', 'C조합', 'D조합', 'E조합'))\n", "plt.ylim((0.88, 0.90))" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.3" } }, "nbformat": 4, "nbformat_minor": 2 }