Courses
Kỹ thuật đặc trưng là việc chọn lọc hoặc tạo ra các đặc trưng quan trọng giúp cải thiện hiệu suất của mô hình. Bất kể thuật toán ML bạn dùng là gì, nhiều khả năng bạn sẽ dựa vào các kỹ thuật kỹ thuật đặc trưng cho bước chuẩn bị dữ liệu.
Trong bài viết này, chúng ta sẽ khám phá kỹ thuật đặc trưng và các phương pháp của nó, đồng thời hiểu cách áp dụng qua ví dụ thực hành dự đoán giá nhà.
Kỹ thuật đặc trưng trong Machine Learning là gì?
Tôi nhớ khi xây dựng một mô hình để cải thiện tỷ lệ giao hàng đúng hạn cho một dự án time-in-transit tại nơi làm việc. Thay vì huấn luyện các mô hình tổ hợp phức tạp, chúng tôi đã dùng một thuật toán hồi quy đơn giản với chỉ ba đặc trưng bổ sung được suy ra từ dữ liệu hiện có.
Chỉ với cách tiếp cận này, tỷ lệ giao hàng đúng hạn đã tăng từ 48% lên 56%. Đây là mức cải thiện lớn, xét trên 10 triệu bản ghi. Đó là mức khác biệt mà các kỹ thuật kỹ thuật đặc trưng, như trích xuất đặc trưng, có thể mang lại!
Nói đơn giản, kỹ thuật đặc trưng nghĩa là chọn đặc trưng phù hợp từ dữ liệu hiện có.
Hãy xét một bộ dữ liệu thời tiết có các cột nhiệt độ, địa điểm, tháng, năm và ngày. Cột ngày có thể không mang lại giá trị đáng kể để nắm bắt xu hướng tính mùa vụ vì cột tháng đã cung cấp thông tin đó. Loại bỏ cột ngày có thể giảm chiều dữ liệu mà không ảnh hưởng tiêu cực đến độ chính xác của dự đoán thời tiết.
Các loại đặc trưng trong Machine Learning
Trước khi đi sâu vào các kỹ thuật kỹ thuật đặc trưng khác nhau, hãy cùng hiểu các loại đặc trưng hiện có.
Đặc trưng số
Đúng như tên gọi, đặc trưng số biểu diễn dữ liệu bằng con số. Chúng là các biến định lượng liên tục. Ví dụ gồm chiều cao, tuổi và lương.
Đặc trưng phân loại
Một cột phân loại chỉ có thể chứa các giá trị rời rạc. Ví dụ, giới tính của một người là cột phân loại, vì nó chỉ có một vài loại giới tính. Tháng sinh là ví dụ khác vì giá trị phải nằm trong khoảng từ tháng Một đến tháng Mười hai.
Các biến phân loại được chia tiếp thành nhị phân và không nhị phân. Biến nhị phân có hai loại khả dĩ, trong khi đặc trưng không nhị phân có thể có nhiều loại.
Đặc trưng văn bản và chuỗi thời gian
Các cột văn bản chỉ chứa dữ liệu dạng chữ. Ví dụ gồm đánh giá sản phẩm hoặc cột mô tả sản phẩm trong bộ dữ liệu bán lẻ.
Mặt khác, đặc trưng chuỗi thời gian biểu diễn dữ liệu theo thời điểm, như doanh số theo tuần hoặc biến động giá cổ phiếu trong một năm.

