Feature Selection với Lasso

Một phần của tài liệu (LUẬN văn THẠC sĩ) sử dụng một số thuật toán học máy để dự đoán thành tích học tập của học sinh (Trang 35 - 46)

Như hình 2.9 có thể thấy được sự tác động của từng feature đối với bài toán. Một số feature có độ ảnh hưởng nhất đến kết quả đầu ra của bài toán này gồm:

• family love: Tình cảm gia đình • guardians: Người giáo dục chính • number absences: Số buổi nghỉ học

• number member family: Số thành viên trong gia đình • pessimistic emotions: Cảm xúc bi quan khi gặp khó khăn • time sport: Thời gian chơi thể thao

• time readbook: Thời gian đọc sách • time learn: Thời gian học.

Những điều này ta cũng thấy khá gần gũi với tự nhiên và cuộc sống để đánh giá một người có ý thực nghị lực và đam mê với việc học hành như thế nào từ đó để quyết định năng lực học tập.

Nhiều đặc trưng có độ ảnh hưởng thâp như tên gọi, giới tính. Trong quá trình training mô hình chúng ta sẽ lưu ý điều này để có thể bỏ bớt những đặc trưng không có ảnh hưởng nhiều để tập trung vào những đặc trưng có ảnh hưởng lớn.

Tóm lại, sau khi khám phá dữ liệu và chuẩn hóa, chúng ta đã có cái nhìn ban đầu về dữ liệu, dữ liệu được chuẩn hóa và chuẩn bị cho quá trình training.

CHƯƠNG 3

TRAINING MÔ HÌNH VÀ ĐÁNH GIÁ KẾT QUẢ

Chương này trình bày các kết quả của việc training mô hình trên tập dữ liệu huấn luyện sử dụng các mô hình thuật toán học máy khác nhau. Sau đó các mô hình được sử dụng để đưa ra dự đoán kết quả học tập của học sinh. Các kiến thức cơ bản và gợi ý lập trình được tham khảo từ các tài liệu [3], [4], [5], [1], [2].

3.1. Một số thuật toán lựa chọn training mô hình

3.1.1. Hồi quy tuyến tính - LinearRegression

Mỗi điểm dữ liệu được mô tả bởi một vector đặc trưngdchiềux ∈ Rd, hàm dự đoán đầu ra được viết dưới dạng

y = w1x1 +w2x2 +· · ·+wdxd = xTw. (3.1.1)

Sau khi xây dựng được mô hình dự đoán đầu ra như (3.1.1), ta cần tìm một phép đánh giá phù hợp với bài toán. Với bài toán hồi quy nói chung, ta mong muốn sự sai khác e giữa đầu ra thực sự y và đầu ra dự đoán yˆ là nhỏ nhất: 1 2e 2 = 1 2(y −yˆ)2 = 1 2(y −xTw)2. (3.1.2) Ở đây, bình phương được lấy vì e= y−yˆcó thể là một số âm. Việc sai số là nhỏ nhất có thể được mô tả bằng cách lấy trị tuyệt đối|e| = |y−yˆ|. Tuy nhiên, cách làm này ít được sử dụng vì hàm trị tuyệt đối không khả vi tại gốc toạ độ, không thuận tiện cho việc tối ưu. Hệ số 12 sẽ bị triệt tiêu khi lấy đạo hàm của e theo tham số mô hình w. Điều tương tự xảy ra với tất cả các cặp dữ liệu (xi, yi), i = 1,2, . . . , N, với N là số lượng dữ liệu trong tập huấn luyện. Việc tìm mô hình tốt nhất tương đương

với việc tìm w để hàm số sau đạt giá trị nhỏ nhất: L(w) = 1 2N N X i=1 (yi−xTi w)2. (3.1.3)

Hàm số L(w) chính là hàm mất mát của mô hình hồi quy tuyến tính với tham số θ = w. Ta luôn mong muốn sự mất mát là nhỏ nhất, điều này có thể đạt được bằng cách tối thiểu hàm mất mát theo w:

w∗ = argmin

w

L(w). (3.1.4)

