Tải bản đầy đủ (.docx) (26 trang)

Các loại hệ thống máy học (machine learning)

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 (900.3 KB, 26 trang )

Các loại hệ thống máy học
Training Supervision
Hệ thống máy học có thể được phân loại dựa theo số lượng và loại
supervision mà chúng có trong suốt q trình đào tạo. Có nhiều loại máy học tuy
nhiên chúng ta có thể phân thành các loại chính sau: supervised learning,
unsupervised learning, self-supervised learning, semi-supervised learning, and
reinforcement learning.
Supervised learning
Trong supervised learning, tập training mà bạn đưa vào thuật toán bao
gồm cả các kết quả mong muốn, gọi là labels (Figure 1-5).

Figure 1-5.A labeled training set for spam classification (an example of
supervised learning)
Một dạng supervised learning kinh điển chính là classification. Ví dụ, bộ
lọc spam là một ví dụ tốt của dạng này: nó sẽ được huấn luyện với nhiều email
mẫu cùng với class của nó (spam hoặc ham), và nó phải học cách phân loại
email mới.
Một dạng supervised learning khác là tiên đoán giá trị số target chẳng hạn
dự đoán giá giá xe hơi dựa trên một loạt các feature (lượng xăng tiêu hao, tuổi
xe, thương hiệu v.v.). Dạng này còn gọi là regression (Figure 1-6). Để train hệ
thống, bạn cần cung cấp nhiều ví dụ về xe, bao gồm các đặc tính và target của
nó là giá xe. Lưu ý một số regression model có thể được dùng để phân loại, và
ngược lại. Ví dụ, logistic regression thường được dùng cho phân loại bởi vì nó
1


có thể cho ra kết quả một giá trị tương ứng với xác suất thuộc về một class nhất
định (ví dụ 20% là spam).

Figure 1-6. A regression problem: predict a value, given an input feature (there
are usually multiple input features, and sometimes multiple output values)


LƯU Ý
Thuật ngữ target và label thường được dùng tương đương trong
supervised learning, nhưng target thì phổ biến hơn trong regression và label phổ
biến hơn trong phân loại. Ngồi ra features đơi khi cịn gọi là predictors hoặc
attributes. Những thuật ngữ này đề cập đến các mẫu cá nhân (ví dụ đặc tính tiêu
hao xăng của xe này là 15000) hoặc cho tất cả mẫu (ví dụ đặc tính tiêu hao xăng
có tương quan mạnh với giá).
Unsupervised learning
Trong unsupervised learning dữ liệu training chưa được dán nhãn
(Figure 1-7). Hệ thống phải cố gắng hoặc mà không có người hướng dẫn. Ví dụ,
bạn có rất nhiều dữ liệu liên quan đến người ghé thăm blog của mình. Chúng ta
có thể chạy thuật tốn clustering để phát hiện ra các nhóm khách hàng giống
nhau (Figure 1-8). Hoặc chúng ta có thể dùng thuật tốn hierarchical
clustering để phân nhỏ các khách hàng thành từng nhóm nhỏ.

2


Figure 1-7.An unlabeled training set for unsupervised learning

Figure 1-8.Clustering
Thuật toán Visualization là một ví dụ kinh điển của unsupervised
learning: bạn cung cấp rất nhiều dữ liệu phức tạp và chưa dán nhãn và thuật toán
sẽ trả lại các đại diện 2D hoặc 3D của dữ liệu mà chúng ta có thể dễ dàng vẽ
được (Figure 1-9). Những thuật toán này cố gắng bảo tồn càng nhiều cấu trúc
càng tốt (nghĩa là cố gắng giữ nhiều cụm tách biệt trong không gian kết quả
khơng trùng lắp trong đồ thị) từ đó bạn có thể hiểu dữ liệu được tổ chức như thế
nào và có lẽ giúp xác định được các kiểu chưa biết được.
3