Hình do Tác giả cung cấp
Các kỹ thuật kỹ thuật đặc trưng
Kỹ thuật đặc trưng cung cấp nhiều kỹ thuật mạnh mẽ để chuyển đổi các cột thô thành những đặc trưng phù hợp. Dưới đây, chúng ta bàn về một số kỹ thuật nổi bật.
Xử lý giá trị khuyết
Giá trị khuyết có thể làm sai lệch hiệu suất mô hình, nên xử lý đúng cách là rất quan trọng. Có hai cách tiếp cận chính:
- Bù giá trị (Imputation): Là quá trình điền giá trị khuyết bằng thông tin sẵn có. Chẳng hạn, bạn có thể dùng giá trị trung bình, trung vị hoặc mode để thay thế giá trị bị thiếu.
- Xóa bỏ: Phương pháp này loại bỏ các hàng có giá trị khuyết và phù hợp nhất khi dữ liệu thiếu ít hơn 10% kích thước tập dữ liệu.
Để có hướng dẫn chuyên sâu về xử lý dữ liệu thiếu, hãy đọc bài Hướng dẫn Kỹ thuật Xử lý Dữ liệu Thiếu hoặc khám phá khóa học Xử lý Dữ liệu Thiếu trong Python.
Xử lý ngoại lệ (outliers)
Ngoại lệ là những giá trị bất thường khác biệt đáng kể so với phần còn lại của các điểm dữ liệu. Ví dụ, nếu bạn có bộ dữ liệu lương với hầu hết quan sát nằm trong khoảng $90K đến $120K, thì mức $400K hoặc $10K là ngoại lệ.
- Thay thế: Bạn có thể thay ngoại lệ bằng một giá trị thống kê như max hoặc min của cột.
- Biến đổi: Áp dụng các phép biến đổi như log hoặc căn bậc hai để giảm tác động.
- Mô hình vững (robust): Dùng các mô hình ít nhạy với ngoại lệ. Cây quyết định, gradient boosting và ridge regression ít bị ảnh hưởng bởi ngoại lệ.
- Xóa: Nếu không phương pháp nào hiệu quả, loại bỏ ngoại lệ khỏi tập dữ liệu là lựa chọn cuối cùng.
Mã hóa biến phân loại
Các mô hình machine learning không thể xử lý trực tiếp biến phân loại, nên cần chuyển chúng thành dạng số. Dưới đây là một số kỹ thuật mã hóa phổ biến.
- One-hot encoding: Mỗi hạng mục trong một đặc trưng phân loại được biểu diễn thành một cột riêng, với giá trị 1 nếu hạng mục xuất hiện trong mẫu và 0 cho các cột khác. Ví dụ dưới đây minh họa điều này.
Hãy xét một bộ dữ liệu với đặc trưng phân loại sau:
|
Name |
Gender |
|
John |
Male |
|
Rachel |
Female |
|
Emma |
Female |
Dùng one-hot encoding, chúng ta tạo các cột riêng cho mỗi hạng mục khả dĩ trong đặc trưng Gender:
|
Name |
Female |
Male |
|
John |
0 |
1 |
|
Richale |
1 |
0 |
|
Emma |
1 |
0 |
Vì John là Male, cột "Male" nhận giá trị 1, trong khi cột "Female" là 0. Tương tự, Rachel và Emma là Female, nên cột "Female" là 1 và cột "Male" là 0.
Để xem hướng dẫn đầy đủ về one-hot encoding trong Python, hãy xem Hướng dẫn One-Hot Encoding.
- Label encoding: Label encoding gán một giá trị số duy nhất cho mỗi hạng mục trong một đặc trưng phân loại. Cách tiếp cận này hữu ích cho dữ liệu thứ bậc (khi các hạng mục có trật tự ý nghĩa) nhưng có thể gây vấn đề với biến phân loại không có thứ bậc, vì mô hình có thể hiểu sai các giá trị số như có xếp hạng ngầm định.
Xét một bộ dữ liệu có cột Location chứa các giá trị phân loại:
|
Location |
Encoded value |
|
New York |
1 |
|
California |
2 |
|
Texas |
3 |
|
California |
2 |
|
Texas |
3 |
Mỗi địa điểm duy nhất được gán một giá trị số riêng. Tuy nhiên, vì California (2) không "nằm giữa" New York (1) và Texas (3) theo nghĩa nội tại, dùng label encoding cho dữ liệu không có thứ bậc có thể dẫn đến giả định sai. Trong những trường hợp như vậy, one-hot encoding thường được ưu tiên để tránh ngụ ý mối quan hệ số không chủ ý giữa các hạng mục.
- Ordinal encoding: Ordinal encoding tương tự label encoding nhưng dùng khi các giá trị phân loại có trật tự ý nghĩa. Thay vì gán giá trị số tùy ý, nó ánh xạ các hạng mục dựa trên thứ hạng, đảm bảo giá trị lớn hơn tương ứng với hạng cao hơn.
Xét cột Education level với các hạng mục sau:
|
Education level |
Encoded value |
|
UG (Undergraduate) |
1 |
|
PG (Postgraduate) |
2 |
|
PhD |
3 |
Vì PhD thể hiện trình độ cao hơn PG, vốn lại cao hơn UG, nên các giá trị số được gán phản ánh thứ hạng này.
- Target encoding: Thay thế mỗi giá trị phân loại bằng giá trị trung bình của biến mục tiêu tương ứng. Biến mục tiêu là biến phụ thuộc mà mô hình cố gắng dự đoán. Kỹ thuật này đặc biệt hữu ích khi xử lý các đặc trưng phân loại có lực lượng hạng mục lớn (nhiều giá trị duy nhất), vì nó giúp giảm chiều dữ liệu đồng thời giữ lại thông tin liên quan.
Xét một bộ dữ liệu trong đó Location là đặc trưng phân loại, và Target variable biểu diễn một kết quả số:
|
Location |
Target variable |
|
New York |
2 |
|
California |
3 |
|
Texas |
5 |
|
California |
1 |
|
Texas |
4 |
Để mã hóa cột Location, chúng ta tính trung bình của Target variable cho mỗi hạng mục duy nhất:
- California: (3 + 1) / 2 = 2
- Texas: (5 + 4) / 2 = 4.5
- New York: Chỉ có một giá trị (2), nên giữ nguyên 2
|
Location |
Encoded value |
|
New York |
2 |
|
California |
2 |
|
Texas |
4.5 |
|
California |
2 |
|
Texas |
4.5 |
Nếu bạn đang tìm một hướng dẫn tổng quát hơn về xử lý dữ liệu phân loại, bài Hướng dẫn Xử lý Dữ liệu Phân loại này cung cấp thêm nhiều góc nhìn.
Chuẩn hóa thang đo đặc trưng
Chuẩn hóa thang đo đảm bảo các đặc trưng số nằm trong một khoảng tiêu chuẩn, tránh việc một số đặc trưng chi phối quá trình học do có giá trị lớn hơn.
Các mô hình machine learning dựa vào tính toán khoảng cách (ví dụ, hồi quy tuyến tính, k-láng giềng gần nhất, và mạng nơ-ron) có thể bị ảnh hưởng khi các đặc trưng có thang đo rất khác nhau.
Ví dụ, xét một bộ dữ liệu nhân viên với các đặc trưng sau:
- Tuổi dao động từ 20 đến 60
- Thu nhập dao động từ $30.000 đến $150.000
Vì thu nhập có giá trị lớn hơn nhiều so với tuổi, một mô hình có thể gán tầm quan trọng cao hơn cho thu nhập chỉ vì thang đo, chứ không phải vì nó thực sự liên quan hơn.
Dưới đây là một số kỹ thuật phổ biến:
- Chuẩn hóa (min-max scaling): Phương pháp này đưa mọi giá trị đặc trưng về trong khoảng 0 đến 1. Nó trừ đi giá trị nhỏ nhất của cột khỏi mỗi điểm dữ liệu rồi chia cho khoảng giá trị của cột đó, tức hiệu giữa giá trị lớn nhất và nhỏ nhất. Công thức như sau:
Giá trị đã chuẩn hóa = (điểm dữ liệu - min(cột)) / (max(cột) - min(cột))
- Tiêu chuẩn hóa (Z-score scaling): Biến đổi tất cả đặc trưng sao cho có trung bình 0 và độ lệch chuẩn 1. Công thức là: lấy giá trị từng điểm trừ đi trung bình cột, rồi chia cho độ lệch chuẩn của đặc trưng đó.
Giá trị đã chuẩn hóa = (điểm dữ liệu - mean(cột)) / (std(cột))
Để so sánh chi tiết giữa chuẩn hóa và tiêu chuẩn hóa, hãy xem Hướng dẫn Chuẩn hóa vs. Tiêu chuẩn hóa.
Tạo đặc trưng mới
Tạo các đặc trưng mới, có ý nghĩa từ dữ liệu hiện có giúp mô hình có thêm thông tin logic hơn.
Chẳng hạn, trong bộ dữ liệu dự đoán giá nhà, nếu bạn có riêng các cột length và breadth, bạn có thể suy ra đặc trưng mới: area = length * breath, có thể liên quan trực tiếp đến biến mục tiêu price. Đưa đặc trưng area này vào mô hình giúp đơn giản hóa việc khám phá các mẫu ẩn.
Chọn lọc đặc trưng
Chọn lọc đặc trưng chỉ giữ lại các đặc trưng liên quan bằng cách loại bỏ các cột không cần thiết. Tập trung vào dữ liệu nhiều thông tin nhất giúp tránh overfitting, giảm độ phức tạp tính toán và cải thiện hiệu suất mô hình. Một số kỹ thuật gồm:
- Phương pháp lọc (Filter): Chọn các đặc trưng quan trọng dựa trên thuộc tính thống kê của chúng. Ví dụ, ta có thể loại bỏ các đặc trưng mang cùng thông tin bằng heatmap tương quan. Các kỹ thuật khác gồm kiểm định Chi-square, ANOVA, và Information Gain.
- Phương pháp bao (Wrapper): Huấn luyện mô hình dự báo lặp lại với các tập con đặc trưng khác nhau và chọn tập con tốt nhất với hiệu suất mô hình tối ưu. Lựa chọn tiến, lựa chọn lùi và loại bỏ đệ quy thuộc nhóm này.
Kỹ thuật đặc trưng trong Python: Ví dụ thực hành
Kỹ thuật đặc trưng được hiểu rõ nhất qua triển khai thực hành.
Bộ "dự đoán giá nhà" là một bộ dữ liệu thực tế lớn với 81 cột. Tôi chọn bộ này vì sự đa dạng đặc trưng của nó, giúp bạn hiểu thực tế hơn về các kỹ thuật kỹ thuật đặc trưng.
Bắt đầu:
- Tải bộ dữ liệu từ Kaggle.
- Nạp vào Pandas DataFrame để phân tích và kỹ thuật đặc trưng.
Xử lý giá trị khuyết phân loại
Đoạn mã sau xác định các cột phân loại trong tập dữ liệu và thay thế giá trị khuyết của chúng bằng hạng mục xuất hiện nhiều nhất:
import pandas as pd
# Load dataset (replace 'your_file.csv' with the actual file name)
df = pd.read_csv('your_file.csv')
# Select categorical columns
categorical_cols = df.select_dtypes(include=['object']).columns
# Replace missing values with the most frequent category (mode)
for col in categorical_cols:
mode = df[col].mode()[0] # Get the most common value
df[col].fillna(mode, inplace=True) # Fill missing values
Xử lý giá trị khuyết dạng số
Ta xử lý giá trị khuyết dạng số bằng cách thay bằng trung bình hoặc trung vị. Trung bình phổ biến hơn cho dữ liệu phân phối thống kê, trong khi trung vị phù hợp khi cột có ngoại lệ. Vì vậy, ta sẽ kiểm tra ngoại lệ rồi quyết định phương pháp.
Để trực quan hóa ngoại lệ tiềm ẩn, ta có thể dùng boxplot, giúp nhận diện giá trị cực đoan. Dưới đây là triển khai Python để phát hiện ngoại lệ ở một số cột số được chọn:
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
features = ['LotFrontage', 'MasVnrArea', 'GarageYrBlt']
# Plot box plots
df[features]=np.log(df[features])
df[features].boxplot(figsize=(8, 4))
plt.title('Box Plot for Outlier Detection')
plt.ylabel('Values')
plt.xticks(rotation=45)
plt.show()
Kết quả:

