
Trong bài viết này, ta sẽ tìm hiểu về kĩ thuật feature engineering. Đây là chủ đề mà hầu như không có bài báo hay cuốn sách nào đề cập đến nhưng kĩ thuật này là yếu tố quan trọng trong việc xây dựng thành công mô hình dự đoán có độ chính xác cao. Bài viết này nhằm trả lời câu hỏi feature engineering là gì, tại sao nó quan trọng, và các bài toán con trong kĩ thuật feature engineering.
Feature Engineering là gì
Feature Engineering là qúa trình chuyển đổi tập dữ liệu thô ban đầu thành tập các thuộc tính (features) có thể giúp biểu diễn tập dữ liệu ban đầu tốt hơn, tạo điều kiện để giải quyết các bài toán dễ dàng hơn, giúp tương thích với từng mô hình dự đoán cụ thể, cũng như cải thiện độ chính xác của mô hình dự đoán hiện tại.
Feature engineering cố gắng biểu diễn tốt nhất tập dữ liệu ban đầu sao cho tương thích với mô hình dự đoán bạn đang sử dụng. Xét bài toán dự đoán sinh viên này có khả năng bỏ học là bao nhiêu phần trăm. Thông thường, ta sẽ sử dụng tất cả các thuộc tính liên quan đến sinh viên đó để áp dụng cho bài toán phân lớp, mà các thuộc tính này thường rất nhiều từ 20-50 cột thuộc tính. Tuy nhiên, khi đưa toàn bộ thuộc tính này vào mô hình phân lớp của mình (ví dụ mô hình cây quyết định), thời gian để máy traing rất lâu, đồng thời kết qủa dự đoán có độ chính xác thấp. Thay vì làm như vậy, ta sử dụng kĩ thuật feature engineering để chọn ra một số thuộc tính phù hợp hơn như có vay mượn để đóng học phí không, số điểm đầu vào là bao nhiêu, qúa trình tiến bộ trong học tập là bao nhiêu,… Ngoài ra, ta có thể thu thập thêm các thuộc tính cần thiết khác để bổ sung vào tập dữ liệu ban đầu như có tham gia nhiều hoạt động ngoại khóa hay không, có được hỗ trợ vào kí túc xá hay không,… Thì số thuộc tính đưa vào mô hình phân lớp được giảm đi đáng kể giúp tốc độ để máy training nhanh hơn. Hơn nữa, nhờ biểu diễn tốt tập dữ liệu ban đầu mà độ chính xác mô hình phân lớp được cải thiện đáng kể.
Cũng như lập trình là một nghệ thuật, giao tiếp là một nghệ thuật, hay khám chữa bệnh là một nghệ thuật thì feature engineering cũng là một nghệ thuật. Do tập dữ liệu trên thực tế phức tạp hơn rất nhiều so với các gỉa định trong nghiên cứu, thêm vào đó các bài toán trong thực tế luôn luôn biến đổi và đòi hỏi những nhà khoa học dữ liệu phải biết thích nghi trong từng trường hợp để đưa ra cách xây dựng mô hình phù hợp nhất. Vì vậy, việc thêm bớt, chỉnh sửa các thuộc tính cho tập dữ liệu ban đầu sao cho có thể cải thiện tốc độ tính toán cũng như nâng cao độ chính xác của mô hình là một nghệ thuật. Để đạt được trình độ này, đòi hỏi chúng ta phải va chạm nhiều các bài toán thực tế, đồng thời học hỏi từ cộng đồng để nâng cao kiến thức cũng như kinh nghiệm cho bản thân.
Tầm quan trọng của Feature Engineering
Các thuộc tính trong tập dữ liệu ảnh hưởng trực tiếp đến mô hình dự đoán, do đó ta cần xác định tốt cấu trúc của các thuộc tính sao cho diễn đạt hiệu quả nhất bản chất của tập dữ liệu.
Mặc dù bạn không chọn được mô hình dự đoán tốt nhất nhưng ta vẫn có thể đạt được kết quả dự đoán cao. Hầu hết các thuật toán sẽ tự điều chỉnh các thông số phù hợp theo cấu trúc các thuộc tính hiện tại. Tuy nhiên, việc có được tập thuộc tính tinh gọn sẽ góp phần làm đơn giản hoá độ phức tạp tính toán của mô hình nhờ vậy mà tính toán được nhanh hơn và dễ dàng để diễn giải cho người dùng. Ví dụ, khi sử dụng mô hình cây quyết định, nếu ta sử dụng quá nhiều thuộc tính vào quá trình dự đoán, mặc dù cho kết quả rất tốt tuy nhiên, người dùng sẽ rất khó quan sát và diễn giải kết quả dự đoán.
Trong quá trình tối ưu hoá tham số, mặc dù không đạt được mục tiêu này nhưng với tập thuộc tính được thiết kế tốt, ta vẫn có thể đạt được kết quả dự đoán cao. Ta không cần phải cực lực tìm kiếm mô hình nào phù hợp nhất cũng như bộ trọng số được tối ưu nhất. Chỉ với tập thuộc tính được thiết kế tốt, ta đã mô tả được tập dữ liệu hiện có cũng như tiếp cận với bài toán thực tế dễ dàng và rõ ràng hơn rất nhiều.
Các bài toán con trong kĩ thuật feature engineering
Cần xác định đâu là features, đâu là attributes