Figure 1-9. Example of a t-SNE visualization highlighting semantic clusters2
Một dạng unsupervise learining khác chính là dimensionality reduction,
trong đó mục đích của thuật tốn là đơn giản hóa dữ liệu mà khơng làm mất đin
q nhiều thơng tin. Thuật tốn này sẽ cố gắng trộn một số đặc điểm có tương
quan lại với nhau thành một đặc điểm duy nhất. Ví dụ, mức tiêu hao xăng có thể
tương quan mạnh với tuổi xe, do đó thuật tốn dimensionality reduction sẽ trộn
hai đặc tính này thành 1 đặc tính tượng trưng cho sự hao mịn của xe. Đó gọi là
feature extraction.
GỢI Ý
Chúng ta nên rút gọn lại các đặc tính trong bộ dữ liệu training bằng cách
sử dụng thuật toán dimensionality reduction trước khi bạn đưa dữ liệu này vào
một thuật tốn máy học khác (ví dụ thuật tốn supervised learning). Khi đó thuật
tốn supervised sẽ chạy nhanh hơn, dữ liệu ít chiếm dung lượng hơn và trong
một số trường hợp cũng thực hiện tốt hơn.
Một dạng unsupervised quan trọng khác chính là anomaly detection. Ví
dụ, phát hiện các giao dịch thẻ tín dụng để ngăn ngừa gian lận, phát hiện các lỗi
sản xuất, hoặc tự động loại bỏ các outlier từ tập dữ liệu trước khi đưa vào thuật
4


tốn máy học khác. Trong thuật tốn này, nó sẽ sử dụng bộ training để phát hiện
các kết quả bình thường sau đó khi nó gặp dữ liệu mới, nó có thể cho biết dữ
liệu mới là bình thường hay bất thường (Figure 1-10).
Một dạng unsupervised tương tự như trên là novelty detection: nó giúp
phát hiện các dữ liệu mới khác so với tất cả dữ liệu trong tập training. Nó địi hỏi
tập training phải hồn tồn sạch để thuật tốn có thể nhận biết được dữ liệu mới
một cách chính xác. Ví dụ, nếu bạn có hàng ngàn bức tranh chó và chỉ có 1%
bức tranh là chó Chihuahuas, thì thuật tốn novelty detection sẽ coi bức tranh
mới về Chihuahuas là novelties. Mặt khác thuật tốn anomaly detection có thể

coi những con chó này là hiếm và vì vậy coi chúng khác biệt so với phần còn lại
và coi nó là anomalies (no offense to Chihuahuas).

Figure 1-10.Anomaly detection
Một dạng unsupervised khác là association rule learning, trong đó mục
đích là là đào sâu vào dữ liệu và phát hiện các mối liên hệ thú vị giữa các đặc
tính. Ví dụ, giả sử bạn có một siêu thị. Bạn chạy thuật tốn association rule cho
các dữ liệu bán hàng có thể tiết lộ rằng nhiều người mua sốt barbecue và khoai
tây chiên có xu hướng mua thịt bị. Vì vậy, bạn có thể đặt các món hàng này gần
nhau.
Semi-supervised learning
Thường thì việc dán nhãn cho dữ liệu tốn rất nhiều thời gian và chi phí,
bạn sẽ thường có rất nhiều dữ liệu chưa dán nhãn và chỉ có một ít là dán nhãn.
5


Một số thuật tốn có thể xử lý loại dữ liệu một phần được dán nhãn. Thuật toán
này gọi là semi-supervised learning (Figure 1-11).

Figure 1-11. Semi-supervised learning with two classes (triangles and squares):
the unlabeled examples (circles) help classify a new instance (the cross) into the
triangle class rather than the square class, even though it is closer to the labeled
squares
Một số dịch vụ lưu trữ ảnh chẳng hạn như Google Photos, là ví dụ của
loại này. Khi bạn upload tất cả ảnh gia đình vào dịch vụ, thì nó sẽ tự động nhận
cùng người a trong bức hình 1, 5, và 11, trong khi người B xuất hiện trong hình
2, 5, 7. Đây là phần unsupervised của thuật toán (clustering). Giờ những gì hệ
thống cần chính là nói cho thuật tốn những người này là ai. Chỉ cần thêm một
nhãn cho mỗi người và nó có thể gọi tên mọi người trong mỗi hình, điều này rất
có ích trong việc tìm kiếm ảnh.