Các boxplot trên cho thấy những điểm nằm ngoài ria—đó gọi là ngoại lệ. Vì vậy, hãy thay giá trị khuyết bằng trung vị.
Mã thay thế giá trị null bằng trung vị:
import pandas as pd
# Select numerical columns
numerical_columns = df.select_dtypes(include=['number']).columns
for col in numerical_columns:
median = df[col].median()
df[col].fillna(median, inplace=True) # Replace nulls with median
Tạo đặc trưng mới
Các cột như YearBuilt, YearRemodAdd, GarageYrBlt và YrSold chứa năm (ví dụ: 2001, 1976) vốn không tác động trực tiếp đến biến mục tiêu. Dù các giá trị năm tuyệt đối này có thể không ảnh hưởng trực tiếp đến giá nhà, ta có thể rút ra thông tin hữu ích hơn bằng cách tính tuổi ngôi nhà hoặc thời điểm cải tạo tại thời gian bán.
Ví dụ, thay vì dùng YearBuilt, ta có thể tạo đặc trưng mới: House Age=YrSold−YearBuilt
Mã để tạo các đặc trưng mới này:
# Get columns that contain 'Yr' or 'Year'
year_columns = [feature for feature in numerical_columns if 'Yr' in feature or 'Year' in feature]
# Convert year values into age-related features
for col in year_columns:
df[col] = df['YrSold'] - df[col]
Biến đổi đặc trưng
Trong machine learning, các đặc trưng số bị lệch (skew) có thể ảnh hưởng tiêu cực đến hiệu suất mô hình, đặc biệt với các mô hình giả định phân phối chuẩn (ví dụ, hồi quy tuyến tính). Để điều chỉnh, ta áp dụng biến đổi log.
Trước khi áp dụng biến đổi log, ta phải xác định các đặc trưng bị lệch. Tuy nhiên, loại trừ các cột chứa số 0 vì log của 0 là không xác định.
Dưới đây là triển khai bằng Python để xác định các cột bị lệch:
import pandas as pd
# Get numerical columns
numerical_columns = df.select_dtypes(include=['number']).columns
# Identify columns containing zeros
numerical_0s = df.loc[:, (df == 0).any()].select_dtypes(include=['number']).columns
# Remove columns that contain zeros from consideration
numerical_columns = numerical_columns.difference(numerical_0s)
# Calculate skewness for the remaining numerical columns
skewness = df[numerical_columns].skew()
# Set threshold for skewness (e.g., absolute value > 1 indicates high skewness)
skewed_columns = skewness[abs(skewness) > 1]
# Display skewed columns
print("Skewed Columns:")
print(skewed_columns)
Kết quả:

