Sau khi kiểm tra dữ liệu của mình 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 những cách giúp mô hình của bạn huấn luyện nhiều hơn một cách hiệu quả. Mục tiêu của chuẩn hoá là biến đổi các tính năng có quy mô tương tự. Ví dụ: hãy xem xét hai điều sau tính năng:
- Tính năng
X
trải rộng trong phạm vi từ 154 đến 24.917.482. - Đối tượng
Y
mở rộng 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ể thao túng
X
và Y
để chúng nằm trong phạm vi tương tự, có thể từ 0 đến 1.
Chuẩn hoá mang lại những 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 đối tượng khác nhau có phạm vi khác nhau, tính năng giảm độ dốc có thể "thoát" và hội tụ chậm. Tuy nhiên, các trình tối ưu hoá nâng cao hơn như Chuyển đổi và Adam bảo vệ mình khỏi vấn đề này bằng cách thay đổi tốc độ học tập hiệu quả theo thời gian.
- Giúp các mô hình suy luận thông tin dự đoán chính xác hơn. Khi các đối tượng khác nhau có phạm vi khác nhau, kết quả có thể đưa ra các dự đoán kém hữu ích hơn một chút.
- Giúp tránh "bẫy NaN" khi các giá trị của tính năng quá cao.
NaN là viết tắt của cụm từ
không phải là 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
của một số. Khi một số trong mô hình trở thành NaN, các số khác trong mô hình cuối cùng cũng trở thành NaN. - Giúp mô hình biết trọng số thích hợp cho từng tính năng. Nếu không mở rộng tính năng, mô hình này chú ý quá nhiều 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 đối tượng dạng số bao gồm các đặc điểm riêng biệt
các phạm vi khác nhau (ví dụ: độ tuổi và thu nhập).
Chúng tôi cũng khuyên bạn nên chuẩn hoá một đối tượng số duy nhất bao gồm một 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 đối tượng
A
là -0,5 và giá trị cao nhất là +0,5. - Giá trị thấp nhất của đối tượng
B
là -5 và giá trị cao nhất là +5.
Đối tượng A
và Đối tượng B
có các phạm vi tương đối hẹp. Tuy nhiên, tính năng B
span rộng hơn 10 lần so với span của Đối tượng A
. Vì thế:
- Khi bắt đầu huấn luyện, mô hình này giả định rằng Tính năng
A
gấp 10 lần "quan trọng" hơn so với Tính năngB
. - Quá trình đào tạo sẽ mất nhiều thời gian hơn dự kiến.
- Mô hình thu được có thể chưa 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 quy mô, có thể 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 đối tượng `C là -1 và giá trị cao nhất là +1.
- Giá trị thấp nhất của đối tượ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ẽ
chưa tối ưu. Ngoài ra, việc đào tạo sẽ mất nhiều thời gian hơn để
hội tụ hoặc thậm chí không hội tụ hoàn toàn!
Phần này đề cập đến ba phương pháp chuẩn hoá phổ biến:
- tỷ lệ tuyến tính
- Thang điểm Z
- chia tỷ lệ nhật ký
Phần này cũng bao gồm tạo đoạn video. Mặc dù không đúng chuẩn hoá, việc cắt xén có thể chế ngự các đối tượng số phức tạp thành giúp tạo ra mô hình tốt hơn.
Chia độ tuyến tính
Chia tỷ lệ tuyến tính (phổ biến hơn rút gọn thành scaling) 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 vào phạm vi tiêu chuẩn—thường là từ 0 đến 1 hoặc -1 đến +1.
Việc chuyển tỷ lệ tuyến tính là một lựa chọn phù hợp khi tất cả các điều kiện sau được đáp ứng:
- 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 có ít hoặc không có điểm ngoại lai và những điểm ngoại lai đó cũng không cực kỳ hiệu quả.
- Đối tượ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 độ tuổi.
Giả sử age
của người dùng là một tính năng. Chia tỷ lệ tuyến tính là mộ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
có một tỷ lệ phần trăm các điểm ngoại lai tương đối nhỏ. Chỉ khoảng 0,3% dân số hơ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 nên chứa đủ ví dụ ở mọi độ tuổi.
Kiểm tra kiến thức
Giả sử mô hình của bạn có một tính năng tên lànet_worth
chứa mạng
giá trị của những người khác nhau. Việc chia tỷ lệ tuyến tính có phải là chuẩn hoá tốt không
cho net_worth
? 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ị có 2 độ lệch chuẩn lớn hơn giá trị trung bình có điểm Z là +2.0. Một giá trị có độ lệch chuẩn là 1,5 nhỏ hơn 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ữ giá trị Điểm Z trong vectơ đối tượng. Ví dụ: hình sau đây cho thấy hai biểu đồ:
- Ở bên trái là phân phối chuẩn cổ điển.
- Ở bên phải, dữ liệu phân phối tương tự được chuẩn hoá theo tỷ lệ điểm Z.
![Hình 4. Hai biểu đồ: cả hai đều thể hiện mức phân phối chuẩn với
cùng một phân phối. Biểu đồ đầu tiên chứa dữ liệu thô
có giá trị trung bình là 200 và độ lệch chuẩn là 30. Thứ hai
biểu đồ tần suất chứa phiên bản có điểm Z của
có giá trị trung bình bằng 0 và độ lệch chuẩn bằng 1.](https://developers.google.cn/static/machine-learning/crash-course/images/z-scaling_classic.png?authuser=6&hl=vi)
Thang điểm Z cũng là một lựa chọn tốt cho dữ liệu tương tự như được hiển thị trong hình sau đây chỉ có phân phối bình thường khá mơ hồ.
![Hình 5. Hai biểu đồ có hình dạng giống nhau, mỗi biểu đồ thể hiện
lên một cao nguyên và sau đó đi xuống tương đối nhanh, sau đó là
giảm dần. Một biểu đồ minh hoạ
phân phối dữ liệu thô; biểu đồ khác minh hoạ cho
phân phối dữ liệu thô khi được chuẩn hoá theo tỷ lệ điểm Z.
Các giá trị trên trục X của hai biểu đồ rất khác nhau.
Biểu đồ dữ liệu thô trải rộng từ miền 0 đến 29.000, trong khi
biểu đồ tỷ lệ điểm Z nằm trong khoảng từ -1 đến khoảng +4,8](https://developers.google.cn/static/machine-learning/crash-course/images/z-scaling-non-classic-normal-distribution.png?authuser=6&hl=vi)
Đ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 phân phối khá giống phân phối bình thường.
Lưu ý rằng một số lượt phân phối có thể là bình thường trong phần lớn
phạm vi, nhưng vẫn chứa các điểm ngoại lai cực kỳ nghiêm trọng. Ví dụ: gần như tất cả
các điểm trong đối tượng net_worth
có thể sắp xếp gọn gàng thành 3 độ lệch chuẩn,
Tuy nhiên, một vài ví dụ về tính năng này
có thể là hàng trăm độ lệch chuẩn
khác với giá trị trung bình. Trong những trường hợp này, bạn có thể kết hợp việc chia tỷ lệ điểm Z với
một dạng chuẩn hoá khác (thường là cắt đoạn) để xử lý trường hợp này.
Bài tập: Kiểm tra kiến thức
Giả sử mô hình của bạn huấn luyện trên một tính năng có tênheight
chứa người lớn
đỉnh cao của 10 triệu phụ nữ. Tỷ lệ điểm Z có phải là chuẩn hoá tốt không
cho height
? Tại sao (hoặc tại sao lại không)?
Chia tỷ lệ nhật ký
Tỉ lệ logarit tính toán lôgarit của giá trị thô. Trên 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ẽ giảm nhanh chóng. Do đó, giá trịX
ở mức cao có giá trịY
rất thấp.
Xếp hạng phim là một ví dụ điển hình về sự phân phối theo luật năng lượng. Trong phần sau hình, lưu ý:
- Một vài bộ phim có nhiều 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 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 củaY
.)
Chia tỷ lệ nhật ký thay đổi cách phân phối, giúp huấn luyện một mô hình đưa ra dự đoán chính xác hơn.
Ví dụ thứ hai là hoạt động bán sách tuân theo sự phân phối theo luật năng lượng vì:
- Hầu hết các sách đã xuất bản đều bán một số lượng nhỏ, có thể là một hoặc hai trăm bản.
- Một số cuốn sách bán được một số lượng vừa phải, lên đến hàng nghìn bản.
- Chỉ một vài bán chạy nhất sẽ 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 mối quan hệ giả sử bìa sách để bán sách. Việc huấn luyện mô hình tuyến tính trên các giá trị thô sẽ phải tìm thông tin về bìa sách trên những cuốn sách bán được một triệu bản mạnh hơn 10.000 bản so với bìa sách chỉ bán 100 bản. Tuy nhiên, việc chia tỷ lệ nhật ký tất cả số liệu bán hàng giúp nhiệm vụ khả thi hơn nhiều. Ví dụ: nhật ký của 100 là:
~4.6 = ln(100)
trong khi nhật ký của 1.000.000 là:
~13.8 = ln(1,000,000)
Vì vậy, nhật ký 1.000.000 chỉ lớn hơn khoảng ba lần so với nhật ký 100. Bạn có thể có thể hình dung ra một bìa sách bán chạy nhất có giá trị gấp khoảng 3 lần hiệu quả hơn (theo một cách nào đó) so với bìa sách bán chạy.
Cắt đoạn
Tạo đoạn video là một kỹ thuật nhằm giảm thiểu ảnh hưởng của các điểm ngoại lai cực đoan. Tóm lại, việc cắt đoạn video thường viết hoa (giảm) giá trị của các điểm ngoại lai xuống một giá trị tối đa cụ thể. Cắt đoạn là một một ý tưởng kỳ 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 đối tượng có tên roomsPerPerson
,
thể hiện số phòng (tổng số phòng chia
theo số người) cho 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 phân phối chuẩn (ước tính trung bình
1,8 và độ lệch chuẩn là 0,7). Tuy nhiên, tính năng này có chứa
một số ngoại lệ, một số điểm ngoại lệ:
![Hình 7. Biểu đồ phòngPerPerson trong đó gần như tất cả các giá trị
được tập trung từ 0 đến 4, nhưng có một cái đuôi dài verrrrry
lên đến 17 phòng/người](https://developers.google.cn/static/machine-learning/crash-course/images/PreClipping.png?authuser=6&hl=vi)
Làm cách nào để giảm thiểu ảnh hưởng của những điểm cực kỳ ngoại lai đó? Vâng,
biểu đồ không phải là phân phối đồng đều, phân phối chuẩn hay định luật công suất
phạm vi phân phối. Điều gì xảy ra nếu bạn chỉ cần giới hạn hoặc cắt giá trị tối đa của
roomsPerPerson
ở giá trị tuỳ ý, chẳng hạn như 4.0?
![Biểu đồ phòngPerPerson trong đó tất cả các giá trị nằm trong khoảng từ 0 đến
4.0. Cốt truyện có hình chuông, nhưng có một ngọn đồi kỳ lạ ở mức 4.0](https://developers.google.cn/static/machine-learning/crash-course/images/Clipping.png?authuser=6&hl=vi)
Việc cắt giá trị tính năng ở mức 4.0 không có nghĩa là mô hình của bạn bỏ qua tất cả các giá trị lớn hơn 4.0. Đúng hơn, điều đó có nghĩa là mọi giá trị lớn hơn hơn 4.0 bây giờ trở thành 4.0. Điều này giải thích rằng ngọn đồi đặc biệt ở 4.0. Mặc dù ngọn đồi đó, bộ tính năng được điều chỉnh theo tỷ lệ hiện hữu ích hơn dữ liệu gốc.
Đợ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 số giá trị trên tuỳ ý ngưỡng? Có.
Bạn cũng có thể cắ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 thang điểm Z, nhưng một vài điểm 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 điểm Z lớn hơn 3 thành chính xác 3.
- Cắt điểm Z nhỏ hơn -3 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ố điểm 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 này được phân phối đồng đều trên một phạm vi cố định. |
Thang điểm Z | $$ x' = \frac{x - μ}{σ}$$ | Khi sự phân phối tính năng không chứa các điểm ngoại lai quá mức. |
Chia tỷ lệ nhật ký | $$ x' = log(x)$$ | Khi tính năng này tuân thủ định luật nguồn. |
Cắt đoạn | Nếu $x > max$, đặt $x' = đô la Mỹ tối đa Nếu $x < tối thiểu$, đặt $x' = tối thiểu$ |
Khi đối tượng có chứa các điểm ngoại lai cực kỳ nghiêm trọng. |
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 dựa trên nhiệt độ đo được bên trong trung tâm dữ liệu.
Hầu như tất cả giá trị temperature
trong tập dữ liệu đều rơi vào
từ 15 đến 30 (độ C), trừ những trường hợp ngoại lệ sau:
- Một hoặc hai lần mỗi năm, vào những ngày cực kỳ nóng, có một vài giá trị trong khoảng
31 và 45 đượ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ế.
Đâu sẽ là kỹ thuật chuẩn hoá hợp lý cho
temperature
?
Các giá trị 1.000 bị sai sót và nên được xoá thay vì bị cắt bớt.
Các giá trị trong khoảng từ 31 đến 45 là các điểm dữ liệu hợp lệ. Việc cắt xén có lẽ sẽ là ý tưởng hay cho các giá trị này, giả sử Không có đủ ví dụ trong phạm vi nhiệt độ này để huấn luyện mô hình để đưa ra các dự đoán chính xác. Tuy nhiên, trong quá trình suy luận, xin lưu ý rằng mô hình được cắt bớt sẽ đưa ra dự đoán tương tự cho khi nhiệt độ đạt 45 độ tương đương với 35 độ C.