Hầu hết thuật toán loại này là kết hợp giữa unsupervised và supervised. Ví
dụ, thuật tốn clustering có thể dùng để nhóm các dữ liệu giống nhau lại với
nhau và sau đó mỗi dữ liệu chưa được dán nhãn có thể được dán nhãn với các
nhãn phổ biến nhất trong cụm của nó. Một khi tồn bộ dữ liệu được dán nhãn nó
có thể được sử dụng cho bất kì thuật tốn máy học nào.
Self-supervised learning
Một loại thuật tốn khác chính là tạo ra tập dữ liệu được dán nhãn từ một
tập chưa được dán nhãn hoàn toàn. Khi tồn bộ dữ liệu đã được dán nhãn thì
6


chúng ta có thể sử dụng bất kì thuật máy học nào khác. Phương pháp này gọi là
self-supervised learning.
Ví dụ, nếu bạn có một tập dữ liệu lớn bao gồm các hình chưa dán nhãn,
bạn có thể ngẫu nhiên che một phần nhỏ của mỗi bức ảnh và sau đó train một
model để phát hiện hình ảnh gốc (Figure 1-12). Trong suốt quá trình, các bức
hình bị che được sử dụng như là đầu vào của model và các bức ảnh gốc được
dùng như là nhãn.

Figure 1-12. Self-supervised learning example: input (left) and target (right)
Kết quả của mơ hình khá hữu ích, ví dụ dùng để chỉnh sửa các hình ảnh bị
hư hại hoặc bị xóa một số đối tượng trong hình. Tuy nhiên việc sử dụng thuật
tốn này khơng phải là mục đích cuối cùng. Ví dụ, giả sử bạn muốn phân loại
các động vật nuôi: khi đưa ra một bức hình một lồi động vặt ni nào đó, thuật
tốn có thể nói cho bạn nó thuộc lồi nào. Nếu bạn có một tập dữ liệu gồm các
bức hình động vật ni chưa dán nhãn, bạn có thể bắt đầu bằng các training một
mơ hình chỉnh sửa ảnh sử dụng self-supervised learning. Khi mơ hình chạy tốt
thì nó có thể giúp phân biệt được các lồi vật ni khác nhau: khi nó sửa lại một
hình ảnh mèo bị che đi thì nó phải biết khơng được thêm vào mặt chó. Khi mơ
hình đã chạy được như thế thì chúng ta sẽ thay đổi mơ hình để nó có thể tiên

đốn được loại vật ni thay vì chỉnh sửa ảnh. Bước cuối cùng là chỉnh sử
model trên tật dữ liệu đã dán nhãn: mơ hình đã biết thế nào là chó, mèo hoặc các
7


lồi vật ni khác như thế nào do đó bước này chỉ cần thiết để model có thể học
cách phân biệt giữa các lồi mà nó đã biết và nhãn chúng ta mong đợi.
Reinforcement learning
Reinforcement learning là một loại máy học hồn tồn khác biệt. Hệ
thống học này cịn gọi là một agent trong bối cảnh đó có thể quan sát môi
trường, lựa chọn và thực hiện hành động, và tặng rewards trở về (hoặc penalties
khi reward tiêu cực) Figure 1-13). Sau đó thuật tốn chính nó sẽ học chiến lược
tốt nhất còn gọi là policy, để thu được reward cao nhất theo thời gian. Một
policy định nghĩa hành động nào mà agent nên chọn khi nó ở một tình huống cố
định nào đó.

Figure 1-13. Reinforcement learning
Ví dụ nhiều robot thực hiện thuật toán reinforcement learning algorithms
để học cách đi đứng. Chương trình DeepMind’s AlphaGo cũng là một ví dụ
quan trọng của reinforcement learning: nó đã đánh thắng kỳ thủ vô địch cờ vây
8


vào năm 2017. Nó học chiến thuật chiến thắng bằng cách phân tích hàng triệu
trận đấu và sau đó tự chơi nhiều trận đấu với chính nó. Lưu ý rằng việc học của
robot bị ngắt khi nó chơi với kỳ thủ vô địch: AlphaGo chỉ áp dụng các chiến
thuật đã học trước đó. Điều này được gọi là offline learning.
Batch Versus Online Learning
Một tiêu chí khác dùng để phân loại hệ thống máy học là hệ thống đó có
thể học dần dần từ luồng dữ liệu đi vào mơ hình hay khơng.

Batch learning
Trong batch learning, hệ thống khơng có khả năng học dần dần: nó chỉ
được train bằng cách sử dụng tất cả các loại dữ liệu. Điều này mất rất nhiều thời
gian và nguồn tài ngun máy tính vì vậy nó thường thực hiện offline. Đầu tiên
hệ thống được train và sau đó nó sẽ tạo ra sản phẩm và chạy mà khơng cần học
nữa, hay nói cách khác khi đó nó chỉ áp dụng mà khơng cịn học nữa. Do đó nó
sẽ gọi là offline learning.
Khơng may là hiệu suất mơ hình sẽ giảm dần theo thời gian, đơn giản bởi
vì thế giới ln tiến hóa trong khi mơ hình thường khơng thay đổi. Hiện tượng
này gọi là model rot hay data drift. Giải pháp chính là thường xuyên cập nhật dữ
liệu. Tuy nhiên tần suất cập nhật tùy thuộc hoàn toàn vào từng trường hợp: nếu
chỉ nhận biết hình ảnh thì mơ hình sẽ giảm hiệu suất từ từ, cịn nếu mơ hình sử
dụng cho các hệ thống thay đổi nhanh thì hiệu suất sẽ bị giảm nhanh chóng.
LƯU Ý
Nếu muốn hệ thống batch learning biết về dữ liệu mới, thì chúng ta cần
train từ đầu với tồn bộ dataset (khơng chỉ là dữ liệu mới mà cịn cả dữ liệu cũ),
sau đó thay thế mơ hình cũ với cái mới. May mắn là toàn bộ quá trình đào tạo,
đánh giá, và áp dụng hệ thống máy học có thể được thực hiện tự động dễ dàng.
Giải pháp này có vẽ đơn giản và thường cho hiệu quả tốt, tuy nhiên việc
training một tập dữ liệu mới tốn rất nhiều thời gian, vì vậy việc đào tạo bộ dữ
liệu mới thường diễn ra mỗi 24 giờ hoặc thậm chí hàng tuần. Ngồi ra nó cũng
tốn rất nhiều tài nguyên vi trính (CPU, memory space, disk space, disk I/O,
network I/O, etc.).
9


Chính vì lý do đó chúng ta có thể dùng một thuật tốn khác có thể học dần
dần.
Online learning
Trong online learning, mơ hình của bạn sẽ được train từ từ bằng cách đưa

dữ liệu theo trình tự dần dần, có thể là đơn độc hay là theo nhóm dữ liệu gọi
là mini-batches. Mỗi bước học sẽ rất nhanh và rẻ tiền vì vậy hệ thống có thể học
dữ liệu mới một cách nhanh chóng ngay khi dữ liệu vửa vào mơ hình (xem
hình Figure 1-14).

Figure 1-14. In online learning, a model is trained and launched into production,
and then it keeps learning as new data comes in
Online learning rất có ích cho các hệ thống cần thích nghi với sự thay đổi
nhanh chóng (ví dụ: phát hiện những xu hướng mới trong thị trường cổ phiếu).
Nó cũng là một lựa chọn tốt khi nguồn lực của bạn hữu hạn ví dụ nếu mơ hình
được đào tạo trên thiết bị di động.
Ngồi ra online learning cũng có thể được dùng để đào tạo các mơ hình
dữ liệu lớn khơng thể phù hợp với một bộ nhớ chính trên một máy (gọi là outof-core learning). Thuật toán sẽ tải một phần dữ liệu, đào tạo dữ liệu này và lập
lại quá trình cho đến khi hết toàn bộ dữ liệu (xem Figure 1-15).

