1. Trang chủ
  2. » Giáo Dục - Đào Tạo

BÀI tập lớn đại số TUYẾN TÍNH ỨNG DỤNG của PHÂN TÍCH SVD vào hệ THỐNG gợi ý TRONG MACHINE LEARNING

73 143 1

Đ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

Thông tin cơ bản

Định dạng
Số trang 73
Dung lượng 2,6 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

ܣ = ܺܲܺ ܺ −1 ∗Các véc tơ riêng x, thường được chọn sao cho ݔ݅ ܶݔ݅ = 1.Cách biểu diễn một ma trận như * được gọi là eigendecomposition vì nó tách ra thành tích của các ma trận đặc biệt dự

Trang 1

BÀI TẬP LỚN ĐẠI SỐ TUYẾN TÍNH

GVHD: Th.S Nguyễn Xuân Mỹ LỚP: L09 - NHÓM: 9

Trang 2

ỨNG DỤNG CỦA PHÂN TÍCH SVD VÀO HỆ THỐNG GỢI Ý TRONG

MACHINE LEARNING

NHÓM: 9

Trang 3

DANH SÁCH THÀNH VIÊN

STT Họ và tên MSSV

L09 - NHÓM: 9

Trang 4

Ứng dụng trong machine learning

Phương pháp phân tích SVD

lý thuyết

Matlab

NỘI DUNG

Trang 5

MỞ ĐẦU

Trang 6

Phân tích SVD

Trang 7

CƠ SỞ LÝ THUYẾT

Trang 8

Ma trận chuyển vị

Chuyển vị của là ma trận cỡ n x m thu được từ A bằng cách chuyển hàng thành cột.

9 3

0 1

4 2

9 0

4

3 1 2

Trang 9

c C

Trang 10

Phép nhân hai ma trận

e k (AB) = (kA)B = A(kB).

Trang 13

Ma trận đường chéo

chéo chính của nó, ký hiệu trace(A)

Ví dụ: trace(A) = 1+2+3 = 6

Chỉ có các thành phần trên đường chéo chính khác 0.

Trang 15

Định thức

Chỉ ma trận vuông mới có định thức Kí hiệu: det(A) hoặc det A.

Giả sử ta có một ma trận vuông A bậc n.

- Với n = 1, det(A) chính là phần tử duy nhất của ma trận đó.

- Với n > 1, ta có cách tính định thức dựa trên khai triển hàng thứ i của ma trận:

Trang 17

Ta nói b là một ma trận tổ hợp tuyến tính các cột của A.

Ta nói b là một ma trận tổ hợp tuyến tính các cột của A

Trang 19

Cơ sở của một không gian véc tơ

Một hệ các véc tơ { ܽ 1, ܽ 2, …, ܽ ݊ } trong không gian véc tơ m chiều V = Rm

được gọi là một cơ sở nếu nó thỏa mãn hai điều kiện sau:

1 ܸ ≡ ෍ ෍ ෍ ݊ ܽݏ݌ܽ݊ (ܽ 1, ܽ 2, …, ܽ ݊ )

2 { ܽ 1, ܽ 2, …, ܽ ݊ } là một hệ độc lập tuyến tính

Khi đó, mọi véc tơ b ∈ Vđều biểu diễn duy nhất qua cơ sở

Chú ý: số véc tơ trong cơ sở phải bằng số chiều của không gian

Trang 20

2 rank (A) = rank (AT)

3 Với A ∈ R݉ ×݊ , thì rank(A) ≤ min (m, n)

4 rank (AB) ≤ min (rank (A), rank (B))

5 rank (A + B) ≤ rank (A) + rank (B)

Trang 21

Hệ trực chuẩn, ma trận trực giao

mỗi véc tơ khác 0 và tích của hai véc tơ khác nhau bất kì bằng 0

nếu nó là hệ trực giao và độ dài Euclid của mỗi véc tơ bằng 1

Trang 23

Trị riêng và véc tơ riêng

Cho một ma trận vuông A ∈ Rn×n, một véc tơ x ∈ Rn (x ≠ 0) và một số vô hướng (có thể thực hoặc phức) λ.

Nếu Ax=λx thì ta nói λ và x là một cặp giá trị riêng, véc tơ riêng

