BAG OF WORDS LÀ GÌ

     
1. Giới thiệu2. Quy mô chung cho các bài toán Machine LearningTRAINING PHASEFeature ExtractorMain AlgorithmsTESTING PHASE3. Một vài ví dụ về Feature EngineeringTrực tiếp đem raw dataFeature selectionDimensionality reductionBag-of-wordsBag-of-Words vào Computer VisionFeature Scaling and NormalizationRescalingStandardizationScaling lớn unit length4. Thảo luận5. Tài liệu tham khảo

1. Giới thiệu

Cho tới thời gian này, tôi đã trình bày 5 thuật toán Machine Learning cơ bản: Linear Regression, K-means Clusterning, K-nearest neighbors, Perceptron Learning Algorithm và Logistic Regression. Trong tất cả các thuật toán này, tôi hầu hết giả sử những điểm tài liệu được trình diễn bằng các vector, được hotline là feature vector giỏi vector đặc trưng, bao gồm độ dài bằng nhau, và cùng là vector cột hoặc vector hàng. Mặc dù nhiên, trong các bài toán thực tế, hầu hết chuyện không được xuất sắc đẹp như vậy!

Với các bài toán về Computer Vision, các bức hình ảnh là những ma trận có form size khác nhau. Thậm chí để dìm dạng trang bị thể trong ảnh, ta nên thêm một bước nữa là object detection, có nghĩa là tìm mẫu khung chứa vật thể chúng ta cần dự đoán. Ví dụ, trong vấn đề nhận dạng khuôn mặt, bọn họ cần tìm kiếm được vị trí các khuôn mặt trong ảnh và crop những khuôn khía cạnh đó trước lúc làm công việc tiếp theo. Ngay cả khi đã xác minh được các khung chứa các khuôn phương diện (và rất có thể resize những khung đó về và một kích thước), ta vẫn buộc phải làm rất nhiều việc nữa vày hình hình ảnh của khuôn khía cạnh còn phụ thưộc vào góc chụp, ánh sáng, và không hề ít yếu tố khác nữa.

Bạn đang xem: Bag of words là gì

Các câu hỏi NLP (Natural Language Processing - Xử lý ngôn ngữ tự nhiên) cũng có thể có khó khăn tương tự khi độ dài của những văn bản là khác nhau, thậm chí có đông đảo từ khôn xiết hiếm gặp hoặc không có trong từ điển. Cũng có khi thêm 1 vài tự vào văn bản mà ngôn từ của văn bản không đổi hoặc hoàn toàn mang nghĩa ngược lại. Hoặc cùng là 1 câu nói cơ mà tốc độ, âm giọng của mọi người là không giống nhau, thậm chí của thuộc một tín đồ nhưng lúc tí hon lúc khỏe cũng khác nhau.

Khi làm việc với các bài toán Machine Learning thực tế, chú ý chung bọn họ chỉ giành được dữ liệu thô (raw) không qua chỉnh sửa, chọn lọc. Họ cần bắt buộc tìm một phép biến hóa để các loại ra những tài liệu nhiễu (noise), và để đưa dữ liệu thô với số chiều khác nhau về cùng một chuẩn chỉnh (cùng là những vector hoặc ma trận). Dữ liệu chuẩn chỉnh mới này phải đảm bảo giữ được phần nhiều thông tin đặc thù (features) cho tài liệu thô ban đầu. Không mọi thế, tùy từng từng bài toán, ta quan trọng kế đông đảo phép đổi khác để bao gồm features phù hợp. Thừa trình quan trọng này được gọi là Feature Extraction, hoặc Feature Engineering, một số trong những tài liệu giờ Việt call nó là trích lựa chọn đặc trưng.

Tôi xin trích một câu nói của thầy Andrew Ng và xin phép thêm không dịch ra giờ đồng hồ Việt (Nguồn Feature Engineering - wiki):

Coming up with features is difficult, time-consuming, requires expert knowledge. Applied machine learning is basically feature engineering.

Để giúp chúng ta có ánh nhìn tổng quan tiền hơn, vào phần tiếp theo sau tôi xin đặt cách Feature Engineering này trong một bức tranh mập hơn.

2. Mô hình chung cho các bài toán Machine Learning

Phần lớn các bài toán Machine Learning hoàn toàn có thể được thể hiện trong hình vẽ dưới đây:


*

Hình 1: mô hình chung cho những bài toán Machine Learning.

Có hai phases lớn là Training phase với Testing phase. Xin nói lại là với các bài toán Supervised learning, ta có những cặp dữ liệu (input, output), với các bài toán Unsupervised learing, ta chỉ có input mà thôi.

TRAINING PHASE

Có hai khối có nền blue color lục họ cần phải thiết kế:

Feature Extractor

ĐẦU RA

Tôi xin đề cập áp ra output của khối này trước vì mục đích của Feature Engineering là tạo thành một Feature Extractor biến tài liệu thô thuở đầu thành dữ liệu phù hợp với từng mục tiêu khác nhau.

ĐẦU VÀO

raw training input. Raw input đầu vào là toàn bộ các tin tức ta biết về dữ liệu. Ví dụ: với hình ảnh thì là quý hiếm của từng pixel; với văn bạn dạng thì là từng từ, từng câu; với file âm thanh thì nó là một trong những đoạn tín hiệu; cùng với cơ sở tài liệu Iris thì nó là độ dài những cánh hoa cùng đài hoa, tài liệu thô này thường không sinh hoạt dạng vector, không tồn tại số chiều như nhau. Thậm chí hoàn toàn có thể có số chiều đồng nhất nhưng số chiều thừa lớn, như 1 bức hình ảnh màu 1000 pixel x 1000 px thì số elements vẫn là (3 imes 10^6) (3 vì ảnh màu thông thường sẽ có 3 channels: Red, Green, Blue). Đây là 1 trong con số quá lớn, không lợi cho tàng trữ và tính toán.

(optional) đầu ra của training set. Trong số bài toán Unsupervised learning, ta phân vân output nên hiển nhiên sẽ không tồn tại đầu vào này. Trong những bài toán Supervised learning, gồm khi tài liệu này cũng ko được sử dụng. Ví dụ: ví như raw đầu vào đã gồm cùng số chiều rồi tuy nhiên số chiều thừa lớn, ta hy vọng giảm số chiều của chính nó thì cách đơn giản nhất là chiếu vector kia xuống một không gian có số chiều bé dại hơn bằng phương pháp lấy một ma trận đột nhiên nhân với nó. Ma trận này hay là ma trận to (số hàng ít hơn số cột, giờ đồng hồ Anh - fat matrices) để bảo đảm số chiều thu được nhỏ tuổi hơn số chiều ban đầu. Việc làm này tuy nhiên làm mất đi thông tin, trong vô số nhiều trường hợp vẫn mang lại công dụng vì đã giảm được lượng thống kê giám sát ở phần sau. Đôi khi ma trận chiếu không phải là tình cờ mà rất có thể được học dựa trên cục bộ raw input, ta sẽ sở hữu được bài toán search ma trận chiếu để lượng thông tin mất đi là không nhiều nhất. Trong nhiều trường hợp, tài liệu output của training set cũng rất được sử dụng để tạo ra Feature Extractor. Ví dụ: trong vấn đề classification, ta không thân mật nhiều tới sự việc mất thông tin hay không, ta chỉ lưu ý đến việc đông đảo thông tin sót lại có đặc trưng cho từng class tốt không. Ví dụ, dữ liệu thô là các hình vuông và hình tam giác có red color và xanh. Trong việc phân nhiều loại đa giác, những output là tam giác cùng vuông, thì ta không thân mật tới màu sắc mà chỉ thân thiện tới số cạnh của đa giác. Ngược lại, trong câu hỏi phân nhiều loại màu, những class là xanh và đỏ, ta không niềm nở tới số cạnh nhưng chỉ để ý đến màu dung nhan thôi.

(optional) Prior knowledge about data: Đôi khi đa số giả thiết không giống về tài liệu cũng đem về lợi ích. Ví dụ, trong câu hỏi classification, giả dụ ta biết dữ liệu là (gần như) linearly separable thì ta sẽ đi tìm kiếm một ma trận chiếu sao cho ở trong không gian mới, dữ liệu vẫn bảo đảm an toàn tính linearly separable, vấn đề này tiện lợi hơn bỏ phần classification vì các thuật toán linear, chú ý chung, dễ dàng và đơn giản hơn.