Đối với dữ liệu dạng bảng tính, thuật ngữ observations (các mẫu quan sát) hay instance (các mẫu thể hiện) là các dòng dữ liệu trong bảng tính. Mỗi dòng dữ liệu nào gồm có nhiều variables (biến) hay attributes (thuộc tính) là các cột của bảng tính.
Feature khác với attribute mặc dù cũng mang nghĩa thuộc tính nhưng feature mang nhiều ngữ nghĩa hơn. Ví dụ trong thị giác máy tính (computer vision), một bức ảnh là một observation gồm nhiều attributes là các điểm pixel. Tuy nhiên, feature ở đây có thể là các đường biên cạnh hay dáng dấp hình học trong bức ảnh. Trong xử lý ngôn ngữ tự nhiên (natural language processing), một văn bản hay một tweet sẽ là một observation gồm nhiều attributes là các từ trong đó. Thế nhưng, feature ở đây có thể là một ngữ (phrase) hay số lượng từ phân bố trong đó. Trong nhận dạng tiếng nói (speech recognition), một người phát ra âm thành là observation, attributes sẽ là các sóng âm dưới dạng tần số, còn feature sẽ là các nhóm âm thành được gom lại để phân tích.
Bài toán đánh giá độ hữu dụng của các feature
Ta có thể thực hiện việc đánh giá độ hữu dụng của các feature để tiền xử lý dữ liệu trước khi đưa vào xây dựng mô hình dự đoán. Các feature này sau khi được ước lượng và đánh giá sẽ có một điểm số để xếp hạng. Những feature có điểm xếp hạng cao sẽ được chọn ra để đưa vào training, còn lại những feature có điểm xếp hạng thấp sẽ bị lược bỏ.
Điểm xếp hạng của các feature còn được dùng để rút trích hay tạo ra những feature mới. Những mô hình khi được training có đưa ra được chỉ số xếp hạng cho các feature như MARS, Random Forest và Gradient Boosted Machines.
Bài toán rút trích đặc trưng (feature extraction)

