Chuyển đến nội dung chính

Bài đăng

Kỹ thuật Cyclical Encoding

Trong các bài toán học máy với dữ liệu chuỗi thời gian, đặc trưng thời gian như hour , day , month có tính chất vòng lặp. Tuy nhiên nếu biểu diễn chúng như các số tuyến tính thông thường, model sẽ hiểu sai về độ gần nhau của các thời điểm. Để máy học hiểu được tính chất vòng lặp này, chúng ta sử dụng toán học ánh xạ thời gian lên một vòng tròn đơn vị (Unit Circle) bằng các hàm lượng giác sin và cos . Nguồn tham khảo chính cho kỹ thuật này được lấy từ bài viết: Cyclical Encoding: An Alternative to One-Hot Encoding for Time Series Features (Haden Pelletier, May 3, 2024). Biểu diễn thời gian bằng Sin & Cos Mỗi thời điểm trong một chu kỳ được tách thành hai feature mới: Sin Component Cos Component Công thức tổng quát: $$ x_{sin} = \sin\left(\frac{2 \pi \times t}{T}\right) $$ $$ x_{cos} = \cos\left(\frac{2 \pi \times t}{T}\right) $$ Trong đó: $t$ : giá trị thời gian hiện tại (ví dụ: giờ trong ngày). $T$ : độ...
Các bài đăng gần đây

Giới thiệu Machine Learning với ML.NET cho C# Developer

Machine Learning (ML) không còn là sân chơi riêng của Python hay các team AI lớn. Với ML.NET , C# developer có thể xây dựng, train và sử dụng model Machine Learning ngay trong hệ sinh thái .NET quen thuộc. Bài viết này hướng tới việc giúp bạn hiểu bản chất ML.NET, không chỉ dừng lại ở việc copy code. 1. Machine Learning là gì? Ở mức đơn giản nhất: Machine Learning = viết chương trình mà logic không nằm trong code, mà nằm trong dữ liệu. Thay vì viết các điều kiện if-else ngày càng phức tạp, ta đưa dữ liệu quá khứ cho model học và tự rút ra quy luật. if (age > 30 && income > 100000) { return "Good Customer"; } Machine Learning không thay thế developer — nó thay thế những rule-based logic quá cứng nhắc và khó mở rộng. 2. ML.NET giúp C# developer như thế nào? ML.NET là framework Machine Learning mã nguồn mở do Microsoft phát triển, cho phép bạn: Viết ML 100% bằng C# Chạy trực tiếp trong .NET runtime Train, evaluat...

Từ 1D đến N-Chiều: Hiểu về Không gian Dữ liệu và Normalization

Bạn có bao giờ thắc mắc tại sao khi học Machine Learning, người ta luôn nhấn mạnh về "normalization" (chuẩn hóa dữ liệu)? Và tại sao khi code, nhiều người bị "kẹt" ở mảng 2D, 3D trong C# hay các ngôn ngữ khác mà không biết cách tư duy về không gian nhiều chiều hơn? Bài viết này sẽ giúp bạn hiểu rõ vấn đề thông qua một ví dụ đơn giản nhưng rất trực quan. Bài toán: Dự đoán người mua nhà Giả sử chúng ta muốn dự đoán một người có mua nhà hay không dựa trên: Chiều cao (Height): từ 165cm đến 180cm Thu nhập (Income): từ 8 triệu đến 20 triệu VNĐ/tháng Lưu ý: Ví dụ này không nhằm hợp lý về mặt kinh tế (chiều cao không liên quan đến việc mua nhà), mà chỉ để minh họa tác động của normalization lên không gian dữ liệu. Dataset mẫu Height,Income,BuyHouse 165,8000000,false 168,9000000,false 170,10000000,false 172,12000000,false 175,15000000,true 178,18000000,true 180,20000000,true Phần 1: Không gian 1 Chiều (1D) Giả sử ban đầu chúng ta chỉ xét một yếu...

Làm quen Google Colab và dữ liệu Tensor

