From 43502444f4d17308405251a59f794f89c0dfb290 Mon Sep 17 00:00:00 2001 From: Yueqiu Date: Fri, 22 Jun 2018 23:12:10 -0400 Subject: [PATCH] add neighborhood models --- neighborhood_model.ipynb | 539 ++++++++++++++++++++++++++++++++++++++ neighborhood_model.py | 108 ++++++++ song_index_dictionary.npy | Bin 0 -> 222974 bytes 3 files changed, 647 insertions(+) create mode 100644 neighborhood_model.ipynb create mode 100644 neighborhood_model.py create mode 100755 song_index_dictionary.npy diff --git a/neighborhood_model.ipynb b/neighborhood_model.ipynb new file mode 100644 index 0000000..5427cdc --- /dev/null +++ b/neighborhood_model.ipynb @@ -0,0 +1,539 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Recommedation System with Neighborhood Model\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Load the module neighborhood_model. See neighborhood_model.py\n", + "1. Read in the user-song pair data. \n", + "2. Tune the hyperparameter for the neighborhood model. \n", + "3. Make recommendation based on the model. The recommendation can be made for both user in the read-in data and out.\n", + "4. Showcase for the recommnedation system. Randomly select 10 users. Show the songs they have listened before and the songs we recommend to them." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Read in data" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "from neighborhood_model import *\n", + "import numpy as np\n", + "import pandas as pd\n", + "from scipy.sparse import coo_matrix\n", + "import matplotlib.pyplot as plt\n", + "from sklearn.preprocessing import normalize\n", + "from scipy.sparse import lil_matrix\n", + "from scipy.sparse import csr_matrix\n", + "from scipy.sparse import load_npz\n", + "import scipy.sparse as sp\n", + "%load_ext autoreload\n", + "%autoreload 2\n", + "def load_data(filename):\n", + " df = pd.read_table(filename, sep='\\t', names = ['user_id','song_id','playcount'])\n", + " n_users = df.user_id.unique().shape[0] \n", + " n_songs = df.song_id.unique().shape[0]\n", + " ratings = np.zeros((n_users, n_songs))\n", + " df['user_id'] = df['user_id'].astype('category')\n", + " df['song_id'] = df['song_id'].astype('category')\n", + " parsed_matrix = coo_matrix((df['playcount'].astype(float),(df['user_id'].cat.codes, df['song_id'].cat.codes))).tolil()\n", + " return parsed_matrix\n", + "\n", + "#obtain a subset of the data\n", + "def data_sampling(data, num_users,num_songs):\n", + " num_instances, num_features = data.shape[0], data.shape[1]\n", + " #sample users from the data\n", + " sample_user_index = np.random.choice(num_instances, num_users, replace=False)\n", + " #sample songs from the data\n", + " sample_song_index = np.random.choice(num_features, num_songs, replace=False)\n", + " samples = data[sample_user_index,:]\n", + " samples = samples[:, sample_song_index,]\n", + " return samples\n", + "\n", + "#compute the inverse user frequency of the data reduce weights for commonly occurring songs\n", + "def ivf(x):\n", + " num_user = x.shape[0]\n", + " binary_data = x.copy()\n", + " binary_data[x != 0] = 1\n", + " nj = np.asarray(binary_data.sum(axis = 0)).squeeze()\n", + "\n", + " fj =np.log(num_user/nj)\n", + " for i in range(num_user):\n", + " x[i,:] = x[i,:].multiply(fj)\n", + " return x\n", + "\n", + "#produce the inverse user frequency feature if needed, and normalize the data\n", + "def prep2(delete_user_song, if_ivf):\n", + " if if_ivf == 1:\n", + " #compute ivf of delete_user_song_ivf\n", + " delete_user_song = ivf(delete_user_song)\n", + " user_song_normalized = lil_matrix(normalize(delete_user_song, axis=1),dtype = np.float64)\n", + " return user_song_normalized\n", + "\n", + "def train_test_split(data, size):\n", + "#data should be ndarray format\n", + " test = np.zeros(data.shape)\n", + " train = data.copy()\n", + " for user in range(data.shape[0]):\n", + " test_index = np.random.choice(data[user, :].nonzero()[0], \n", + " size=size, \n", + " replace=False)\n", + " train[user, test_index] = 0.\n", + " test[user, test_index] = data[user, test_index]\n", + " # Test and training are truly disjoint\n", + " assert(np.all((train * test) == 0)) \n", + " train = lil_matrix(train,dtype = np.float64)\n", + " test = lil_matrix(test,dtype = np.float64)\n", + " return train, test\n", + "\n", + "def main_2(num_users, num_songs, thres, rho, user_id, num_recommend, if_ivf = 0):\n", + " user_song_matrix = load_npz('./sparse_matrix.npz')\n", + " raw_data = data_sampling(user_song_matrix, num_users, num_songs)\n", + " data = prep(raw_data,thres)\n", + " model = NeighborhoodModel(rho)\n", + " model.fit(data)\n", + " #print(model.recommend(user_id,num_recommend))\n", + " return model.evaluate()\n", + "\n", + "def main(data, train, test, thres, rho, user_id, num_recommend, if_ivf = 0):\n", + " model = NeighborhoodModel(data, train, test)\n", + " model.fit(rho)\n", + " print(model.recommend(user_id,num_recommend))\n", + " print(model.evaluate())\n", + " user_pref = np.zeros((1, data.shape[1]))\n", + " user_pref[0,0], user_pref[0,22], user_pref[0,222], user_pref[0,2222] = 2, 3, 5, 6\n", + " print(model.recommend_ind(user_pref, 3))\n", + " return 1\n", + "\n", + "def run(train, test, rho):\n", + " model = NeighborhoodModel()\n", + " model.fit(train, test, rho)\n", + " return model.evaluate()\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "f = './sample_matrix.npz'\n", + "#read in the data produced by preprocessing.py\n", + "raw_data = sp.load_npz(f)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Parameter Tuning" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "import operator\n", + "\n", + "def parameter_tuning(raw_data, test_size, rho_range = [1,1.5, 1.999, 2.5, 3]):\n", + " '''\n", + " Tune two parameter: \n", + " if_ivf: whether to use Inverse User Frequency or original data feature\n", + " rho: case amplificatio parameter\n", + " Inputs:\n", + " - raw_data: a sparse matrix of size(#users, #songs)\n", + " - test_size: scalar, percent of obs used for testing\n", + " - rho_range: list of rhos used for parameter tuning\n", + " Output:\n", + " - best_para: tuple of best parameter\n", + " '''\n", + " result = {}\n", + " for if_ivf in [0,1]:\n", + " data = prep2(raw_data.copy(), if_ivf = if_ivf)\n", + " train, test = train_test_split(data.toarray(), test_size)\n", + " for rho in [1,1.5, 1.999, 2.5, 3]:\n", + " result[(rho,if_ivf)] = run(train, test, rho)\n", + "\n", + " for key in result:\n", + " print(str(key) + ': ' + str(result[key]))\n", + " best_para = min(result.items(), key=operator.itemgetter(1))[0]\n", + " print('best parameter is rho = ' + str(best_para[0]) + ' if_ivf = ' + str(best_para[1]))\n", + " return best_para" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/hp/anaconda/lib/python3.5/site-packages/scipy/sparse/data.py:111: RuntimeWarning: invalid value encountered in power\n", + " return self._with_data(data ** n)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(2.5, 0): 16.3655613746\n", + "(3, 1): 15.7523197962\n", + "(2.5, 1): 24.4495429034\n", + "(1.5, 0): 16.8063741018\n", + "(1.999, 1): 24.3087870156\n", + "(1.999, 0): 16.4543514092\n", + "(1.5, 1): 24.3728337994\n", + "(1, 0): 14.865758076\n", + "(3, 0): 13.3545845664\n", + "(1, 1): 16.5995817516\n", + "best parameter is rho = 3 if_ivf = 0\n" + ] + } + ], + "source": [ + "best_para = parameter_tuning(raw_data, test_size = 20,rho_range = [2.5, 3,4,5,10])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Recommendation system" + ] + }, + { + "cell_type": "code", + "execution_count": 95, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def recommend(raw_data, best_para, num_rec, if_outside_user = 0, user_id = None, user_pref = None):\n", + " '''\n", + " Recommend songs using neighborhood models, produce song_ids for given user_id.\n", + " Inputs:\n", + " - raw_data: a sparse matrix of size(#users, #songs)\n", + " - best_para: tuple of best parameter\n", + " - if_outside_user: logical parameter that indicates whether the user is in the read-in data\n", + " - id of the user\n", + " - user_pref: if the user is not in the read-in data, this parameter is a list \n", + " of # of times of each song that the user has listened to (the same format in the read-in data)\n", + " Output:\n", + " - rec_song: a list of song_ids generated by the neighborhood model.\n", + " '''\n", + " rho, if_ivf= 1.5, best_para[1]\n", + " data = prep2(raw_data, if_ivf = if_ivf)\n", + " model = NeighborhoodModel()\n", + " if if_outside_user == 0:\n", + " rec_song = model.recommend(data,user_id = user_id, num_rec = num_rec)\n", + " else:\n", + " \n", + " rec_song = model.recommend_out(data, user_pref, num_rec = num_rec)\n", + " return rec_song" + ] + }, + { + "cell_type": "code", + "execution_count": 96, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[6962]" + ] + }, + "execution_count": 96, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "recommend(raw_data, best_para, if_outside_user = 0, num_rec = 1, user_id = 23)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Recommendation system showcase" + ] + }, + { + "cell_type": "code", + "execution_count": 98, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def top_k_song(raw_data, user_id, k):\n", + " # get the most listened k song ids for the specific user \n", + " song_arr = np.asarray(raw_data[user_id, :].todense()).squeeze()\n", + " topksong = np.argsort(song_arr)[-k:]\n", + " return topksong" + ] + }, + { + "cell_type": "code", + "execution_count": 99, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "#select 10 random users\n", + "user_ids = np.random.choice(num_instances, 10)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 102, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "num_user_rec = 10\n", + "rec_dict = {}\n", + "read_dict = np.load('song_index_dictionary.npy').item()\n", + "\n", + "for user_id in user_ids:\n", + " # the list of song ids generated by the recommendation system\n", + " rec_song = np.array([read_dict[x] for x in recommend(raw_data, best_para, if_outside_user = 0, num_rec = 3, user_id = user_id)])\n", + " #the list of 10 song ids that the user listened to most frequently.\n", + " topksong = np.array([read_dict[x] for x in top_k_song(raw_data, user_id, 10)])\n", + " rec_song_name = []\n", + " topksong_name = []\n", + " # convert song ids to the name of the songs using unique_tracks.txt for both rec_song and topksong\n", + " # store the song name for each user in dictionary rec_dict, key is the user_id, \n", + " # value is a list of song names and artists\n", + " for i in range(rec_song.shape[0]):\n", + " song_id = rec_song[i]\n", + " song_name = None\n", + " searchfile = open(\"unique_tracks.txt\", \"r\")\n", + " for line in searchfile:\n", + " if song_id in line:\n", + " song_arr = line.rsplit('', 2)\n", + " song_name = song_arr[2].rstrip()\n", + " artist_name = song_arr[1].rstrip()\n", + " rec_song_name.append((song_name,artist_name))\n", + " searchfile.close()\n", + " for i in range(topksong.shape[0]):\n", + " song_id = topksong[i]\n", + " song_name = None\n", + " searchfile = open(\"unique_tracks.txt\", \"r\")\n", + " for line in searchfile:\n", + " if song_id in line: \n", + " song_arr = line.rsplit('', 2)\n", + " song_name = song_arr[2].rstrip()\n", + " artist_name = song_arr[1].rstrip()\n", + " topksong_name.append((song_name,artist_name))\n", + " searchfile.close()\n", + " rec_dict[user_id] = (topksong_name, rec_song_name)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 103, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{279: ([('Prête A Porter', 'Paris Combo'),\n", + " ('Invocation: Attica Blues', 'Archie Shepp / William Kunstler'),\n", + " (\"Where You'll Find Me Now\", 'Neutral Milk Hotel'),\n", + " ('Under The Gun', 'The Killers'),\n", + " ('Anthems For a Seventeen Year-Old Girl', 'Broken Social Scene'),\n", + " ('Angry Chair', 'Alice In Chains'),\n", + " ('Would You Go With Me', 'Josh Turner'),\n", + " ('Spilt Needles (Album)', 'The Shins'),\n", + " ('Comet Course', 'Flying Lotus'),\n", + " ('Jeane', 'The Smiths')],\n", + " [('Scream', 'Michael Jackson'),\n", + " ('Window Blues', 'Lykke Li'),\n", + " ('I Believe In A Thing Called Love', 'The Darkness')]),\n", + " 854: ([(\"It's My Party\", 'Lesley Gore'),\n", + " ('People', 'Journey'),\n", + " ('When A Man Loves A Woman', 'Percy Sledge'),\n", + " ('Window Blues', 'Lykke Li'),\n", + " ('Ride For You (Album Version)', 'Danity Kane'),\n", + " (\"Un-thinkable (I'm Ready)\", 'Alicia Keys'),\n", + " ('The Wild Boys', 'Duran Duran'),\n", + " ('Secret Hell', 'dEUS'),\n", + " (\"Things I Don't Understand\", 'Coldplay'),\n", + " ('So Glad To See You', 'Hot Chip')],\n", + " [('Jerry Was A Race Car Driver', 'Primus'),\n", + " ('Neon', 'John Mayer'),\n", + " ('More Than Everything', 'Gareth Emery')]),\n", + " 986: ([('Ego', 'Beyoncé'),\n", + " ('California One / Youth and Beauty Brigade', 'The Decemberists'),\n", + " ('The Mask (Featuring Ghostface Killah) (Album Version)', 'Danger Doom'),\n", + " ('Sei Lá Mangueira', 'Elizeth Cardoso'),\n", + " ('Times Like These', 'Jack Johnson'),\n", + " ('Never Ending Math Equation', 'Modest Mouse'),\n", + " ('Hallowed Be My Name', 'HAMMERFALL'),\n", + " ('Sit Down. Stand Up', 'Radiohead'),\n", + " ('But Tonight We Dance', 'Rise Against'),\n", + " ('Last Night On Earth [feat. Green Day & The Cast Of American Idiot] (Album Version)',\n", + " 'Green Day')],\n", + " [('Wait', 'Alexi Murdoch'),\n", + " ('Country Road', 'James Taylor'),\n", + " ('Tabaco Y Chanel', 'Bacilos')]),\n", + " 992: ([('Do You Wanna', 'The Kooks'),\n", + " ('The Fake Headlines', 'The New Pornographers'),\n", + " ('Murder The Government', 'NOFX'),\n", + " ('Let Me', 'Rihanna'),\n", + " ('Middle Man', 'Jack Johnson'),\n", + " ('Stilettos', 'Holy Fuck'),\n", + " ('Made For You', 'OneRepublic'),\n", + " ('Sex In Secret', 'Cabaret Voltaire'),\n", + " ('Jazz Street', 'Jaco Pastorius_ Brian Melvin'),\n", + " ('This Is Nowhere', 'The Airborne Toxic Event')],\n", + " [('Jerry Was A Race Car Driver', 'Primus'),\n", + " ('Neon', 'John Mayer'),\n", + " ('Ego', 'Beyoncé')]),\n", + " 1722: ([('Contra La Corriente', 'Marc Anthony'),\n", + " ('Hallowed Be My Name', 'HAMMERFALL'),\n", + " ('Ego', 'Beyoncé'),\n", + " ('Daughter', 'Bassholes'),\n", + " (\"Soon We'll Be Found\", 'Sia'),\n", + " ('(iii)', 'The Gerbils'),\n", + " ('The General Specific (Album)', 'Band Of Horses'),\n", + " (\"I'm Done\", 'The Pussycat Dolls'),\n", + " ('Diamonds From Sierra Leone', 'Kanye West / Jay-Z'),\n", + " ('God Put A Smile Upon Your Face', 'Coldplay')],\n", + " [('New Direction (Original Version)', 'Echo And The Bunnymen'),\n", + " ('Welcome To Hollywood', 'Beyoncé feat. Jay-Z'),\n", + " (\"Can't Help But Wait (Album Version)\", 'Trey Songz')]),\n", + " 1997: ([(\"Everything's Magic\", 'Angels and Airwaves'),\n", + " ('A Beautiful Mine', 'RJD2'),\n", + " ('Esisti Tu', 'Valerio Scanu'),\n", + " ('Where The White Boys Dance', 'The Killers'),\n", + " ('Itkupilli (2001 Digital Remaster)', 'Neljä Ruusua'),\n", + " ('22', 'Lily Allen'),\n", + " ('Puto', 'Molotov'),\n", + " ('Proud Mary', 'Creedence Clearwater Revival'),\n", + " ('The KKK Took My Baby Away (LP Version )', 'Ramones'),\n", + " ('The Slow Descent Into Alcoholism', 'The New Pornographers')],\n", + " [('Winter Song', 'Sara Bareilles'),\n", + " ('More Than Everything', 'Gareth Emery'),\n", + " ('New Direction (Original Version)', 'Echo And The Bunnymen')]),\n", + " 2937: ([('Sincerité Et Jalousie', 'Alliance Ethnik'),\n", + " ('A Rush Of Blood To The Head', 'Coldplay'),\n", + " ('Clint Eastwood (Ed Case/Sweetie Irie Refix) (Edit)', 'Gorillaz'),\n", + " ('The Caterpillar', 'The Cure'),\n", + " ('De Weg', 'Guus Meeuwis'),\n", + " ('Ballad Of A Comeback Kid', 'The New Pornographers'),\n", + " ('I Found A Whistle', 'MGMT'),\n", + " ('Ragoo', 'Kings Of Leon'),\n", + " ('One Thing', 'Finger Eleven'),\n", + " ('Winter Song', 'Sara Bareilles')],\n", + " [('Rebirth of Slick (Cool Like Dat) (2005 Digital Remaster) (Explicit)',\n", + " 'Digable Planets'),\n", + " (\"Still Don't Give A Fuck\", 'Eminem'),\n", + " ('Slam', 'Pendulum')]),\n", + " 3038: ([('Zero', 'Yeah Yeah Yeahs'),\n", + " ('I Thought I Saw Your Face Today', 'She & Him'),\n", + " ('Crossfire', 'Rick Cua'),\n", + " ('So Long', 'Rilo Kiley'),\n", + " ('Rayando el sol', 'Maná'),\n", + " ('Escapémonos', 'Marc Anthony;Jennifer Lopez'),\n", + " ('If It Means A Lot To You', 'A Day To Remember'),\n", + " (\"Everything's Ruined\", 'Faith No More'),\n", + " ('Pop Champagne', 'Jim Jones & Ron Browz featuring Juelz Santana'),\n", + " ('Firestarter', 'The Prodigy')],\n", + " [('What Else Is There?', 'Röyksopp'),\n", + " ('Circling', 'Four Tet'),\n", + " ('Le Corps de Notre Seigneur', 'Choeur Arménien de Sofia')]),\n", + " 3099: ([('Tiger Feet', 'Mud'),\n", + " ('Girl Money', 'Kix'),\n", + " ('Zebra', 'Beach House'),\n", + " ('A Day Without Me', 'U2'),\n", + " ('Lady Picture Show (LP Version)', 'Stone Temple Pilots'),\n", + " ('Black Horse And The Cherry Tree (Radio Version)', 'KT Tunstall'),\n", + " ('Making Time', 'The Creation'),\n", + " ('Seven Nation Army (Album Version)', 'The White Stripes'),\n", + " ('Breadfan', 'Metallica'),\n", + " (\"Don't Look Back\", 'Boston')],\n", + " [('More Than Everything', 'Gareth Emery'),\n", + " ('Hallowed Be My Name', 'HAMMERFALL'),\n", + " ('Ego', 'Beyoncé')]),\n", + " 3117: ([('Hasta Ayer', 'Marc Anthony'),\n", + " ('I Kissed A Girl', 'Katy Perry'),\n", + " ('Breathe . Something/Stellar STar', 'Flying Lotus'),\n", + " ('Saturdays', 'Cut Copy'),\n", + " ('Crackers and Cheese', 'Tea Leaf Green'),\n", + " ('California One / Youth and Beauty Brigade', 'The Decemberists'),\n", + " ('Times Like These', 'Foo Fighters'),\n", + " (\"Don't Stop The Music\", 'Jamie Cullum'),\n", + " ('Again I Go Unnoticed', 'Dashboard Confessional'),\n", + " (\"I'm Just A Man\", 'Jason Aldean')],\n", + " [('Hallowed Be My Name', 'HAMMERFALL'),\n", + " ('Ego', 'Beyoncé'),\n", + " ('Kalopsia', 'The Blizzard')])}" + ] + }, + "execution_count": 103, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# key is the user_id, \n", + "# value is a list of song names and artists\n", + "# first list of the values are the song names of the past listening hitory\n", + "# second list of the values are the song name of the \n", + "rec_dict" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python [conda env:anaconda]", + "language": "python", + "name": "conda-env-anaconda-py" + }, + "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.5.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/neighborhood_model.py b/neighborhood_model.py new file mode 100644 index 0000000..9d61561 --- /dev/null +++ b/neighborhood_model.py @@ -0,0 +1,108 @@ +import numpy as np +import pandas as pd +from scipy.sparse import coo_matrix +import matplotlib.pyplot as plt +from sklearn.preprocessing import normalize +from scipy.sparse import lil_matrix + + +class NeighborhoodModel(object): + + def __init__(self): + + self.pred_ranks_percentile = None + self.pred_ranks = None + self.num_instances_train, self.num_features_train = None, None + #case amplification factor + + def fit(self, train, test, rho): + self.train = train + self.test = test + pred = self.predict(self.train, rho) + self.pred_ranks, self.pred_ranks_percentile = self.ranking(pred) + + #output the predicted score for each item for each user + def predict(self, x, rho): + v_bar = lil_matrix(x.sum(axis = 1)) + weight = (x.dot(x.T)).multiply(v_bar.dot(v_bar.T).power(-1/2)).power(rho) + + for i in range(weight.shape[0]): + weight[i,i] = 0 + pred = weight.dot(x).todense() + return pred + + def predict_ind(self, x, user_pref_sparse): + v_bar = lil_matrix(x.sum(axis = 1)) + weight = (user_pref_sparse.dot(x.T)).multiply(v_bar.power(-1/2)) + for i in range(weight.shape[0]): + weight[i,i] = 0 + pred = weight.dot(x).todense() + return pred + + #produce the ranking percentile for each item for each user + def ranking(self, pred): + num_instances_train, num_features_train = pred.shape[0], pred.shape[1] + temp = pred.argsort(axis = 1) + #produce the abosulte ranks for each item for each user + pred_ranks = np.empty_like(temp) + for i in range(num_instances_train): + pred_ranks[i,temp[i,:]] = np.arange(num_features_train - 1, -1, -1) + #convert the ranks to rank percentile + pred_ranks_percentile = pred_ranks / np.max(pred_ranks) * 100 + return pred_ranks, pred_ranks_percentile + + #output expected percentile ranking of a watching unit + def evaluate(self): + test = self.test + + num_instances_train, num_features_train = self.num_instances_train, self.num_features_train + pred_ranks_percentile = self.pred_ranks_percentile + test = test.todense() + metrics = np.sum(np.multiply(test, pred_ranks_percentile))/np.sum(test) + return metrics + + #recommend the top "num_rec" songs to user "user_id" + def recommend(self, data, user_id,rho = 1, num_rec = 3): + pred = self.predict(data, rho) + pred_ranks, pred_ranks_percentile = self.ranking(pred) + song_rank_list = np.asarray(pred_ranks[user_id,:]).squeeze() + #produce the song list sorted by their scores + rank_index = np.argsort(song_rank_list) + rec_list = [] + num = 0 + song_arr = np.asarray(data[user_id,:].todense()).squeeze() + #songs that the user has already listened + song_in_bucket = np.nonzero(song_arr)[0] + for item in rank_index: + if num >= num_rec: + break + #exclude the songs that the user has already listened + if item not in song_in_bucket: + rec_list.append(item) + num += 1 + + return rec_list + +#recommend songs for a user not in the data +#input a array of the times of the songs that the user has listened + def recommend_out(self, data, user_pref, num_rec = 3): + user_pref_sparse = lil_matrix(user_pref, dtype = np.float64) + #similarity_ind = user_pref_sparse.dot(data.T) + #pred = similarity_ind.dot(data).todense() + pred = self.predict_ind(data, user_pref_sparse)[0] + song_rank_list, _ = np.asarray(self.ranking(pred)).squeeze() + rank_index = np.argsort(song_rank_list) + rec_list = [] + num = 0 + song_arr = np.asarray(user_pref).squeeze() + #songs that the user has already listened + song_in_bucket = np.nonzero(song_arr)[0] + for item in rank_index: + if num >= num_rec: + break + #exclude the songs that the user has already listened + if item not in song_in_bucket: + rec_list.append(item) + num += 1 + return rec_list + diff --git a/song_index_dictionary.npy b/song_index_dictionary.npy new file mode 100755 index 0000000000000000000000000000000000000000..2e1171e7c95aea249c4670d5dc8c2398096735b5 GIT binary patch literal 222974 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 z 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⁢k<)Z41&rx*jIi*L33d$b~}=5Vy}z*to&)5cSzvC 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 literal 0 HcmV?d00001