Trên thực tế, các mẫu dữ liệu như hình ảnh, audio, hay văn bản mang trong mình rất nhiều thuộc tính. Mà các thuộc tính này khi đưa trực tiếp vào các mô hình dự đoán sẽ làm cho tốc độ training của các mô hình bị giảm đi rõ rệt.
Feature extraction là tiến trình tự động hoá được dùng để giảm số chiều dữ liệu sao cho dữ liệu ban đầu được chuyển đổi sang dạng đơn giản và nhỏ hơn, trước khi đưa vào mô hình dự đoán.
Đối với dữ liệu dạng bảng tính, ta có thể sử dụng các phương pháp như phân tích thành phần chính (Principal Component Analysis) hay phương pháp gom nhóm (unsupervised clustering). Đối với dữ liệu hình ảnh, ta có thể sử dụng phương pháp rút trích biên cạnh. Tuỳ thuộc vào từng lĩnh vực, hình ảnh, video, hay audio mà ta có các phương pháp rút trích đặc trưng khác nhau.
Bài toán lựa chọn đặc trưng (feature selection)
Các feature có tầm quan trọng khác nhau, tùy theo từng bài toán mà có thuộc tính này hữu ích hơn các thuộc tính kia và cần loại bỏ bớt các thuộc tính không liên quan đến bài toán. Có một số feature cần thiết để góp phần vào cải thiện độ chính xác của thuật toán cũng có các feature dư thừ không phù hợp với bài toán hiện tại.
Feature selection giải quyết các vấn đề trên bằng các tự động hoá lựa chọn tập con trong số các feature ban đầu sao cho các feature được lựa chọn này phù hợp với bài toán hiện tại.
Các thuật toán feature selection có thể sử dụng phương pháp ranking để lựa chọn feature bằng cách dựa vào mối tương quan giữa các thuộc tính để lọc ra được các thuộc tính độc lập với nhau. Một số phương pháp nâng cao khác sẽ tìm tập con feature bằng cách thử và sai, xây dựng và ước lượng mô hình một cách tự động thông qua từng tập con feature tìm được.
Bài toán xây dựng đặc trưng mới (feature construction)
Đây là công việc đòi hỏi nhiều sự sáng tạo, và thời gian của nhà khoa học dữ liệu. Để xây dựng các đặc trưng mới, ta cần thao tác bằng sức người thay vì tự động hoá bằng các giải thuật như feature selection. Do đó, ta mới gọi feature engineering là một nghệ thuật.
Feature engineering sẽ chiếm nhiều thời gian xây dựng và thực nghiệm. Ta phải đào sâu suy nghĩ về bài toán hiện tại để có thể đưa ra cấu trúc đặc trưng phù hợp nhất. Nhờ vậy mà các mô hình dự đoán có thể cải thiện được độ chính xác của mình.
Đối với dữ liệu dạng bảng tính, ta thường gom nhóm hay kết hợp các feature hiện tại để tạo ra các feature mới, hay phân rã, tách thành các feature đơn lẻ để tạo thành các feature mới. Đối với dữ liệu dạng văn bản, ta cần dựa vào bối cảnh để đưa ra các chỉ số cụ thể cho bài toán của mình. Còn với dữ liệu hình ảnh, ta thường dành nhiều thời gian thực nghiệm các filter để chọn ra được một bộ lọc tốt nhất cho mô hình của mình.
Bài toán xác định feature thông qua training dữ liệu.
Làm thế nào ta có thể tránh được việc xây dựng và rút trích đặc trưng một cách thủ công? Representation learning hay còn gọi là feature learning là hướng tiếp cận để tự động hóa qúa trình này.
Các phương pháp deep learning hiện đại đã có nhiều thành công trong lĩnh vực này ví dụ như phương pháp autoencoders và restricted Boltzmann machines. Các phương pháp này hoàn toàn tự động hóa qúa trình feature engineering bằng cách unsupervised hay semi-supervised, nhờ vậy mà ta có thể biểu diễn các feature một cách trừu tượng nhất (dạng thu gọn). Đây là hướng tiếp cận tiên tiến nhất và đã có nhiều kết qủa đáng kể trong speech recognition, image classification, object recognition và các lĩnh vực khác.
Tuy nhiên, điểm hạn chế của hướng tiếp cận này đó là ta không hiểu được tại sao các feature này được trích chọn. Vì nó là black-box nên ta không thể biết được chuyện gì đã xảy ra bên trong để có thể hiểu được.
Nguồn tham khảo:
Thế còn Feature selection là sao ạ??
ThíchĐã thích bởi 1 người
là giai đoạn sau khi em đã phát sinh được tập feature ở Feature engineering, giúp lọc ra các thành phần feature quan trọng nhất. Ví dụ từ 1000, chọn lại được 90 chẳng hạn. Em có thể tham khảo thêm các thuật toán liên quan ở đây https://www.kdnuggets.com/2017/11/rapidminer-evolutionary-algorithms-feature-selection.html
ThíchĐã thích bởi 1 người
Ủa theo em biết thứ tự xử lý là: Data Cleaning -> Feature Engineering -> Data Transformation -> Feature Selection – > Apply models & Training. Là Data Transformation rồi mới đến Feature Selection đúng không ạ?
ThíchThích
đúng rồi em, a ko đề cập các bước tiền xử lý.
ThíchThích