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

90 12 0
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

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

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

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan