Tải bản đầy đủ (.pdf) (15 trang)

Đề tài đại số tuyến tính lý thuyết về singular value decomposition ứng dụng svd vào hệ thống gợi ý

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.64 MB, 15 trang )

<span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">

GIỚI GIỚI THIỆUTHIỆU

Ma trận được ra đời cách đây hơn 200 năm. Ngay từ khi ra đời ma trận đã trở thành một công cụ rất mạnh trong Đại số. Tuy với những tính chất riêng của ma trận khiến ta gặp nhiều khó khăn trong q trình biến đổi và tính tốn đối với ma trận. Với mục đích làm dễ dàng các bước tính toán cũng như lưu trữ ma trận người ta đã đưa ra phương pháp phân rã ma trận ( MATRIX FACTORIZATION). Phương pháp này đưa các ma trận thành tích các ma trận con có những tính chất đặc biệt để tính tốn và lưu trữ dễ dàng hơn.

Trong 7 chương đầu của Đại Số Tuyến Tính chúng ta đã được học qua một Phép phân rã ma trận là: Chéo Hóa Ma Trận ( Eigen Decomposition ) : phân tách một ma trận A:

�<small>���</small>= P*D*P<small>-1</small>. Tuy nhiên phép phân tách này có các nhược điểm : ma trận A phải là một ma trận vng và tổng bội hình học của A = n thì mới phân tách được.

-Vậy đối với một ma trận bất kì thì ta có thể phân tách được không?

Để giải quyết vấn đề này sau đây chúng tôi xin giới thiệu phép phân rã ma trận SVD (Singuler Value Decomposition ). Trong đề tài này chúng tơi sẽ trình bày lý thuyết về SVD và ứng dụng của SVD trong Recommend System.

1.1 PhátPhátPhát bibiểubiểu SVDểuSVDSVD :::::

Với mọi ma trận AAAAA ∈ �<small>�×�</small>ta đều phân tách được dưới dạng

</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4">

+Ta xét : AA<small>T</small>= (U�V<small>T</small>)(U�V ) = U<small>T T</small> ��<small>T</small>U<small>T</small>= UDU<small>T</small>

-Dễ dàng chứng minh ma trận AA :<small>T</small>

+Là một ma trận đối xứng ( bằng quy nạp )

+Là một ma trận nửa xác định dương ( bằng BĐT Cauchy và quy nạp ) Do đó AA ln chéo hóa trực giao được và trị riêng của AA khơng âm<small>TT</small>

Suy ra ta ln tìm được : U bằng phép chéo hóa trực giao AA<small>T</small>

�à � vì d<small>ii</small>≥ 0 ∀� , �� = �<sub>��</sub> ( cái tên Singuler Value xuất phát từ đây ) -Chứng minh tương tự với trường hợp xét A A = V<small>T</small> �<small>T</small>�V<small>T</small>=> tồn tại V và �

</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5">

1.4 PhưPhưPhươngơngơng pháppháppháp tìmtìm ppppphântìm hânhân tíchtíchtích SSSSSVDVD

*****CácCác bưbưbướcớc tìmớctìmtìm phânphânphân tttttíchíchích SVDSVDSVD của củacủa mamama trtrtrtrtrậnận�<sub>�×�</sub>((((( NếuNếu mNếum> �)))))

B1 ::::: Ta chéo hóa trực giao AA để tìm ma trận<small>T</small> �<sub>�×�</sub>và �<sub>�×�</sub> B2

B2 ::::: Ta tìm�1, �2bằng căn bậc 2 các trị riêng của AA và sắp xếp theo thứ tự giảm dần trên<small>T</small>

đường chéo của �<small>�×�</small>

Thử lại ta tìm lại A :AAAAA ==== UUUUU�VVVVV<small>TTTTT</small>= <sup>−� �</sup>−� � � � ((((( KhôngKhôngKhông đúngđúngđúng vvvvvớiớiới mama trậnmatrậntrận AAAAA đđđđđềềềềề cccccho)ho)

</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">

*Giải bbbbbàiài toánàitoántoán bằngbằngbằng matmatmathlabhlabhlab vấnvấn đềvấnđề nnnnnàyđề àyày trởtrởtrở nênnênnên dễdễdễ dàngdàngdàng hơnhơnhơn vớivớivới lllllệnhệnhệnh svdsvd

Viết lại biểu thức (*) dưới dạng tổng của các ma trận rank 1:

AAAAA ==== �<sub>�</sub>�<sub>�</sub>�<sub>�</sub>++ �<sub>�</sub>�<sub>�</sub>�<small>�</small><sub>�</sub>++ … …… +++ � <small>rrrrr</small>uuuuu<small>rrrrr</small>�<sub>�</sub> Với chú ý rằng mỗi �<small>�</small>�<small>�</small>, 1≤ � ≤ �là một ma trận rank A bằng 1

Rõ ràng trong cách biểu diễn này, ma trận A chỉ phụ thuộc vào r cột đầu tiên của U ,V và r giá trị khác 0 trên đường chéo của ma trận �. Vì vậy, ta có một cách phân tích gọn hơn và gọi là compact SVD :

AAAAA ==== UUUUU<small>rrrrr</small>�(V(V<small>rrrrr</small>)))))<small>TTTTT</small>

Với U , V lần lượt là ma trận được tạo bởi r cột đầu tiên của U và V.<small>rr</small> �<small>r</small>là ma trận con được tạo bởi r hàng đầu tiên và r cột đầu tiên của �. Nếu ma trận A có rank nhỏ hơn rất nhiều so với số hàng và số cột r ≪ m, n, ta sẽ được lợi nhiều về việc lưu trữ và đánh giá.

</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7">

2.1 MMMởởởởở ĐầuĐầuĐầu :::::

-Các bạn có lẽ đã gặp những hiện tượng này nhiều lần:

Youtube tự động chuyển các clip liên quan đến clip bạn đang xem. Youtube cũng tự gợi ý những clip mà có thể bạn sẽ thích.

Khi bạn mua một món hàng trên Amazon, hệ thống sẽ tự động gợi ý “Frequently bought together”, hoặc nó biết bạn có thể thích món hàng nào dựa trên lịch sử mua hàng của bạn.

Facebook hiển thị quảng cáo những sản phẩm có liên quan đến từ khố bạn vừa tìm kiếm.Facebook gợi ý kết bạn.

Netflix tự động gợi ý phim cho người dùng.

-Và rất nhiều ví dụ khác mà hệ thống có khả năng tự động gợi ý cho ngừời dùng những sản phẩm họcó thể thích. Bằng cáchquảng cáo hướng đúng đội tượngnhư thế này, hiệu quả của việc marketing cũng sẽ tăng lên. Những thuật toán đằng sau những ứng dụng này là những thuật tốn Machine Learning có tên gọi chung làRecommender

SystemshoặcRecommendation Systems, tứcHệ thống gợi ý. 2.2.

2.2. HaiHaiHai nhómnhómnhóm ccccchínhhínhhính củacủacủa RecRecRecommendationommendationommendation SystemsSystems

-Các Recommendation Systems thường được chia thành hai nhóm lớn:

Content-based sssssystemsystems: đánh giá đặc tính củaitemsđượcrecommended. Ví dụ: mộtuserxem rất nhiều các bộ phim về cảnh sát hình sự, vậy thì gơi ý một bộ phim trong cơ sở dữ liệu có chung đặc tínhhình sựtớiusernày, ví dụ phimNgười phán xử. Cách tiếp cận này yêu cầu việc sắp xếp cácitemsvào từng nhóm hoặc đi tìm các đặc trưng của từngitem. Tuy nhiên, có nhữngitemskhơng có nhóm cụ thể và việc xác định nhóm hoặc đặc trưng của từngitemđơi khi là bất khả thi.

Collaborative fffffilteringiltering: hệ thống gợi ýitemsdựa trên sự tương quan (similarity) giữa cácusersvà/hoặcitems. Có thể hiểu rằng ở nhóm này

mộtitemđượcrecommendedtới mộtuserdựa trên nhữnguserscóhành vitương tự. Ví dụ:users A, B, Cđều thích các bài hát của Noo Phước Thịnh. Ngồi ra, hệ thống biết rằngusers B, Ccũng thích các bài hát của Bích Phương nhưng chưa có thơng tin về việc liệuuser Acó thích Bích Phương hay khơng. Dựa trên thông tin của nhữnguserstương tự làB và C, hệ thống có thể dự đốn rằngAcũng thích Bích Phương và gợi ý các bài hát của ca sĩ này tớiA.

</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">

2.3BàiBài toántoántoán tổngtổngtổng quátquátquát củacủacủa hệhệhệ thốngthốngthống gợigợi ý:gợiý:

iiiii<small>11111</small> iiiii<small>22222</small> … iiiii<small>nnnnn</small>

uuuuu<small>11111</small> rrrrr<small>1,1</small> rrrrr<small>1,2</small> … rrrrr<small>1,n</small>

uuuuu<small>22222</small> rrrrr<small>2,1</small> rrrrr<small>2,2</small> … rrrrr<small>2,n</small>

uuuuu<small>nnnnn</small> RRRRR<small>m,1</small> rrrrr<small>m,2</small> … RRRRR<small>m,n</small>

Gọi U là tập hợp tất cả người dùng, I là tập hợp tất cả các sản phẩm có thể tư vấn. Tập I có giá trị trong khoảng {1,n}, tập U có giá trị trong khoảng {1,m}. Hàm f(u,i) đo độ phù hợp (hay hạng) của sản phẩm I với người dùng u : f : U x I → R với R là tập được sắp thứ tự.Tập hợp những rating r của người dùng ( bao gồm những giá trị chưa biết) tạo thành ma trận goi là utility matrix

Với mỗi người dùng u U , cần tìm sản phẩm i I , sao cho hàm f(i,u) đạt giá trị lớn nhất:  uuuuuU,U, iiiii<small>uuuuu</small>argarg maxmaxfffff(u,i)

Vấn đề chính của hệ tư vấn là hàm f(u,i) khơng được xác định trên tồn không gian U x I mà chỉ trên một miền nhỏ của khơng gian đó. Điều này dẫn tới việc hàm f(u,i) phải được ngoại suy trong không gian U x I. Các hệ thống tư vấn thường được phân thành nhiều loại dựa trên cách nó sử dụng các thuật toán để ước lượng hạng hoặc điểm của các sản phẩm. Yêu

Yêu cầcầuuuuu bàicầ bàibài tttttoán:oán:oán: Ta cần đưa ra các dự đoán cho đánh giá của một người dùng bất kì trong hệ thống cho một sản phẩm bất kì mà người dùng đó chưa đánh giá. Và trong thực tế, các sản phẩm được hệ gợi ý dự đốn người dùng đó sẽ đánh giá cao, sẽ được đưa lên để gợi ý cho người dùng đó trải nghiệm.

2.4

2.4 GiảiGiảiGiải quququyếtyếtyết vấnvấnvấn đđđđđề:ề: 2.4.1