10


Figure 1-15. Using online learning to handle huge datasets
Một tham số quan trọng để đánh giá hệ onine learning chính là tốc độ
chúng thích nghi với thay đổi gọi là learning rate. Nếu bạn thiết lập tốc độ học
nhanh, thì hệ thống của bạn sẽ nhanh chóng thích nghi với dữ liệu mới nhưng nó
cũng sẽ mau quên dữ liệu cũ. Ngược lại nếu bạn thiết lập tốc độ học chậm thì hệ
thống cũng sẽ học chậm hơn và vì vậy sẽ ít nhạy với những thay đổi của dữ liệu
mới.
LƯU Ý
Out-of-core learning ln ln phải làm offline, vì vậy online learning trở
nên gây nhầm lẫn. Do đó nên gọi nó là incremental learning.
Một thách thức lớn của online learning chính là nếu dữ liệu xấu đưa vào
hệ thống thì hiệu suất của hệ thống sẽ suy giảm và có nhiều khả năng là rất

nhanh. Ví dụ, dữ liệu xấu có thể do bug (ví dụ do bộ cảm biến bị lỗi của robot)
hoặc có thể do ai đó cố lừa hệ thống (spam search engin để có rank cao cho kết
quả search). Để giảm nguy cơ này thì bạn cần theo dõi hệ thống chặt chẽ và tắt
ngay hệ thống nếu phát hiện lỗi gây giảm hiệu suất. Ngoài ra chúng ta cũng cần
theo dõi dữ liệu đầu vào và đáp ứng lại với các dữ liệu bất thường.
Instance-Based Versus Model-Based Learning

11


Một cách khác để phân loại hệ thống máy học là thơng qua việc chúng
khái qt hóa như thế nào (generalize). Có hai nhóm phương pháp liên quan đến
khái quát hóa: instance-based learning and model-based learning.
Instance-based learning
Có thể nói cách học đơn giản nhất chính là học thuộc lịng. Ví dụ bạn xây
dựng một mơ hình lọc các mail spam bằng cách cho nó nhận biết những mail đã
được dán nhãn là spam và sau đó mail nào giống vậy sẽ được lọc là spam. Cách
này đơn giản nhưng không phải là tốt nhất.
Thay vì học dựa trên những dữ liệu đã có, chúng ta có thể xây dựng mơ
hình dựa trên một số điểm giống nhau để nhận biết mail spam. Các này gọi là
measure of similarity (đo lường độ giống nhau) giữa hai email. Số đo độ tương
đồng giữa hai email có thể là đếm số từ giống nhau giữa hai email. Nó sẽ đánh
dấu một email là spam nếu mail có nhiều từ giống với mail được xác định là
spam trước đó. Phương pháp này gọi là instance-based learning: nghĩa là hệ
thống sẽ học các ví dụ thuộc lịng sau đó khái qt hóa các trường hợp mới bằng
cách sử dụng số đo độ giống nhau để so sánh chúng với các ví dụ đã học (hay
một nhóm nhỏ của chúng). Ví dụ trong hình 1-16 một intstance mới sẽ được xếp
vào nhóm tam giác bởi vì hầu hết các instances giống với cái mới này đều thuộc
về nhóm tam giác.


Figure 1-16.Instance-based learning
Model-based learning and a typical machine learning workflow
12


Một cách khác để khái quát hóa từ một tập ví dụ chính là xây dựng mơ
hình của các ví dụ này và sau đó sử dụng mơ hình đó để tạo dự đoán
(predictions). Phương pháp này gọi là model-based learning (Figure 1-17).