(eigenvalue, eigenvector) của ma trận A.

Trang 24

Trị riêng và véc tơ riêng

Cũng có ܣ − ܫ ݔ = 0 , tức là x nằm trong không gian Null của ܣ −ܫߣܫ ߣܫ

Vì x ≠ 0, nên ܣ −ܫߣܫ là ma trận không khả nghịch.

Vậy det ܣ −ܫߣܫ = 0 , hay λ là nghiệm của phương trình det ܣ −ܫߣܫ = 0

Định thức này là một đa thức bậc n của t, gọi là đa thức đặc trưng

(characteristic polynomial) của A, ký hiệu là pA(t).

Tập hợp tất cả các giá trị riêng của một ma trận còn gọi là phổ (spectrum)

của ma trận đó.

Trang 25

ܣ = ܺܲܺ ܺ −1 ∗Các véc tơ riêng x, thường được chọn sao cho ݔ݅ ܶݔ݅ = 1.

Cách biểu diễn một ma trận như (*) được gọi là eigendecomposition vì nó

tách ra thành tích của các ma trận đặc biệt dựa trên các véc tơ riêng và trị riêng

Ma trận các giá trị riêng P là một ma trận đường chéo

Trang 26

Ma trận xác định dương

definite) nếu

(positive semidefinite) nếu

Trang 27

Ma trận xác định dương

TÍNH CHẤT:

1 Mọi trị riêng của ma trận xác định dương đều là số thực dương

2 Mọi ma trận xác định dương là khả nghịch, định thức của nó là một số dương

Trang 28

Chuẩn của véc tơ và ma trận

Định nghĩa: Một hàm số ݂ : ܴ ݊ →ܴ được gọi là một norm (chuẩn) nếu nó

thỏa mãn các điều kiện sau đây:

1 ݂ ݔ ≥ 0 ∀ݔ, dấu bằng xảy ra khi x = 0

Một số chuẩn thông thường:

Trang 29

Dùng máy tính

Khám phá tri thức từ dữ liệu

Machine Learning

Sự học của máy tính Trí tuệ nhân tạo

xây dựng và phát triển chương trình máy tính

có thể học từ

dữ liệu đưa vào hoặc kinh nghiệm

Trang 30

Machine Learning

Phân tích

dữ liệu bán

lẻ của siêu thị

Ví dụ 1

Ví dụ 1

Ví dụ 2

Ví dụ 3

Đối sánh vân tay

Tìm đường ngắn nhất cho robot

Trang 31

Chương trình máy tính

thích nghi môi trường thay đổi

Tại sao cần nghiên cứu Machine Learning

Hệ thống nhận dạng

cho robot, trong tự

động hóa

Nhận dạng chữ, chuyển lời

thành văn bản,

phân tích ảnh

nhiệm vụ chưa định rõ

Khám phá tri thức

từ dữ liệu

Trợ giúp ra quyết định

Trang 32

PHƯƠNG PHÁP PHÂN TÍCH MA TRẬN

SVD

Trang 33

Một ma trận vuông ܣ được gọi là chéo hóa được nếu tồn tại ma trận đường

ܣ = ܦܺܲ ܺܲ −1 (*)

Số lượng phần tử khác không của ma trận đường chéo ܦ chính là r(A)

Nhân 2 vế (*) với ܺܲ ta có:

ܺܲܣ = ܦܺܲ (**)Gọi ෍݅ , ݅ lần lượt là cột thứ ݅ của ma trận ܺܲ và ܦ Vì (**) có mỗi cột vếtrái bằng vế phải nên ta có:

ܣ ෍݅ = ܺܲ ݅ = ݅݅ ෍݅ (***)

Trong đó ݅݅ là phần tử thứ ݅ của ݅

phần d khác không Biểu thức (***) chỉ ra rằng mỗi phần tử ݅݅ phải là một trị

vector cột ෍݅ phải là một vector riêng của ܣ ứng với trị riêng ݅݅

Một ma trận vuông ܣ được gọi là chéo hóa được nếu tồn tại ma trận đường

ܣ = ܦܺܲ ܺܲ −1 (*)

Số lượng phần tử khác không của ma trận đường chéo ܦ chính là r(A)