Là một lập trình viên C#/.NET, khi bước chân vào thế giới AI/Machine Learning, rào cản lớn nhất không phải là thuật toán mà là môi trường làm việc và tư duy dữ liệu khác biệt. Hôm nay, mình sẽ hướng dẫn các bạn sử dụng Google Colab và làm quen với khái niệm "Chiều không gian" (Dimensions) – xương sống của mọi mô hình ML. 1. Google Colab là gì? Tại sao phải dùng nó? Nếu trong .NET chúng ta có Visual Studio, thì trong giới làm AI, chúng ta có Jupyter Notebook. Google Colab là một dạng Jupyter Notebook tùy biến cho phép thực thi Python trên nền tảng đám mây, được cung cấp bởi Google. Zero Configuration: Không cần cài đặt Python, Environment hay SDK lên máy tính. Free GPU: Google cho mượn Card đồ họa miễn phí để huấn luyện mô hình (thứ mà máy văn phòng thường không có). Interactive: Chạy từng dòng code và thấy kết quả ngay lập tức, cực kỳ phù hợp để thực nghiệm dữ liệu chứng khoán. 2. Hiểu về Dimension (Chiều không gian) qua góc nhìn lập trình viên C# T...

Data Normalization trong Machine Learning (ML.NET)

1. Data Normalization là gì? Data Normalization là một bước tiền xử lý dữ liệu (preprocessing) trong Machine Learning, dùng để đưa các feature về cùng một thang đo, thường là trong khoảng [0, 1] . Mục tiêu của normalization là tránh việc feature có giá trị lớn lấn át feature có giá trị nhỏ khi mô hình học. Normalization không làm mất thông tin, nó chỉ thay đổi đơn vị đo. 2. Vấn đề thực tế: Feature với big value chi phối mô hình Feature Khoảng giá trị Chiều cao (cm) 150 – 190 Thu nhập (VND) 5,000,000 – 200,000,000 Thu nhập lớn hơn chiều cao hàng triệu lần . Machine Learning không hiểu ý nghĩa của dữ liệu, nó chỉ nhìn vào con số. Kết quả: feature nào có giá trị lớn hơn sẽ chi phối toàn bộ mô hình . 3. Bài toán minh họa Dự đoán một người có mua nhà hay không dựa trên: Chiều cao Thu nhập Ví dụ này không nhằm hợp lý kinh tế, mà để thấy rõ ảnh hưởng của normalization. Dataset mẫu Height,Income,BuyHouse 165,8000000,false 168,9000000,fal...

Cosine Similarity – Toán học đứng sau cách LLM hiểu ý nghĩa

Khi bạn trò chuyện với một mô hình ngôn ngữ lớn (LLM), cảm giác như nó thật sự “hiểu” ý nghĩa câu chữ. Nhưng bên dưới lớp vỏ ngôn ngữ tự nhiên đó là toán học, vector và hình học. Một trong những khái niệm quan trọng nhất giúp LLM so sánh ý nghĩa chính là cosine similarity . Nếu bạn từng thắc mắc vì sao AI biết hai câu “gần nghĩa” nhau, thì cosine similarity chính là chìa khóa. Cosine Similarity là gì? Đối với máy tính, văn bản không phải là chữ mà là vector số . Cosine similarity đo mức độ giống nhau giữa hai vector bằng cách đo góc giữa chúng , thay vì đo độ dài. Hãy tưởng tượng hai mũi tên xuất phát từ cùng một điểm: Cùng hướng → góc 0° → cosine similarity = 1 Vuông góc → góc 90° → cosine similarity = 0 Ngược hướng → góc 180° → cosine similarity = -1 Trong NLP, hai câu có ý nghĩa tương tự sẽ tạo ra các vector cùng hướng trong không gian . Công thức toán học Cosine similarity giữa hai vector A và B được định nghĩa như sau: $$ \text{cosine\_similarity...

Machine Learning: Từ Đường Thẳng, Vector đến Classification - Part 2

Các bài liên quan Machine Learning: Học Machine Learning từ góc nhìn Developer - Part 1   Mở đầu  Trong hình học phổ thông, chúng ta quen thuộc với các khái niệm như đường thẳng, song song và vuông góc trên mặt giấy. Khi bước sang thế giới Machine Learning (ML) , đặc biệt là bài toán Classification (Phân loại) , những khái niệm này không biến mất. Chúng được nâng cấp và mở rộng vào không gian nhiều chiều, dưới dạng các vector . Bài viết này nhằm kết nối tư duy hình học thuần túy với cách mà các thư viện Machine Learning thực sự xử lý dữ liệu. Mọi bài toán phân loại trong Machine Learning đều có thể được mô tả như một bài toán hình học trong không gian vector nhiều chiều. Cách nhìn bài toán phân loại dưới góc độ hình học trong bài viết này chỉ áp dụng cho các mô hình phân loại tuyến tính . Với các mô hình phi tuyến, dữ liệu thường được biến đổi sang một không gian khác trước khi áp dụng phân tách tuyến tính. 1. Vector và siêu phẳng trong bài toán phân loại V...