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

85 1 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 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

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

Tài liệu liên quan