Professional Documents
Culture Documents
Hình 1.3 Chức năng phát hiện và phân loại khuôn mặt trong máy ảnh của hãng Sony.
1.3. Học có giám sát ( Supervised Learning )
Như vậy:
8 8
𝑅𝑒𝑐𝑎𝑙𝑙 = = 80% 𝑃𝑟𝑒𝑐𝑖𝑠𝑖𝑜𝑛 = = 20%
8+2 8+32
Kết luận: tỉ lệ chính xác khi xác định một mail là rác là 20%; tỷ lệ chính xác khi
xác định một thư rác là 80%
a. Khái niệm
Vấn đề là xác định được một mô hình tốt, xác định mô hình nào tốt hơn mô hình
nào khi không có điều kiện để kiểm chứng. Ví như không thể có được và thử trên tất
cả ác mẫu chữ số viets tay hay tất cả các thư điện tử có nội dung khác nhau. Trong học
máy, lựa chọn mô hình (model selection) là quá trình đi tìm kiếm câu trả lời cho: cho
trước một lượng hữu hạn dữ liệu quan sát được (observed data), mô hình hoặc thuật
toán nào cùng với các giá trị tham số là bao nhiêu sẽ có hiệu năng (peformance) tốt
nhất trên phần dữ liệu còn lại (unseen data).
Có hai cách tiếp cận chính trong việc đánh giá độ tốt, hay ước lượng lỗi của một
mô hình. Cách thứ nhất là dựa trên lỗi thực nghiệm và độ phức tạp của mô hình. Các
nguyên lý như độ dài mô tả tối thieur hay cực tiểu lỗi cấu trúc…đều đánh giá ao các
mô hình không quá phức tạp và mức độ lỗi thực nghiệm có hể chấp nhận được ở mức
vừa phải. Cách tiếp cận thứ hai trong lựa chọn mô hình là các phương pháp kiểm tra
chéo (cross-validation). Dữ liệu được chia thành hai phần tách biệt, một phần dùng để
xây dựng mô hình (dữ liệu huấn luyện - training data) và phần còn lại được dùng để
đánh giá mô hình (dữ liệu kiểm thử - testing data). Với cách tiếp cận này, các mô hình
được đánh giá một cách độc lập dựa trên phần dữ liệu được coi như là dữ liệu của
tương lai. Cách phổ biến nhất trong hướng tiếp cận này là kiểm tra chéo k lần (f-fold):
toàn bộ dữ liệu được chia thành k phần tương đối cân bằng, lần lượt lấy k − 1 phần để
xây dựng mô hình và phần còn lại để kiểm thử. Kết quả trung bình của k lần kiểm thử
được sử dụng như là một ước lượng cho độ tốt của mô hình đó. Giá trị phổ biến nhất
của k là 10. Khi k = l, nghĩa là đúng bằng số dữ liệu có được thì phép kiểm tra chéo
này được gọi là kiểm tra leave-one-out.
Các kỹ thuật kiểm tra chéo tuy đơn giản nhưng lại là cách thực tế nhất để sử
dụng. Điểm yếu chính của phương pháp này là thời gian để huấn luyện và kiểm thử
nhiều lần cho mỗi mô hình. Đặc biệt khi các mô hình có nhiều tham số khác nhau và
độ phức tạp tính toán lớn thì kiểm tra chéo là phương pháp cần rất nhiều thời gian tính
toán, Tùy theo từng bài toán cụ thể mà số lần kiểm thử k cần được xác định một cách
phù hợp. Ví dụ như nếu k nhỏ thì số lần kiểm thử cũng ít hơn và dữ liệu huấn luyện
cũng ít hơn, do vậy thời gian thực hiện kiểm tra chéo cũng ít hơn.
Validation
Để kiểm thử và lựa chọn mô hình ta thường chia tập dữ liệu thành training data
và test data. Tuy nhiên khi xây dựng mô hình ta không nên sử dụng test data. Vậy làm
cách nào đẻ biết được chất lượng của mô hình với các dữ liệu chưa thấy. Phương pháp
đơn giản nhất là trích từ tập training data ra một tập con nhỏ và thực hiện đánh giá mo
hình trên tập con nhỏ này. Tập con nhỏ được trích từ tập training gọi là tập validation
và tập training chỉ còn lại là phần còn lại trừ đi phần validation. Train error được tính
trên phần training set mới này và một khái niệm nữa là validation error được tính trên
phần validation sẽ giúp đánh giá mô hình. Phương pháp thường được sử dụng cho mô
hình khác nhau. Mô hình nào có validation error nhỏ nhất sẽ là mô hình tốt nhất.
Thông thường ta bắt đầu từ mô hình đơn giản, sau đó tăng dần độ phức tạp của
mô hình. Tới khi nào validation có chiều hướng tăng lên thì chọn mô hình trước đó.
Chú ý rằng mô hình càng phức tạp, train error có xu hướng nhỏ đi.
Cross-validation
Trong nhiều trường hợp, chúng ta có rất hạn chế về số lượng dữ liệu để xây dựng
mô hình. Nếu lấy quá nhiều dữ liệu trong tập training làm dữ liệu validation, phần dữ
liệu còn lại của tập training là không đủ để xây dựng mô hình. Lúc này, tập validation
phải thật nhỏ để giữ được lượng dữ liệu cho training đủ lớn. Tuy nhiên, một vấn đề
khác nảy sinh. Khi validation quá nhỏ, hiện tượng overfitting lại có thể xảy ra với tập
training còn lại. Giải pháp cho vấn đề này là sử dụng cross-validation, đây là sự cải
tiến của validation với lượng dữ liệu trong tập validation là nhỏ nhưng chất lượng mô
hình được đánh giá trên nhiều tập validation khác nhau. Một cách thường đường sử
dụng là chia tập training ra kk tập con không có phần tử chung, có kích thước gần
bằng nhau. Tại mỗi lần kiểm thử , được gọi là run, một trong số kk tập con được lấy ra
làm validata set. Mô hình sẽ được xây dựng dựa vào hợp của k−1k−1 tập con còn lại.
Mô hình cuối được xác định dựa trên trung bình của các train error và validation
error. Cách làm này còn có tên gọi là k-fold cross validation.
Khi k bằng với số lượng phần tử trong tập training ban đầu, tức mỗi tập con có
đúng 1 phần tử, ta gọi kỹ thuật này là leave-one-out.
Sai số dự đoán
Chúng ta mong muốn rằng sự sai kháce giữa giá trị thực y và giá trị dự đoán 𝑦̂
(đọc là y hat trong tiếng Anh) là nhỏ nhất. Nói cách khác, chúng ta muốn giá trị sau
đây càng nhỏ càng tốt:
1 2 1 1
𝑒 = (𝑦 − 𝑦̂)2 = (𝑦 − 𝑥̅ 𝑤)2
2 2 2
1
trong đó hệ số (lại) là để thuận tiện cho việc tính toán (khi tính đạo hàm thì
2
1
số sẽ bị triệt tiêu). Chúng ta cần e2 vì e=𝑦 − 𝑦̂ có thể là một số âm, việc nói e nhỏ
2
nhất sẽ không đúng vì khi e=−∞ là rất nhỏ nhưng sự sai lệch là rất lớn.
Cách phổ biến nhất để tìm nghiệm cho một bài toán tối ưu (chúng ta đã biết từ
khi học cấp 3) là giải phương trình đạo hàm (gradient) bằng 0! Tất nhiên đó là khi việc
tính đạo hàm và việc giải phương trình đạo hàm bằng 0 không quá phức tạp. Thật may
mắn, với các mô hình tuyến tính, hai việc này là khả thi.
Vậy nếu ma trận A không khả nghịch (có định thức bằng 0) thi phương trình
trên vô nghiệm, hoặc là nó có vô số nghiệm. Khi đó, chúng ta sử dụng khái niệm giả
nghịch đảo At (đọc là A dagger ). (Giả nghịch đảo (pseudo inverse) là trường hợp
tổng quát của nghịch đảo khi ma trận không khả nghịch hoặc thậm chí không vuông.
Trong khuôn khổ bài viết này, tôi xin phép được lược bỏ phần này, nếu các bạn thực
sự quan tâm, tôi sẽ viết một bài khác chỉ nói về giả nghịch đảo.)
Với khái niệm giả nghịch đảo, điểm tối ưu của bài toán Linear Regression có
dạng:
Dữ liệu huấn luyện và dữ liệu test là trên cùng 1 bộ, trong đó:
Đầu ra (OUPUT)
Salary =
9449.9623 * YearsExperience +
25792.2002
MAE: độ đo sự khác nhau giữa hai biến, là trung bình khoảng cách dọc dữa mỗi
điểm và khoảng cách ngang giữa mooid diểm với đường định dạng.
RMSE: căn bậc hai của trung bình bình phương sai số, mức độ phân tán của các
giá trị dự đoán từ các giá trị thực tế
Đầu ra (OUPUT)
-0.4827 * pH +
0.8827 * sulphates +
0.2893 * alcohol +
4.4301
Hệ số tương quan là 0.5872- đo lường sự tương quan giữa quality và các thuộc
tính khác
MAE: độ đo sự khác nhau giữa hai biến, là trung bình khoảng cách dọc dữa mỗi
điểm và khoảng cách ngang giữa mooid diểm với đường định dạng.
RMSE: căn bậc hai của trung bình bình phương sai số, mức độ phân tán của các
giá trị dự đoán từ các giá trị thực tế
2.1.2. Hồi quy logistic
phương pháp hồi quy logistic là một mô hình hồi quy nhằm dự đoán giá trị đầu
ra rời rạc (discrete target variable) y ứng với một véc-tơ đầu vào x. Việc này tương
đương với chuyện phân loại các đầu x vào các nhóm y tương ứng.
Ví dụ, xem một bức ảnh có chứa một con mèo hay không. Thì ở đây ta coi đầu
ra y=1 nếu bước ảnh có một con mèo và y=0 nếu bức ảnh không có con mèo nào. Đầu
vào x ở đây sẽ là các pixel một bức ảnh đầu vào
Đầu ra (OUPUT)
Đầu ra (OUPUT)
Phân loại Bayesian là phương pháp phân loại sử dụng tri thức các xác suất đã qua
huấn luyện. Phương pháp này thích hợp với những lớp bài toán đòi hỏi phải dự đoán
chính xác lớp của mẫu cần kiểm tra dựa trên những thông tin từ tập huấn luyện ban
đầu.
Ví dụ đối với bài toán phân loại email gửi đến là spam hay non-spam. Giả thiết
mỗi một email được đại diện bởi một vector thuộc tính đặc trưng là x = (x1, x2, …,xn)
với x1, x2, …, xn là giá trị của các thuộc tính X1, X2,…,Xn tương ứng trong không gian
vector đặc trưng X.
Dựa vào công thức xác suất Bayes và công thức xác suất đầy đủ ta có được xác
suất 1 email với vector đặc trưng x thuộc về loại c là : P(C=c | X=x) = (P(C=c) .P(X=x
| C=c) )/(∑P(C=k) .P(X=x | C=k)) với C là email được xét , c € {spam, non-spam}
Xác suất P(C=c) được tính dễ dàng từ tập huấn luyện. Thực tế rất khó để tính
được xác suất P(X=x | C=c) . Giả thiết rằng tất cả các biến cố X1, X2…Xn là độc lập
với nhau do đó chúng ta có thể tính được xác suất P(X=x | C=c) dựa theo công thức:
P(X=x | C=c) = ∏ P(Xi=xi | C=c)
Như vậy công thức tính xác suất 1 email là spam sẽ được viết thành : P(C=c |
X=x) = (P(C=c) . ∏ P(Xi=xi | C=c) )/(∑ P(C=k) .∏ P(Xi=xi | C=k))
Từ xác suất này ta so sánh với một giá trị ngưỡng t là ngưỡng để phân loại email
là spam hay không, nếu xác suất này lớn hơn t, ta cho email đó là spam, ngược lại
email đó là non-spam .
Trong phân loại email có 2 loại sai lầm, một là sai lầm nhận 1 email spam thành
nonspam và sai lầm thứ 2 là nhận 1 email non-spam thành spam. Rõ ràng sai lầm thứ 2
là nghiêm trọng hơn vì người dùng có thể chấp nhận một email spam vượt qua bộ lọc
nhưng không thể chấp nhận một email hợp lệ quan trọng lại bị bộ lọc chặn lại.
Giả sử ta gọi S->N và N->S tương ứng với 2 loại lỗi ở trên. Để hạn chế loại lỗi
thứ 2 ta giả sử rằng lỗi N->S có chi phí gấp λ lỗi S->N nghĩa là ta phân loại 1 email là
spam dựa theo :
weather
Nhận xét
spambase
Nhận xét
Bài toán tối ưu trong Support Vector Machine (SVM) chính là bài toán đi tìm
đường phân chia sao cho margin là lớn nhất.
Như đã biết, với bài toán phân loại nhị phân tuyến tính ta cần vẽ được mặt phân tách
(với không gian 2 chiều thì mặt phẳng này là đường phân tách): wTx +b=0 để phân biệt
được dữ liệu. Khi đó dấu của hàm ước lượng H={xsgn(wTx+b) ; wR} sẽ thể hiện được
điểm dữ liệu x nằm ở cụm dữ liệu nào.
Ta có thể có nhiều mặt phân tách thoả mãn được việc này và đương nhiên là nếu
chọn được mặt mà phân tách tốt thì kết quả phân loại của ta sẽ tốt hơn. Một lẽ rất tự nhiên
là dường như mặt nằm vừa khít giữa 2 cụm dữ liệu sao cho nằm xa các tập dữ liệu nhất là
mặt tốt nhất
SVM chính là một biện pháp để thực hiện được phép lấy mặt phẳng như vậy.
Đầu ra (OUPUT)
Weather
Nhận xét
SpamBase
Nhận xét
Phương pháp Tập dữ liệu Phân lớp chính Phân lớp không Độ tin cậy của
xác chính xác mô hình
NaiveBayes Weather (5) 64.2875 35.7143 0.762
SpamBase(59) 79.5109 20.4891 0.806
SMO Weather (5) 54.1429 42.8571 0.7
SpamBase(59) 89.3207 10.6739 0.916
Như vậy SMO chạy tốt khi dữ liệu huấn luyện lớn khi thực hiện với tập dữ liệu
Weather 5 thuộc tính và 14 bộ dữ liệu thì NaiveBayes tốt hơn còn SMO kém hơn
nhưng với SpamBase 59 thuộc tính và 3689 bộ dữ liệu thì SMO tốt hơn.
2.3. Phân cụm
2.3.1. K-means
Trong thuật toán K-means clustering, chúng ta không biết nhãn (label) của từng
điểm dữ liệu. Mục đích là làm thể nào để phân dữ liệu thành các cụm (cluster) khác
nhau sao cho dữ liệu trong cùng một cụm có tính chất giống nhau.
Ví dụ: Một công ty muốn tạo ra những chính sách ưu đãi cho những nhóm khách
hàng khác nhau dựa trên sự tương tác giữa mỗi khách hàng với công ty đó (số năm là
khách hàng; số tiền khách hàng đã chi trả cho công ty; độ tuổi; giới tính; thành phố;
nghề nghiệp; …). Giả sử công ty đó có rất nhiều dữ liệu của rất nhiều khách hàng
nhưng chưa có cách nào chia toàn bộ khách hàng đó thành một số nhóm/cụm khác
nhau. Nếu một người biết Machine Learning được đặt câu hỏi này, phương pháp đầu
tiên anh (chị) ta nghĩ đến sẽ là K-means Clustering. Vì nó là một trong những thuật
toán đầu tiên mà anh ấy tìm được trong các cuốn sách, khóa học về Machine Learning.
Và tôi cũng chắc rằng anh ấy đã đọc blog Machine Learning cơ bản. Sau khi đã phân
ra được từng nhóm, nhân viên công ty đó có thể lựa chọn ra một vài khách hàng trong
mỗi nhóm để quyết định xem mỗi nhóm tương ứng với nhóm khách hàng nào. Phần
việc cuối cùng này cần sự can thiệp của con người, nhưng lượng công việc đã được rút
gọn đi rất nhiều.
Ý tưởng đơn giản nhất về cluster (cụm) là tập hợp các điểm ở gần nhau trong
một không gian nào đó(không gian này có thể có rất nhiều chiều trong trường hợp
thông tin về một điểm dữ liệu là rất lớn). Hình bên dưới là một ví dụ về 3 cụm dữ liệu
(từ giờ tôi sẽ viết gọn là cluster).
Giả sử mỗi cluster có một điểm đại diện (center) màu vàng. Và những điểm xung
quanh mỗi center thuộc vào cùng nhóm với center đó. Một cách đơn giản nhất, xét một
điểm bất kỳ, ta xét xem điểm đó gần với center nào nhất thì nó thuộc về cùng nhóm
với center đó. Tới đây, chúng ta có một bài toán thú vị: Trên một vùng biển hình
vuông lớn có ba đảo hình vuông, tam giác, và tròn màu vàng như hình trên. Một điểm
trên biển được gọi là thuộc lãnh hải của một đảo nếu nó nằm gần đảo này hơn so với
hai đảo kia . Hãy xác định ranh giới lãnh hải của các đảo.
Hình dưới đây là một hình minh họa cho việc phân chia lãnh hải nếu có 5 đảo khác
nhau được biểu diễn bằng các hình tròn màu đen:
Mục đích cuối cùng của thuật toán phân nhóm này là: từ dữ liệu đầu vào và số
lượng nhóm chúng ta muốn tìm, hãy chỉ ra center của mỗi nhóm và phân các điểm dữ
liệu vào các nhóm tương ứng. Giả sử thêm rằng mỗi điểm dữ liệu chỉ thuộc vào đúng
một nhóm.
Với mỗi điểm dữ liệu xi đặt yi=[yi1,yi2,…,yiK] là label vector của nó, trong đó
nếu xi được phân vào cluster k thì yik=1 và yij=0,∀ j≠k. Điều này có nghĩa là có đúng
một phần tử của vector yi là bằng 1 (tương ứng với cluster của xi), các phần tử còn lại
bằng 0. Ví dụ: nếu một điểm dữ liệu có label vector là [1,0,0,…,0] thì nó thuộc vào
cluster 1, là [0,1,0,…,0] thì nó thuộc vào cluster 2, ……. Cách mã hóa label của dữ
liệu như thế này được goi là biểu diễn one-hot. Chúng ta sẽ thấy cách biểu diễn one-
hot này rất phổ biến trong Machine Learning ở các bài tiếp theo.
Ràng buộc của yi có thể viết dưới dạng toán học như sau:
yik{0,1}, ∑𝐾
𝑘=1 𝑦𝑖𝑘 = 1 (1)
Nếu ta coi center mk là center (hoặc representative) của mỗi cluster và ước lượng tất cả
các điểm được phân vào cluster này bởi mk, thì một điểm dữ liệu xi được phân vào
cluster k sẽ bị sai số là (xi−mk). Chúng ta mong muốn sai số này có trị tuyệt đối nhỏ
nhất nên ta sẽ tìm cách để đại lượng sau đây đạt giá trị nhỏ nhất:
Hơn nữa, vì xi được phân vào cluster k nên yik=1,yij=0, ∀ j≠k. Khi đó, biểu thức bên
trên sẽ được viết lại là:
+ NumClusters:3
+ DistanceFunction: EuclideanDistance
Đầu ra (OUPUT)
Shopping_CustomerData
Nhận xét
2.3.2. FarthesFirst
Shopping-CustomerData
Nhận xét
Phương pháp Tập dữ liệu Phân lớp chính Phân lớp không Độ tin cậy của
xác chính xác mô hình
NaiveBayes Weather (5) 64.2875 35.7143 0.762
SpamBase(59) 79.5109 20.4891 0.806
SMO Weather (5) 54.1429 42.8571 0.7
SpamBase(59) 89.3207 10.6739 0.916
PHẦN 3. HỆ THỐNG GỢI Ý (RECOMMENDER SYSTEMS)
Hệ thống gợi ý sử dụng các tri thức về sản phẩm, các tri thức của chuyên gia hay
tri thức khai phá học được từ hành vi con người dùng để đưa ra các gợi ý về sản phẩm
mà họ thích trong hàng ngàn hàng vạn sản phẩm có trong hệ thống. Các website
thương mại điện tử, ví dụ như sách, phim, nhạc, báo...sử dụng hệ thống gợi ý để cung
cấp các thông tin giúp cho người sử dụng quyết định sẽ lựa chọn sản phẩm nào. Các
sản phẩm được gợi ý dựa trên số lượng sản phẩm đó đã được bán, dựa trên các thông
tin cá nhân của người sử dụng, dựa trên sự phân tích hành vi mua hàng trước đó của
người sử dụng để đưa ra các dự đoán về hành vi mua hàng trong tương lai của chính
khách hàng đó. Các dạng gợi ý bao gồm: gợi ý các sản phẩm tới người tiêu dùng, các
thông tin sản phẩm mang tính cá nhân hóa, tổng kết các ý kiến cộng đồng, và cung cấp
các chia sẻ, các phê bình, đánh giá mang tính cộng đồng liên quan tới yêu cầu, mục
đích của người sử dụng đó.
Giả sử rằng I là tập các đối tượng (Item) có thể được gợi ý, U là tập người dùng,
u là một người dùng cụ thể trong tập U và i là một đối tượng cụ thể trong I mà chúng
ta muốn dự đoán cho u (dựa vào sở thích của u).
Dựa theo Các điểm số đánh giá của Các điểm số Nhận ra người sử dụng
lọc cộng những người sử dụng trong đánh giá của u trong U tượng tự với u
tác U đối với các đối tượng cho các đối ( về sở thích) và sau
trong I. tượng trong I. đó ngoại suy điểm số
đánh giá vủa u cho i.
Dựa theo Các đặc điểm của các đối Các điểm số Tạo ra một mô hình
Phương Dữ liệu cơ sở Dữ liệu đầu ra Tiến trình xử lý
pháp gợi ý
Dựa trên Các đặc điểm của các đối Một sự mô tả Suy luận sự phù hợp
cơ sở tri tượng trong I. Các tri thức nhu cầu và sở giữa I và nhu cầu của
thức (hiểu biết) về sự phù hợp thích của người u.
giữa các đối tượng với nhu sử dụng u.
cầu của người sử dụng.
Hệ thống gợi ý dựa theo lọc cộng tác (Collaborative recommendation systems):
là phương pháp gợi ý được triển khai rộng rãi nhất và thành công nhất trong thực tế.
Hệ thống theo lọc công tác phân tích và tổng hợp các điểm số đánh giá của các
đối tượng, nhận ra sự tương đồng giữa những người sử dụng trên cơ sở các điểm số
đánh giá của họ và tạo ra các gợi ý dựa trên sự so sánh này. Hồ sơ (profile) của người
sử dụng điển hình trong hệ thống lọc cộng tác bao gồm một vector các đối tượng
(item) và các điểm số đánh giá của chúng, với số chiều tăng lên liên tục khi người sử
dụng tương tác với hệ thống theo thời gian.
Một số hệ thống sử dụng phương pháp chiết khấu dựa trên thời gian (time-based
discounting) để tính toán cho yếu tố “trượt” đối với sự quan tâm của người sử dụng.
Trong một số trường hợp điểm số đánh giá (rating) có thể là nhị phân (thích/không
thích) hoặc các giá trị số thực cho thấy mức độ ưu tiên.
Thế mạnh lớn nhất của kỹ thuật gợi ý theo lọc cộng tác là chúng hoàn toàn độc
lập với sự biểu diễn của các đối tượng đang được gợi ý, và do đó có thể làm việc tốt
với các đối tượng phức tạp như âm thanh và phim. Schafer, Konstan & Riedl (1999)
gọi lọc cộng tác là “tương quan giữa người – với – người” (people-to-people
correlation).
b. Hệ thống gợi ý dựa theo nội dung
Trong hệ thống thì các đối tượng được biểu diễn bởi các đặc điểm liên quan tới
chúng. Ví dụ, hệ thống gợi ý văn bản như hệ thống lọc tin NewsWeeder sử dụng
những từ của các văn bản như các đặc điểm.
Một số hệ thống gợi ý dựa trên nội dung học một hồ sơ cá nhân về sở thích của
người sử dụng dựa trên các đặc điểm xuất hiện trong chính các đối tượng người sử
dụng đã đánh giá (rated). Schafer, Konstan & Riedl gọi gợi ý theo nội dung là “tương
quan đối tượng với đối tượng” (item-to-item correlation). Hồ sơ người sử dụng của
một hệ thống gợi ý theo nội dung phụ thuộc vào phương pháp học máy được dùng.
Cây quyết định (Decision trees), mạng noron (neural nets) và biểu diễn dựa theo
vector (vector-based representations) đều có thể được sử dụng để học hồ sơ người
dùng. Cũng giống như trong lọc cộng tác, hồ sơ người dùng trong gợi ý dựa theo nội
dung là những dữ liệu lâu dài và được cập nhật theo thời gian.
Sử dụng miền tri thức rõ ràng, có liên quan tới mối quan hệ giữa yêu cầu của
người dùng và sản phẩm cụ thể. Ban đầu người ta đưa ra 3 dạng tri thức: tri thức về
danh mục (tri thức về sản phẩm được gợi ý), tri thức người sử dụng (tri thức về các
yêu cầu của người sử dụng), tri thức về các chức năng (tri thức để ánh xạ các yêu cầu
của người sử dụng tới các sản phẩm thoả mãn các yêu cầu đó).
Phương pháp này không dựa trên tiểu sử người sử dụng nên không gặp phải khó
khăn về sản phẩm mới và người dùng mới. Gợi ý trên cơ sở tri thức có khả năng suy
diễn, khả năng suy diễn phụ thuộc vào độ phù hợp của yêu cầu người sử dụng với các
thuộc tính của sản phẩm.
Mọi hệ thống dựa trên cơ sở tri thức đều là mối quan hệ thu nhận tri thức. Thực
tế, chất lượng của các phương án gợi ý tùy thuộc vào độ chính xác của cơ sở tri thức.
Đây cũng là hạn chế lớn nhất của phương pháp này.
Các hệ thống gợi ý cộng tác (hay các hệ thống lọc cộng tác) cố gắng dự đoán
hiệu dụng (utility) của các mục tin cho một người dùng cụ thể dựa vào những mục tin
được đánh giá trước đó bởi những người dùng khác. Ý tưởng chính của các cách tiếp
cận gợi ý cộng tác là sử dụng thông tin về hành vi trước đó của những người dùng
đang có trong hệ thống để dự đoán mục tin nào người dùng hiện tại sẽ có thể thích
nhất và vì vậy sẽ dùng đến. Các cách tiếp cận cộng tác lấy ra ma trận những đánh giá
hoặc xem xét của người dùng-mục tin được đưa ra như một đầu vào và tạo ra một dự
đoán là con số chỉ mức độ thích hoặc không thích một mục tin nào đó của người dùng
hiện tại, hoặc một danh sách n mục tin gợi ý. Danh sách được tạo không chứa các mục
tin người dùng hiện tại đã dùng. Các hệ thống gợi cộng tác dựa trên vùng lân cận (láng
giềng) hoạt động bằng cách đếm những mục tin chung hai người dùng đã xem đối với
mỗi cặp người dùng trong hệ thống, hoặc số lượng những người dùng chung đã xem
những cặp mục tin giống nhau. Độ tương tự giữa hai người hoặc các mục tin được tính
toán. Hai người đã xem một lượng lớn các mục tin chung có những sở thích giống
nhau. Cần tìm ra những cặp người dùng có sở thích giống nhau nhất hoặc những cặp
mục tin có nhiều người dùng nhất đã xem cả hai mục tin. Những cặp người dùng/mục
tin đó được gọi là “những láng giềng gần nhất”. Hai cách tiếp cận chính của các hệ
thống gợi ý dựa trên vùng lân cận là các gợi ý láng giềng gần theo người dùng và theo
mục tin.
• u.data: Chứa toàn bộ các đánh giá (ratings) của 943 users cho 1682 movies.
Mỗi user đánh giá ít nhất 20 movies.
• ua.base, ua.test, ub.base, ub.test: là hai cách chia toàn bộ dữ liệu ra thành hai
tập con, một cho training, một cho test.
• u.genre: Chứa tên của 19 thể loại phim. Các thể loại bao gồm: unknown,
Action, Adventure, Animation, Children's, Comedy, Crime, Documentary,
Drama, Fantasy, Film-Noir, Horror, Musical, Mystery, Romance, SciFi, Thriller,
War, Western
Trong hệ thống gợi ý lớn có thể có hàng triệu người sử dụng và các mặt hàng , nó
thường là không thể để lưu trữ các ( khác không ) giống nhau giữa mỗi cặp của người
sử dụng hoặc các mục ,do hạn chế về bộ nhớ. Hơn nữa , làm như vậy sẽ rất lãng phí
bởi chúng ta sẽ chỉ cần một số lượng chấp nhận được những mối tương quan để gợi ý.
Quá trình lọc của 130 Christian Desrosiers và George Karypis là một bước cần thiết
mà làm cho cách tiếp cận các người hàng xóm dựa trên thực tế bằng cách giảm số
lượng trọng lượng tương tự để lưu trữ, và hạn chế số lượng hàng xóm(ứng cử viên)để
xem xét trong dự đoán. Có một số cách thức có thể được thực hiện để giải quyết:
Lọc Top- N(Top – hàng xóm) : Đối với mỗi người dùng hoặc item , chỉ có một
danh sách giới hạn nhất định các hàng xóm gần nhất N và trọng lượng tương tự
của mình được lưu giữ . Để tránh những vấn đề về hiệu quả và độ chính xác, N
nên được lựa chọn cẩn thận.Bởi vì nếu N là quá lớn,việc lưu trữ sẽ trở nên cồng
kềnh và tốc độ đưa ra dự đoán sẽ bị làm chậm.Mặt khác , việc lựa chọn một giá
trị quá nhỏ để có thể tồn tại giảm phạm vi của phương pháp đề nghị , gây ra một
số mặt hàng được đề nghị không bao giờ khuyến khích.
Ngưỡng lọc : Thay vì giữ một số cố định các người hàng xóm gần nhất ,cách
tiếp cận này sẽ giúp tất cả những người hàng xóm có trọng lượng tương tự có
độ lớn lớn hơn một ngưỡng nhất định wmin sẽ được sử dụng. Trong khi điều
này là linh hoạt hơn so với trước mặc dù giá trị wmin có thể khó khăn để xác
định.
Lọc phủ định: Nói chung, mối tương quan đánh giá tiêu cực là ít đáng tin cậy
hơn những người tích cực .Người ta có thể loại bỏ tất cả các điểm tương đồng
tiêu cực cũng như những người có cường độ thấp hơn so với một định ngưỡng .
User K-Nearest-neighbors (user kNN): một ma trận xếp hạng xem xét người
dùng-mục tin và ID của người dùng hiện tại như đầu vào, xác định những người dùng
khác có sở thích quá khứ giống với những sở thích của người dùng hiện tại. để trả về
danh sách đã xếp hạng các mục tin dựa trên những dự đoán đánh giá. Để tính toán độ
tương tự giữa những người dùng, có hai phương pháp tính độ tương tự được dùng phổ
biến là độ tương quan Pearsn và Cosine. Các giá trị độ tương tự nằm trong khoảng -1
và 1. Thông thường không xem xét tất cả người dùng trong dữ liệu khi tính toán độ
tương tự người dùng mà chỉ xem xét k người dùng giống nhất. Công thức tính toán độ
tương tự theo hệ số tương quan Pearson [1]:
Trong đó
ra,i , ru,i:là đánh giá của người dùng a cho item i và đánh giá của người dùng u
cho item i;
𝑟̅𝑎 , 𝑟̅𝑢 : những đánh giá trung bình của người dùng a, u;
Phương pháp User_kNN để dự đoán đánh giá của người dùng u trên sản phẩm i được
biểu diễn bằng ngôn ngữ giả như sau [5]:
2: for u=1 to N do
3: Tính Sim_uu'
4: end for
6: for k=1 to K do
8: end for
9: for i = 1 to M do
10: Tính ui
Hàm dự đoán đánh giá của sản phẩm i của người dùng a được tính toán như sau[1]:
Trong đó
𝑟̅𝑎 , 𝑟̅𝑢 : những đánh giá trung bình của người dùng a, u;
s(a,u) độ tương tự giữa người dùng a và u đánh giá sản phẩm i của người dùng u
Việc đánh giá độ chính xác của hệ thống có thể sử dụng căn của sai số bình phương
trung bình (RMSE- Root Mean Square Error)
Trong đó
pu,i là giá trị dự đoán đánh giá của người dùng u với mục tin i;
ru,i là giá trị đánh giá thực tế của người dùng u đối với mục tin i.
3.3. Phương pháp Ma trận hệ số (Matrix factorization)[4]
Một trong những ứng dụng thành công nhất của mô hình yếu tố tiềm ẩn là dựa
trên Phân tích ma trận thành nhân tử (Matrix Factorization, Matrix Decomposition).
Kết quả cuộc thi Netflix Prize đã chứng minh, các mô hình phân tích ma trận thành
nhân tử vượt trội so với các kỹ thuật hàng xóm gần nhất cổ điển để đưa ra các khuyến
nghị sản phẩm, cho phép kết hợp các thông tin bổ sung như phản hồi ngầm, hiệu ứng
thời gian và mức độ tin cậy.
Trong dạng cơ bản của nó, phương pháp phân tích ma trận thành nhân tử kí tự
hóa các mặt hàng và người dùng thành các vector yếu tố được suy ra từ các mẫu xếp
hạng mặt hàng. Nếu các yếu tố của người dùng và mặt hàng có độ tương tự cao, hệ
thống sẽ tạo nên một gợi ý. Ví dụ : Mỗi item có thể mang tính chất ẩn nào đó tương
ứng với các hệ số của nó trong vector x, tương ứng user cũng sẽ có tính chất ẩn tương
ứng với vector w. Chúng ta không nhất thiết phải đặt tên cho các tính chất ẩn này. Hệ
số càng cao tương ứng với việc item hoặc user càng thể hiện rõ tính chất ẩn đó và
ngược lại. Tính tương tự giữa item và user sẽ được thể hiện qua giá trị biểu thức xw.
Giá trị này càng cao thì độ tương tự giữa item và user càng cao, nghĩa là item này càng
có khả năng mang thuộc tính mà người dùng thích, vì vậy nên gợi ý item này cho user.
Phương pháp này trở nên phổ biến trong những năm gần đây vì nó có sự kết hợp
tốt giữa gợi ý chính xác và ước lượng tỉ lệ. Thêm vào đó, phương pháp này cũng có
thể ứng dụng linh hoạt để mô hình hóa các tình huống trong thực tế.
Các hệ thống gợi ý thường phải dựa vào nhiều kiểu dữ liệu đầu vào khác nhau.
Những dữ liệu này thường được đặt trong một ma trận 2 chiều, một chiều tái hiện
người dùng và một chiều tái hiện những mặt hàng mà người dùng đó quan tâm. Những
dữ liệu thuận tiện nhất là những phản hồi rõ ràng có chất lượng cao, thường là đánh
giá của người dùng về sản phẩm. Netflix có hệ thống đánh giá sao (rating-star) dành
cho phim, các mạng xã hội như Facebook, Twitter hay thậm chí Youtube thường có
nút like (hoặc cả dislike) để thể hiện sự đánh giá của người dùng về từng bài post,
video. Chúng ta gọi chung những phản hồi rõ ràng từ người dùng là sự đánh giá của
người dùng.
Thông thường, ma trận tạo nên từ các phản hồi rõ ràng khá thưa thớt (không kín),
bởi người dùng thường chỉ đánh giá một bộ phận nhỏ các mặt hàng mà họ sử dụng,
xem qua. Người dùng thường chỉ đánh giá hay để lại phản hồi khi mặt hàng đó tạo nên
ấn tượng rất tốt hoặc rất xấu đối với họ, mà thường là khi họ gặp vấn đề. Theo thống
kê, tỉ lệ phản hồi từ khách hàng trên Amazon vào khoảng 10-20%, và khoảng 10% đối
với các hệ thống thông thường.
Một thế mạnh của phương pháp phân tích ma trận thành nhân tử là nó cho phép
chúng ta kết hợp những thông tin bổ sung. Khi những phản hồi rõ ràng không có sẵn
hoặc không đầy đủ, hệ thống gợi ý cho phép ta suy đoán sở thích người dùng dựa trên
những phản hồi ẩn bằng cách theo dõi lịch sử mua hàng, lịch sử duyệt web, những thứ
họ thường tìm kiếm hoặc thậm chí cả di chuyển của con trỏ chuột. Những phản hồi
ngầm này thường gián tiếp thể hiện ý kiến, quan điểm của người dùng về các loại mặt
hàng. Do các phản hồi ngầm biểu thị cả sự hiện diện lẫn không hiện diện của một sự
kiện nào đó, nên ma trận tạo nên từ phản hồi ngầm thường khá kín.
Thách thức của thuật toán này chính là việc learning, tức là tính toán ánh xạ giữa item
và người dùng để tạo thành vector qi,pu. Sau khi hệ gợi ý hoàn thành tính toán xong
việc ánh xạ, chúng ta có thể dễ dàng ước lượng được đánh giá của người dùng bằng
công thức trên.
Mô hình này gần giống với mô hình SVD (Singular Value Decomposition). Việc áp
dụng SVD trong các chiến thuật lọc cộng tác đòi hỏi phân tích ma trận rating của user-
item. Điều này thường làm tăng độ khó khăn bởi lượng lớn các giá trị bỏ trống do các
ma trận rating của user-item thường khá thưa thớt. Các mô hình SVD thông thường
thường không xác định khi tri thức về ma trận không đầy đủ. Hơn nữa, việc chỉ ghi lại
những các mục đã biết, trong khi số lượng các mục này tương đối ít, sẽ chỉ càng gây
thêm vấn đề overfitting.
Hệ thống nêu trên đòi hỏi vào việc gán giá trị để lấp đầy những giá trị còn thiếu và làm
cho ma trận trở nên kín hơn. Tuy nhiên, việc gán giá trị có thể trở nên khá tốn kém khi
số lượng dữ liệu gia tăng. Thêm vào đó, việc gán giá trị sai có thể khiến việc xem xét
dữ liệu trở nên không đúng. Vì thế, những hệ thống gợi ý gần đây mô hình hóa trực
tiếp từ quan sát rating, bỏ qua sự overfitting trong mô hình chuẩn hóa. Để học các
vector yếu tố (qi và pu), hệ thống giảm thiểu tối đa sự sai sót do chuẩn hóa trên tập các
rating đã biết
Trong đó, K là tập hợp các cặp (u,i) mà rui của chúng đã được xác định.
Hệ thống sẽ học mô hình bằng cách cố gắng phù hợp chúng với những rating đã
quan sát được chúng trước đó. Tuy nhiên, mục tiêu ở đây là tổng quát hóa những
rating trước đây theo một cách nào đó để có thể dự đoán được các rating sau này, hay
các rating chưa biết.
Đầu tiên Gradient descent (GD) là gì? Khi muốn tìm điểm cực tiểu toàn cục của
1 hàm số ta sẽ tìm đạo hàm và giải phương trình bằng 0, sau đó thay các nghiệm tìm
được và so sánh các cực tiểu cục bộ. Nhưng đối với hàm mất mát với đạo hàm phức
tạp thì ngay cả việc tìm nghiệm bằng 0 cũng không hề dễ dàng. Và GD là phương
pháp giúp chúng ta tìm được điểm tiệm cận cực tiểu đó, bằng cách chọn 1 điểm bất kỳ,
sau đó lặp lại 1 công thức giúp tiến dần điểm đó đến khi đạo hàm gần bằng 0 tức điểm
cực tiểu. Chính vì vậy GD được gọi là giảm đạo hàm hay phương pháp xuống dốc.
Cho xt là điểm hiện tại, thì điểm tiếp theo xt+1 sẽ được tính bằng xt-n lần đạo hàm
tại xt với η (eta) là hệ số thể hiện tốc độ di chuyển của điểm
𝑥𝑡 + 1 = 𝑥𝑡 − 𝑛𝑓 ′ (𝑥𝑡 )
Để giải thích công thức này thì hơi dài dòng nên có thể hiểu đơn giản là: sau mỗi
lần lặp điểm hiện tại sẽ giảm (hoặc tăng nếu ở bên trái cực tiểu) 1 lượng tùy vào tốc độ
eta và đạo hàm đến khi giá trị của đạo hàm gần bằng 0. Công thức đối với hàm vecto
như hàm mất mát cũng sẽ tương tự:
SGD - giảm đạo hàm ngẫu nhiên Là một phương pháp nhằm cải thiện tốc độ tìm
điểm cực tiểu so với khi dùng GD. Khi dùng GD trong mỗi vòng lặp ta chỉ tính đạo
hàm tại 1 điểm hiện tại rồi cập nhật điểm này dựa trên đạo hàm đó, còn SGD thì tính
đạo hàm tại toàn bộ các điểm dữ liệu sau đó giảm theo đạo hàm của 1 điểm ngẫu
nhiên. Và sự ngẫu nhiên này sẽ cho cơ hội nhảy 1 bước xa khi tính toán giúp tốc độ
tiến đến điểm cần tìm nhanh hơn (do tốn ít vòng lặp hơn GD). Vì vậy đối với bài toán
có lượng dữ liệu lớn như bài toán này thì SGD là phương pháp rất hiệu quả. Khi đó
công thức cập nhật sẽ là:
Ta chọn 2 điểm bắt đầu cho 2 biến số cần tìm rồi giảm dần theo đạo hàm để có
được điểm cực tiểu (điểm khiến hàm mất mát đạt giá trị nhỏ nhất) chính là điểm cần
tìm.
Tuy nhiên trong một vài trường hợp sự dụng phương pháp ALS lại có hiệu quả
hơn.
ALS hay còn gọi là phương pháp bình phương tối thiểu thay phiên nhau. Gọi là
thay phiên nhau bởi hàm mất mát trên có 2 biến khiến hàm không lồi (khó để tìm cực
tiểu) chính vì vậy ta thay phiên cố định 1 biến rồi tối ưu hàm theo biến còn lại. Khi cố
định 1 biến hàm trở thành hàm bậc 2 và có thể giải bằng phương pháp bình phương tối
thiểu. Việc cố định 1 biến rồi tính toán lại biến còn lại được thực hiện lần lượt cho đến
khi các điểm hội tụ lại tại điểm cực tiểu.
Tựu chung thì SGD dễ sử dụng và tốc độ nhanh hơn ALS tuy nhiên có 2 trường
hợp mà ALS lại được ưu tiên hơn.
Trường hợp 1 là hệ thống có khả năng chạy các tiến trình 1 cách song song.
Ta thấy khi cố định 1 trong 2 cột công thức hàm cần tối ưu sẽ trở thành
Từ đó bài toán có thể chuyển thành việc tối ưu từng cột 1 của q (hoặc p) cho nên
việc sử dụng trong hệ thống song song sẽ dễ dàng hơn. Trong khi nếu SGD sử dụng
trong hệ thống song song sẽ dễ gặp vấn đề bị ghi đè nếu kết quả cập nhật có liên quan
đến 2 phép toán diễn ra song song.
Trường hợp thứ 2 là khi sử dụng với hệ thống tập trung vào các dữ liêu ẩn. Bởi
không phải lúc nào tập huấn luyện cũng thưa thớt, nên việc lặp lại qua tất cả các điểm
dữ liệu theo cách của SGD lại trở lên không thực tiễn. Trong trường hợp này sử dụng
ALS cũng có hiệu quả cao hơn.
TÀI LIỆU THAM KHẢO
2. The BellKor 2008 Solution to the Netflix Prize, 2008, Robert M. Bell, Yehuda
Koren, Chris Volinsky BellKor@research.att.com 2008
4. Hệ thống gợi ý sản phẩm trong bán hàng trực tuyến sử dụng kỹ thuật lọc cộng tác
2014 Nguyễn Hùng Dũng, Nguyễn Thái Nghe Tạp chí Khoa học Trường Đại học Cần
Thơ trang 36-51