w∗ là nghiệm cần tìm của bài toán. Đôi khi dấu ∗ được bỏ đi và nghiệm có thể được viết gọn lại thành w = argmin

w

L(w). Nhận thấy rằng hàm mất mát L(w) có gradient tại mọi w. Giá trị tối ưu của w có thể tìm được thông qua việc giải phương trình đạo hàm của L(w) theo w bằng không. Gradient của hàm số này tương đối đơn giản:

∇L(w)

∇w =

1

NX(XTw−y) (3.1.5)

Phương trình gradient bằng không: ∇L(w)

∇w = 0 ⇔ XX

T

w = Xy (3.1.6)

Nếu ma trận vuông XXT khả nghịch, phương trình (3.1.6) có nghiệm duy nhất w = (XXT)−1Xy.

Nếu ma trận XXT không khả nghịch, phương trình (3.1.6) vô nghiệm hoặc có vô số nghiệm. Lúc này, một nghiệm đặc biệt của phương trình có thể được xác định dựa vào giả nghịch đảo (pseudo inverse). Người ta chứng minh được rằng với mọi ma trận X, luôn tồn tại duy nhất một giá trị w có `2 norm nhỏ nhất giúp tối thiểu kXTw − yk2

F. Cụ thể,w = (XXT)†Xy trong đó (XXT)† là giả nghịch đảo của XXT. Giả nghịch đảo của một ma trận luôn tồn tại kể cả khi ma trận đó không vuông. Khi ma trận là vuông và khả nghịch, giả nghịch đảo chính là

nghịch đảo. Tổng quát, nghiệm của bài toán tối ưu (3.1.4) là

w = (XXT)†Xy (3.1.7)

Hàm số tính giả nghịch đảo của một ma trận bất kỳ có sẵn trong thư viện numpy. Hàm dự đoán đầu ra của hồi quy tuyến tính thường có thêm một hệ số điều chỉnh (bias) b:

f(x) = xTw +b (3.1.8)

Nếu b = 0, đường thẳng/mặt phẳng y = xTw +b luôn đi qua gốc toạ độ. Việc thêm hệ số b khiến mô hình linh hoạt hơn. Hệ số điều chỉnh này cũng là một tham số mô hình.

Để ý thấy rằng, nếu coi mỗi điểm dữ liệu có thêm một đặc trưng

x0 = 1, ta sẽ có

y = xTw +b = w1x1 +w2x2 +· · ·+wdxd+bx0 = ¯xTw¯ (3.1.9)

trong đó x¯ = [x0, x1, x2, . . . , xN]T và w¯ = [b, w1, w2, . . . , wN]. Nếu đặt ¯

X = [¯x1,x2¯ , . . . ,x¯N], ta có nghiệm của bài toán tối thiểu hàm mất mát

¯

w = argmin

w

1

2Nky−X¯Tw¯k22 = ( ¯XX¯T)†Xy¯ (3.1.10) Kỹ thuật thêm một đặc trưng x0 = 1 vào vector đặc trưng và ghép hệ số điều chỉnh b vào vector trọng sốw như trên còn được gọi là thủ thuật gộp hệ số điều chỉnh (bias trick).

3.1.2. K lân cận - KNN

K lân cận (K-nearest neighbor hay KNN) là một trong những thuật toán học có giám sát đơn giản nhất. Khi huấn luyện, thuật toán này gần như không học một điều gì từ dữ liệu huấn luyện mà ghi nhớ lại một cách máy móc toàn bộ dữ liệu đó. Mọi tính toán được thực hiện tại pha

kiểm tra. KNN có thể được áp dụng vào các bài toán phân loại và hồi quy. KNN còn được gọi là một thuật toán lười học, instance-based [?], hoặc memory-based learning.

Vì KNN ra quyết định dựa trên các điểm gần nhất nên có hai vấn đề ta cần lưu tâm. Thứ nhất, khoảng cách được định nghĩa như thế nào. Thứ hai, cần phải tính toán khoảng cách như thế nào cho hiệu quả.

Với vấn đề thứ nhất, mỗi điểm dữ liệu được thể hiện bằng một vector đặc trưng, khoảng cách giữa hai điểm chính là khoảng cách giữa hai vector đó. Có nhiều loại khoảng cách khác nhau tuỳ vào bài toán, nhưng khoảng cách được sử dụng nhiều nhất là khoảng cách Euclid Khoảng cách Euclid từ một điểm z tới một điểm xi trong tập huấn luyện được định nghĩa bởi kz− xik2. Người ta thường dùng bình phương khoảng cách Euclid kz−xik2

2 để tránh phép tính căn bậc hai. Việc bình phương này không ảnh hưởng tới thứ tự của các khoảng cách. Để ý rằng

kz−xik22 = (z−xi)T(z−xi) = kzk22 +kxik22 −2xTi z (3.1.11)

Để tìm ra xi gần với z nhất, số hạng đầu tiên có thể được bỏ qua. Hơn nữa, nếu có nhiều điểm dữ liệu trong tập kiểm tra, các giá trị kxik22 có thể được tính và lưu trước vào bộ nhớ. Khi đó, ta chỉ cần tính các tích vô hướng xT

i z.

Vấn đề thứ hai cần được lưu tâm hơn, đặc biệt với các bài toán có tập huấn luyện lớn và vector dữ liệu có kích thước lớn. Giả sử các vector huấn luyện là các cột của ma trận X ∈ Rd×N với d và N lớn. KNN sẽ phải tính khoảng cách từ một điểm dữ liệu mới z ∈ Rd đến toàn bộ N

điểm dữ liệu đã cho và chọn ra K khoảng cách nhỏ nhất. Nếu không có cách tính hiệu quả, khối lượng tính toán sẽ rất lớn.

3.1.3. Phân lớp Navie Bayes

Xét các bài toán phân loại với C nhãn khác nhau. Thay vì tìm ra chính xác nhãn của mỗi điểm dữ liệu x ∈ Rd, ta có thể đi tìm xác suất để kết quả rơi vào mỗi nhãn: p(y = c|x), hoặc viết gọn thành p(c|x). Biểu thức này được hiểu là xác suất để đầu ra là nhãn c biết rằng đầu vào là vector x. Nếu tính được biểu thức này, ta có thể giúp xác định nhãn của mỗi điểm dữ liệu bằng cách chọn ra nhãn có xác suất rơi vào cao nhất:

c = argmax c∈{1,...,C}

p(c|x) (3.1.12)

Nhìn chung, khó có cách tính trực tiếp p(c|x). Thay vào đó, quy tắc Bayes thường được sử dụng:

c = argmax c p(c|x) = argmax c p(x|c)p(c) p(x) = argmaxc p(x|c)p(c) (3.1.13) Dấu bằng thứ hai xảy ra theo quy tắc Bayes, dấu bằng thứ ba xảy ra vì p(x) ở mẫu số không phụ thuộc vào c. Tiếp tục quan sát, p(c) có thể được hiểu là xác suất để một điểm bất kỳ rơi vào nhãn c. Nếu tập huấn luyện lớn, p(c) có thể được xác định bằng phương pháp ước lượng hợp lý cực đại (MLE) – là tỉ lệ giữa số điểm thuộc nhãn c và số điểm trong tập huấn luyện. Nếu tập huấn luyện nhỏ, giá trị này có thể được xác định bằng phương pháp ước lượng hậu nghiệm cực đại (MAP).

Thành phần còn lại p(x|c) là phân phối của các điểm dữ liệu trong nhãn c. Thành phần này thường rất khó tính toán vìxlà một biến ngẫu nhiên nhiều chiều. Để có thể ước lượng được phân phối đó, tập huấn luyện phải rất lớn. Nhằm đơn giản hoá việc tính toán, người ta thường giả sử rằng các thành phần của biến ngẫu nhiên x độc lập với nhau khi

đã biết c: p(x|c) = p(x1, x2, . . . , xd|c) = d Y i=1 p(xi|c) (3.1.14) Giả thiết các chiều của dữ liệu độc lập với nhau là quá chặt và trên thực tế, ít khi tìm được dữ liệu mà các thành phần hoàn toàn độc lập với nhau. Tuy nhiên, giả thiết ngây thơ (naive) này đôi khi mang lại những kết quả tốt bất ngờ. Giả thiết về sự độc lập của các chiều dữ liệu này được gọi là naive Bayes. Một phương pháp xác định nhãn của dữ liệu dựa trên giả thiết này có tên là phân loại naive Bayes (NBC).

Nhờ giả thiết độc lập, NCB có tốc độ huấn luyện và kiểm tra rất nhanh. Việc này rất quan trọng trong các bài toán với dữ liệu lớn.

Ở bước huấn luyện, các phân phối p(c) và p(xi|c), i = 1, . . . , d được xác định dựa vào dữ liệu huấn luyện. Việc xác định các giá trị này có thể được thực hiện bằng MLE hoặc MAP.

Ở bước kiểm tra, nhãn của một điểm dữ liệu mới x được xác đinh bởi c = argmax c∈{1,...,C} p(c) d Y i=1 p(xi|c). (3.1.15) Khid lớn và các xác suất nhỏ, biểu thức ở vế phải của (3.1.15) là một số rất nhỏ, khi tính toán có thể gặp sai số. Để giải quyết việc này, (3.1.15) thường được viết lại dưới dạng tương đương bằng cách lấy log của vế phải: c = argmax c∈{1,...,C} log(p(c)) + d X i=1 log(p(xi|c)) ! . (3.1.16)

Việc này không ảnh hưởng tới kết quả vì log là một hàm đồng biến trên tập các số dương.

Sự đơn giản của NBC mang lại hiệu quả đặc biệt trong các bài toán phân loại văn bản, ví dụ bài toán lọc tin nhắn hoặc email rác. Trong

phần sau của chương này, chúng ta cùng xây dựng một bộ lọc email rác tiếng Anh đơn giản. Cả quá trình huấn luyện và kiểm tra của NBC đều cực kỳ nhanh so với các phương pháp phân loại phức tạp khác. Việc giả sử các thành phần trong dữ liệu là độc lập với nhau khiến cho việc tính toán mỗi phân phối p(xi|c) trở nên đơn giản.

Việc tính toán p(xi|c) phụ thuộc vào loại dữ liệu. Có ba loại phân bố xác suất phổ biến là Gaussian naive Bayes, multinomial naive Bayes, và Bernoulli Naive.

3.1.4. Máy véc tơ hỗ trợ - SVM

Máy vector hỗ trợ (support vector machine, SVM) là một trong những thuật toán phân loại phổ biến và hiệu quả. Giả sử dữ liệu trong tập huấn luyện là các cặp (vector đặc trưng, nhãn):(x1, y1),(x2, y2), . . . ,(xN, yN) nhãn bằng +1 hoặc -1 và N là số điểm dữ liệu, siêu phẳng wTx+b= 0 là mặt phân chia hai lớp. Bài toán tối ưu trong SVM sẽ là bài toán đi tìm các tham số mô hìnhw vàb. Với cặp dữ liệu (xn, yn)bất kỳ, khoảng cách từ xn tới mặt phân chia là yn(wTxn+b)

kwk2 . Điều này xảy ra ta đã giả sử

yn cùng dấu với phía của xn. Từ đó suy ra yn cùng dấu với (wTxn+b) và tử số luôn là một đại lượng không âm. Với mặt phân chia này, lề được tính là khoảng cách gần nhất từ một điểm (trong cả hai lớp, vì cuối cùng lề của hai lớp bằng nhau) tới mặt phân chia:

lề = min n

yn(wTxn +b) kwk2

Bài toán tối ưu của SVM đi tìm w và b sao cho lề đạt giá trị lớn nhất:

(w, b) = arg max w,b min n yn(wTxn+ b) kwk2 = arg max w,b 1 kwk2 minn yn(wTxn +b) (3.1.17) Nếu ta thay vector trọng số w bởi kw và b bởi kb trong đó k là một

cách từ từng điểm đến mặt phân chia không đổi, tức lề không đổi. Vì vậy, ta có thể giả sử:

ym(wTxm+ b) = 1 với những điểm nằm gần mặt phân chia nhất

Như vậy, với mọi n ta luôn có

yn(wTxn+b) ≥ 1

Bài toán tối ưu (3.1.17) có thể được đưa về bài toán tối ưu ràng buộc có dạng (w, b) = arg max w,b 1 kwk2 thoả mãn: yn(wTxn +b) ≥ 1,∀n= 1,2, . . . , N (3.1.18)

Bằng một biến đổi đơn giản, ta có thể tiếp tục đưa bài toán này về dạng (w, b) = arg min w,b 1 2kwk22 thoả mãn: 1−yn(wTxn+ b) ≤0,∀n = 1,2, . . . , N (3.1.19)

Ở đây, ta đã lấy nghịch đảo hàm mục tiêu, bình phương nó để được một hàm khả vi, và nhân với 1

2 để biểu thức đạo hàm đẹp hơn.

Trong bài toán (3.1.19), hàm mục tiêu là một chuẩn – có dạng toàn phương. Các hàm bất phương trình ràng buộc là affine. Vậy bài toán (3.1.19) là một bài toán quy hoạch toàn phương. Hơn nữa, hàm mục tiêu là lồi chặt vì kwk2

2 = wTIw và I là ma trận đơn vị – một ma trận xác định dương. Từ đây có thể suy ra nghiệm của SVM là duy nhất.

Tới đây, bài toán này có thể giải được bằng các công cụ hỗ trợ giải quy hoạch toàn phương.

Ngoài ra luận văn cũng sử dụng một số thuật toán khác để thăm dò dữ liệu, so sánh kết quả. Tuy nhiên các gói thư viện trong Python đã hỗ trợ đầy đủ và việc hiểu hết các thuật toán trong thời gian ngắn là

khó khăn nên tác giả chỉ trình bày bản chất một số thuật toán cơ bản và hầu hết sẽ gọi hàm khi lập trình.

3.2. Training mô hình

Chia dữ liệu của mình thành hai phần train và test độc lập với nhau. Ta sẽ chia theo tỷ lệ 67% cho data train và 33% cho data test. Phần train chúng ta sẽ dành cho việc học và khởi tạo model và phần test sẽ dành cho việc kiểm nghiệm độ chính xác của model sau khi học dữ liệu từ tập train.

Nhắc lại bài toán ở đây là dự đoán đầu ra y là trung bình các môn (TBCM) của mỗi học sinh.

Ở phần này chúng ta sẽ tập trung vào tìm hiểu thăm dò khám phá các thuật toán phù hợp nhất cho bộ dữ liệu đã được chuẩn hóa ở phần trước. Sau khi xác định được những đặc trưng quan trọng của bài toán từ những đặc trưng chúng ta đã xử lý và thu thập được, bước tiếp theo chúng ta cần làm là sẽ tiến sẽ thăm dò độ chính xác của một số thuật toán trên hai tập dữ liệu. Một tập để tất cả các đặc trưng thu thập được, và một tập sử dụng features selection, loại đi những đặc trưng không quan trọng.

Kết quả thăm dò dataset trên các thuật toán có sử dụng feature slection và sử dụng all features có sự khác biệt nhau rõ rệt. Độ chính xác khi đầu ra trên các thuật khi sử dụng all feature chưa tối ưu tham số dao động từ khoảng 40% đến 60%. Nhưng khi sử dụng feature selection dao động từ 60% đến 80% cải thiện đáng kể tầm 20% so với việc chúng ta sử dụng toàn bộ feature để đự đoán, điều đó làm cho độ chính xác giảm thấp và tốc độ phép tính tăng cao dẫn tới hiệu suất dự đoán chậm hơn so với thời gian thực. Điều đó kết luận rằng chúng ta đã lựa chọn ra

Một phần của tài liệu (LUẬN văn THẠC sĩ) sử dụng một số thuật toán học máy để dự đoán thành tích học tập của học sinh (Trang 35 - 46)

Tải bản đầy đủ (PDF)

(62 trang)