Nhân 2 vế (*) với ܺܲ ta có:

ܺܲܣ = ܦܺܲ (**)Gọi ෍݅ , ݅ lần lượt là cột thứ ݅ của ma trận ܺܲ và ܦ Vì (**) có mỗi cột vếtrái bằng vế phải nên ta có:

ܣ ෍݅ = ܺܲ ݅ = ݅݅ ෍݅ (***)

Trong đó ݅݅ là phần tử thứ ݅ của ݅

phần d khác không Biểu thức (***) chỉ ra rằng mỗi phần tử ݅݅ phải là một trị

vector cột ෍݅ phải là một vector riêng của ܣ ứng với trị riêng ݅݅

Một ma trận vuông ܣ được gọi là chéo hóa được nếu tồn tại ma trận đường

ܣ = ܦܺܲ ܺܲ −1 (*)

Số lượng phần tử khác không của ma trận đường chéo ܦ chính là r(A)

Nhân 2 vế (*) với ܺܲ ta có:

ܺܲܣ = ܦܺܲ (**)Gọi ෍݅ , ݅ lần lượt là cột thứ ݅ của ma trận ܺܲ và ܦ Vì (**) có mỗi cột vếtrái bằng vế phải nên ta có:

ܣ ෍݅ = ܺܲ ݅ = ݅݅ ෍݅ (***)

Trong đó ݅݅ là phần tử thứ ݅ của ݅

phần d khác không Biểu thức (***) chỉ ra rằng mỗi phần tử ݅݅ phải là một trị

vector cột ෍݅ phải là một vector riêng của ܣ ứng với trị riêng ݅݅

Trang 34

ܣ ෍݅ = ܺܲ ݅ = ݅݅ ෍݅ (***)

Trong đó ݅݅ là phần tử thứ ݅ của ݅

phần d khác không Biểu thức (***) chỉ ra rằng mỗi phần tử ݅݅ phải là một trị

vector cột ෍݅ phải là một vector riêng của ܣ ứng với trị riêng ݅݅

khác không

Biểu thức (***) :

Trang 35

Cách phân tích 1 ma trận vuông thành nhân tử như (*) còn gọi là phân tích giá trị riêng.

Một ma trận vuông ܣ được gọi là chéo hóa được nếu tồn tại ma trận đường chéo ܦ và ma trận khả nghịch ܺܲ sao cho:

ܣ = ܦܺܲ ܺܲ −1 (*)

Số lượng phần tử khác không của ma trận đường chéo ܦ chính là r(A).

Nhân 2 vế (*) với ܺܲ ta có:

ܺܲܣ = ܦܺܲ (**) Gọi ෍݅ , ݅ lần lượt là cột thứ ݅ của ma trận ܺܲ và ܦ Vì (**) có mỗi cột vế trái bằng vế phải nên ta có:

ܣ ෍݅ = ܺܲ ݅ = ݅݅ ෍݅ (***)

Trong đó ݅݅ là phần tử thứ ݅ của ݅ .

Dấu bằng thứ hai xảy ra vì ܦ là ma trận đường chéo, tức ݅ chỉ có thành phần d khác không Biểu thức (***) chỉ ra rằng mỗi phần tử ݅݅ phải là một trị riêng của ܣ và mỗi vector cột ෍݅ phải là một vector riêng của ܣ và mỗi vector cột ෍݅ phải là một vector riêng của ܣ ứng với trị riêng ݅݅ .

Phân tích giá trị riêng:

=> không tồn tại ma trận khả nghịch P

một số thực bất kì

Trang 38

left-singular vectors của ܣ.

right-singular vectors của ܣ

Trang 40

1 LÀM MỎNG SVD:

• Trong hầu hết trường hợp, m >> n.

A được biểu diễn dưới dạng:

• Số lượng các trị riêng cần tìm chỉ còn n và số lượng vector

Vnn).

Số quan sát thường lớn gấp rất nhiều lần so với số chiều hay ݉ ≫ ݊ trong

hầu hết các TH

Thay vì tính toàn bộ ma trận ܷ ݉݉ => chỉ tính n cột đầu tiên là ܷ ݊݉ .

Số chiều của ma trận đường chéo Σ݊݉ cũng giảm xuống thành Σ݊݊ .

Khi đó ma trận ܣ được biểu diễn dưới dạng: ܣ = ܷ ݊݉ Σ݊݊ ܸ ݊݊ܶ

Số lượng các trị riêng cần tìm chỉ còn ݊ và số lượng vector riêng chỉ

còn 2݊ (݊ cột của ma trận ܷ ݊݉ và ݊ cột của ma trận ܸ ݊݊ ).

Trang 41

1 LÀM MỎNG SVD:

Amn

Trang 42

2 COMPACT SVD:

ܣ݉ ×݊ = ܷ ݉ ×݉ Σ݉ ×݊ ܷ ݊ ×݊ ܶ

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

Mỗi , là một ma trận có rank bằng 1

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

Ta có cách phân tích gọn hơn: compact SVD:

Biểu diễn ma trận ܣ dưới dạng tổng của các tích vector cộtݑ݅ của ܷ ݉݉ vàvector dòngݒ݅ của ܸ ݊݊ܶ như sau:ܣ = σ݅ =1݊ ݑ݅ ෍ ݒ݅ ݅

Các vectorݑ݅ vàݒ݅ là các hệ cơ sở độc lập tuyến tính

Thông thường trong ma trận đường chéo Σ݊݊ chỉ một lượng lớn các trị riêng

có lớn hơn 0 Các trị riêng còn lại đều xấp xỉ 0

Do đó chỉ tạiݎ vị trí dòng và cột tương ứng với các trị riêng đủ lớn ta mới

Trang 43

Chương 3: Giảm chiều SVD

2 COMPACT SVD:

vector dòngݒ݅ của ܸ ݊݊ܶ như sau: ܣ = σ ݅ =1 ݑ ݅ ෍ ݒ ݅ ݅

Các vectorݑ݅ vàݒ݅ là các hệ cơ sở độc lập tuyến tính.

Thông thường trong ma trận đường chéo Σ݊݊ chỉ một lượng lớn các trị riêng

có lớn hơn 0 Các trị riêng còn lại đều xấp xỉ 0.

Do đó chỉ tạiݎ vị trí dòng và cột tương ứng với các trị riêng đủ lớn ta mới thực hiện tính toán SVD Biểu diễn ma trận ܣ݊݉ dưới dạng compact SVD:

• Ur, Vr lần lượt là ma trận được tạo bởi r cột đầu tiên của U và V.

• Nếu A có rank nhỏ hơn rất nhiều so với số hàng và số cột r << m, n

=> được lợi nhiều về lưu trữ.

Trang 44

2 COMPACT SVD:

Ví dụ minh hoạ với m = 4, n = 6, r = 2.

Hình: Biểu diễn SVD thu gọn và biểu diễn ma trận dạng tổng các ma trận có rank = 1.

Trang 45

3 TRUNCATE SVD:

Giả định A là ma trận bán xác định dương Khi đó mọi trị riêng của nó đều không âm

Phần còn lại của ma trận sẽ bị loại bỏ

Thu được ma trận xấp xỉ của A:

Hoặc ta có thể biểu diễn dưới dạng tổng của tích vô hướng các vector

Trang 46

3 TRUNCATE SVD:

Khi đó ta còn tính được khoảng cách norm Frobenius giữa A^ và A chính bằng tổng bình phương của các trị riêng còn lại từ ݐ+1෍ đến ෍݊ (với giả định ܣ có ݊ trị riêng) như sau:

Sai số của 2 ma trận là nhỏ nhất vì bằng tổng bình phương các trị riêng còn lại

Tính được khoảng cách norm Frobenius giữa  và A: bằng tổng bình phương các trị riêng còn lại từ đến (với giả định A có n trị riêng) như sau:

Trang 48

Định lý: Với ma trận ܣ݉ ×݊ bất kỳ thì A+ được gọi là ma trận nghịch đảo suy rộng của A nếu ma trận A thỏa mãn:

1 AA+A = A

2 A+AA+ = A+

3 (A.A+)T = A.A+

4 (A+.A)T = A+.A

Trang 49

Với mọi ma trận A có phân tích SVD là ܣ = ܷ σ ܸ ܶ thì ma trận ܸ ∑+.ܷ ܶ là ma

trận nghịch đảo suy rộng của ma trận A Với ∑+là ma trận nghịch đảo của ∑

Trang 50

ỨNG DỤNG CỦA SVD TRONG HỌC MÁY

Trang 51

● Trong nén ảnh

● Trong hệ gợi ý

● Xây dựng và tối ưu hàm mất mát

Trang 52

đoán

Trang 53

Hệ gợi ý dựa trên nội dung

dùng

Sản phẩm

Trang 54

Hệ gợi ý dựa trên nội dung

Content-based systems

Đánh giá đặc tính items được gợi ý

Yêu cầu:

+ Sắp xếp items vào từng nhóm + Tìm các đặc trưng của từng items

Có những items không có nhóm cụ thể

Trang 55

• Mỗi user sẽ có mức độ quan tâm tới từng item khác nhau

• Mức độ quan tâm này, nếu đã biết, được gán cho một giá trị

ứng với mỗi cặp user-item

• Giả sử mức độ quan tâm được đo bằng giá trị user rate cho item, tạm gọi giá trị này là rating

• Tập hợp tất cả các ratings, bao gồm cả những giá trị chưa biết

cần được dự đoán, tạo nên một ma trận gọi là utility matrix.

Trang 56

VD: Hệ thống gợi ý bài hát 6 user: A tới F

từ đó đưa ra gợi ý cho người dùng.

Trang 58

• Nhiều ô được điền => độ chính xác của hệ thống càng cao.

• Tuy nhiên, có rất nhiều users và items, và mỗi user chỉ đánh giá với số lượng rất nhỏ.

=> Lượng ô màu xám của utility matrix trong các bài toán đó thường rất lớn, và lượng các ô đã được điền là một số rất nhỏ.

• Ưu điểm: Một trong những thuật toán dễ hiểu nhất nhưng lại

mang lại hiểu quả cao nhờ vào tính logic của nó

• Nhược điểm: Cần quá nhiều dữ liệu đánh giá của người dùng.

Trang 59

• Không có Utility matrix, gần như không thể gợi ý được sản phẩm tới

người dùng, ngoài cách luôn luôn gợi ý các sản phẩm phổ biến nhất.

• Có hai hướng tiếp cận phổ biến để xác định giá trị rating cho mỗi cặp

user-item trong Utility Matrix:

1 Nhờ user đánh giá item.

2 Dựa trên hành vi của user.

Trang 60

Content-Based Recommendations

• Xây dựng 1 bộ hồ sơ cho mỗi item => biểu diễn dưới dạng toán học là

feature vector

• TH đơn giản, feature vector được trích xuất từ item.

• VD: các features của 1 bài hát:

- Nhạc sĩ sáng tác: Cùng là nhạc trẻ, có người thích của Phan Mạnh

Quỳnh, người khác lại thích Sơn Tùng MTP.

- Năm sáng tác: Có người sẽ thích những bài nhạc cũ hơn nhạc hiện đại.

- Thể loại nhạc: Có người thích nhạc rock, có người lại thích nhạc điện tử.

Trang 61

Content-Based Recommendations

Xây dựng một feature vector hai chiều cho mỗi bài hát: chiều thứ nhất là mức

độ Bolero, chiều thứ hai là mức độ Thiếu nhi của bài đó

Đặt các feature vector cho mỗi bài hát là x1, x2, x3, x4, x5

Trang 63

Content-Based Recommendations

Xây dựng mô hình cho user không phụ

thuộc vào user khác, phụ thuộc vào hồ

sơ của item

• Tiết kiệm bộ nhớ, thời gian tính toán

• Tận dụng thông tin đặc trưng của

item

• Xây dựng feature vector bao gồm kỹ

thuật Xử lí ngôn ngữ tự nhiên

• Không tận dụng thông tin hữu ích từ các user khác

• Không phải luôn có bản mô tả cho mỗi item

• Các thuật toán NLP cũng phức tạp hơn ở việc phải xử lý các từ gần nghĩa, viết tắt, sai chính tả, hoặc được viết ở các ngôn ngữ khác nhau

Trang 64

Neighborhood-based Collaborative Filtering

Xác định mức độ

quan tâm của một

user tới một item

dựa trên các users

