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 TIEU LUAN MOI download : skknchat123@gmail.com ĐẠ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 TIEU LUAN MOI download : skknchat123@gmail.com L˝I CAM OAN Tỉi xin cam oan: Lu“n v«n th⁄c 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 cıa 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 ph⁄m b§t cø 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 chu 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ư phn 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 lun 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 lu“n vôn n y 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 C 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, chóng ta 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 thi‚u 3.6 Matrix Factorization Utility matrix Y ữổc phƠn t tch ca hai ma trn 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ł vi‚t t›t Mð iv ƒu Chữỡng MáT Să KI N THÙC 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 HC 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 Nhœng n«m gƒn ¥y, AI - Artificial Intelligence (Tr‰ Tu» Nh¥n T⁄o), v cư th” hìn l Machine Learning (Håc M¡y ho°c M¡y Hồc) ni lản nhữ mt bng chứng ca cuc 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 T⁄o 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 ca Facebook, trổ lỵ Êo Siri ca Apple, hằ thng gổi ỵ sÊn ph'm ca Amazon, hằ thng gổi þ phim cıa 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 trin cĂc thut 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 thi‚t cıa nhœng ng÷íi l m Khoa håc m¡y t‰nh Nãn tÊng toĂn hồc ca Machine Learning ặi họi phÊi câ ki‚n thøc cì b£n v• ⁄i sŁ tuy‚n t‰nh, ti ữu, xĂc suĐt thng kả Viằc phƠn tch mt ma tr“n 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 thut toĂn Hồc mĂy nhữ giÊm s chiãu d liằu, n†n 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 Recommendation Sys-tem cơng l mºt rĐt nhiãu ứng dửng ca Matrix Factorization SVD (singular value decomposition) l mºt d⁄ng khai tri”n cıa ma tr“n câ rĐt nhiãu ứng dửng nhng vĐn ã liản quan ‚n nghàch £o v sŁ hâa c¡c dœ li»u Hiằn phƠn tch SVD ca ma trn xuĐt hiằn rĐt nhiãu cĂc ứng dửng thỹc t nhữ vã t‰n hi»u sŁ, t‰nh 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ú v 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 mºt sŁ øng döng håc m¡y thüc hi»n l m lu“n v«n cao håc nh‹m mưc ‰ch ÷a ‚n cho ng÷íi åc cơng nh÷ b£n th¥n nhœng kin thức cỡ bÊn nhĐt vã khai trin SVD v t⁄o mºt c¡i nh…n tŒng quan v• c¡ch khai tri”n cụng nhữ mt s tnh chĐt, hằ quÊ quan trồng li¶n quan ‚n d⁄ng khai tri”n n y.[2], [8], [11] ã t i lun 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 thit l vuổng, ãu cõ th ữổc phƠn t‰ch th nh t‰ch cıa ba ma tr“n °c bi»t Sau â c¡c øng dưng cư th” cıa SVD v• nn Ê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 ki‚n thøc cì sð v• ⁄i sŁ tuy‚n t ‰nh v gi£i tch ma trn 1.1 Giợi thiằu vã hồc mĂy 1.2 C¡c ki‚n 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 t‰ch ma tr“n SVD v c¡c 52 H…nh 3.6: Matrix Factorization Utility matrix Y v W ÷ỉc ph¥n t‰ch th nh t‰ch cıa hai ma tr“n low-rank X Chú ỵ rng, x ữổc xƠy dỹng dỹa trản thỉng tin mỉ t£ cıa 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÷ v“y, 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ü tŁt v… khỉng khai th¡c ÷ỉc °c i”m ca nhng users gn ging 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ổ h…nh cıa mØi user (ð ¥y l vector h» s) iãu n y nghắa l , bin 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 tr“n cıa 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 trn X v W ãu cõ rank khổng vữổt quĂ K Chnh v vy, phữỡng phĂp n y cặn ữổc gåi l Low-Rank Matrix Factorization (H…nh 3.6) Mºt sŁ i”m 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, t‰nh 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 iãu g m khỉng thüc sü cƒn °t t¶n MØi item s‡ mang t‰nh ch§t 'n ð mºt møc º n o â tữỡng ứng vợi cĂc hằ s vector x ca 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 cıa nâ H» sŁ cao tữỡng ứng vợi viằc user thch 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 phƒn t÷ìng øng cıa x v w ãu cao iãu n y nghắa l item mang c¡c t‰nh ch§t 'n m user th‰ch, v“y 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 phn cặn li ữổc c nh Nh÷ v“y, 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 cıa hai ma tr“n tr¶n Tức cn sò dửng thổng tin ca tĐt cÊ suy tĐt cÊ Vy nản phữỡng phĂp n y cơng ÷ỉc x‚p 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ỉ h…nh ìn gi£n gióp dü o¡n ratings cn ữổc thỹc hiằn mt cĂch nhanh nhĐt cõ th Neighborhood-based Collaborative Filtering khổng yảu cu viằc learning quĂ nhiãu, nh÷ng qu¡ tr…nh dü o¡n (inference), ta cƒn i t…m º similarity cıa user ang x†t 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 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 tr“n 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 mºt sŁ nhọ hỡn nhiãu so vợi M; N Vy nản quĂ 54 trnh inference khổng yảu cu khÊ nông tnh toĂn cao Vi»c n y khi‚n nâ phị hỉp vỵi c¡c mổ hnh cõ 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 ho°c N cıa 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 = nu item thứ m l  ữổc Ănh giĂ bði user thø n, jj jj F Frobineous norm, tức côn bc hai ca tng bnh phữỡng tĐt cÊ cĂc phn tò ca ma trn (ging 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 pha trản l l regularization, gióp tr¡nh overfitting Gi¡ trà ratings th÷íng l c¡c giĂ tr  ữổc chu'n hoĂ, bng 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 cºt â (userbased) Trong mºt s trữớng hổp nhĐt nh, ta khổng cn chu'n hoĂ ma tr“n n y, nh÷ng k–m theo â ph£i câ thảm cĂc k thut 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 t⁄p, thay v o õ, phữỡng phĂp ữổc sò dửng l ln lữổt ti ÷u mºt ma tr“n cŁ ành ma tr“n kia, tợi hi 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 tŁi ÷u X ÷ỉc ÷a v• tŁi ÷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 r‹ng 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 tŁi ÷u mºt cºt cıa ma tr“n W L(wn) = V… bi”u thøc d§u user ang x†t, ta cõ th P bi cĂc h ng tữỡng ứng vợi cĂc items  ữổc rated õ, v tữỡng ứng Khi â: v ⁄o h m cıa nâ: V“y cæng thøc c“p nh“t cho mØi cºt cıa W l : wn = w n (3.2.17) (3.2.18) (3.2.19) 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â d⁄ng: 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£ nu 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 l°p tông lản RMSE cõ cao hỡn so vợi Neighborhood-based Collaborative Filtering ( 0.99) mt 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 mºt 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 nh÷ng 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 nh÷ng thíi gian inference kh¡ lỵn K‚t 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, n†n 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 n†n £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 cn 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 t‰ch SVD Vi»c dü o¡n, t‰nh to¡n trð n¶n thu“n lỉi v ch‰nh xĂc hỡn Trản cỡ s ca 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=2uxXPzm-7FY [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ỉ M⁄nh T÷ðng, Bũi Th Thanh XuƠn, "GiĂo trnh 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 TIEU LUAN MOI download : skknchat123@gmail.com ...ĐẠ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 trn 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 ki‚n thức m rng vã SVD Chữỡng ng dửng ca SVD Sau... tữỡng ứng l v1 = 1=p 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 u 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
Ngày đăng: 04/08/2022, 08:55
Xem thêm: