Sau khi kiểm tra dữ liệu thông qua các kỹ thuật thống kê và trực quan hoá, bạn nên chuyển đổi dữ liệu theo cách giúp mô hình huấn luyện hiệu quả hơn. Mục tiêu của việc bình thường hoá là biến đổi các đặc điểm để có cùng một quy mô. Ví dụ: hãy xem xét 2 tính năng sau:
- Tính năng
X
trải rộng trong phạm vi từ 154 đến 24.917.482. - Tính năng
Y
nằm trong phạm vi từ 5 đến 22.
Hai tính năng này có phạm vi rất khác nhau. Quá trình chuẩn hoá có thể điều chỉnh X
và Y
để chúng nằm trong một phạm vi tương tự, có thể là từ 0 đến 1.
Việc chuẩn hoá mang lại các lợi ích sau:
- Giúp các mô hình hội tụ nhanh hơn trong quá trình huấn luyện. Khi các đặc điểm khác nhau có các dải khác nhau, độ dốc giảm có thể "bật" và làm chậm quá trình hội tụ. Tuy nhiên, các trình tối ưu hoá nâng cao hơn như Adagrad và Adam sẽ ngăn chặn vấn đề này bằng cách thay đổi tốc độ học hiệu quả theo thời gian.
- Giúp các mô hình dự đoán chính xác hơn. Khi các tính năng khác nhau có phạm vi khác nhau, mô hình thu được có thể đưa ra dự đoán kém hữu ích hơn một chút.
- Giúp tránh "bẫy NaN" khi giá trị của đặc điểm rất cao.
NaN là viết tắt của not a number (không phải số). Khi một giá trị trong mô hình vượt quá giới hạn độ chính xác dấu phẩy động, hệ thống sẽ đặt giá trị đó thành
NaN
thay vì một số. Khi một số trong mô hình trở thành NaN, các số khác trong mô hình cũng sẽ trở thành NaN. - Giúp mô hình tìm hiểu các trọng số phù hợp cho từng đặc điểm. Khi không có tính năng mở rộng quy mô, mô hình sẽ chú ý quá nhiều đến các tính năng có phạm vi rộng và không đủ chú ý đến các tính năng có phạm vi hẹp.
Bạn nên chuẩn hoá các đặc điểm dạng số có phạm vi khác nhau (ví dụ: tuổi và thu nhập).
Bạn cũng nên chuẩn hoá một tính năng số duy nhất có trên phạm vi rộng, chẳng hạn như city population.
Hãy cân nhắc hai tính năng sau:
- Giá trị thấp nhất của tính năng
A
là -0,5 và giá trị cao nhất là +0,5. - Giá trị thấp nhất của tính năng
B
là -5.0 và giá trị cao nhất là +5.0.
Đối tượng A
và Đối tượng B
có các phạm vi tương đối hẹp. Tuy nhiên, span của Tính năng B
rộng hơn 10 lần so với span của Tính năng A
. Vì thế:
- Khi bắt đầu huấn luyện, mô hình giả định rằng Tính năng
B
"quan trọng" gấp 10 lần so với Tính năngA
. - Quá trình huấn luyện sẽ mất nhiều thời gian hơn dự kiến.
- Mô hình thu được có thể không tối ưu.
Thiệt hại tổng thể do không chuẩn hoá sẽ tương đối nhỏ; tuy nhiên, bạn vẫn nên chuẩn hoá Tính năng A và Tính năng B theo cùng một tỷ lệ, có thể là từ -1,0 đến +1,0.
Bây giờ, hãy xem xét hai đối tượng có mức chênh lệch lớn hơn về phạm vi:
- Giá trị thấp nhất của tính năng
C
là -1 và giá trị cao nhất là +1. - Giá trị thấp nhất của tính năng
D
là +5000 và giá trị cao nhất là +1.000.000.000.
Nếu bạn không chuẩn hoá Tính năng C
và Tính năng D
, thì mô hình của bạn có thể sẽ không đạt hiệu quả tối ưu. Hơn nữa, quá trình huấn luyện sẽ mất nhiều thời gian hơn để hội tụ hoặc thậm chí không thể hội tụ hoàn toàn!
Phần này đề cập đến 3 phương pháp chuẩn hoá phổ biến:
- điều chỉnh theo tỷ lệ tuyến tính
- Điều chỉnh theo điểm Z
- chia tỷ lệ theo logarit
Phần này cũng đề cập đến việc cắt. Mặc dù không phải là một kỹ thuật chuẩn hoá thực sự, nhưng thao tác cắt sẽ giúp thuần tuý các tính năng số phức tạp thành các phạm vi tạo ra mô hình tốt hơn.
Chia độ tuyến tính
Điều chỉnh theo tỷ lệ tuyến tính (thường được rút gọn thành điều chỉnh theo tỷ lệ) có nghĩa là chuyển đổi các giá trị dấu phẩy động từ phạm vi tự nhiên của chúng thành phạm vi chuẩn – thường là từ 0 đến 1 hoặc từ -1 đến +1.
Bạn nên chọn phương pháp điều chỉnh theo tỷ lệ tuyến tính khi đáp ứng tất cả các điều kiện sau:
- Giới hạn dưới và giới hạn trên của dữ liệu không thay đổi nhiều theo thời gian.
- Tính năng này chứa ít hoặc không có điểm ngoại lai và những điểm ngoại lai đó cũng không lớn.
- Tính năng này được phân phối gần như đồng đều trên phạm vi của nó. Tức là biểu đồ sẽ hiển thị các thanh gần như đồng đều cho hầu hết các giá trị.
Giả sử age
của con người là một tính năng. Điều chỉnh tỷ lệ tuyến tính là một kỹ thuật chuẩn hoá tốt cho age
vì:
- Giới hạn dưới và giới hạn trên gần đúng là từ 0 đến 100.
age
chứa một tỷ lệ phần trăm tương đối nhỏ các giá trị ngoại lai. Chỉ khoảng 0,3% dân số trên 100 người.- Mặc dù một số độ tuổi nhất định được thể hiện tốt hơn so với các độ tuổi khác, nhưng một tập dữ liệu lớn phải chứa đủ ví dụ về mọi độ tuổi.
Bài tập: Kiểm tra mức độ hiểu bài
Giả sử mô hình của bạn có một đặc điểm tên lànet_worth
chứa giá trị ròng của nhiều người. Liệu việc điều chỉnh theo tỷ lệ tuyến tính có phải là một kỹ thuật chuẩn hoá tốt cho net_worth
không? Tại sao (hoặc tại sao lại không)?
Thang điểm Z
Điểm Z là số độ lệch chuẩn mà một giá trị lấy từ giá trị trung bình. Ví dụ: một giá trị lớn hơn 2 độ lệch chuẩn so với giá trị trung bình sẽ có điểm Z là +2.0. Một giá trị ít hơn 1,5 độ lệch chuẩn so với giá trị trung bình có điểm Z là -1,5.
Biểu thị một đối tượng bằng tỷ lệ điểm Z có nghĩa là lưu trữ điểm Z của đối tượng đó trong vectơ đối tượng. Ví dụ: hình sau đây cho thấy hai biểu đồ dạng thanh:
- Ở bên trái, một phân phối chuẩn cổ điển.
- Ở bên phải, cùng một phân phối được chuẩn hoá theo tỷ lệ điểm Z.
Việc điều chỉnh theo điểm Z cũng là một lựa chọn phù hợp cho dữ liệu như trong hình sau đây, dữ liệu này chỉ có phân phối chuẩn mơ hồ.
Điểm Z là lựa chọn phù hợp khi dữ liệu tuân theo mức phân phối chuẩn hoặc giống như mức phân phối chuẩn.
Xin lưu ý rằng một số bản phân phối có thể bình thường trong phần lớn phạm vi của chúng, nhưng vẫn chứa các giá trị cực kỳ ngoại lai. Ví dụ: gần như tất cả các điểm trong một tính năng net_worth
đều có thể vừa vặn với 3 độ lệch chuẩn, nhưng một vài ví dụ về tính năng này có thể cách trung bình hàng trăm độ lệch chuẩn. Trong những trường hợp này, bạn có thể kết hợp việc điều chỉnh theo điểm Z với một hình thức chuẩn hoá khác (thường là cắt bớt) để xử lý tình huống này.
Bài tập: Kiểm tra mức độ hiểu bài
Giả sử mô hình của bạn huấn luyện trên một đối tượng có tênheight
có chiều cao người lớn của 10 triệu phụ nữ. Việc điều chỉnh theo điểm Z có phải là một kỹ thuật chuẩn hoá tốt cho height
không? Tại sao (hoặc tại sao lại không)?
Chia tỷ lệ theo logarit
Tính năng điều chỉnh theo lôgarit sẽ tính lôgarit của giá trị thô. Về lý thuyết, lôgarit có thể là cơ số bất kỳ; trong thực tế, việc chia tỷ lệ nhật ký thường tính lôgarit tự nhiên (ln).
Chia tỷ lệ nhật ký rất hữu ích khi dữ liệu tuân thủ mức phân phối định luật công suất. Nói một cách đơn giản, sự phân phối theo luật công suất sẽ có dạng như sau:
- Các giá trị
X
thấp có giá trịY
rất cao. - Khi giá trị của
X
tăng lên, giá trị củaY
sẽ nhanh chóng giảm xuống. Do đó, các giá trị cao củaX
có giá trị rất thấp củaY
.
Điểm xếp hạng phim là một ví dụ điển hình về phân phối theo luật lũy thừa. Trong hình sau, hãy lưu ý:
- Một số phim có nhiều điểm xếp hạng của người dùng. (Các giá trị thấp của
X
có giá trị cao củaY
.) - Hầu hết các bộ phim đều có rất ít điểm xếp hạng của người dùng. (Giá trị cao của
X
có giá trị thấp làY
.)
Việc điều chỉnh theo quy mô nhật ký sẽ thay đổi quá trình phân phối, giúp huấn luyện một mô hình sẽ đưa ra dự đoán chính xác hơn.
Ví dụ thứ hai: doanh số bán sách tuân theo phân phối theo luật lũy thừa vì:
- Hầu hết các cuốn sách được xuất bản đều bán được số lượng bản in rất nhỏ, có thể là một hoặc hai trăm bản.
- Một số cuốn sách bán được số lượng bản in vừa phải, lên đến hàng nghìn bản.
- Chỉ một số sách bán chạy nhất mới bán được hơn một triệu bản.
Giả sử bạn đang huấn luyện một mô hình tuyến tính để tìm ra mối quan hệ của, giả sử, bìa sách với doanh số bán sách. Một quy trình huấn luyện mô hình tuyến tính dựa trên các giá trị thô sẽ phải tìm thấy điều gì đó về ảnh bìa sách trên những cuốn sách bán được một triệu bản,tức là mạnh hơn 10.000 lần so với ảnh bìa sách chỉ bán được 100 bản. Tuy nhiên, việc điều chỉnh theo tỷ lệ logarit cho tất cả số liệu bán hàng sẽ giúp công việc này trở nên khả thi hơn nhiều. Ví dụ: nhật ký của 100 là:
~4.6 = ln(100)
trong khi logarit của 1.000.000 là:
~13.8 = ln(1,000,000)
Do đó, logarit của 1.000.000 chỉ lớn hơn logarit của 100 khoảng ba lần. Bạn có thể có thể hình dung một bìa sách bán chạy nhất có tác động mạnh mẽ hơn khoảng 3 lần (theo một cách nào đó) so với bìa sách bán chạy.
Cắt đoạn
Cắt đoạn là một kỹ thuật giúp giảm thiểu tác động của các điểm ngoại lai cực kỳ nghiêm trọng. Tóm lại, việc cắt bớt thường giới hạn (giảm) giá trị của các giá trị ngoại lai xuống một giá trị tối đa cụ thể. Việc cắt bớt là một ý tưởng lạ, nhưng có thể rất hiệu quả.
Ví dụ: hãy tưởng tượng một tập dữ liệu chứa một đặc điểm có tên là roomsPerPerson
, đại diện cho số phòng (tổng số phòng chia cho số người lưu trú) của nhiều ngôi nhà. Biểu đồ sau đây cho thấy hơn 99% giá trị tính năng phù hợp với mức phân phối chuẩn (khoảng trung bình là 1,8 và độ lệch chuẩn là 0,7). Tuy nhiên, tính năng này chứa một số giá trị ngoại lai, một số giá trị ngoại lai cực đoan:
Làm cách nào để giảm thiểu ảnh hưởng của những giá trị ngoại lai cực đoan đó? Biểu đồ không phải là phân phối đồng đều, phân phối chuẩn hay phân phối luật công suất. Điều gì sẽ xảy ra nếu bạn chỉ giới hạn hoặc cắt giá trị tối đa của roomsPerPerson
ở một giá trị tuỳ ý, chẳng hạn như 4.0?
Việc cắt giá trị đặc điểm ở mức 4.0 không có nghĩa là mô hình của bạn bỏ qua tất cả giá trị lớn hơn 4.0. Thay vào đó, điều này có nghĩa là tất cả các giá trị lớn hơn 4.0 hiện trở thành 4.0. Điều này giải thích cho đồ thị hình nón đặc biệt ở 4.0. Mặc dù có đồi đó, nhưng tập hợp tính năng theo tỷ lệ hiện hữu ích hơn dữ liệu ban đầu.
Đợi một chút! Bạn có thể thực sự giảm mọi giá trị ngoại lệ xuống một ngưỡng trên tuỳ ý nào đó không? Có, khi huấn luyện mô hình.
Bạn cũng có thể cắt bớt các giá trị sau khi áp dụng các hình thức chuẩn hoá khác. Ví dụ: giả sử bạn sử dụng phương pháp điều chỉnh theo điểm Z, nhưng một vài giá trị ngoại lai có giá trị tuyệt đối lớn hơn nhiều so với 3. Trong trường hợp này, bạn có thể:
- Cắt bớt các điểm Z-score lớn hơn 3 để trở thành chính xác 3.
- Cắt bớt các điểm số Z nhỏ hơn -3 để trở thành chính xác -3.
Việc cắt bớt giúp mô hình không bị lập chỉ mục vượt mức đối với những dữ liệu không quan trọng. Tuy nhiên, một số giá trị ngoại lai thực sự quan trọng, vì vậy, hãy cắt bớt các giá trị một cách cẩn thận.
Tóm tắt các kỹ thuật chuẩn hoá
Kỹ thuật chuẩn hoá | Công thức | Trường hợp sử dụng |
---|---|---|
Chia độ tuyến tính | $$ x' = \frac{x - x_{min}}{x_{max} - x_{min}} $$ | Khi đối tượng được phân phối đồng đều trên một dải ô cố định. |
Điều chỉnh theo điểm Z | $$ x' = \frac{x - μ}{σ}$$ | Khi phân phối đặc điểm không chứa các giá trị ngoại lai cực đoan. |
Chia tỷ lệ nhật ký | $$ x' = log(x)$$ | Khi tính năng tuân theo quy luật hàm mũ. |
Cắt | Nếu $x > max$, hãy đặt $x' = max$ Nếu $x < min$, hãy đặt $x' = min$ |
Khi đặc điểm chứa các giá trị ngoại lai cực đoan. |
Bài tập: Kiểm tra kiến thức
Giả sử bạn đang phát triển một mô hình dự đoán năng suất của một trung tâm dữ liệu
dựa trên nhiệt độ đo được bên trong trung tâm dữ liệu đó.
Hầu hết các giá trị temperature
trong tập dữ liệu của bạn nằm trong khoảng từ 15 đến 30 (C), ngoại trừ các trường hợp sau:
- Mỗi năm một hoặc hai lần, vào những ngày cực kỳ nóng, một vài giá trị từ
31 đến 45 sẽ được ghi lại trong
temperature
. - Mỗi điểm thứ 1.000 trong
temperature
được đặt thành 1.000 thay vì nhiệt độ thực tế.
Kỹ thuật chuẩn hoá nào là hợp lý cho temperature
?
Các giá trị 1.000 là lỗi và bạn nên xoá thay vì cắt bớt.
Các giá trị từ 31 đến 45 là các điểm dữ liệu hợp lệ. Bạn nên cắt bớt các giá trị này, giả sử rằng tập dữ liệu không chứa đủ ví dụ trong phạm vi nhiệt độ này để huấn luyện mô hình nhằm đưa ra dự đoán chính xác. Tuy nhiên, trong quá trình suy luận, lưu ý rằng mô hình đã cắt sẽ đưa ra dự đoán giống nhau cho nhiệt độ 45 và nhiệt độ 35.