Sau khi học được feature extractor thì ta cũng trở nên thu được extracted features đến raw input data. đông đảo extracted features này được dùng để làm huấn luyện những thuật toán Classification, Clustering, Regression, ở phía sau.


Main Algorithms

Khi giành được extracted features rồi, chúng ta sử dụng những thông tin này cùng với (optional) training output với (optional) prior knowledge để tạo ra các mô hình phù hợp, điều mà họ đã làm ở những bài xích trước.

Chú ý: Trong một số trong những thuật toán thời thượng hơn, việc đào tạo và giảng dạy feature extractor và main algorithm được triển khai cùng cơ hội với nhau chứ không hẳn từng cách như trên.

Xem thêm: Hướng Dẫn 5 Cách Khởi Động Máy Tính Nhanh Hơn, Áp Dụng Win 7, 8

Một điểm rất quan trọng: khi xây dựng bộ feature extractor với main algorithms, bọn họ không được sử dụng bất kỳ thông tin làm sao trong tập demo data. Ta buộc phải giả sử rằng những thông tin trong chạy thử data không được nhìn thấy bao giờ. Nếu áp dụng thêm thông tin về demo data thì cụ thể ta đã ăn uống gian! Tôi từng reviews các bài bác báo công nghệ quốc tế, rất nhiều tác mang xây dựng quy mô dùng cả tài liệu test data, tiếp nối lại dùng chính mô hình đó để bình chọn trên kiểm tra data đó. Việc gian lậu này là lỗi vô cùng nặng cùng hiển nhiên những bài xích báo kia bị phủ nhận (reject).

TESTING PHASE

Bước này đơn giản hơn nhiều. Cùng với raw input đầu vào mới, ta sử dụng feature extractor đã tạo ra ở trên (tất nhiên không được sử dụng output của nó do output là mẫu ta sẽ đi tìm) để tạo ra feature vector tương ứng. Feature vector được gửi vào main algorithm đã được học ngơi nghỉ training phase để dự đoán output.

3. Một số ví dụ về Feature Engineering

Trực tiếp mang raw data

Với bài toán phân loại chữ số viết tay trong bộ cơ sở tài liệu MNIST, mỗi bức ảnh có số chiều là 28 px x 28 px (tất nhiên việc crop và sửa đổi mỗi bức hình ảnh đã được triển khai từ trước rồi, này đã là một trong những phần của feature engineering rồi). Một cách đơn giản và dễ dàng thường được dùng là kéo dãn ma trận 28x28 này để được 1 vector bao gồm số chiều 784. Trong giải pháp này, những cột (hoặc hàng) của ma trận hình ảnh được đặt ck lên (hoặc cạnh nhau) để được một vector dài. Vector lâu năm này được trực tiếp sử dụng làm feature chuyển vào những bộ classifier/clustering/regression/ thời gian này, giá trị của từng pixel ảnh được xem là một feature.

Rõ ràng việc làm dễ dàng này đã làm cho mất tin tức về không khí (spatial information) giữa những điểm ảnh, tuy nhiên, trong tương đối nhiều trường hợp, nó vẫn có lại kết quả khả quan.

Feature selection

Giả sử rằng những điểm dữ liệu có số features khác nhau (do kích cỡ dữ liệu không giống nhau hay do một số trong những feature nhưng mà điểm dữ liệu này còn có nhưng điểm tài liệu kia lại không tích lũy được), và số lượng features là cực lớn. Họ cần lựa chọn ra một số lượng bé dại hơn các feature cân xứng với bài xích toán. Chọn cầm nào và cầm nào là phù hợp lại là 1 trong những bài toán khác, tôi sẽ không bàn thêm ngơi nghỉ đây.

Dimensionality reduction

Một phương pháp nữa tôi sẽ đề cập chính là làm giảm số chiều của tài liệu để giảm bộ nhớ lưu trữ và trọng lượng tính toán. Việc giảm số chiều này hoàn toàn có thể được triển khai bằng những cách, trong những số ấy random projection là cách dễ dàng nhất. Tức chọn một ma trận chiếu (projection matrix) đột nhiên (ma trận béo) rồi nhân nó với từng điểm tài liệu (giả sử dữ liệu ở dạng vector cột) nhằm được các vector bao gồm số chiều rẻ hơn. Ví dụ, vector lúc đầu có số chiều là 784, chọn ma trận chiếu có form size (100x784), khi ấy nếu nhân ma trận chéo cánh này cùng với vector ban đầu, ta sẽ tiến hành một vector mới bao gồm số chiều là 100, nhỏ tuổi hơn số chiều thuở đầu rất nhiều. Cơ hội này, hoàn toàn có thể ta không mang tên gọi cho mỗi feature nữa vì những feature ở vector ban đầu đã được xáo trộn với nhau theo một tỉ trọng nào đó rồi lưu và vector mới này. Từng thành phần của vector new này được xem là một feature (không tên).