Figure 1-17.Model-based learning
Ví dụ, giả sử chúng ta muốn biết nếu tiền có thể làm mọi người hạnh phúc
hay không, chúng ta xem bộ dữ liệu sau.
Table 1-1.Does money make people happier?
Country

GDP
(USD)

per

Turkey

28,384

5.5

Hungary

31,008


5.6

France

42,026

6.5

United
States

60,236

6.9

New
Zealand

42,404

7.3

Australia

48,698

7.3
13

capita


Life
satisfaction


Country

GDP
(USD)

per

capita

Life
satisfaction

Turkey

28,384

5.5

Denmark

55,938

7.6

Chúng ta sẽ dữ liệu của các quốc gia trên (Figure 1-18).


Figure 1-18.Do you see a trend here?
Mặc dù dữ liệu có vẽ noisy (phần lớn ngẫu nhiên). Chúng ta nhận thấy
dường như có một xu hướng trong hình trên trong đó GDP tăng thì life
satisfaction cũng tăng. Do đó chúng ta quyết định lập mơ hình life sastisfaction
là hàm tuyến tính của GDP. Bước này gọi là model selection: chúng ta lựa chọn
mơ hình tuyến tính của life satisfaction chỉ với một attribute là GDP (Equation
1-1).
Equation 1-1.A simple linear model

14


Mơ hình có hai tham số (model parameters), θ0 và θ1. Khi thay đổi hai
tham số này thì chúng ta sẽ tạo ra các mơ hình hàm tuyến tính khác nhau như
trong hình Figure 1-19.

Figure 1-19.A few possible linear models
Trước khi có thể sử dụng mơ hình, thì chúng ta cần xác định các giá trị
tham số θ0 và θ1. Tuy nhiên làm thế nào để biết các giá trị này sẽ mang lại tiên
đốn cho mơ hình tốt nhất? Để trả lời câu hỏi này chúng ta cần một số đo hiệu
suất (performance measure). Chúng ta có thể sử dụng hàm sử dụng (utility
function) (hay hàm phù hợp (fitness function)) đo lường mức độ tốt của mơ hình
hoặc bạn có thể dùng hàm chi phí (cost function) để đo lường mức độ xấu của
mơ hình. Đối với hồi quy tuyến tính người ta thường sử dụng cost functions đo
lường khoảng cách giữa giá trị tiên đốn từ mơ hình tuyến tính và tập training,
mục tiêu là tối thiểu khoảng cách này.
Lúc này thuật tốn hồi quy tuyến tính phát huy tác dụng: bạn đưa tập dữ
liệu training vào mô hình và nó sẽ tìm cho bạn các tham số sao chơ mơ hình phù
hợp nhất với dữ liệu của bạn. Giai đoạn này gọi là training model. Trong ví dụ

của chúng ta thuật tốn tìm được các giá trị tham số tối ưu nhất là θ0 = 3.75
và θ1 = 6.78 × 10–5.
Chúng ta nhận thấy khi đó đường tuyến tính của mơ hình hồn tồn trùng
khớp với dữ liệu của bạn như hình 1-20.

15


Figure 1-20.The linear model that fits the training data best
Lúc này bạn có thể dùng mơ hình này để tiên đốn giá trị. Ví dụ bạn
muốn tiên đốn life sastisfaction của đảo Cypriot, trong khi dữ liệu gốc của bạn
không có dữ liệu. Chúng ta có thể sử dụng mơ hình tuyến tính vừa xây dựng và
tìm GDP của Cypriot ($37,655) và sau đó đưa vào mơ hình tiên đốn được life
sastisfaction là 3.75 + 37,655 × 6.78 × 10–5 = 6.30.
Sau đây là đoạn code Python chạy mơ hình hồi quy tuyến tính tiên đốn
life sastisfaction của Cypriot
Example 1-1.Training and running a linear model using Scikit-Learn
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
from sklearn.linear_model import LinearRegression
# Download and prepare the data
data_root = " />lifesat = pd.read_csv(data_root + "lifesat/lifesat.csv")
X = lifesat[["GDP per capita (USD)"]].values
y = lifesat[["Life satisfaction"]].values
# Visualize the data
16


