Chia tỷ lệ tính năng là nơi chúng tôi buộc các giá trị từ các cột khác nhau tồn tại trên cùng một tỷ lệ, để nâng cao khả năng học tập của mô hình. Hai kỹ thuật mở rộng tính năng phổ biến nhất là Chuẩn hóa và Chuẩn hóa
tiêu chuẩn hóaChuẩn hóa tính lại dữ liệu để có giá trị trung bình là 0 và độ lệch chuẩn là 1. Nó giả định rằng dữ liệu của bạn có phân phối Gaussian [đường cong hình chuông]
Hình ảnh của tác giả
Như một ví dụ [*xem hình trên], chiều cao được đo bằng mét và cân nặng được đo bằng kilôgam. Ở đây họ phần nào có biến thể tương tự
Tuy nhiên, nếu bạn vẽ cả hai thang đo trên mỗi trục trên một biểu đồ phân tán, thì trọng lượng sẽ trải rộng hơn nhiều so với chiều cao, điều này có vẻ như cả hai đều giống hệt nhau mặc dù chúng ta biết rằng chúng không giống nhau. [*xem hình bên dưới]
Hình ảnh của tác giả
Lý do cho điều này là chiều cao và cân nặng đang được đo trên các thang đo khác nhau
Để chuẩn hóa dữ liệu của bạn, bạn lấy từng giá trị và trừ đi giá trị trung bình của tất cả các giá trị rồi chia chúng cho độ lệch chuẩn để mỗi điểm dữ liệu hiện được biểu thị bằng số độ lệch chuẩn khác với giá trị trung bình được biểu thị bằng 0
Vì vậy, những gì đang xảy ra dưới mui xe của kỹ thuật này?
Bước đầu tiên. Lấy tổng giá trị trung bình và độ lệch chuẩn của từng cột
Bước thứ hai. Lấy từng giá trị và tính toán tương ứng theo công thức
Hình ảnh của tác giả
Ở đây, chúng tôi đang tính toán hàng đầu tiên hoặc mục nhập có chiều cao cột là 1. 98 trừ đi giá trị trung bình [như được tính ở trên trong bước đầu tiên] là 1. 79 và chia nó với độ lệch chuẩn [như đã tính ở bước đầu tiên] là 0. 10954 và chúng tôi nhận được kết quả là 1. 73
bước thứ ba. Lặp lại cho đến khi tất cả các giá trị được tính cho cả hai cột
Hình ảnh của tác giả
Bây giờ, nếu chúng ta vẽ các giá trị theo tỷ lệ của cả chiều cao và cân nặng, chúng ta có thể thấy rằng chúng hiện có thể so sánh được vì chúng hiện tồn tại trong cùng một tỷ lệ
Hình ảnh của tác giả
Mẫu mã tiêu chuẩn hóa
Chuẩn hóa định cỡ lại dữ liệu sao cho dữ liệu tồn tại trong phạm vi từ 0 đến 1. Đây là một kỹ thuật tốt để sử dụng khi bạn không biết phân phối dữ liệu của mình hoặc khi bạn biết phân phối không phải là Gaussian [đường cong hình chuông]
Để chuẩn hóa dữ liệu của bạn, bạn lấy từng giá trị và trừ đi giá trị nhỏ nhất của cột rồi chia giá trị này cho giá trị lớn nhất của cột trừ giá trị nhỏ nhất của cột. Điều này có nghĩa là các giá trị của bạn sẽ luôn tồn tại trong khoảng từ 0 đến 1, với giá trị tối đa của cột nhận giá trị chuẩn hóa là 1 và giá trị tối thiểu của cột nhận giá trị chuẩn hóa 0
Ở đây, bạn không cần giá trị trung bình hoặc độ lệch chuẩn. Bạn chỉ cần giá trị tối thiểu và tối đa cho mỗi cột của mình
Sử dụng cùng một ví dụ trước đó, đây là những gì đang xảy ra dưới mui xe cho Chuẩn hóa
Bước đầu tiên. Nhận tối thiểu và tối đa của mỗi cột
Hình ảnh của tác giả
Bước thứ hai. Lấy từng giá trị và tính toán tương ứng theo công thức
Hình ảnh của tác giả
bước thứ ba. Lặp lại cho đến khi tất cả các giá trị được tính cho cả hai cột
Hình ảnh của tác giả
So sánh tất cả các biểu đồ, giờ đây chúng ta có thể thấy mức độ lan truyền dữ liệu của phiên bản chuẩn hóa và nó trông giống với phiên bản chuẩn hóa thường xảy ra
Câu hỏi bây giờ là bạn nên sử dụng kỹ thuật nào trong hai kỹ thuật này trong mô hình máy học của mình và khi nào bạn nên sử dụng một trong hai kỹ thuật? . Nhưng nói chung, người ta thường đi theo tiêu chuẩn hóa
Hình ảnh của tác giả
Mẫu mã chuẩn hóa
Ghi chú. Không cần mở rộng tính năng ngay cả khi đó là một bước quan trọng. Nó thường dẫn đến sự đánh đổi giữa Độ chính xác so với. Diễn dịch
Nếu bạn chia tỷ lệ các giá trị của mình, bạn sẽ khó hiểu ý nghĩa thực sự của bất kỳ hệ số nào xét về giá trị thực của chúng vì bạn đã chuyển đổi nó sang một tỷ lệ khác để chúng có thể tồn tại cùng nhau. Thường đáng để thử chạy mô hình có và không có tỷ lệ. Nếu nó dường như không tạo ra bất kỳ sự khác biệt nào đối với độ chính xác, thì bạn có thể nói rằng bạn không cần thu nhỏ dữ liệu của mình và bạn sẽ dễ dàng diễn giải dự đoán của mô hình hơn
import
8_______1_______8 numpy as np
0numpy as np
1 numpy as np
2 import
5numpy as np
4 numpy as np
5matplotlib.pyplot as plt
9_______1_______6numpy as np
4 numpy as np
9
nums1 = [1,1,2,3,3,3,3,3,4,5,6,6,6,7,8,8,9,10,12,12,12,12,14,18
nums2= [10,12,13,13,14,14,15,15,15,16,17,18,20,22,23]
hình, rìu = plt. subplots[] # Khởi tạo đối tượng hình và trục
cây rìu. hist[nums1, label="nums1", histtype="step", density=True] # Vẽ biểu đồ biểu đồ của nums1
cây rìu. hist[nums2, label="nums2", histtype="step", density=True] # Vẽ biểu đồ biểu đồ của nums2