Việc chọn một ma trận chiếu ngẫu nhiên nhiều khi mang lại công dụng tệ không hề muốn vì tin tức bị thiếu tính quá nhiều. Một cách thức được thực hiện nhiều để ngăn cản lượng thông tin mất đi có tên là Principle Component Analysis sẽ được tôi trình bày tiếp sau đây khoảng 1-2 tháng.

Chú ý: Feature learning không duy nhất thiết nên làm bớt số chiều dữ liệu, nhiều lúc feature vector còn tồn tại số chiều lớn hơn raw data. Random projection cũng có thể làm được việc này ví như ma trận chiếu là một trong ma trận cao (số cột thấp hơn số hàng).

Bag-of-words

Hẳn rất nhiều bạn đã tự đặt câu hỏi: với 1 văn bản thì feature vector sẽ sở hữu dạng như thế nào? làm thế nào đưa những từ, các câu, đoạn văn làm việc dạng text trong số văn phiên bản về một vector mà lại mỗi thành phần là một số?

Có một phương thức rất phổ biến khiến cho bạn trả lời những thắc mắc này. Phương thức đó có tên là Bag of Words (BoW) (Túi đựng Từ).

Vẫn theo thói quen, tôi bắt đầu bằng một ví dụ. Mang sử họ có việc phân các loại tin rác. Ta thấy rằng giả dụ một tin gồm chứa những từ khuyến mại, bớt giá, trúng thưởng, miễn phí, quà tặng, tri ân, thì nhiều năng lực đó là 1 trong tin nhắn rác. Vậy phương pháp đơn giản tốt nhất là đếm xem vào tin đó gồm bao nhiêu từ trực thuộc vào những từ trên, nếu nhiều hơn 1 ngưỡng nào kia thì ta đưa ra quyết định đó là tin rác. (Tất nhiên vấn đề thực tế phức hợp hơn đôi lúc các từ hoàn toàn có thể được viết dưới dạng không dấu, hoặc bị cố tình viết sai chủ yếu tả, hoặc dùng ngôn từ teen). Với các loại văn bản khác nhau thì lượng từ liên quan tới từng chủ đề cũng không giống nhau. Tự đó rất có thể dựa vào số lượng các từ trong từng loại để triển khai các vector đặc thù cho từng văn bản.

Tôi xin rước ví dụ rõ ràng hơn về cách tạo ra vector sệt trưng cho mỗi văn phiên bản dựa bên trên BoW với xin được đem tiếng Anh làm ví dụ (nguồn Bag of Words wiki. Giờ đồng hồ Việt khó khăn hơn vì chưng một từ bao gồm thể có không ít âm tiết, tiếng Anh thì thường xuyên cứ chạm mặt dấu phương pháp là ngừng một từ).

Giả sử chúng ta có nhì văn phiên bản đơn giản: (1) John likes to watch movies. Mary likes movies too.

Xem thêm: Hãy Giữ Bí Mật Với Mẹ Con Nhé, Là Cha Mẹ Cũng Cần Học Cách Tôn Trọng Con

và (2) John also likes lớn watch football games.

Dựa trên hai văn bạn dạng này, ta tất cả danh sách các từ được sử dụng, được hotline là tự điển cùng với 10 từ như sau: <"John", "likes", "to", "watch", "movies", "also", "football", "games", "Mary", "too">

Với từng văn bản, ta sẽ khởi tạo ra một vector đặc trưng có số chiều bằng 10, mỗi phần tử đại diện cho số tự tương ứng lộ diện trong văn bạn dạng đó. Với nhị văn phiên bản trên, ta sẽ có được hai vector đặc thù là: (1) <1, 2, 1, 1, 2, 0, 0, 0, 1, 1> (2) <1, 1, 1, 1, 0, 1, 1, 1, 0, 0>