2.4.1 PhươngPhươngPhương ááááánnnnn 11111::::: Ở phương pháp 1 chúng tôi đưa ra phương án gợi ý sản phẩm cho người dùng dựa trên nhómContent-based systems( đánh giá những đặc tính tương quan của các

</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">

Ta thấy : Vì tính chất của ma trận đường chéo nên ta có thể khai triển �<sub>�×�</sub>:

Thơng thường chỉ một lượng nhỏ các��mang giá trị lớn, các giá trị còn lại thường nhỏ và bằng 0Khi đó ta có thể xấp xỉ ma trận A bằng tổng của k r ma trận có rank 1, từ đó:<

AAAAA ≈ AkAkAk === �<small>�</small>�<small>�</small>�<small>�</small>++ �<small>�</small>�<small>�</small>�<small>��</small>++ … …… +++ � <small>kkkkk</small>uuuuu<small>kkkkk</small>�<small>�</small>

Dưới đây là một định lý thú vị. Định lý này nói rằng sai số do cách xấp xỉ trên chính là căn bậc hai qua tổng bình phương của các singular values mà ta đã bỏ qua ở phần cuối của . Ở� đây sai số được định nghĩa là Frobineus norm của hiệu hai ma trận:

� − �<small>� �</small><sup>�</sup>=∑<small>�</small><sub>�=�+�</sub>�<sub>�</sub>

Việc xấp xỉ ma trận A bằng tổng của k r ma trận có rank 1 cịn được gọi là Truncaded SVD.< Bằng cách này ta chỉ tạo ngẫu nhiên và cập nhật trên từng hàng của ma trận X và Y.

</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10">

= ∑<small>�</small><sub>�=�+1</sub>�<small>2</small><sub>�</sub>( Biểu thức trong trace là số vô hướng )

Như vậy, ta chỉ chọn ra top t trị riêng có giá trị lớn nhất nhất vì khi đó sai số của hai ma trận sẽ là nhỏ nhất vì bằng tổng bình phương của các trị riêng còn lại.

Suy ra : sai số do xấp xỉ càng nhỏ nếu phần trị riêng bị truncated có giá trị càng nhỏ so với phần trị riêng được giữ lại. Đây là một định lý quan trọng giúp xác định việc xấp xỉ ma trận dựa trên lượng thông tin muốn giữ lại.

Hệ quả : Phương pháp truncated SVD còn cho ta biết được tỉ lệ phần trăm lượng thông tin lưu trữ trong ma trận xấp xỉ thông qua công thức :

</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11">

2.4.2 PhươngPhươngPhương ááááánnnnn 22222:::::Ở phương pháp 2 này chúng tơi sẽ đưa ra hướng gợi ý dựa vào Nhóm Collaborative filtering ( hệ thống gợi ý các items dựa trên sự tương quan ( similarity) giữa

Với: ví dụ trên là sự đánh giá của 4 người dùng với 6 bộ phim trên nền tảng hệ thống . Mức đánh giá sự yêu thích sẽ là từ 1 đến 5 . 0 sẽ là chưa xem bộ phim đó . Ở đây ta giả sử mọi bộ phim xem qua đều được đánh giá .

Từ đây ta lập được UTILITY MATRIX Amxn:

</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12">

+U làlàlà mamama trậntrậntrận (chứa các dữ liệu đặc tính của items) cho ta thấy được sự tương quan giữa các item với nhau :

+�<small>�</small>làlà mamama tttttrậnrậnrận (chứa các dữ liệu tương quan của users) cho ta thấy được sự tương quan giữa các users.

Để dễ so sánh đặc tính các users với nhau thuận tiện cho việc gợi ý và lưu trữ.Bằng phương pháp Truncated ta có thể hợp nhất chiều của dữ liệu xuống 2 sấp sĩ với dữ liệu đánh giá của

−0.0532 là gần giống nhau nhất (similar) => Sam và LYDIA có những điểm tương đồng Ta kiểm tra lại trong UTILITY MATRIX ban đầu nhận thấy nhận xét trên đúng.:

Sam = (5 5 3 0 5 5)<small>�</small> tương đồng với Lydia= (5 4 3 3 5 5)<small>�</small>

Vậy không cần xem xét những rating của những users ta cũng có thể dự biết được sự tương quan giống nhau giữa những users với nhau . Hệ thống recommend của ta chỉ cần so sánh

</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13">

những dữ liệu tương quan trong V(T) và phát hiện ra những users có dữ liệu tương quan sai số ít nhất đối với dữ liệu tương quan của người dùng hiện tại.Từ đó hệ thống sẽ đưa ra những gợi ý những items mà users tương quan đánh giá cao cho người dùng hiện tại. Như ví dụ cụ thể ở trên do Sam và Lydia có dữ liệu tương gần giống nhau nhất, hệ thống sẽ chạy thuật toán gợi ý cho Sam những phim mà LYDIA đã xem mà Sam chưa xem và sắp xếp thứ tự phim từ trên xuống theo mức độ đánh giá của LYDIA . Và đồng thời ta cũng có thể gợi ý cho Lydia những phim mà được Sam đánh giá cao.

Tuy nhiên đối với một hệ dữ liệu lớn và luôn được cập nhập người dùng mới thưởng xun thì việc phân tích liên tục UTILITY MATRIX để đánh giá mức độ tương quan giữa các users thì rất tốn thời gian và khơng gian lưu trữ

Ta có hướng giải quyết sau : Tiếp tục với bài tốn trên giả sử có một users mới tên là Jess. Users này đã đánh giá (rating) các bộ phim như sau :

JJJJJ ==== (5 5 0 0 0 5)<small>�</small>

Để tìm được “đặc tính” của users này chúng ta sẽ nén thông tin mới của users này về 2 chiều trong �<small>�</small>. Nói cách khác ta sẽ đưa thơng tin rating mới của users Jess mã hóa thành dữ liệu tương quan users trong ma trận �<small>�</small>từ đó ta đã có cơ sở để so sánh đặt tính của users mới mà khơng cần áp dụng thuật tốn phân tích cho tồn bộ ma trận A khi thêm rating của Jess vào 1 lần nữa .

Công thức để tính “đặc tính” của 1 users mới thêm vào

<sub>�</sub>

= �

<small>�</small>

� �

<sub>�</sub>

<small>−�</small>

Sau khi đã xác định được dữ liệu tương quan users trong �<small>�</small>của users mới từ những dữ liệu có sẵn trong �<small>�</small>. Ta có thể tìm thấy được người có sự tương quan gần nhất với users đó nhất. Từ đó hệ thống sẽ gợi ý cho users mới những nội dung ( bộ phim ) mà đã được người dùng tương quan đánh giá cao.

Như trong ví dụ trên ta thấy được dữ liệu tương quan của users Jess gần giống với Sam và Melody . Vì thế hệ thống sẽ đưa những bộ phim được Sam và Melody xem và đánh giá cao lên đầu để gợi ý cho Jess.Vậy với cách làm trên chúng ta vừa có thể tiết kiệm khơng gian lưu trữ vừa có thể thu ngắn thời gian để hệ thống đưa ra những gợi ý tốt nhất cho người dùng mới.

</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14">

TÀI LLLLLIỆUIỆUIỆU THAMTHAMTHAM KHẢOKHẢO

[1] Đặng Văn Vinh, Giáo trình đại số tuyến tính , NXB Đại học Quốc Gia TP. Hồ Chí Minh 2020

[2] Nguyễn Tiến Dũng, Đại số tuyến tính ( Lý Thuyết và Ứng Dụng ), NXB Đại học Quốc Gia TP. Hồ Chí Minh 2020

[3] DeAngelis, G. C.; Ohzawa, I.; Freeman, R. D. (October 1995). "Receptive-field dynamics in the central visual pathways".Trends Neurosci.

[4] Machinelearningcoban , Bài 26 : Singular Value Decomposition;Bài 25 : Matrix Factorization ; Bài 24:Neighborhood-Based Collaborative Filtering; Bài 23: Content-based Recommendation Systems.

[5] Phạm Hoàng Trương, Luận văn Thạc Sĩ Khoa Học Máy Tính : Nghiên cứu và ứng dụng Kỹ Thuật SVD vào hệ thống gợi ý , Đại học Bách Khoa Đà Nẵng

[6] Singular Value Decomposition- Stanford University [7] Singular Value Decomposition - Princeton

</div>

×