Thông tin tài liệu
ĐẠI HỌC THÁI NGUYÊN TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN & TRUYỀN THÔNG PINTHIP Anon Nghiên cứu phương pháp phân tích ma trận SVD số ứng dụng học máy LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH THÁI NGUN - 2019 Số hóa Trung tâm Học liệu Công nghệ thông tin – ĐHTN http://lrc.tnu.edu.vn ĐẠI HỌC THÁI NGUYÊN TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN & TRUYỀN THÔNG PINTHIP Anon Nghiên cứu phương pháp phân tích ma trận SVD số ứng dụng học máy Chuyên ngành: Khoa học máy tính Mã số: 8480101 LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH Người hướng dẫn khoa học: TS Đàm Thanh Phương THÁI NGUYÊN - 2019 Số hóa Trung tâm Học liệu Công nghệ thông tin – ĐHTN http://lrc.tnu.edu.vn L˝I CAM OAN Tổi xin cam oan: Lun vôn thc s chuyản ng nh Khoa hồc mĂy tnh, tản ã t i Nghiản cứu phữỡng phĂp phƠn tch ma trn SVD v mºt sŁ øng dưng håc m¡y l cỉng tr…nh nghi¶n cøu, t…m hi”u v tr…nh b y tỉi thỹc hiằn dữợi sỹ hữợng dÔn khoa hồc ca TS m Thanh Ph÷ìng, Tr÷íng ⁄i håc Cỉng ngh» Thỉng tin v Truyãn thổng - i hồc ThĂi Nguyản Kt quÊ tm hiu, nghiản cứu lun vôn l ho n to n trung thỹc, khổng vi phm bĐt iãu g… lu“t sð hœu tr‰ tu» v ph¡p lu“t Vi»t Nam N‚u sai, tæi ho n to n chàu trĂch nhiằm trữợc phĂp lut TĐt cÊ cĂc t i li»u, b i b¡o, khâa lu“n, cỉng cư phƒn m•m ca cĂc tĂc giÊ khĂc ữổc sò dửng li lun vôn n y ãu ữổc ch dÔn tữớng minh v• t¡c gi£ v •u câ danh mưc t i li»u tham kh£o Th¡i Nguy¶n, ng y 18 th¡ng n«m 2019 T¡c gi£ lu“n v«n Pinthip Anon i L˝IC MÌN T¡c gi£ xin ch¥n th nh c£m ìn TS m Thanh Ph÷ìng, tr÷íng ⁄i håc Cỉng ngh» thỉng tin v truyãn thổng - i hồc ThĂi Nguyản, l giĂo viản hữợng dÔn khoa hồc  hữợng dÔn tĂc gi£ ho n th nh lu“n v«n n y, xin ÷ỉc c£m ìn c¡c thƒy, cỉ gi¡o tr÷íng ⁄i håc cỉng ngh» thỉng tin v truy•n thỉng nìi t¡c gi£ theo håc v ho n th nh ch÷ìng tr…nh cao håc ¢ nhi»t t…nh gi£ng d⁄y v gióp ï Xin c£m ìn nìi t¡c gi£ cỉng t¡c ¢ t⁄o måi i•u ki»n thu“n lỉi ” t¡c gi£ ho n th nh ch÷ìng tr…nh håc t“p V cuŁi cịng xin c£m ỡn gia nh, bn b, ỗng nghiằp  ng viản, gióp ï t¡c gi£ suŁt thíi gian håc t“p, nghiản cứu v ho n th nh lun vôn ny Xin chƠn th nh cÊm ỡn ThĂi Nguyản, ng y 18 th¡ng n«m 2019 T¡c gi£ lu“n v«n Pinthip Anon ii DANHS CHHNHV 2.1 Minh håa ph¥n t‰ch SVD 2.2 Bi”u di„n SVD d⁄ng thu gån 3.1 V‰ dư v• SVD cho n†n £nh 3.2 V dử vã utility matrix vợi hằ thng Gổi ỵ b i h¡t C ÷ỉc ng÷íi dịng ¡nh gi¡ theo mức t n dĐu ? nãn m u xĂm ứng vợi viằc d liằu chữa tỗn t cì sð dœ li»u Recommendation Systems cƒn ph£ gi¡ trà n y 41 3.3 Gi£ sß feature vector cho mỉi item ữổc cho tron Vợi mỉi user, cƒn t…m mºt mæ h… øng cho mæ hnh thu ữổc l tt nhĐt 3.4 V dử vã utility matrix dỹa trản s mºt user item Mºt c¡ch trüc quan, h nh vi cıa u0 giŁng vỵi u1 u2; u3; u4; u5; u6 Tł â câ th” dü o¡n r‹ng u0 s‡ qua ‚n i2 v… u1 cơng quan t¥m ‚n item n y 3.5 V‰ dư mỉ t£ User-user Collaborative Filtering a trix ban u b) Utility Matrix  ữổc chu'n ho¡ c) U similarity matrix d) Dü o¡n c¡c (normalized) rating thi‚u e) V‰ dư v• c¡ch dü o¡n normalized rating c i1 f) Dü o¡n c¡c (denormalized) ratings cỈn thiu 3.6 Matrix Factorization Utility matrix Y ữổc phƠn t‰ t‰ch cıa hai ma tr“n low-rank X v W iii DANH MƯC KÞ HI U, TØVI TT T R Z C n R jj:jj SV D rank(A) det(A) AT A H kAkF diag(A) trace(A) sng(x) @f @x rxf iv MƯC LƯC Líi cam oan i Líi c£m ìn ii Danh s¡ch h…nh v‡ ii Danh mửc kỵ hiằu, t vit tt Mð iv ƒu Chữỡng MáT Să KI N THC CHU N BÀ 1.1 Mºt sŁ ki‚n thøc v• ⁄i sŁ tuy‚n t‰nh 1.2 Giợi thiằu vã hồc mĂy 18 Chữỡng PHìèNG PH P PH N T CH MA TR N SVD 23 2.1 Ph¥n t ‰ch ma tr“n SVD 23 2.2 Mºt sŁ bi‚n th” cıa SVD 27 Chữỡng MáT Să ÙNG DÖNG CÕA SVD TRONG H¯C M Y 37 3.1 Ph¥n t‰ch SVD øng dưng n†n £nh 37 3.2 Ùng döng SVD hằ gổi ỵ 39 K‚t lu“n chung 63 T i li»u tham kh£o 63 v M U Nhng nôm gn Ơy, AI - Artificial Intelligence (Tr‰ Tu» Nh¥n T⁄o), v cư th” hìn l Machine Learning (Hồc MĂy hoc MĂy Hồc) ni lản nhữ mºt b‹ng chøng cıa cuºc c¡ch m⁄ng cæng nghi»p lƒn thứ tữ (1 - ng cỡ nữợc, nông l÷ỉng i»n, - cỉng ngh» thỉng tin) Tr‰ Tu» NhƠn To ang len lọi v o mồi lắnh vỹc íi sŁng m câ th” chóng ta khỉng nh“n Xe tü h nh cıa Google v Tesla, h» thŁng tü tag khuæn m°t £nh cıa Facebook, træ lỵ Êo Siri ca Apple, hằ thng gổi ỵ sÊn ph'm ca Amazon, hằ thng gổi ỵ phim ca Netflix, m¡y chìi cí v¥y AlphaGo cıa Google DeepMind, , ch¿ l mºt v i væ v n nhœng øng döng cıa AI/Machine Learning [1] Machine Learning l mºt t“p cıa AI Theo ành ngh¾a cıa Wikipedia, Machine learning is the subfield of computer science that gives computers the ability to learn without being explicitly programmed Nâi ìn gi£n, Machine Learning l mºt l¾nh vüc nhä cıa Khoa Håc M¡y T‰nh, nâ câ kh£ n«ng tỹ hồc họi dỹa trản d liằu ữa v o m khỉng cƒn ph£i ÷ỉc l“p tr…nh cư th” Ch‰nh v… v“y, vi»c nghi¶n cøu ph¡t tri”n c¡c thu“t to¡n Hồc mĂy cụng nhữ xƠy dỹng cĂc ứng dửng ang l mt ặi họi rĐt thit ca nhng ngữới l m Khoa håc m¡y t‰nh N•n t£ng to¡n håc cıa Machine Learning Ỉi häi ph£i câ ki‚n thøc cì bÊn vã i s tuyn tnh, ti ữu, xĂc suĐt thng kả Viằc phƠn tch mt ma trn th nh t‰ch cıa nhi•u ma tr“n °c bi»t kh¡c (Matrix Factorization ho°c Matrix Decomposition) mang l⁄i nhi•u ‰ch lỉi quan trång °c bi»t l c¡c thu“t to¡n Håc m¡y nhữ giÊm s chiãu d liằu, nn d liằu, tm hi”u c¡c °c t‰nh cıa dœ li»u, gi£i c¡c h» phữỡng trnh tuyn tnh, clustering, v nhiãu ứng dửng khĂc Recommendation Sys-tem cụng l mt rĐt nhiãu ứng dửng cıa Matrix Factorization SVD (singular value decomposition) l mºt d⁄ng khai trin ca ma trn cõ rĐt nhiãu ứng dửng nhng vĐn ã liản quan n nghch Êo v sŁ hâa c¡c dœ li»u Hi»n ph¥n t‰ch SVD ca ma trn xuĐt hiằn rĐt nhiãu cĂc ứng dửng thỹc t nhữ vã tn hiằu s, tnh cĂc giĂ tr xĐp x kắ thut, cổng nghằ thỉng tin, håc m¡y v ÷ỉc øng dưng c¡c cỉng cư t…m ki‚m tr¶n c¡c websites Tuy nhi¶n, nghi¶n cứu lỵ thuyt liản quan n SVD i vợi hồc viản cao hồc l vĐn ã mợi, chữa gn gụi v chữa d hiu cho hồc viản cn nghiản cứu v• m£ng • t i thó n y Do õ em  lỹa chồn ã t i Nghiản cứu phữỡng phĂp phƠn tch ma trn SVD v mt s øng döng håc m¡y thüc hi»n l m lu“n vôn cao hồc nhm mửc ch ữa n cho ngữới ồc cụng nhữ bÊn thƠn nhng kin thức cỡ bÊn nhĐt vã khai trin SVD v to mt cĂi nhn tng quan vã cĂch khai trin cụng nhữ mt s tnh chĐt, hằ quÊ quan trồng liản quan n dng khai tri”n n y.[2], [8], [11] • t i lu“n vôn n y s nghiản cứu mt nhng phữỡng phĂp Ma-trix Factorization rĐt àp ca i s tuyn tnh Phữỡng phĂp õ cõ tản l Singular Value Decomposition (SVD) Ta s‡ th§y, måi ma tr“n, khỉng nh§t thi‚t l vuổng, ãu cõ th ữổc phƠn tch th nh tch cıa ba ma tr“n °c bi»t Sau â c¡c øng dưng cư th” cıa SVD v• n†n £nh v h» thng gổi ỵ s ữổc nghiản cứu v Ăp dửng Ni dung ca lun vôn gỗm chữỡng: Chữỡng C¡c ki‚n thøc cì sð Ch÷ìng n y tr…nh b y c¡c ki‚n thøc chu'n bà cho vi»c nghi¶n cøu õ l cĂc kin thức giợi thiằu vã hồc mĂy; C¡c ki‚n thøc cì sð v• Image Compresstion v Recommendation System cụng nhữ cĂc kin thức cỡ s vã i sŁ tuy‚n t ‰nh v gi£i t‰ch ma tr“n 1.1 Giợi thiằu vã hồc mĂy 1.2 CĂc kin thức cỡ sð v• Image Compresstion v Recommendation System 1.3 C¡c ki‚n thức cỡ s vã i s tuyn tnh Chữỡng Phữỡng phĂp phƠn tch ma trn SVD Ni dung chữỡng trung v o vĐn ã phƠn tch ma tr“n SVD v c¡c H…nh 3.6: Matrix Factorization Utility matrix Y v W ữổc phƠn tch th nh tch ca hai ma trn low-rank X Chú ỵ rng, x ữổc xƠy dỹng dỹa trản thổng tin mổ tÊ ca item v qu¡ tr…nh x¥y düng n y ºc l“p vỵi qu¡ trành i t…m h» sŁ phị hỉp cho mỉi user Nhữ vy, viằc xƠy dỹng item profile õng vai trặ rĐt quan trồng v cõ Ênh hững trỹc tip lản hiằu nông ca mổ hnh Thảm na, viằc xƠy dỹng tng mổ hnh riảng là cho mỉi user dÔn n kt quÊ chữa thỹc sỹ tt v khổng khai th¡c ÷ỉc °c i”m cıa nhœng users gƒn giŁng BƠy giớ, giÊ sò rng ta khổng cn xƠy dỹng t trữợc cĂc item profile x m vector c trững cho mỉi item n y cõ th ữổc huĐn luyằn ỗng thới vợi mổ hnh ca mỉi user ( Ơy l vector hằ s) iãu n y nghắa l , bi‚n sŁ b i to¡n tŁi ÷u l c£ X v W; â X l ma tr“n cıa to n bº item profiles, mØi h ng tữỡng ứng vợi item, W l ma trn ca to n b user models, mỉi ct tữỡng ứng vợi user Vỵi c¡ch l m n y, chóng ta ang cŁ g›ng x§p x¿ Utility Matrix Y R b‹ng t‰ch cıa hai ma tr“n X R MK vW2R KN MN Thỉng th÷íng, K ÷ỉc chån l mt s nhọ hỡn rĐt nhiãu so vợi M; N Khi â c£ hai ma tr“n X v W •u câ rank khỉng v÷ỉt qu¡ K Ch‰nh v… v“y, ph÷ìng phĂp n y cặn ữổc gồi l Low-Rank Matrix Factorization (Hnh 3.6) Mt s im lữu ỵ: ị tững chnh ng sau Matrix Factorization cho Recommendation Systems l tỗn ti cĂc latent features (tnh chĐt 'n) mổ tÊ sỹ liản quan giœa 53 c¡c items v users V‰ dư vỵi hằ thng gổi ỵ cĂc b phim, tnh chĐt 'n câ th” l h…nh sü, ch‰nh trà, h nh ºng, h i, ; công câ th” l mºt sü k‚t hæp n o â cıa c¡c th” lo⁄i n y; ho°c cơng câ th” l b§t cø i•u g… m chóng ta khỉng thüc sü cƒn °t tản Mỉi item s mang tnh chĐt 'n mt mức n o õ tữỡng ứng vợi cĂc hằ sŁ vector x cıa nâ, h» sŁ c ng cao tữỡng ứng vợi viằc mang tnh chĐt õ c ng cao T÷ìng tü, mØi user cơng s‡ câ xu hữợng thch nhng tnh chĐt 'n n o õ v ÷æc mæ t£ bði c¡c h» sŁ vector w ca nõ Hằ s cao tữỡng ứng vợi viằc user th‰ch c¡c bº phim câ t‰nh ch§t 'n â Gi¡ trà cıa bi”u thøc xw s‡ cao n‚u c¡c th nh phn tữỡng ứng ca x v w ãu cao iãu n y nghắa l item mang cĂc tnh chĐt 'n m user thch, vy th nản gổi ỵ item n y cho user â V• cì b£n, ” t…m nghi»m cıa b i to¡n tŁi ÷u, ta ph£i lƒn l÷ỉt i t…m X v W th nh phƒn cặn li ữổc c nh Nhữ vy, mỉi h ng cıa X s‡ phö thuºc v o to n bº c¡c cºt cıa W Ng÷ỉc l⁄i, mØi cºt cıa W l⁄i phöc thuºc v o to n bº c¡c h ng cıa X Nh÷ v“y, câ nhœng mØi quan h» r ng buºc ch‹ng chàt giœa c¡c th nh phƒn ca hai ma trn trản Tức cn sò dưng thỉng tin cıa t§t c£ ” suy t§t cÊ Vy nản phữỡng phĂp n y cụng ữổc xp v o Collaborative Filtering Trong c¡c b i to¡n thüc t‚, sŁ l÷ỉng items M v sŁ l÷ỉng users N thữớng rĐt lợn Viằc tm cĂc mổ hnh ỡn gi£n gióp dü o¡n ratings cƒn ÷ỉc thüc hi»n mºt cĂch nhanh nhĐt cõ th Neighborhood-based Collaborative Filtering khổng yảu cu viằc learning quĂ nhiãu, quĂ trnh dỹ o¡n (inference), ta cƒn i t…m º similarity cıa user ang xt vợi to n b cĂc users cặn li rỗi suy kt quÊ Ngữổc li, vợi Matrix Factorization, vi»c learning câ th” hìi phøc t⁄p mºt chót v… ph£i l°p i l°p l⁄i vi»c tŁi ÷u mºt ma trn c nh ma trn cặn li, viằc inference ìn gi£n hìn v… ta ch¿ cƒn l§y t‰ch cıa hai vector xw , mØi vector câ º d i K l mt s nhọ hỡn nhiãu so vợi M; N V“y n¶n qu¡ 54 tr…nh inference khỉng y¶u cƒu kh£ n«ng t‰nh to¡n cao Vi»c n y khi‚n nâ phị hỉp vỵi c¡c mỉ h…nh câ t“p dœ liằu lợn Viằc lữu tr hai ma trn X v W yảu cu lữổng b nhợ nhọ so vợi vi»c l÷u to n bº Similarity matrix Neighborhood-based Collaborative Filtering Cư th”, ta cƒn bº nhỵ ” chøa K(M + N) phn tò 2 thay v lữu M hoc N ca Similarity matrix XƠy dỹng v ti ữu h m mĐt mĂt H m mĐt mĂt: Tữỡng tỹ nhữ Content-based Recommendation Sys- tems, viằc xƠy dỹng h m mĐt mĂt cụng ữổc dỹa trản cĂc th nh phn  ữổc iãn ca Utility Matrix Y cõ khĂc mºt chót l khỉng câ th nh phƒn bias v bi‚n tŁi ÷u l c£ X v W L(X; W) = â rmn = n‚u item thø m ¢ ÷ỉc ¡nh gi¡ bði user thø n, jj jj F l Frobineous norm, tøc c«n b“c hai cıa tng bnh phữỡng tĐt cÊ cĂc phn tò ca ma tr“n (giŁng vỵi norm vector), s l to n bº sŁ ratings ¢ câ Th nh phƒn thø nh§t ch‰nh l trung b…nh sai sŁ cıa mỉ h…nh Th nh phƒn thø hai h m m§t m¡t ph‰a tr¶n l l regularization, gióp tr¡nh overfitting Gi¡ tr ratings thữớng l cĂc giĂ tr  ữổc chu'n ho¡, b‹ng c¡ch trł mØi h ng cıa Utility Matrix i trung b…nh cºng cıa c¡c gi¡ trà ¢ bi‚t cıa h ng â (item-based) ho°c trł mØi cºt i trung b…nh cºng cıa c¡c gi¡ trà ¢ bi‚t ct õ (userbased) Trong mt s trữớng hổp nhĐt nh, ta khỉng cƒn chu'n ho¡ ma tr“n n y, nh÷ng k–m theo â ph£i câ th¶m c¡c kÿ thu“t kh¡c giÊi quyt vĐn ã thiản lằch rating Viằc ti ữu ỗng thới X, W l tữỡng i phức tp, thay v o õ, phữỡng phĂp ữổc sò dưng l lƒn l÷ỉt tŁi ÷u mºt ma tr“n cŁ ành ma tr“n kia, tỵi hºi tư Ti ữu h m mĐt mĂt: Khi c nh X, vi»c tŁi ÷u W ch‰nh l b i to¡n tŁi ÷u Content-based 55 Recommendation Systems: Khi cŁ ành W, viằc ti ữu X ữổc ữa vã ti ữu h m: Hai b i to¡n n y s‡ ÷ỉc tŁi ÷u b‹ng Gradient Descent Chóng ta câ th” thĐy rng b i toĂn 3.2.14cõ th ữổc tĂch th nh N b i to¡n nhä , mØi b i toĂn ứng vợi viằc i ti ữu mt ct ca ma tr“n W L(wn) = V… bi”u thøc d§u user ang x†t, ta câ th” P bði c¡c h ng tữỡng ứng vợi cĂc items  ữổc rated â, v t÷ìng øng Khi â: (3.2.17) v ⁄o h m cıa nâ: (3.2.18) V“y cæng thøc c“p nh“t cho mØi cºt cıa W l : (3.2.19) wn = w n T÷ìng tü nh÷ th‚, mØi cºt cıa X tøc vector cho mØi item, s‡ ÷ỉc t…m b‹ng c¡ch tŁi ÷u: L (xm) = °t Wm l ma tr“n ÷æc t⁄o b‹ng c¡c cºt cıa gi¡ item â v y^ m vector ratings t÷ìng øng 3.2.20 trð th nh L(xm) = 56 Tữỡng tỹ nhữ trản, cổng thức cp nht cho h ng ca X s cõ dng: xm = xm 3.2.4 K‚t qu£ t‰nh to¡n vỵi python v CSDL MovieLens class MF Khði t⁄o v chu'n ho¡: import pandas as pd import numpy as np from sklearn.metrics.pairwise import cosine_similarity from scipy import sparse class MF(object): """docstring for CF""" def init (self, Y_data, K, lam = 0.1, Xinit = None, Winit = None, learning_rate = 0.5, max_iter = 1000, print_every = 100, user_based = 1): self.Y_raw_data = Y_data self.K = K # regularization parameter self.lam = lam # learning rate for gradient descent self.learning_rate = learning_rate # maximum number of iterations self.max_iter = max_iter # print results after print_every iterations self.print_every = print_every # user-based or item-based self.user_based = user_based # number of users, items, and ratings Remember to add since id starts from self.n_users = int(np.max(Y_data[:, 0])) + self.n_items = int(np.max(Y_data[:, 1])) + self.n_ratings = Y_data.shape[0] if Xinit is None: # new self.X = np.random.randn(self.n_items, K) else: # or from saved data self.X = Xinit if Winit is None: self.W = np.random.randn(K, self.n_users) else: # from daved data self.W = Winit # normalized data, update later in normalized_Y function self.Y_data_n = self.Y_raw_data.copy() def normalize_Y(self): if self.user_based: user_col = item_col = n_objects = self.n_users # if we want to normalize based on item, just switch first two columns of data else: # item bas user_col = item_col = 57 n_objects = self.n_items users = self.Y_raw_data[:, user_col] self.mu = np.zeros((n_objects,)) for n in range(n_objects): # row indices of rating done by user n # since indices need to be integers, we need to convert ids = np.where(users == n)[0].astype(np.int32) # indices of all ratings associated with user n item_ids = self.Y_data_n[ids, item_col] # and the corresponding ratings ratings = self.Y_data_n[ids, 2] # take mean m = np.mean(ratings) if np.isnan(m): m = # to avoid empty array and nan value self.mu[n] = m # normalize self.Y_data_n[ids, 2] = ratings - self.mu[n] T‰nh gi¡ trà h m m§t m¡t: def loss(self): L=0 for i in range(self.n_ratings): # user, item, rating n, m, rate = int(self.Y_data_n[i, 0]), int(self.Y_data_n[i, 1]), self.Y_data_n[i, 2] L += 0.5*(rate self.X[m, :].dot(self.W[:, n]))**2 # take average L /= self.n_ratings # regularization, don’t ever forget this L += 0.5*self.lam*(np.linalg.norm(self.X, ’fro’) + np.linalg.norm(self.W, ’fro’)) return L X¡c ành c¡c items ÷ỉc ¡nh gi¡ bði user, v users v c¡c ratings t÷ìng øng: def get_items_rated_by_user(self, user_id): """ get all items which are rated by user user_id, and the corresponding ratings """ ids = np.where(self.Y_data_n[:,0] == user_id)[0] item_ids = self.Y_data_n[ids, 1].astype(np.int32) # indices need to be integers ratings = self.Y_data_n[ids, 2] return (item_ids, ratings) def get_users_who_rate_item(self, item_id): """ get all users who rated item item_id and get the corresponding ratings """ ids = np.where(self.Y_data_n[:,1] == item_id)[0] user_ids = self.Y_data_n[ids, 0].astype(np.int32) ratings = self.Y_data_n[ids, 2] return (user_ids, ratings) 58 ¢ ¡nh gi¡ item C“p nh“t X, W def updateX(self): for m in range(self.n_items): user_ids, ratings = self.get_users_who_rate_item(m) Wm = self.W[:, user_ids] # gradient grad_xm = -(ratings - self.X[m, :].dot(Wm)).dot(Wm.T)/self.n_ratings + \ self.lam*self.X[m, :] self.X[m, :] -= self.learning_rate*grad_xm.reshape((self.K,)) def updateW(self): for n in range(self.n_users): item_ids, ratings = self.get_items_rated_by_user(n) Xn = self.X[item_ids, :] # gradient grad_wn = -Xn.T.dot(ratings - Xn.dot(self.W[:, n]))/self.n_ratings + \ self.lam*self.W[:, n] self.W[:, n] -= self.learning_rate*grad_wn.reshape((self.K,)) Phƒn thu“t to¡n ch‰nh: def fit(self): self.normalize_Y() for it in range(self.max_iter): self.updateX() self.updateW() if (it + 1) % self.print_every == 0: rmse_train = self.evaluate_RMSE(self.Y_raw_data) print ’iter =’, it + 1, ’, loss =’, self.loss(), ’, RMSE train =’, rmse_train Dü o¡n: def pred(self, u, i): """ predict the rating of user u for item i if you need the un """ u = int(u) i = int(i) if self.user_based: bias = self.mu[u] else: bias = self.mu[i] pred = self.X[i, :].dot(self.W[:, u]) + bias # truncate if results are out of range [0, 5] if pred < 0: return if pred > 5: return return pred def pred_for_user(self, user_id): """ predict ratings one user give all unrated items """ 59 ids = np.where(self.Y_data_n[:, 0] == user_id)[0] items_rated_by_u = self.Y_data_n[ids, 1].tolist() y_pred = self.X.dot(self.W[:, user_id]) + self.mu[user_id] predicted_ratings= [] for i in range(self.n_items): if i not in items_rated_by_u: predicted_ratings.append((i, y_pred[i])) return predicted_ratings ¡nh gi¡ k‚t qu£ b‹ng c¡ch o Root Mean Square Error: def evaluate_RMSE(self, rate_test): n_tests = rate_test.shape[0] SE = # squared error for n in range(n_tests): pred = self.pred(rate_test[n, 0], rate_test[n, 1]) SE += (pred - rate_test[n, 2])**2 RMSE = np.sqrt(SE/n_tests) return RMSE p dưng l¶n MovieLens 100k r_cols = [’user_id’, ’movie_id’, ’rating’, ’unix_timestamp’] ratings_base = pd.read_csv(’ml-100k/ub.base’, sep=’\t’, names=r_cols, encoding=’latin-1’) ratings_test = pd.read_csv(’ml-100k/ub.test’, sep=’\t’, names=r_cols, encoding=’latin-1’) rate_train = ratings_base.as_matrix() rate_test = ratings_test.as_matrix() # indices start from rate_train[:, :2] -= rate_test[:, :2] -= K‚t qu£ n‚u s÷ dưng c¡ch chu'n ho¡ düa tr¶n user: rs = learning_rate = 0.75, max_iter = 100, user_based = 1) rs.fit() # evaluate on test RMSE print ’\nUser-based MF, RMSE =’, RMSE iter iter iter iter iter iter iter iter iter iter MF(rate_train, K = 10, lam = 1, print_every = 10, = rs.evaluate_RMSE(rate_test) = 10 , loss = = 20 , loss = = 30 , loss = = 40 , loss = = 50 , loss = = 60 , loss = = 70 , loss = = 80 , loss = = 90 , loss = = 100 , loss = 0.257675693217 User-based MF, RMSE = 1.06037991127 Ta nh“n th§y r‹ng gi¡ trà loss gi£m dƒn v RMSE train công gi£m dƒn s 60 vặng lp tông lản RMSE cõ cao hìn so vỵi Neighborhood-based Collaborative Filtering ( 0.99) mºt chót vÔn tt hỡn kt quÊ ca Content-based Recommendation Systems rĐt nhiãu ( 1.2) Nu chu'n hoĂ dỹa trản item: rs = MF(rate_train, K = 10, lam = user_based = 0) rs.fit() # evaluate on test = rs.evaluate_RMSE(rate_test) print ’\nItem-based MF, RMSE =’, RMSE iter = 10 , loss = iter = 20 , loss = iter = 30 , loss = iter = 40 , loss = iter = 50 , loss = iter = 60 , loss = iter = 70 , loss = iter = 80 , loss = iter = 90 , loss = iter = 100 , loss = 0.240683073898 , RMSE train = 0.996180903957 RMSE Item-based MF, RMSE = 1.04980475198 K‚t qu£ câ tŁt hìn mºt chót Khi ch⁄y vỵi SVD, user-based: 1.018 (tŁt hìn so vỵi 1.06 cıa Matrix Factorization) item-based: 1.014 (tŁt hìn so vỵi 1.05) Ti‚p theo, chóng ta cịng ‚n vỵi mºt bº cì sð dœ li»u lỵn hìn l MovieLens 1M bao gỗm xĐp x triằu ratings ca 6000 ngữới dũng lản 4000 b phim Ơy l mt bº cì sð dœ li»u lỵn, thíi gian training cơng s tông theo Ta cụng cõ th thò Ăp dửng mỉ h…nh Neighborhood-based Collaborative Filtering l¶n cì sð dœ li»u n y ” so s¡nh k‚t qu£ Thíi gian training s nhanh thới gian inference s rĐt lƠu Load dœ li»u: r_cols = [’user_id’, ’movie_id’, ’rating’, ’unix_timestamp’] ratings_base = pd.read_csv(’ml-1m/ratings.dat’, sep=’::’, names=r_cols, encoding=’latin-1’) ratings = ratings_base.as_matrix() # indices in Python start from ratings[:, :2] -= T¡ch t“p training v test, sß dưng 1/3 dœ li»u cho test from sklearn.model_selection import train_test_split rate_train, rate_test = train_test_split(ratings, test_size=0.33, random_state=42) 61 print X_train.shape, X_test.shape (670140, 4) (330069, 4) p döng Matrix Factorization: rs = MF(rate_train, K = 2, lam = 0.1, print_every = 2, learning_rate = 2, max_iter = 10, user_based = 0) rs.fit() # evaluate on test data RMSE = rs.evaluate_RMSE(rate_test) print ’\nItem-based MF, RMSE =’, RMSE iter = , loss = 6.80832412832 , RMSE train = 1.12359545594 iter = , loss = 4.35238943299 , RMSE train = 1.00312745587 iter = , loss = 2.85065420416 , RMSE train = 0.978490200028 iter = , loss = 1.90134941041 , RMSE train = 0.974189487594 iter = 10 , loss = 1.29580344305 , RMSE train = 0.973438724579 Item-based MF, RMSE = 0.981631017423 K‚t qu£ kh¡ tŁt sau 10 vỈng l°p K‚t qu£ ¡p döng Neighborhood-based Collaborative Filtering l khoÊng 0.92 thới gian inference khĂ lợn Kt quÊ ¡p dưng SVD MovieLens 1M, item-based: 0.95 (tŁt hìn so vợi 0.98) 62 K T LU N CHUNG Dữợi sỹ ch bÊo ca GiĂo viản hữợng dÔn, côn v o ã cữỡng lun vôn  ữổc phả duyằt, lun vôn  t ữổc mt s nhiằm vử sau: (1) Tm hiu vã phữỡng phĂp phƠn tch ma trn SVD v cĂc tnh chĐt ca nõ Mồi ma trn ãu cõ th phƠn tch SVD v iãu õ mang li nhiãu lổi ch nhữ giÊm s chiãu d liằu, nn dœ li»u , t…m hi”u c¡c °c t‰nh cıa dœ li»u, gi£i c¡c h» ph÷ìng tr…nh tuy‚n t‰nh, clustering, v nhi•u øng dưng kh¡c (2) T…m hi”u øng dưng cıa SVD nn Ênh v hằ gổi ỵ Ma trn Ênh b i toĂn nn Ênh ữổc phƠn tch SVD v qua â gi£m dœ li»u cƒn l÷u trœ Ma trn Utility Matrix  ữổc chu'n hoĂ s ữổc x§p x¿ th nh t‰ch cıa c¡c ma tr“n theo phƠn tch SVD Viằc dỹ oĂn, tnh toĂn tr nản thu“n lỉi v ch‰nh x¡c hìn Tr¶n cì sð cıa cĂc kt quÊ Â t ữổc, nu cõ th tip tửc nghiản cứu th lun vôn l nãn tÊng tt nghiản cứu thảm mt s vĐn ã sau: CĂc phữỡng phĂp phƠn tch ma trn Hằ gổi ỵ, ti ữu hõa hằ gổi ỵ CĂc ứng dửng giÊm chiãu dœ li»u 63 T ILI UTHAMKH O [1] Singular Value Decomposition - Stanford University, https://www.youtube.com/watch? v=P5mlg91as1c [2] Singular Value Decomposition - Princeton, https://www.cs.princeton.edu/courses /svdchapter.pdf [3] CS168: The Modern Algorithmic Toolbox Lecture 9: The Singular Value Decomposition (SVD) and Low-Rank Matrix Approximations - Stanford, http://theory.stanford.edu/ tim/s15/l/l9.pdf [4] The Moore-Penrose Pseudoinverse (Math 33A - UCLA), http://www.math.ucla.edu/ laub/33a.2.12s/mppseudoinverse.pdf [5] Recommendation Systems - Stanford InfoLab, http://infolab.stanford.edu/ ullman/mmds/ch9.pdf [6] The Vector Space Model of text, https://stanford.edu/rjweiss/public notebooks/tfidf.html [7] Content Based Recommendations - Stanford University, https://www.youtube.com/watch?v=2uxXPzm7FY [8] Machine learning cì b£n, Vơ Hœu Ti»p., https://machinelearningcoban.com/ [9] Eric Matthes, "Python Crash Course", 2016 [10] Vê Duy TuĐn, "Python rĐt l cỡ bÊn", 2016 [11] m Thanh Phữỡng, Trữỡng H HÊi, Ngổ Mnh Tững, Bũi Th Thanh XuƠn, "Gi¡o tr…nh To¡n cao c§p 1", NXB ⁄i håc Th¡i Nguy¶n, 2016 64 Số hóa Trung tâm Học liệu Công nghệ thông tin – ĐHTN http://lrc.tnu.edu.vn ...ĐẠI HỌC THÁI NGUYÊN TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN & TRUYỀN THÔNG PINTHIP Anon Nghiên cứu phương pháp phân tích ma trận SVD số ứng dụng học máy Chuyên ngành: Khoa học máy tính Mã số: 8480101... phƠn tch ma trn SVD Ni dung chữỡng trung v o vĐn ã phƠn tch ma tr“n SVD v c¡c ki‚n thøc mð rºng v• SVD Cư th” nh÷ sau: 2.1 Ph¡t bi”u SVD 2.2 CĂc kin thức m rng vã SVD Chữỡng ng dưng cıa SVD Sau... 6 Ta ÷æc ma tr“n C¡c gi¡ trà k… dà cıa ma tr“n A l ÷ỉc ma tr“n = T…m ma tr“n U 26 ui = Av ) u = p i i Suy Ph¥n t‰ch SVD cıa ma tr“n A l A= 2.2 Mºt sŁ bi‚n th” cıa SVD Singular cıa mºt ma trn nòa
Ngày đăng: 08/06/2021, 13:00
Xem thêm: Nghiên cứu phương pháp phân tích ma trận SVD và một số ứng dụng trong học máy