Chúng ta sẽ dùng phân phối log-normal để chuyển năm cột bị lệch này thành phân phối Gaussian:
import numpy as np
# The list of highly skewed features identified earlier
skew_features = ['LotFrontage', 'LotArea', '1stFlrSF', 'GrLivArea', 'SalePrice']
# Apply log transformation to each skewed feature
for col in skew_features:
df[col] = np.log(df[col])
Chuyển đặc trưng phân loại thành giá trị số
Chúng ta đã thảo luận một số kỹ thuật mã hóa; trong ví dụ này, ta sẽ áp dụng target encoding.
# Select categorical variables
categorical_columns = df.select_dtypes(include=['object', 'category']).columns
# Apply target encoding
for col in categorical_columns:
# Compute mean SalePrice for each category
labels_ordered = df.groupby([col])['SalePrice'].mean().sort_values().index
# Assign numerical values based on target variable mean
labels_ordered = {x: i for i, x in enumerate(labels_ordered, 0)}
# Map encoded values back to the dataframe
df[col] = df[col].map(labels_ordered)
Trong đoạn mã trên, biến mục tiêu là SalePrice, nên chúng ta nhóm dữ liệu theo từng cột phân loại và tính trung bình SalePrice cho mỗi nhóm. Các giá trị trung bình này sau đó được gán cho các giá trị phân loại tương ứng trong cột đó.
Bộ dữ liệu của chúng ta giờ đã sẵn sàng cho machine learning!
Nếu bạn muốn củng cố hiểu biết về học có giám sát và cách các mô hình tận dụng đặc trưng được kỹ thuật hóa, khóa học Học có Giám sát với Scikit-Learn là một nguồn tài nguyên tuyệt vời.
Công cụ và thư viện cho Kỹ thuật đặc trưng
Trong phần này, chúng ta sẽ điểm qua các thư viện Python và công cụ tự động được dùng nhiều nhất để triển khai kỹ thuật đặc trưng.
Pandas
Pandas là framework Python được dùng nhiều nhất để xử lý dữ liệu có cấu trúc. Nó thực hiện nhiều bước kỹ thuật đặc trưng như biến đổi, tổng hợp dữ liệu và trích xuất đặc trưng. Pandas cũng giúp làm sạch và thao tác dữ liệu dễ dàng.
Nếu bạn mới bắt đầu với pandas, khóa học Xử lý Dữ liệu với pandas là điểm khởi đầu tuyệt vời.
Scikit-Learn
Scikit-learn là thư viện machine learning mạnh mẽ với nhiều công cụ cho kỹ thuật đặc trưng. Nó có các phương thức như OneHotEncoder và LabelEncoder để chuyển biến phân loại sang số. Nó cũng cung cấp các phương pháp chuẩn hóa thang đo như StandardScaler và Minmaxscaler.
Feature-Engine
Feature-engine là thư viện Python mã nguồn mở cung cấp nhiều bộ biến đổi (transformer) để đơn giản hóa kỹ thuật đặc trưng. Các bộ biến đổi này chuyên biệt cho các tác vụ như bù dữ liệu thiếu, xử lý ngoại lệ, chọn lọc đặc trưng và rời rạc hóa. Hoàn toàn tương thích với scikit-learn, các bộ biến đổi này có thể được truyền làm tham số đầu vào cho tinh chỉnh siêu tham số.
Công cụ kỹ thuật đặc trưng tự động
- Featuretools: Featuretools là một thư viện mã nguồn mở để tự động hóa kỹ thuật đặc trưng. Framework này chủ yếu dùng để tạo đặc trưng mới từ cơ sở dữ liệu quan hệ. Nó dựa vào thuật toán DFS (deep feature synthesis), xây dựng đặc trưng mới dựa trên các phép biến đổi và tổng hợp.
- TSFresh: TSFresh, viết tắt của Time Series Feature Extraction based on Scalable Hypothesis Tests, được thiết kế đặc biệt để trích xuất đặc trưng có ý nghĩa từ dữ liệu chuỗi thời gian. Thư viện này thực hiện kiểm định giả thuyết để chọn các đặc trưng có ý nghĩa thống kê cho bài toán dự đoán.
- Autofeat: Thư viện Autofeat tự động hóa chọn lọc, tạo và biến đổi đặc trưng để cải thiện độ chính xác của mô hình tuyến tính. Ví dụ, thay vì
fit(), thư viện cung cấp phương thứcfit_transform()thực hiện đồng thời fit và transform trên dữ liệu đầu vào. Ngoài ra, các mô hìnhFeatureSelectorvàAutoFeatLightcó sẵn cho chọn lọc và chuẩn hóa đặc trưng.
Thực hành tốt nhất cho Kỹ thuật đặc trưng
Để triển khai kỹ thuật đặc trưng hiệu quả, hãy tập trung vào các thực hành tốt sau.
Hiểu dữ liệu của bạn
Hiểu ý nghĩa và tầm quan trọng của từng đặc trưng giúp bạn dễ dàng thực hiện các kỹ thuật như chọn lọc hoặc trích xuất đặc trưng hơn nhiều. Tôi khuyên bạn nghiên cứu dữ liệu và tri thức lĩnh vực liên quan để kỹ thuật đặc trưng hiệu quả.
Thực hiện phân tích khám phá dữ liệu (EDA)
Sử dụng các thư viện Python như Pandas và Matplotlib để thực hiện phân tích khám phá dữ liệu toàn diện, chẳng hạn như khám phá thông tin thống kê, trực quan hóa và tương quan để tìm mẫu và mối quan hệ tiềm năng trong dữ liệu.
Tạo đặc trưng tương tác
Tạo đặc trưng tương tác bao gồm xác định mối quan hệ giữa các đặc trưng hiện có và suy ra đặc trưng mới. Ví dụ, trong dự đoán giá nhà, tính tuổi nhà bằng cách lấy năm hiện tại trừ năm xây dựng làm nổi bật xu hướng như giá nhà giảm theo thời gian.
Chọn mô hình trước
Các mô hình machine learning khác nhau yêu cầu các bước kỹ thuật đặc trưng khác nhau. Ví dụ, các mô hình như hồi quy tuyến tính hay hồi quy bội, SVM và KNN thường hưởng lợi từ tiêu chuẩn hóa đặc trưng, nhưng kỹ thuật này không giúp ích cho các mô hình dựa trên cây.
Vì vậy, quyết định mô hình từ trước có thể giúp bạn xây dựng một pipeline kỹ thuật đặc trưng hiệu quả cho trường hợp sử dụng của mình.
Kết luận
Kỹ thuật đặc trưng là phần không thể thiếu trong xây dựng giải pháp machine learning, cho phép bạn tận dụng đặc trưng một cách hiệu quả nhất. Quá trình này được thực hiện bởi các nhà khoa học dữ liệu hoặc kỹ sư ML khi làm việc với bất kỳ tập dữ liệu nào. Nếu bạn là một chuyên gia dữ liệu hoặc đang hướng tới mục tiêu đó, nắm vững tất cả kỹ thuật được đề cập trong bài viết này sẽ giúp bạn thăng tiến sự nghiệp!
Để khám phá chi tiết hơn các kỹ thuật này, hãy xem các khóa học của DataCamp về kỹ thuật đặc trưng cho machine learning và kỹ thuật đặc trưng cho NLP. Cũng có một khóa học về kỹ thuật đặc trưng cho lập trình viên R.
FAQs
Kỹ thuật đặc trưng khác gì với chọn lọc đặc trưng?
Kỹ thuật đặc trưng liên quan đến việc tạo đặc trưng mới hoặc biến đổi các đặc trưng hiện có để cải thiện hiệu suất mô hình. Trong khi đó, chọn lọc đặc trưng là quá trình chọn ra các đặc trưng liên quan nhất và loại bỏ các đặc trưng không liên quan hoặc dư thừa nhằm ngăn overfitting và giảm độ phức tạp mô hình.
Kỹ thuật đặc trưng có thể tự động hóa không?
Có! Các công cụ Kỹ thuật Đặc trưng tự động như FeatureTools, thư viện AutoML (ví dụ: Auto-sklearn, H2O.ai) và Google’s AutoML Tables có thể tự động tạo và biến đổi đặc trưng, tiết kiệm thời gian và công sức. Tuy nhiên, hiểu biết về miền vấn đề vẫn rất quan trọng để diễn giải và chọn các đặc trưng tốt nhất.
Kỹ thuật đặc trưng ảnh hưởng thế nào đến khả năng diễn giải mô hình?
Kỹ thuật đặc trưng có thể cải thiện hoặc làm giảm khả năng diễn giải, tùy thuộc kỹ thuật sử dụng. Ví dụ:
- Tạo đặc trưng có ý nghĩa (ví dụ, "House Age" thay vì "YearBuilt") cải thiện khả năng diễn giải.
- Áp dụng các biến đổi như PCA (Phân tích Thành phần Chính) có thể làm đặc trưng kém dễ hiểu hơn nhưng cải thiện hiệu suất mô hình.
Kỹ thuật đặc trưng có phụ thuộc vào loại mô hình machine learning không?
Có! Các mô hình khác nhau hưởng lợi từ các kỹ thuật kỹ thuật đặc trưng khác nhau:
- Mô hình tuyến tính (ví dụ, Hồi quy tuyến tính, Hồi quy Logistic) – Cần chuẩn hóa thang đo và thường hưởng lợi từ biến đổi đặc trưng đa thức.
- Mô hình dựa trên cây (ví dụ, Cây quyết định, Rừng ngẫu nhiên, XGBoost) – Xử lý tốt dữ liệu chưa chuẩn hóa và thường hưởng lợi nhiều hơn từ chọn lọc đặc trưng so với biến đổi.
- Mô hình học sâu – Ưa đặc trưng thô, và các biến đổi như lớp embedding giúp với dữ liệu phân loại.
Feature crossing là gì, và khi nào nên dùng?
Feature crossing là quá trình kết hợp hai hoặc nhiều đặc trưng để tạo đặc trưng mới nắm bắt tương tác giữa chúng. Ví dụ:
- Thay vì dùng riêng "Age" và "Income", hãy tạo "Tỷ lệ Thu nhập-Trên-Tuổi" để nắm bắt sự ổn định tài chính giữa các nhóm tuổi.
- Dùng feature crossing khi mối quan hệ giữa các biến ảnh hưởng phi tuyến đến biến mục tiêu.
Làm sao đánh giá liệu một đặc trưng có cải thiện hiệu suất mô hình?
Bạn có thể đánh giá tầm quan trọng của đặc trưng bằng:
- Permutation Importance – Đo lường việc xáo trộn một đặc trưng ảnh hưởng thế nào đến độ chính xác mô hình.
- Feature Importance trong mô hình dựa trên cây – Nhiều mô hình như Random Forest cung cấp sẵn điểm quan trọng đặc trưng.
- Hiệu suất cross-validation – So sánh độ chính xác mô hình với và không có một đặc trưng.
Kỹ thuật đặc trưng tương tác là gì?
Kỹ thuật đặc trưng tương tác liên quan đến việc tạo đặc trưng mới dựa trên tương tác giữa các đặc trưng hiện có. Có thể bao gồm:
- Nhân (Đặc trưng tích): Kết hợp hai đặc trưng (ví dụ, "Chiều cao × Cân nặng" cho BMI).
- Tỷ lệ: Chia một đặc trưng cho đặc trưng khác (ví dụ, "Giá trên mỗi foot vuông").
- Đặc trưng đa thức: Lũy thừa đặc trưng (ví dụ, "Age²" cho quan hệ phi tuyến).
Xử lý biến phân loại có lực lượng hạng mục lớn như thế nào?
Với các biến phân loại có rất nhiều giá trị duy nhất (ví dụ, mã bưu chính, ID người dùng):
- Target Encoding: Thay thế hạng mục bằng trung bình biến mục tiêu.
- Lớp Embedding (cho Học sâu): Học biểu diễn chiều thấp hơn của các hạng mục.
- Hashing Encoding: Gán hạng mục vào các bucket bằng hàm băm.
Srujana là một cây bút công nghệ tự do với bằng Cử nhân Khoa học Máy tính. Việc viết về nhiều chủ đề như khoa học dữ liệu, điện toán đám mây, phát triển, lập trình, bảo mật và nhiều lĩnh vực khác đến với cô một cách tự nhiên. Cô yêu thích văn học kinh điển và khám phá những điểm đến mới.
