Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Python - Làm thế nào và khi nào áp dụng Feature Scaling?


Đây là một bước tiền xử lý dữ liệu được áp dụng cho các biến độc lập hoặc đặc trưng của dữ liệu. Nó về cơ bản giúp chuẩn hóa dữ liệu trong một phạm vi cụ thể.

Tại sao cần scaling?

Hầu hết thời gian, tập dữ liệu của bạn sẽ chứa các đặc trưng biến thiên mạnh về độ lớn, đơn vị và phạm vi. Nhưng vì hầu hết các thuật toán học máy sử dụng khoảng cách Euclid giữa hai điểm dữ liệu trong tính toán của chúng, đây là một vấn đề.

Nếu để nguyên, các thuật toán này chỉ nhận độ lớn của đặc trưng mà bỏ qua đơn vị. Kết quả sẽ thay đổi rất lớn giữa các đơn vị khác nhau, 5kg và 5000g.

Các đặc trưng với độ lớn cao sẽ có trọng số lớn hơn rất nhiều trong tính toán khoảng cách so với các đặc trưng có độ lớn thấp.

Để ức chế hiệu ứng này, chúng ta cần đưa tất cả các đặc trưng về cùng một mức độ lớn. Điều này có thể đạt được bằng scaling.

Cách scale đặc trưng?

  • Chuẩn hóa (Standardisation) − Chuẩn hóa thay thế giá trị bằng điểm Z của chúng.
  • $$x^{\prime}=\frac{x\:-\:\bar{x}}{\sigma}$$ Phân phối này có trung bình μ = 0 và độ lệch chuẩn σ = 1. sklearn.preprocessing.scale giúp thực hiện chuẩn hóa trong Python.
  • Chuẩn hóa trung bình (Mean Normalisation) −
  • $$x^{\prime}=\frac{x\:-\:mean(x)}{\max(x)\:-\:\min(x)}$$ Phân phối này sẽ có giá trị giữa -1 và 1 với μ=0. Chuẩn hóa và Chuẩn hóa trung bình có thể dùng cho các thuật toán giả định dữ liệu tâm tại không gian như Phân tích thành phần chính (PCA).
  • Min-Max Scaling
  • $$x^{\prime}=\frac{x\:-\:\min(x)}{\max(x)\:-\:\min(x)}$$ Scaling này đưa giá trị về khoảng 0 và 1.
  • Vector đơn vị (Unit Vector) −
  • $$x^{\prime}=\frac{x}{\lVert\:x\:\rVert}$$ Scaling được thực hiện xem xét toàn bộ vector đặc trưng có độ dài đơn vị. Min-Max Scaling và Unit Vector tạo ra giá trị trong khoảng [0,1]. Khi xử lý các đặc trưng có ranh giới cứng, điều này rất hữu ích. Ví dụ, khi xử lý dữ liệu ảnh, màu sắc chỉ dao động từ 0 đến 255.

Khi nào scale?

Quy tắc chung: bất kỳ thuật toán nào tính khoảng cách hoặc giả định tính chuẩn thì hãy scale đặc trưng.

Một số ví dụ thuật toán nơi feature scaling quan trọng:

  • k-nearest neighbors với độ đo khoảng cách Euclid nhạy cảm với độ lớn, nên scale để tất cả đặc trưng có trọng số như nhau.
  • Scaling là quan trọng khi thực hiện Phân tích thành phần chính (PCA). PCA cố gắng lấy đặc trưng có phương sai lớn nhất và phương sai cao cho đặc trưng độ lớn lớn. Điều này làm lệch PCA về phía đặc trưng độ lớn lớn.
  • Chúng ta có thể tăng tốc gradient descent bằng scaling. Vì θ sẽ giảm nhanh trên phạm vi nhỏ và chậm trên phạm vi lớn, và sẽ dao động kém hiệu quả xuống tới tối ưu khi các biến rất không đồng đều.
  • Mô hình dựa trên cây (Tree based models) không phải mô hình dựa trên khoảng cách và có thể xử lý các phạm vi đặc trưng khác nhau. Do đó, Scaling không bắt buộc khi mô hình hóa cây.
  • Các thuật toán như Phân biệt tuyến tính (LDA), Naive Bayes được thiết kế để xử lý việc này và gán trọng số cho đặc trưng tương ứng. Việc scaling trong các thuật toán này có thể không có nhiều ảnh hưởng.