Luận văn thạc sĩ 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 10 0
Luận văn thạc sĩ 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 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 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 cn 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 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 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 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 ho°c M¡y Håc) nŒi l¶n nh÷ mºt b‹ng chøng cıa cuºc c¡ch m⁄ng cỉng nghi»p ln 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 tnh 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, t…m 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 dng 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 tch 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 lun 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 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 thi‚t l vuổng, ãu cõ th ữổc phƠn tch 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• 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 kin 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 52 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£ 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ữ 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 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ổ 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 tr“n cıa to n bº user models, mØi cºt 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 Chnh v vy, 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 ch‰nh ‹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 iãu g m khổng thỹc sỹ cn 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 phƒn t÷ìng øng cıa 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 phn 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 cıa hai ma tr“n tr¶n Tøc chóng ta 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 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Ă 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” 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 tr“n cŁ ành ma tr“n cỈn l⁄i, nh÷ng 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ỉ h…nh 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) phƒn 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 l  ữổc Ănh giĂ bi user thứ n, jj jj F Frobineous norm, tøc c«n b“c hai ca tng bnh phữỡng tĐt cÊ cĂc phn tò cıa 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 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¡, 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 cºt â (userbased) Trong mºt sŁ tr÷íng hỉp nh§t ành, ta khỉng cƒn chu'n ho¡ ma tr“n n y, km 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 lƒn l÷ỉt tŁi ÷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 ti ữ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 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 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£ 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 dn s 60 vặng lp 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 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 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 tr“n SVD v c¡c t‰nh ch§t cıa 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 ca SVD nn Ênh v hằ gổi ỵ Ma tr“n £nh b i to¡n n†n £nh ÷ỉc ph¥n t‰ch 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 ca 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 ...ĐẠ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... 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... 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: 09/06/2021, 06:50

Từ khóa liên quan

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

Tài liệu liên quan