khác gần giống với

user này.

Việc gần giống nhau giữa các users xác định thông qua mức độ quan tâm của users này tới các items khác hệ thống đã

biết.

A, B thích phim Cảnh sát hình sự, tức rate phim này

5 sao Biết A cũng thích Người phán

xử, nhiều khả năng

B cũng thích bộ phim này.

Trang 65

• Xác định sự giống nhau giữa 2 user.

• Dữ liệu duy nhất chúng ta có là Utility matrix Y, vậy nên sự giống nhau này phải được xác định dựa trên các cột tương ứng với hai users trong ma trận này.

Trang 66

ݑ0, ݑ1 thích ݅ 0, ݅ 1, ݅ 2 và không thích ݅ 3, ݅ 4

Điều ngược lại xảy ra ở các users còn lại

Một similiarity function tốt cần đảm bảo:

݉ ݅ݏ݌ܽ݊(ݑ0,ݑ1) > ݉ ݅ݏ݌ܽ݊(ݑ0,ݑ݅ ), ∀݅ > 1

Để xác định mức độ quan tâm của u0 lên i2 nên dựa trên hành vi của u1 lên sản

phẩm này

Vì u1 đã thích i2 nên hệ thống cần gợi ý i2 cho u0

Đặt mức độ giống nhau của hai users ݑ݅ , ݑ݆ là: sim(ݑ݅ ݆ )

Trang 67

• Để đo similarity giữa 2 users, xây dựng feature vector cho mỗi user rồi áp dụng một hàm có khả năng đo similarity giữa hai vectors đó

• Các vectors này được xây dựng trực tiếp dựa trên Utility matrix chứ không dùng dữ liệu ngoài như item profiles

• Với mỗi user, thông tin duy nhất chúng ta biết là các ratings mà user đó đã thực

hiện, tức cột tương ứng với user đó trong Utility matrix

• Các cột này thường có rất nhiều mising ratings vì mỗi user thường chỉ rated một số lượng rất nhỏ các items

• Khắc phục: giúp hệ thống điền các giá trị này sao cho việc điền không làm ảnh

hưởng nhiều tới sự giống nhau giữa hai vector

• Việc điền này chỉ phục vụ cho việc tính similarity chứ không phải là suy luận ra giá trị cuối cùng

Trang 69

Tính toán sự tương đồng giữa các items rồi gợi ý những items gần giống

với item yêu thích của một user.

• Số items < số users

=> Similarity matrix nhỏ hơn, thuận lợi cho việc lưu trữ và tính toán

• Số lượng phần tử đã biết trong Utility matrix là như nhau nhưng số hàng (items) ít hơn số cột (users)

=> Mỗi hàng của ma trận có nhiều phần tử đã biết hơn số phần tử đã biết mỗi cột

=> Giá trị trung bình của mỗi hàng ít bị thay đổi hơn khi có thêm một vài ratings

=> Cập nhật ma trận Similarity Matrix có thể được thực hiện ít thường xuyên hơn

ƯU ĐIỂM

Trang 70

MATLAB

Trang 72

Câu lệnh Cú pháp Ý nghĩa

for for i = 1:n <phát biểu>end

Cho i chạy từ 1 tới n cho trước Thực thi lần lượt các phát biểu ứng với các giá trị

của i.

size(A,2) Số cột của ma trận A

find index = find(điều kiện) Index chứa các chỉ số mà khi đó điều kiện đúng (true)

Các hàm được sử dụng

Trang 73

• Cảm ơn thầy cô và các bạn đã theo dõi bài thuyết trình của nhóm 9.

• Chúc cô và các bạn luôn có thật nhiều sức khỏe.

Ngày đăng: 24/04/2022, 12:30

HÌNH ẢNH LIÊN QUAN

Hình: Biểu diễn SVD thu gọn và biểu diễn ma trận dạng tổng các ma trận có rank = 1. - BÀI tập lớn đại số TUYẾN TÍNH  ỨNG DỤNG của PHÂN TÍCH SVD vào hệ THỐNG gợi ý TRONG MACHINE LEARNING
nh Biểu diễn SVD thu gọn và biểu diễn ma trận dạng tổng các ma trận có rank = 1 (Trang 44)

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w