lifesat.plot(kind='scatter', grid=True,

x="GDP per capita (USD)", y="Life satisfaction")
plt.axis([23_500, 62_500, 4, 9])
plt.show()
# Select a linear model
model = LinearRegression()
# Train the model
model.fit(X, y)
# Make a prediction for Cyprus
X_new = [[37_655.2]] # Cyprus' GDP per capita in 2020
print(model.predict(X_new)) # output: [[6.30165767]]
LƯU Ý
Nếu thay vì dùng model-based learning chúng ta dùng instance-based
learning thì bạn có thể thấy Israel có GDP gần với Cyprus ($38,341), và từ dữ
liệu OECD cho thấy life satisfaction của Israel là 7,2 thì chúng ta có thể dự đốn
life satisfaction của Cyprus cũng là 7.2. Nếu quan sát hai nước kế đó là
Lithuania và Slovenia thì chúng ta thấy ife satisfaction của chúng là 5.9. Khi lấy
trung bình 3 nước này thì chúng ta được 6.3 nghĩa là bằng với tiên đốn của
thuật tốn dựa vào mơ hình. Như vậy thuật toán instance-based learning trong
trường hợp này gọi là hồi quy k-nearest neighbors (trong ví dụ này thì k = 3).
Chúng ta chỉ cần thay mơ hình hồi quy tuyến tính bằng mơ hình k-nearest
neighbors trong đoạn code phía trên thì chúng ta sẽ tính được mơ hình k-nearest
neigbors:
from sklearn.linear_model import LinearRegression
model = LinearRegression()
bằng hai dòng code:
from sklearn.neighbors import KNeighborsRegressor
17


model = KNeighborsRegressor(n_neighbors=3)

Nếu chúng ta chọn và chạy mơ hình tốt thì mơ hình có thể giúp chúng ta
tiên đốn tốt. Nếu không bạn phải cần bỏ thêm các attribute (ví dụ tỷ lệ có việc,
sức khỏe, ơ nhiễm khơng khí v.v.), bỏ thêm dữ liệu training chất lượng hơn hoặc
có thể là lựa chọn một mơ hình mạnh hơn (ví dụ mơ hình hồi quy đa tuyến tính).
Với ví dụ ở trên, chúng ta nhận thấy một quá trình như sau:
- Nghiên cứu dữ liệu
- Lựa chọn mơ hình
- Huấn luyện nó với dữ liệu training (nghĩa là các thuật tốn máy học sẽ tìm các
giá trị tham số của mơ hình để hạn chế tối đa cost function).
- Cuối cùng bạn áp dụng mơ hình để tiên đốn các trường hợp mới (gọi là suy
luận) và hy vọng rằng mơ hình có khả năng khái qt hóa tốt.
Q trình này chính là một dự án máy học.
Các khó khăn chính của máy học
Khơng đủ số lượng dữ liệu huấn luyện
Đối với máy học, một thuật toán cần rất nhiều dữ liệu đưa vào để có thể
huấn luyện nó nhận biết các sự việc mong muốn. Theo một nhà nghiên cứu cho
biết nếu một thuật toán đơn giản được cung cấp đầy đủ dữ liệu thì vẫn có thể dự
đoán được những nhiệm vụ phức tạp liên quan đến ngơn ngữ tự nhiên. Tuy
nhiên trong thực tế hiếm có dự án máy học nào có đủ lượng dữ liệu để huấn
luyện cho mơ hình, vì vậy chúng ta vẫn cần phải quan tâm đến việc lựa chọn
thuật toán cho thật tốt trước khi chúng ta chạy máy học.

18


Figure 1-21.Tầm quan trọng của dữ liệu và thuật toán
Dữ liệu huấn luyện khơng mang tính đại diện
Để có thể khái qt hóa tốt thì điều quan trọng là dữ liệu huấn luyện phải
mang tính đại diện cho các ca mới mà bạn muốn khái qt hóa. Điều này hồn
tồn đúng cho dù bạn sử dụng instance-based learning hoặc model-based

