TRƯỜNG ĐẠI HỌC NGUYỄN TẤT THÀNHKHOA CÔNG NGHỆ THÔNG TIN TIỂU LUẬN PHÂN TÍCH DỮ LIỆU CHUỖI THỜI GIAN VÀ ỨNG DỤNGTên đề tài Nghiên cứu thuật toán KnearestneighborGiảng viên hướng dẫn: Đặng
GIỚI THIỆU
Đặt vấn đề
Những năm gần đây, AI nổi lên như một bằng chứng của cuộc cách mạng công nghiệp lần thứ tư Trí tuệ nhân tạo có thể được định nghĩa như một nghành của khoa học máy tính liên quan đến việc tự động hóa các hành vi thông minh Trí tuệ nhân tạo là một bộ phận của khoa học máy tính và do đó nó phải được đặt trên những nguyên lý lý thuyết vững chắc, có khả năng ứng dụng được của lĩnh vực này Ở thời điểm hiện tại, thuật ngữ này thường dùng để nói đến các máy tính có mục đích không nhất định và ngành khoa học nghiên cứu về các lý thuyết và các ứng dụng của trí tuệ nhân tạo.
Theo đà phát triển của công nghệ,ứng dụng trí tuệnhân tạo luôn là xu hướng công nghệ tương lai mà các hãng công nghệ trên toàn thế giới đua nhau sáng tạo, nó là nền tảng cốt lõi của cuốc cách mạng công nghệ 4.0.
ML (Machine Learning) là một lĩnh vực của trí tuệ nhân tạo, được sinh ra từ khả năng nhận diện mẫu và từ lý thuyết các máy tính có thể học mà không cần phải lập trình để xử lý các nhiệm vụ cụ thể nào đó.
Hầu hết mọi nghành công nghiệp đang làm việc với hàm lượng lớn dữ liệu đều nhận ra tầm quan trọng của công nghệ ML Những cái nhìn sáng suốt từ nguồn dữ liệu này – chủ yếu dạng thời gian thực – sẽ giúp các tổ chức vận hành hiệu quả hơn hoặc tạo lợi thế cạnh tranh so với các đối thủ.
Các ứng dụng của ML đã quá quen thuộc với con người: xe tự hành củaGoogle và Tesla, hệ thống tự tag khuôn mặt trên Facebook, hệ thống gợi ý sản phẩm của Amazon, hệ thống gợi ý phim của Netflix…, chỉ là một vài trong vô vàn những ứng dụng của trí tuệ nhân tạo và cụ thể làML
Hình 1 Mối quan hệ giữa AI, Machine Learning và Deep Learning
Xu hướng phát triển công nghệ thông tin ngày càng tăng, song song với nó lượng dữ liệu được sinh ra cũng ngày một lớn Vì vậy nhu cầu để xử lý dữ liệu cũng lớn hơn, ML đang góp phần giải quyết vấn đề này Một trong những thuật toán thường dùng trong ML đó là thuật toán K nearest neighbor. Ứng dụng của thuật toán này được sử dụng rất nhiều và rộng rãi trong các bài toán phân lớp.
Mục đích nghiên cứu
- Nghiên cứu, tìm hiểu thuật toán KNN.
- Đánh giá hiệu quả của thuật toán.
Phạm vi và đối tượng nghiên cứu
- Phạm vi nghiên cứu: Thử nghiệm trên Iris flower dataset.
- Đối tượng nghiên cứu: Thuật toán KNN và bộ Iris flower dataset.
CƠ SỞ LÝ THUYẾT
Chuỗi thời gian là gì?
Dự báo chuỗi thời gian (Time Series Forecasting) là một kỹ thuật dự đoán các sự kiện thông qua một chuỗi thời gian Nó dự đoán các sự kiện trong tương lai bằng cách phân tích các xu hướng trong quá khứ, với giả định rằng các xu hướng trong tương lai sẽ tương tự như vậy.
Dự báo chuỗi thời gian cũng là một lĩnh vực quan trọng của học máy và có thể được coi là một vấn đề học tập có giám sát Các phương pháp học máy như Regression, Neural Networks, Support Vector Machines, Random Forests và XGBoost có thể được áp dụng trong trường hợp này.
Dự báo chuỗi thời gian thường được sử dụng cùng với việc phân tích. Phân tích chuỗi thời gian liên quan đến việc phát triển các mô hình tìm kiếm tri thức trong dữ liệu Dự báo chuỗi thời gian thực hiện bước tiếp theo với kiến thức vừa tìm được Nó đòi hỏi phải phát triển các mô hình dựa trên dữ liệu trước đó và áp dụng chúng để thực hiện các quan sát và hướng dẫn các quyết định chiến lược trong tương lai
Mục tiêu
Khi dự báo, điều quan trọng là phải hiểu mục tiêu của việc dự báo. Những vấn đề cần quan tâm bao gồm:
Khối lượng dữ liệu có sẵn: nhiều dữ liệu hơn thường mang lại cơ hội hơn cho phân tích dữ liệu, thử nghiệm và điều chỉnh mô hình cũng như độ trung thực của mô hình.
Khoảng thời gian dự đoán: khoảng thời gian ngắn hơn thường dễ dự đoán hơn với độ tin cậy cao so với khoảng thời gian dài hơn.
Tần suất cập nhật dự báo: Dự báo có thể cần được cập nhật thường xuyên theo thời gian hoặc có thể cần được thực hiện một lần và giữ nguyên.
Dự báo tần suất theo thời gian: Thông thường, các dự báo có thể được thực hiện ở tần suất thấp hơn hoặc cao hơn, cho phép khai thác việc downsampling và upsampling của dữ liệu.
Các phương pháp dự báo chuỗi thời gian
Dữ liệu chuỗi thời gian có thể thể hiện nhiều mẫu khác nhau, do đó,người ta thường chia chuỗi thời gian thành các thành phần, mỗi thành phần đại diện cho một loại mẫu cơ bản Như đã đề cập ở bài viết trước, một chuỗi thời gian thường được phân tích thành 3 thành phần chính: xu hướng (trend), mùa vụ (seasonality), thành phần bất quy tắc có thể coi là dư (residuals) hay nhiễu trắng (white noise).
Hình 2 mô hình phân tách
Phân tách dựa trên tốc độ thay đổi Đây là một kỹ thuật phân tích chuỗi thời gian quan trọng, đặc biệt là để điều chỉnh theo mùa vụ Nó tìm cách xây dựng một số chuỗi thành phần từ một chuỗi thời gian gốc (sau đó có thể tái tạo lại chuỗi gốc bằng phép cộng hoặc phép nhân) trong đó mỗi chuỗi này có một đặc điểm hoặc kiểu hành vi nhất định.
Nếu dữ liệu cho thấy một số tính thời vụ (ví dụ: hàng ngày, hàng tuần, hàng quý, hàng năm) thì có thể phân tách chuỗi thời gian ban đầu thành tổng của ba thành phần:
Yt=St+ Tt+Rt trong đó là thành phần theo mùa, là thành phần xu hướng và làSt Tt Rt thành phần còn lại.
Có một số kỹ thuật để ước tính sự phân tách như vậy Cơ bản nhất được gọi là phân tách cổ điển và bao gồm: Ước tính xu hướng thông qua giá trị trung bìnhTt
Tính toán dưới dạng chuỗi giảm dần trung bình St Yt−Tt cho mỗi mùa (ví dụ: cho mỗi tháng)
Tính chuỗi còn lại là Rt=Yt−Tt−St.
Chuỗi thời gian cộng và chuỗi thời gian nhân
Trong một chuỗi thời gian cộng (additive time series), các thành phần cộng lại với nhau để tạo thành chuỗi thời gian Trong một chuỗi thời gian nhân (multiplicative time series), các thành phần nhân với nhau để tạo thành chuỗi thời gian.
Ví dụ về chuỗi thời gian sử dụng mô hình cộng: yt Tt Ct St It= + + + Một mô hình cộng được sử dụng khi các biến thể xung quanh xu hướng không thay đổi theo cấp độ của chuỗi thời gian.
Ví dụ về chuỗi thời gian sử dụng mô hình nhân: yt Tt Ct St It= ∗ ∗ ∗ Một mô hình nhân là phù hợp nếu xu hướng tỷ lệ thuận với mức độ của chuỗi thời gian.
Phân tách chuỗi thời gian bằng Python-Pandas Để làm rõ vai trò của các thành phần trong chuỗi thời gian, chúng ta xem qua một cách phân tách chuỗi thời gian viết bằng ngôn ngữ Python Chúng ta sẽ xây dựng tính xu hướng, tính thời vụ và các thành phần còn lại bằng những dữ liệu hư cấu.
Giả sử chúng ta có một cảm biến đo nhu cầu điện của người dùng.Chúng ta giả định thời gian, xu hướng và trước hết bỏ qua các đơn vị tính để mọi thứ đơn giản.
Hình 3 Biểu đồ tính xu hướng theo thời gian
Bây giờ là giả định biến mùa vụ.
Hình 4 Biểu đồ tính thời vụ theo thời gian
Xây dựng các thành phần còn lại để tạo một mô hình nhanh về số dư:
Hình 5 Biểu đồ tính nhiễu theo thời gian
Tính dừng và tự tương quan
Ngoài 3 thành phần chính nêu trên, một yếu tố quan trọng trong việc dự báo chuỗi thời gian nữa là tính dừng của dữ liệu (stationary) Một chuỗi thời gian được gọi là có tính dừng nếu các thuộc tính có ý nghĩa thống kê của nó (ví dụ như là trung bình, độ lệch chuẩn) không đổi theo thời gian Nếu một chuỗi không dừng, việc dự báo sẽ không có giá trị ứng dụng thực tiễn Lý do là nếu chuỗi không dừng, chúng ta chỉ có thể nghiên cứu hành vi của nó cho riêng giai đoạn đang xem xét, chẳng hạn tỉ giá đồng Việt Nam trong giai đoạn 1/1/2020 đến 5/5/2021 Vì thế,mỗi chuỗi thời gian là một giai đoạn riêng biệt, nên chúng ta không thể khái quát hóa kết quả phân tích cho các giai đoạn khác. Để dữ liệu chuỗi thời gian có tính dừng, dữ liệu phải thể hiện các thuộc tính theo thời gian:
Giá trị trung bình không đổi
Hình 6 Ví dụ giá trị trung bình không đổi Ở ví dụ hình trên, nếu chúng ta vẽ giá trị trung bình của chuỗi, thì giá trị này sẽ luôn là giá trị trung bình trong mọi thời điểm.
Hình 7 ví dụ phương sai không đổi
Cấu trúc tự tương quan hằng số
Tự tương quan đơn giản có nghĩa là phép đo chuỗi thời gian hiện tại tương quan với phép đo trong quá khứ.
Khoảng thời gian giữa các giá trị tương quan được gọi là LAG Một ví dụ cụ thể là chúng ta sẽ muốn biết liệu giá cổ phiếu ngày hôm nay tương quan tốt hơn với giá của ngày hôm qua hay giá của hai ngày trước để đưa ra được những dự báo tốt hơn cho các ngày tiếp theo.
Hầu hết các mô hình về chuỗi thời gian hiện tại được xây dựng trên một giả định tính dừng Có nghĩa là nếu chuỗi thời gian ở trong quá khứ có một hành vi nào đó, thì khả năng cao là nó sẽ lặp lại trong tương lai.Ngoài ra, các lý thuyết liên quan đến tính dừng đã được các nhà nghiên cứu khai thác một cách triệt để và dễ ràng thực hiện hơn là các lý thuyết về tính không dừng.
THUẬT TOÁN KNEAREST NEIGHBOR
Thuật toán knearest neighbor
Knearest neighbor (KNN) là một trong những thuật toán học có giám sát đơn giản nhất trong Machine Learning Ý tưởng của KNN là tìm ra output của dữ kiệu dựa trên thông tin của những dữ liệu training gần nó nhất.
Quy trình làm việc của thuật toán KNN o Bước 1: xác định tham số K= số láng giềng gần nhất. o Bước 2: tính khoảng cách đối tượng cần phân lớp với tất cả các đối tượng trong ttraining data o Bước 3: sắp xếp khoảng cách theo láng giềng gần nhất với đối tượng cần phân lớptự tăng dần và xác định K láng o Bước 4: lấy tất cả các lớp của K láng giềng gần nhất. o Bước 5: dựa vào phần lớn lớp của K để xác định lớp cho đối tượng cần phân lớp.
Mô tả giải thuật
Hình 8 ví dụ minh họa thuật toán KNN
Giả sử bài toán được đặt ra: mình mới quen một người bạn, tuy nhiên mình là fan của UsUk vậy nên mình cần biết người bạn này có phải là fan của KPop hay không Qua thời gian tìm hiểu mình đã thu thập được một số dữ liệu và đã biểu hiện dưới dạng hình vẽ trên.
Ta dễ dàng nhìn thấy có hai loại: hình vuông màu xanh biểu diễn cho những người là fan của Kpop, tam giác màu đỏ biểu diễn cho những người không là fan của Kpop, hình tròn màu xanh là người bạn mình muốn biết có phải là fan Kpop hay không, khoảng cách giữa chấm tròn và các điểm còn lại biểu diễn độ thân thiết của bạn đó với những người bạn.
Phương pháp đơn giản nhất để kiểm tra xem bạn đó chơi thân với người bạn nào nhất, tức là tìm xem điểm gần chấm xanh thuộc class nào (hình vuông hay tam giác) Từ hình trên ta dễ dàng nhận thấy điểm gần chấm xanh nhất là hình tam giác màu đỏ, do đó nó sẽ được phân vào lớp tam giác màu đỏ.
Có một vấn đề trong phương pháp trên, xung quanh cấm xanh xuất hiện rất nhiều hình vuông màu xanh nên việc xét điểm gần nhất là chưa khả thi Vì vậy, ta sẽ xét k điểm gần nhất Giả sử, ta lấy K=3, dựa theo hình trên ta dễ dàng nhận ra có hai hình tam giác đỏ và một hình vuông xanh có khoảng cách gần chấm xanh nhất, do đó chấm xanh được phân vào lớp tam giác đỏ Lấy K=7, ta có năm hình vuông xanh và hai hình tam giác đỏ, lúc này chấm xanh được xếp vào lớp hình vuông xanh Trường hợp lấy K=4, ta nhận thấy sẽ có hai hình vuông xanh và hai hình tam giác đỏ, đây là trường hợp có điểm bằng nhau, với trường hợp này KNN sẽ xử lý bằng cách so sánh tổng khoảng cách của các hình gần nhất với điểm ta đang xét.
Do xuất hiện trường hợp có điểm bằng nhau, vì vậy người ta thường chọn k là số lẻ Đó cũng là ý tưởng của KNN.
Hình 9 Công thức thuật toán Ưu điểm, nhược điểm của thuật toán Ưu điểm:
- Dễ sử dụng và cài đặt.
- Việc dự đoán kết quả của dữ liệu mới dễ dàng.
- Độ phức tạp tính toán nhỏ.
- KNN nhiễu dễ đưa ra kết quả không chính xác khi k nhỏ.
- Cần thời gian lưu training set, khi dữ liệu training và test tăng lên nhiều sẽ mất nhiều thời gian tính toán.
Bài làm chi tiết
Bộ dữ liệu Iris flower dataset
Tập dữ liệu hoa Iris hoặc tập dữ liệu Iris của Fisher là tập dữ liệu đa biến được giới thiệu bởi nhà thống kê và nhà sinh vật học người Anh Ronald Fisher trong bài báo năm 1936 Việc sử dụng nhiều phép đo trong các vấn đề phân loại như một ví dụ về phân tích phân biệt tuyến tính Đôi khi nó được gọi là tập dữ liệu Iris của Anderson vì Edgar Anderson đã thu thập dữ liệu để định lượng sự biến đổi hình thái của hoa Iris của ba loài liên quan Hai trong số ba loài được thu thập ở Bán đảo Gaspé "tất cả từ cùng một đồng cỏ, và được chọn vào cùng một ngày và được đo cùng lúc bởi cùng một người với cùng một bộ máy".
Bộ dữ liệu bao gồm 50 mẫu từ mỗi ba loài Iris (Iris setosa, Iris virginica và Iris Verscolor) Bốn đặc điểm được đo từ mỗi mẫu: chiều dài và chiều rộng của đài hoa, chiều dài và chiều rộng cánh hoa, tính bằng centimet Dựa trên sự kết hợp của bốn tính năng này, Fisher đã phát triển một mô hình phân biệt tuyến tính để phân biệt các loài với nhau.
Hình 10 Hình ảnh minh họa về Iris flower dataset
Sử dụng tập dữ liệu
Dựa trên mô hình phân biệt tuyến tính của Fisher, bộ dữ liệu này đã trở thành trường hợp thử nghiệm điển hình cho nhiều kỹ thuật phân loại thống kê trong học máy như máy vector hỗ trợ.
Tuy nhiên, việc sử dụng tập dữ liệu này trong phân tích cụm không phổ biến, vì tập dữ liệu chỉ chứa hai cụm có sự phân tách khá rõ ràng Một trong những cụm chứa Iris setosa, trong khi cụm còn lại chứa cả Iris virginica và Iris Versolor và không thể tách rời nếu không có thông tin về loài mà Fisher sử dụng Điều này làm cho dữ liệu trở thành một ví dụ tốt để giải thích sự khác biệt giữa các kỹ thuật được giám sát và không giám sát trong khai thác dữ liệu: Mô hình phân biệt tuyến tính của Fisher chỉ có thể thu được khi biết các loài đối tượng: nhãn lớp và cụm không nhất thiết giống nhau.
Tuy nhiên, cả ba loài Iris đều có thể tách rời trong hình chiếu trên thành phần chính phân nhánh phi tuyến Tập dữ liệu được xấp xỉ bởi cây gần nhất với một số hình phạt cho số lượng nút, uốn cong và kéo dài quá mức Các điểm dữ liệu được chiếu vào nút gần nhất Đối với mỗi nút, sơ đồ hình tròn của các điểm được chiếu được chuẩn bị Diện tích của chiếc bánh tỷ lệ thuận với số lượng điểm được chiếu Rõ ràng từ sơ đồ(bên dưới) rằng phần lớn tuyệt đối các mẫu của các loài Iris khác nhau thuộc về các nút khác nhau Chỉ một phần nhỏ Iris virginica được trộn với IrisVersolor (các nút màu xanh lam hỗn hợp trong sơ đồ) Do đó, ba loàiIris (Iris setosa, Iris virginica và Iris Verscolor) có thể được phân tách bằng các thủ tục không giám sát trong phân tích thành phần chính phi tuyến Để phân biệt chúng, chỉ cần chọn các nút tương ứng trên cây chính
Hình 11 Sơ đồ minh họa phân cụm của Iris flower datasets
Trong phần này, chúng ta sẽ tách 150 dữ liệu trong Iris flower dataset ra thành hai phần, gọi là training set và test set Thuật toán sẽ dựa vào thông tin ở training set để dự đoán xem mỗi dữ liệu trong test set tương ứng với loại hoa nào Dữ liệu được chuẩn đoán này sẽ được đối chiếu với loại hoa thật của mỗi dữ liệu trong test set để đánh giá hiệu quả của KNN. o Bước 1: Khai báo các thư viện cần thiết
Hình 12 Khai báo thư viện o Bước 2: Load dữ liệu và hiện thị vài dữ liệu mẫu
Hình 14 Kết quả o Bước 3: Tách training set và test set:
Giả sử chúng ta muốn dùng 50 điểm dữ liệu cho test set và 100 điểm còn lại cho training set Thư viện sklearn có một hàm số cho phép
Hình 15 Tách training set và test set o Bước 4: KNN dự đoán
Xét trường hớp K=1, tức là với mỗi điểm dữ liệu test ta chỉ xét 1 điểm dữ liệu training gần nhất và lấy nhãn cả điểm đó để dự đoán cho điểm dữ liệu test.
Hình 17 Kết quả Kết quả cho thấy nhãn dự đoán gần giống với label thật của dữ liệu test, chỉ có 2 trong số 20 điểm được hiển thị có kết quả sai lệch. o Bước 5: Đánh giá Để đánh giá độ chính xác của thuật toán KNN, chúng ta xem có bao nhiêu điểm trong dữ liệu test được dự đoán đúng Lấy số lượng đó chia cho tổng số lượng trong tập dữ liệu test sẽ ra độ chính xác Thư viện sklearn cung cấp cho ta hàm số accuracy_score để thực hiện công việc này
Hình 18 Đánh giá và kết quả
Dữ liệu mẫu
Bộ dữ liệu chứa một bộ dữ liệu bản ghi bao gồm các thuộc tính – chiều dài và chiều rộng của đài hoa, chiều dài và chiều rộng của cánh hoa. Bảng 1: Thông tin loài Setosa
Thứ tự Chiều d i ià đà hoa
Bảng 2: Thông tin loài Versicolor
Thứ tự Chiều d i ià đà hoa
Bảng 3: Thông tin loài Virginica
Thứ tự Chiều d i ià đà hoa
Chi uề dài cánh hoa