Chắc hẳn bạn đã từng nghe câu nói "rác vào, rác ra". Câu nói này quả thực có thể áp dụng được khi đào tạo các mô hình machine learning. Nếu chúng ta huấn luyện các mô hình học máy bằng cách sử dụng dữ liệu không liên quan thì ngay cả những thuật toán học máy tốt nhất cũng không giúp được gì nhiều. Ngược lại, việc sử dụng các tính năng có ý nghĩa được thiết kế tốt có thể đạt được hiệu suất vượt trội ngay cả với thuật toán học máy đơn giản. Vậy thì làm cách nào chúng ta có thể tạo ra những tính năng có ý nghĩa này để tối đa hóa hiệu suất của mô hình? Câu trả lời là kỹ thuật tính năng. Làm việc về kỹ thuật tính năng đặc biệt quan trọng khi làm việc với các thuật toán học máy truyền thống, chẳng hạn như hồi quy, cây quyết định, máy vectơ hỗ trợ và các thuật toán khác yêu cầu đầu vào số. Tuy nhiên, việc tạo ra những đầu vào số này không chỉ liên quan đến kỹ năng dữ liệu. Đó là một quá trình đòi hỏi sự sáng tạo, kiến thức chuyên môn và tính nghệ thuật cũng như tính khoa học.
Nói rộng ra, chúng ta có thể chia kỹ thuật tính năng thành hai thành phần: 1) tạo các tính năng mới và 2) xử lý các tính năng này để làm cho chúng hoạt động tối ưu với thuật toán máy đang được xem xét. Trong bài viết này, chúng ta sẽ thảo luận về hai thành phần này của kỹ thuật tính năng cho các bộ dữ liệu cắt ngang, có cấu trúc, không phải NLP.
Việc thu thập dữ liệu thô có thể rất mệt mỏi và khi kết thúc nhiệm vụ này, chúng ta có thể quá mệt mỏi để đầu tư thêm thời gian và sức lực vào việc tạo ra các tính năng bổ sung. Nhưng đây chính là lúc chúng ta phải chống lại sự cám dỗ của việc lao thẳng vào đào tạo người mẫu. Tôi hứa với bạn rằng nó sẽ rất có giá trị! Tại điểm giao nhau này, chúng ta nên dừng lại và tự hỏi: "Nếu tôi đưa ra dự đoán theo cách thủ công dựa trên kiến thức về lĩnh vực của mình, những tính năng nào sẽ giúp tôi làm tốt công việc?" Việc đặt câu hỏi này có thể mở ra khả năng tạo ra các tính năng mới có ý nghĩa mà mô hình của chúng tôi có thể đã bỏ lỡ. Khi đã xem xét những tính năng bổ sung nào mà chúng tôi có thể hưởng lợi, chúng tôi có thể tận dụng các kỹ thuật bên dưới để tạo các tính năng mới từ dữ liệu thô.
Đúng như tên gọi, kỹ thuật này giúp chúng ta kết hợp nhiều điểm dữ liệu để tạo ra cái nhìn toàn diện hơn. Chúng tôi thường áp dụng phép tổng hợp trên dữ liệu số liên tục bằng cách sử dụng các hàm tiêu chuẩn như đếm, tổng, trung bình, tối thiểu, tối đa, phân vị, độ lệch chuẩn và hệ số biến thiên. Mỗi chức năng có thể nắm bắt các yếu tố thông tin khác nhau và chức năng tốt nhất để sử dụng tùy thuộc vào trường hợp sử dụng cụ thể. Thông thường, chúng ta có thể áp dụng tính năng tổng hợp theo một khoảng thời gian hoặc sự kiện cụ thể có ý nghĩa trong bối cảnh của vấn đề đó.
Hãy lấy một ví dụ mà chúng tôi muốn dự đoán liệu một giao dịch thẻ tín dụng nhất định có gian lận hay không. Đối với trường hợp sử dụng này, chắc chắn chúng tôi có thể sử dụng các tính năng dành riêng cho giao dịch, nhưng bên cạnh các tính năng đó, chúng tôi cũng có thể hưởng lợi từ việc tạo các tính năng tổng hợp ở cấp độ khách hàng như:
Số lần khách hàng là nạn nhân lừa đảo trong 5 năm qua: Một khách hàng đã từng là nạn nhân lừa đảo nhiều lần trước đây có nhiều khả năng trở thành nạn nhân lừa đảo lần nữa. Do đó, việc sử dụng chế độ xem cấp độ khách hàng tổng hợp này có thể cung cấp các tín hiệu dự đoán thích hợp.
Số tiền trung bình của năm giao dịch gần nhất: Thông thường, khi thẻ tín dụng bị xâm phạm, những kẻ lừa đảo có thể thực hiện nhiều giao dịch có giá trị thấp để kiểm tra thẻ. Hiện nay, một giao dịch có giá trị thấp là rất phổ biến và có thể không phải là dấu hiệu gian lận, nhưng nếu chúng tôi thấy nhiều giao dịch như vậy diễn ra liên tiếp trong thời gian ngắn, điều đó có thể cho thấy thẻ tín dụng đã bị xâm phạm.
Trong nhiều loại vấn đề, sự thay đổi trong một mẫu đã định sẵn là một tín hiệu có giá trị để dự đoán hoặc phát hiện sự bất thường. Sự khác biệt và tỷ lệ là những kỹ thuật hiệu quả để biểu diễn những thay đổi trong các đặc điểm số. Cũng giống như tổng hợp, chúng ta cũng có thể áp dụng các kỹ thuật này trong một khoảng thời gian có ý nghĩa trong bối cảnh của vấn đề đó.
Ví dụ:
Sự khác biệt giữa phần trăm giao dịch của người bán mới trong 1 giờ qua và phần trăm giao dịch của người bán mới trong 30 ngày qua: Tỷ lệ phần trăm giao dịch người bán mới liên tiếp cao có thể tự nó cho thấy rủi ro gian lận, nhưng khi chúng tôi thấy hành vi này đã thay đổi so với hành vi lịch sử của khách hàng thì nó càng trở thành một tín hiệu rõ ràng hơn.
Tỷ lệ số lượng giao dịch trong ngày hiện tại so với số lượng giao dịch trung bình hàng ngày trong 30 ngày qua: Khi thẻ tín dụng bị xâm phạm, thẻ đó có thể sẽ có nhiều giao dịch trong một khoảng thời gian ngắn, điều này có thể không phù hợp với việc sử dụng thẻ tín dụng trong quá khứ. Tỷ lệ cao đáng kể giữa số lượng giao dịch trong ngày hiện tại so với số lượng giao dịch trung bình hàng ngày trong 30 ngày qua có thể cho thấy các kiểu sử dụng gian lận.
Chúng ta có thể sử dụng kỹ thuật tính tuổi để chuyển đổi các đặc điểm ngày hoặc dấu thời gian thành các đặc điểm số bằng cách lấy sự khác biệt giữa hai dấu thời gian hoặc ngày tháng. Chúng ta cũng có thể sử dụng kỹ thuật này để chuyển đổi một số đối tượng không phải số thành các đối tượng số có ý nghĩa nếu quyền sử dụng được liên kết với các giá trị đối tượng có thể là tín hiệu có giá trị để dự đoán.
Ví dụ:
Các tính năng chỉ báo hoặc Boolean có giá trị nhị phân {1, 0} hoặc {True, False}. Các tính năng chỉ báo rất phổ biến và được sử dụng để thể hiện nhiều loại thông tin nhị phân khác nhau. Trong một số trường hợp, chúng ta có thể đã có sẵn các đặc điểm nhị phân như vậy ở dạng số, trong khi trong các trường hợp khác, chúng có thể có các giá trị không phải là số. Để sử dụng các đặc điểm nhị phân không phải số cho việc huấn luyện mô hình, tất cả những gì chúng ta phải làm là ánh xạ chúng tới các giá trị số.
Nhìn xa hơn những lần xuất hiện phổ biến này và việc sử dụng các tính năng chỉ báo, chúng ta có thể tận dụng mã hóa chỉ báo như một công cụ để thể hiện sự so sánh giữa các điểm dữ liệu không phải là số. Thuộc tính này làm cho nó trở nên đặc biệt mạnh mẽ vì nó tạo ra cách để chúng ta đo lường những thay đổi trong các đối tượng không phải là số.
Ví dụ:
Xác minh không thành công trong sự kiện đăng nhập gần đây: Sự kiện đăng nhập không thành công gần đây có thể liên quan đến nguy cơ giao dịch gian lận cao hơn. Trong trường hợp này, dữ liệu thô có thể có giá trị Có hoặc Không cho tính năng này; tất cả những gì chúng ta phải làm ở đây là ánh xạ các giá trị này thành 1 hoặc 0.
Thay đổi vị trí quốc gia so với giao dịch cuối cùng: Thay đổi vị trí quốc gia có thể cho thấy thẻ tín dụng bị xâm phạm. Ở đây, việc tạo đặc điểm chỉ báo thể hiện sự thay đổi trong đối tượng không phải số 'vị trí quốc gia' sẽ nắm bắt thông tin thay đổi của quốc gia này.
Kỹ thuật này có thể được áp dụng nếu dữ liệu đối tượng của chúng tôi ở dạng phân loại, số hoặc không phải số. Dạng phân loại số đề cập đến dữ liệu số chứa dữ liệu không liên tục hoặc không đo lường, chẳng hạn như mã vùng địa lý, ID cửa hàng và các loại dữ liệu khác. Một kỹ thuật mã hóa nóng có thể chuyển đổi các tính năng đó thành một tập hợp các tính năng chỉ báo mà chúng ta có thể sử dụng trong việc đào tạo các mô hình học máy. Việc áp dụng một mã hóa nóng cho một đối tượng địa lý phân loại sẽ tạo ra một đối tượng địa lý nhị phân mới cho mỗi danh mục trong biến phân loại đó. Vì số lượng đối tượng địa lý mới tăng khi số lượng danh mục tăng lên nên kỹ thuật này phù hợp với các đối tượng có số lượng danh mục thấp, đặc biệt nếu chúng ta có tập dữ liệu nhỏ hơn. Một trong những quy tắc chung gợi ý áp dụng kỹ thuật này nếu chúng ta có ít nhất mười bản ghi cho mỗi danh mục.
Ví dụ:
Kỹ thuật này được áp dụng cho cùng loại tính năng mà chúng tôi sẽ áp dụng mã hóa một nóng nhưng có một số ưu điểm và nhược điểm so với mã hóa một nóng. Khi số lượng danh mục cao (số lượng phần tử cao), việc sử dụng mã hóa một lần sẽ làm tăng số lượng tính năng một cách không mong muốn, điều này có thể dẫn đến tình trạng trang bị quá mức mô hình. Mã hóa mục tiêu có thể là một kỹ thuật hiệu quả trong những trường hợp như vậy, miễn là chúng ta đang giải quyết vấn đề học có giám sát. Đó là một kỹ thuật ánh xạ từng giá trị danh mục tới giá trị mong đợi của mục tiêu cho danh mục đó. Nếu làm việc với một bài toán hồi quy với một mục tiêu liên tục, phép tính này sẽ ánh xạ danh mục đó tới giá trị mục tiêu trung bình cho danh mục đó. Trong trường hợp có vấn đề phân loại với mục tiêu nhị phân, mã hóa mục tiêu sẽ ánh xạ danh mục đó với xác suất sự kiện tích cực của danh mục đó. Không giống như mã hóa one-hot, kỹ thuật này có ưu điểm là không làm tăng số lượng tính năng. Nhược điểm của kỹ thuật này là nó chỉ có thể được áp dụng cho các bài toán học có giám sát. Việc áp dụng kỹ thuật này cũng có thể làm cho mô hình dễ bị khớp quá mức, đặc biệt nếu số lượng quan sát ở một số loại thấp.
Ví dụ:
Khi chúng tôi đã tạo các tính năng mới từ dữ liệu thô, bước tiếp theo là xử lý chúng để có hiệu suất mô hình tối ưu. Chúng tôi thực hiện điều này thông qua việc xử lý tính năng như được thảo luận trong phần tiếp theo.
Xử lý tính năng đề cập đến một loạt các bước xử lý dữ liệu nhằm đảm bảo rằng các mô hình học máy phù hợp với dữ liệu như dự định. Mặc dù một số bước xử lý này là bắt buộc khi sử dụng một số thuật toán học máy nhất định, nhưng những bước khác đảm bảo rằng chúng tôi đạt được sự phối hợp hoạt động tốt giữa các tính năng và thuật toán học máy đang được xem xét. Trong phần này, hãy thảo luận về một số bước xử lý tính năng phổ biến và lý do chúng ta cần chúng.
Một số thuật toán học máy, đặc biệt là các thuật toán tham số như mô hình hồi quy, bị ảnh hưởng nghiêm trọng bởi các giá trị ngoại lệ. Các thuật toán học máy này cố gắng điều chỉnh các giá trị ngoại lệ, ảnh hưởng nghiêm trọng đến các tham số mô hình và ảnh hưởng đến hiệu suất tổng thể. Để xử lý các ngoại lệ, trước tiên chúng ta phải xác định chúng. Chúng ta có thể phát hiện các ngoại lệ cho một tính năng cụ thể bằng cách áp dụng một số quy tắc kinh nghiệm nhất định, chẳng hạn như có giá trị tuyệt đối lớn hơn giá trị trung bình cộng với ba độ lệch chuẩn hoặc giá trị nằm ngoài giá trị râu gần nhất (giá trị tứ phân vị gần nhất cộng với 1,5 lần giá trị phạm vi liên vùng). Khi đã xác định được các ngoại lệ trong một tính năng cụ thể, chúng ta có thể sử dụng một số kỹ thuật bên dưới để xử lý các ngoại lệ:
Lưu ý rằng có các kỹ thuật để phát hiện các quan sát là các ngoại lệ đa biến (các ngoại lệ liên quan đến nhiều tính năng), nhưng chúng phức tạp hơn và thường không mang lại nhiều giá trị khi đào tạo mô hình học máy. Cũng lưu ý rằng các ngoại lệ không phải là vấn đề đáng lo ngại khi làm việc với hầu hết các mô hình máy học phi tham số như máy vectơ hỗ trợ và các thuật toán dựa trên cây như cây quyết định, rừng ngẫu nhiên và XGBoost.
Thiếu dữ liệu là hiện tượng rất phổ biến trong các bộ dữ liệu trong thế giới thực. Hầu hết các thuật toán học máy truyền thống, ngoại trừ một số thuật toán như XGBoost, không cho phép thiếu các giá trị trong tập dữ liệu huấn luyện. Do đó, sửa các giá trị bị thiếu là một trong những nhiệm vụ thường xuyên trong mô hình học máy. Có một số kỹ thuật để xử lý các giá trị bị thiếu; tuy nhiên, trước khi thực hiện bất kỳ kỹ thuật nào, điều quan trọng là phải hiểu nguyên nhân của dữ liệu bị thiếu hoặc ít nhất là biết liệu dữ liệu có bị thiếu ngẫu nhiên hay không. Nếu dữ liệu không bị thiếu một cách ngẫu nhiên, nghĩa là các nhóm con nhất định có nhiều khả năng bị thiếu dữ liệu hơn, thì việc xác định giá trị cho những dữ liệu đó có thể khó khăn, đặc biệt nếu có ít hoặc không có dữ liệu. Nếu dữ liệu bị thiếu ngẫu nhiên, chúng ta có thể sử dụng một số kỹ thuật xử lý phổ biến được mô tả bên dưới. Tất cả đều có ưu và nhược điểm và chúng ta phải quyết định phương pháp nào phù hợp nhất với trường hợp sử dụng của mình.
Thông thường, các tính năng mà chúng tôi sử dụng trong mô hình học máy có phạm vi khác nhau. Nếu chúng ta sử dụng chúng mà không chia tỷ lệ, các đặc điểm có giá trị tuyệt đối lớn sẽ chiếm ưu thế trong kết quả dự đoán. Thay vào đó, để mang lại cho mỗi tính năng một cơ hội công bằng để đóng góp vào kết quả dự đoán, chúng ta phải đưa tất cả các tính năng lên cùng một quy mô. Hai kỹ thuật chia tỷ lệ phổ biến nhất là:
Lưu ý rằng các thuật toán dựa trên cây như cây quyết định, rừng ngẫu nhiên, XGBoost và các thuật toán khác có thể hoạt động với dữ liệu chưa được chia tỷ lệ và không cần chia tỷ lệ khi sử dụng các thuật toán này.
Ngày nay, chúng ta có lượng dữ liệu khổng lồ và có thể xây dựng một bộ sưu tập lớn các tính năng để huấn luyện các mô hình của mình. Đối với hầu hết các thuật toán, việc có nhiều tính năng hơn là điều tốt vì nó cung cấp nhiều tùy chọn hơn để cải thiện hiệu suất của mô hình. Tuy nhiên, điều này không đúng với mọi thuật toán. Các thuật toán dựa trên số liệu khoảng cách gặp phải vấn đề về chiều - khi số lượng đối tượng tăng lên đáng kể, giá trị khoảng cách giữa hai quan sát trở nên vô nghĩa. Do đó, để sử dụng các thuật toán dựa trên số liệu khoảng cách, chúng ta phải đảm bảo rằng chúng ta không sử dụng nhiều tính năng. Nếu tập dữ liệu của chúng tôi có nhiều tính năng và nếu chúng tôi không biết nên giữ lại tính năng nào và loại bỏ tính năng nào, thì chúng tôi có thể sử dụng các kỹ thuật như Phân tích thành phần chính (PCA). PCA chuyển đổi tập hợp các tính năng cũ thành một tập hợp các tính năng mới. Nó tạo ra các đặc điểm mới sao cho đặc điểm có giá trị riêng cao nhất sẽ nắm bắt được hầu hết thông tin từ các đặc điểm cũ. Sau đó, chúng tôi chỉ có thể giữ lại một số tính năng mới hàng đầu và loại bỏ những tính năng còn lại.
Các kỹ thuật thống kê khác, chẳng hạn như phân tích liên kết và thuật toán lựa chọn tính năng, có thể được sử dụng trong các bài toán học có giám sát để giảm số lượng tính năng. Tuy nhiên, nhìn chung chúng không nắm bắt được mức độ thông tin giống như PCA với cùng số lượng tính năng.
Bước này là một ngoại lệ vì nó chỉ áp dụng cho mục tiêu chứ không áp dụng cho các tính năng. Ngoài ra, hầu hết các thuật toán học máy không có bất kỳ hạn chế nào đối với việc phân phối mục tiêu, nhưng một số thuật toán nhất định như hồi quy tuyến tính, yêu cầu mục tiêu phải được phân phối bình thường. Hồi quy tuyến tính giả định rằng các giá trị lỗi là đối xứng và tập trung quanh 0 đối với tất cả các điểm dữ liệu (giống như hình dạng của phân phối chuẩn) và biến mục tiêu được phân phối chuẩn đảm bảo rằng giả định này được đáp ứng. Chúng ta có thể hiểu sự phân bố của mục tiêu bằng cách vẽ biểu đồ. Các kiểm tra thống kê như kiểm tra Shapiro-Wilk cho chúng ta biết về tính quy phạm bằng cách kiểm tra giả thuyết này. Trong trường hợp mục tiêu của chúng tôi không được phân phối bình thường, chúng tôi có thể thử các phép biến đổi khác nhau như biến đổi log, biến đổi bình phương, biến đổi căn bậc hai và các biến đổi khác để kiểm tra xem biến đổi nào làm cho phân phối mục tiêu trở nên bình thường. Ngoài ra còn có một phép chuyển đổi Box-Cox thử nhiều giá trị tham số và chúng ta có thể chọn giá trị biến đổi tốt nhất phân phối mục tiêu của chúng ta thành bình thường.
Lưu ý: Mặc dù chúng tôi có thể triển khai các bước xử lý đối tượng trong các đối tượng theo bất kỳ thứ tự nào, nhưng chúng tôi phải xem xét kỹ lưỡng trình tự ứng dụng của chúng. Ví dụ, việc xử lý giá trị bị thiếu bằng cách sử dụng thay thế giá trị trung bình có thể được thực hiện trước hoặc sau khi phát hiện giá trị ngoại lệ. Tuy nhiên, giá trị trung bình được sử dụng để thay thế có thể khác nhau tùy thuộc vào việc chúng ta xử lý các giá trị còn thiếu trước hay sau khi xử lý ngoại lệ. Trình tự xử lý tính năng được nêu trong bài viết này xử lý các vấn đề theo thứ tự tác động mà chúng có thể gây ra đối với các bước xử lý tiếp theo. Vì vậy, làm theo trình tự này nhìn chung sẽ có hiệu quả trong việc giải quyết hầu hết các vấn đề.
Như đã đề cập trong phần giới thiệu, kỹ thuật tính năng là một khía cạnh của học máy cho phép chúng ta kiểm soát hiệu suất của mô hình ở một mức độ đặc biệt. Để khai thác tiềm năng của kỹ thuật tính năng, chúng tôi đã tìm hiểu nhiều kỹ thuật khác nhau trong bài viết này để tạo ra các tính năng mới và xử lý chúng để hoạt động tối ưu với các mô hình học máy. Cho dù bạn chọn sử dụng các nguyên tắc và kỹ thuật kỹ thuật tính năng nào trong bài viết này, thông điệp quan trọng ở đây là hãy hiểu rằng học máy không chỉ là yêu cầu thuật toán tìm ra các mẫu. Mục đích của chúng tôi là cho phép thuật toán thực hiện công việc của mình một cách hiệu quả bằng cách cung cấp loại dữ liệu mà nó cần.