learning. Tuy nhiên việc đạt được đại diện dường như khó thực hiện được: nếu
mẫu quá nhỏ thì bạn sẽ gặp phải sampling noise (nghĩa là dữ liệu không đại diện
là kết quả của cơ hội), còn trong trường hợp mẫu cực lớn nhưng lại vẫn không
đại diện nếu phương pháp lấy mẫu có vấn đề, gọi là sampling bias.

Chất lượng dữ liệu kém
Nếu tập dữ liệu huấn luyện của bạn đầy lỗi, giá trị ngoại lại và gây nhiễu
(ví dụ do phương pháp đo lường kém), nó sẽ làm cho thuật tốn khó phát hiện
được các mơ hình trong dữ liệu vì vậy hệ thống của mình khơng có hiệu suất
cao. Do đó, chúng ta cần dành thời gian rất nhiều để làm sạch tập dữ liệu huấn
luyện.
Các đặc trưng không phù hợp

19


Một đặc tính quan trọng của một dự án máy học để thành công là chúng ta
phải thu được một tập đặc tính tốt để đưa vào trong tập dữ liệu huấn luyện. Quá
trình này gọi là feature engineering, bao gồm các bước sau:
- Lựa chọn đặc trưng (Feature selection) (Lựa chọn đặc trưng có ích nhất trong
các đặc trưng hiện có để đưa vào huấn luyện.
- Rút trích đặc trưng (Feature extraction) (kết hợp các đặc trưng hiện có để tạo
ra một đặc trưng có ích hơn- chúng ta dùng thuật toán dimensionality reduction
để thực hiện bước này)
- Tạo các đặc trưng mới bằng cách thu thập các dữ liệu mới
Overfitting dữ liệu huấn luyện
Overfitting là hiện tượng mô hình thực hiện rất tốt trong dữ liệu huấn
luyện nhưng lại khơng thể khái qt hóa tốt. Các mơ hình phức tạp như mạng
nơ-ron sâu có thể phát hiện các mẫu tinh vi trong dữ liệu, nhưng nếu tập huấn
luyện bị nhiễu hoặc nếu nó quá nhỏ, dẫn đến sai lệch lấy mẫu, thì mơ hình có

khả năng phát hiện các mẫu trong chính nhiễu đó. Rõ ràng những mẫu này sẽ
khơng khái qt hóa cho các trường hợp mới.
Lưu ý: để giảm overfitting chúng ta có thể có các giải pháp sau:
- Đơn giản hóa model bằng cách lựa chọn mơ hình với ít tham số hơn, giảm số
lượng biến số trong tập huấn luyện hoặc bằng cách giới hạn lại mơ hình
- Thu thập nhiều dữ liệu huấn luyện hơn
- Giảm gây nhiễu trong tập huấn luyện (ví dụ: sửa các sai lệch dữ liệu và loại bỏ
outlier).
Hạn chế mơ hình làm cho nó đơn giản hơn và giảm nguy cơ overfitting
được gọi là điều hịa hóa mơ hình (regularization). Ví dụ, mơ hình tuyến tính có
hai tham số là θ0 và θ1. Như vậy, thuật toán máy học sẽ có hai độ tự do (degrees
of freedom) để thích nghi mơ hình với tập huấn luyện: nó có thể tinh chỉnh cả độ
cao (θ0) và độ dốc (θ1) của đường thẳng. Nếu chúng ta buộc θ1 = 0, thì thuật tốn
sẽ chỉ có 1 độ tự do và do đó sẽ khó khăn hơn để fit dữ liệu một cách chính xác:
nó chỉ có thể di chuyển đường thẳng lên hoặc xuống sao cho gần với dữ liệu
huấn luyện càng nhiều càng tốt. Nếu chúng ta cho phép thay đổi θ1 nhưng chỉ ở
20



×