1. Trang chủ
  2. » Luận Văn - Báo Cáo

thí nghiệm mongodb cơ bản và ứng dụng

18 2 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Demo về các chức năng của MongoDBKịch bản dự kiến demoTrong phần demo này, sử dụng 2 collections Restaurant và Address được xâydựng dựa trên mô hình Referenced Relationship cơ sở dữ liệ

Trang 1

MỤC LỤC

CHƯƠNG I: THÍ NGHIỆM MONGODB CƠ BẢN VÀ ỨNG DỤNG 2

I Cơ sở lý thuyết 2

Giới thiệu về MongoDB 2

II Bài thí nghiệm thực hành 2

1 Mục tiêu bài thí nghiệm 2

2 Các tính năng cơ bản của MongoDB 2

3 Demo về các chức năng của MongoDB 4

III.Kết quả đạt được và hướng phát triển 6

1 Kết quả đạt được 6

2 Hướng phát triển 6

CHƯƠNG II: MACHINE LEARNING FOR BEGINNERS 6

I Machine learning là gì? 7

II Machine learning trên thực tế 7

III.Machine Learning Workflow 10

IV.Các bài toán cơ bản trong machine learning 11

1 Phân loại (Classification) 11

2 Hồi quy (Regression) 11

3 Máy dịch (Machine translation) 11

4 Phân cụm (Clustering) 11

5 Hoàn thiện dữ liệu (Data completion) 11

V Phân loại thuật toán Machine Learning 12

1 Học có giám sát (supervised learning) 12

2 Học không giám sát (unsupervised learning) 12

3 Học bán giám sát (semi-supervised learning) 12

4 Học củng cố (reinforcement learning) 12

5 Hàm mất mát và tham số mô hình (model parameter) 12

VI.Thí nghiệm Thực hành Machine Learning 13

Bài 1: Xây dựng model cơ bản để giải bài toán dự đoán giá trị 13

Trang 2

CHƯƠNG I: THÍ NGHIỆM MONGODB CƠ BẢN VÀ ỨNG DỤNG.I Cơ sở lý thuyết

Giới thiệu về MongoDB

- MongoDB: MongoDB hay Mongo Database là cơ sở dữ liệu opensource (mã

nguồn mở) dạng NoSQL hỗ trợ nhiều nền tảng lập trình và được thiết kế theokiểu hướng đối tượng Những bảng dữ liệu trong MongoDB (các Collection)được thiết kế với cấu trúc linh hoạt cho phép dữ liệu được lưu trữ không cầnphải tuân theo định dạng cấu trúc nào.MongoDB thuộc CSDL NoSQL dưới

dạng văn bản (document database).

Hình ảnh 1 : Giao diện của phần mềm MongoDB.

- Các thuật ngữ được dùng trong MongoDB:

Bảng 1: Thuật ngữ giữa MongoDB và RDBMS.

II Bài thí nghiệm thực hành1 Mục tiêu bài thí nghiệm

- Hiểu được định nghĩa về CSDL NoSQL nói chung và MongoDB nói riêng.- Cài đặt thành công MongoDB và thực hành 1 số câu lệnh

Trang 3

Để có thể thực hiện câu lệnh đọc hoặc truy vấn thì ta có thể dùng cú pháp:

- find : là phương thức hiển thị document dưới dạng không cấu trúc.

Ngoài ra, chúng ta còn có một câu lệnh giúp ta hiển thị document đãđược định dạng, để có thể thực hiện điều đó ta có thể dùng cú pháp:

Đọc hoặc truy vấn (Có điều kiện)

Để truy vấn Document dựa trên một số điều kiện nào đó mà những bài toán đặtra, ta có thể sử dụng các toán tử so sánh sau:

Bảng 2: Các toán tử so sánh khi muốn truy vấn có điều kiện

Dưới đây là cú pháp để thực hiện một lệnh truy vấn có điều kiện Song, là một vídụ cụ thể lẫn ý nghĩa của câu lệnh.

+ Cú pháp: db.CollectionNam.find ({ <key> : { toán_tử: <value> }}).+ Ví dụ minh hoạ: db.CollectionName.find ({ key1: { $ne:50 }}).pretty().

=> Ý nghĩa: Ta sẽ lọc ra các bộ sẽ thỏa mãn điều kiện key1 != 50.

b Chức năng thêm hoặc ghi (Insert)

Cú pháp: db.CollectionName.insert (document) hoặc: db.CollectionName.save (document)

- CollectionName: tên bảng.

- insert và save: 2 phương thức chèn dữ liệu vào.

- document: dữ liệu thêm dưới dạng JSON để có thể thực thi lệnh insert

hoặc save một cách thành công.

Trang 4

c Chức năng xoá (Remove)

Cú pháp: db.CollectionName.remove (query,{

justOne: <boolean>,

writeConcern: <document>, collation: <document>

d Chức năng sửa (Update)

Cú pháp: db.CollectionName.update (query, update_data) hoặc: db.CollectionName.save (query, update_data).

- update: phương thức dùng để cập nhật giá trị đang tồn tại trong

- save: phương thức sẽ thay thế document cũ bằng một document mới.3 Demo về các chức năng của MongoDB

Kịch bản dự kiến demo

Trong phần demo này, sử dụng 2 collections Restaurant và Address được xây

dựng dựa trên mô hình Referenced Relationship (cơ sở dữ liệu tiêu chuẩn hoá)

và DBRefs để thao tác các chức năng trong MongoDBNội dung demo

Nội dung 1: Cài đặt MongoDB trên Ubuntu 20.04 và chạy 1 số lệnh cơ bản

(Thêm, Xem,Sửa,Xóa) trong MongoDB.

Dựa trên 2 collections Restaurant và Address, các chức năng sẽ được demo nhưsau:

Khởi tạo user có tên QLTT để thực thi những chức năng.Sau khi khởi tạo thành

công, ta thực thi thao tác ghi (Insert) để insert dữ liệu vào những collections

Restaurant,Address.

Trang 5

Hình ảnh 2: Tạo user, collections và thêm dữ liệu vào những collections đó.

Tiếp theo, ta thực thi lệnh đọc (Find) để kiểm tra dữ liệu.

Hình ảnh 3 - 4: Đọc dữ liệu từ các Collections.

Kế tiếp, ta dùng lệnh update để thay đổi dữ liệu và lệnh remove để xóa dữ liệuhoặc một bộ.

Hình ảnh 5 - 6: Sửa, xóa dữ liệu của các Collections.

Nội dung 2: Cài đặt MongoDB Compass và chạy 1 số lệnh cơ bản.

Bước 1: Vào trang chủ của MongoDB Compass

Truy cập vào link https://www.mongodb.com/try/download/compassBước 2: Download về máy

Trang 6

- Sau khi cài đặt MongoDB Compass, tiến hành vào ứng dụng, mặc địnhMongoDB Compass sẽ chạy cổng 27017.

Hình ảnh 7: Chạy MongoDb Compass.

III Kết quả đạt được và hướng phát triển1 Kết quả đạt được

- Cài đặt thành công MongoDB và MongoDB Compass.

- Hiểu về các đặc điểm của cơ sở dữ liệu NoSQL và các ưu điểm,nhược điểm.- Tìm hiểu được cách sử dụng MongoDB ở mức cơ bản.Từ đỏ làm nền tảng tìm

hiểu sâu hơn để áp dụng vào các bài toán quản lý trong thực tế.

- Ánh xạ được những kiến thức tương đương từ hệ quản trị SQL Server.- Đề xuất bài toán quản lý trong thực tế sử dụng MongoDB.

Trang 7

CHƯƠNG II: MACHINE LEARNING FOR BEGINNERSI Machine learning là gì?

Machine learning (ML) là lĩnh vực nhỏ của khoa học máy tính, nó có khả năng tự họchỏi dựa trên dữ liệu đưa vào mà không cần phải lập trình cụ thể.

Với ML, chúng ta cung cấp các câu trả lời (labels) cho dữ liệu đầu vào (data) Dựa

vào đó, chương trình sẽ học và đưa ra cách giải quyết cho bài toán.

Ví dụ:

Trong khi chuẩn bị cho các kỳ thi, học sinh không thực sự nhồi nhét các kiến thức màcố gắng học nó với sự hiểu biết đầy đủ Chúng cung cấp cho não của mình một lượngdữ liệu chất lượng cao (câu hỏi và câu trả lời từ các cuốn sách khác nhau hoặc ghi chúcủa giáo viên…) Trên thực tế, chúng đang huấn luyện bộ não với đầu vào cũng nhưđầu ra, tức là chúng có cách tiếp cận hoặc logic nào đó để giải quyết các loại câu hỏikhác nhau Chúng làm các bài kiểm tra và tìm ra hiệu suất (độ chính xác / điểm số)bằng cách so sánh các câu trả lời với đáp án được đưa ra, dần dần, hiệu suất khôngngừng tăng lên, có được sự tự tin hơn với phương pháp đã áp dụng Đó là cách thực sựmô hình được tạo ra, đào tạo máy với dữ liệu (cả đầu vào và đầu ra đều được cung cấpcho mô hình) và khi đến thời điểm kiểm tra dữ liệu (chỉ với đầu vào) và đạt được điểmvới mô hình của chúng ta bằng cách so sánh câu trả lời của nó với đầu ra thực tế trongkhi huấn luyện Các nhà nghiên cứu đang nỗ lực không ngừng để cải thiện các thuậttoán, kỹ thuật để các mô hình này hoạt động tốt hơn nhiều.

II Machine learning trên thực tế

Áp dụng thuật toán K-means clustering vào bài toán xử lý ảnh thực tế: Phân nhóm

chữ số viết tay.

Bộ cơ sở dữ liệu MNIST

Bộ cơ sở dữ liệu MNIST là bộ cơ sở dữ liệu lớn nhất về chữ số viết tay và được sử

dụng trong hầu hết các thuật toán nhận dạng hình ảnh (Image Classification).

MNIST bao gồm hai tập con: tập dữ liệu huấn luyện (training set) có tổng cộng 60k vídụ khác nhau về chữ số viết tay từ 0 đến 9, tập dữ liệu kiểm tra (test set) có 10k ví dụ

khác nhau Tất cả đều đã được gán nhãn. Bài toán phân nhóm giả định

Bài toán: Giả sử rằng chúng ta không biết nhãn của các chữ số này, chúng ta muốn

phân nhóm các bức ảnh gần giống nhau về một nhóm.

Trước khi áp dụng thuật toán K-means clustering, chúng ta cần coi mỗi bức ảnh là một

điểm dữ liệu Và vì mỗi điểm dữ liệu là 1 vector (hàng hoặc cột) chúng ta phải làm

thêm một bước đơn giản trung gian gọi là vectorization (vector hóa) Nghĩa là, để có

được 1 vector, ta có thể tách các hàng của ma trận pixel ra, sau đó đặt chúng cạnhnhau, và chúng ta được một vector hàng rất dài biểu diễn 1 bức ảnh chữ số.

Làm việc trên Python

Trang 8

Trước tiên chúng ta vào trang chủ của MNIST để download bộ cơ sở dữ liệu này Mặcdù trong bài này chúng ta chỉ dùng bộ dữ liệu test với 10k ảnh và không cần label, ta

vẫn cần download cả hai file t10k-images-idx3-ubyte.gz và ubyte.gz vì thư viện python-mnist cần cả hai file này để load dữ liệu từ tập test.

t10k-labels-idx1-Trước tiên chúng ta cần khai báo một số thư viện:

- numpy: cho các phép toán liên quan đến ma trận - mnist: để đọc dữ liệu từ MNIST

from sklearn.cluster import KMeans

Để hiện thị nhiều bức ảnh các chữ số cùng một lúc, ta dùng thêm hàm số

Thực hiện thuật toán K-means clustering trên toàn bộ 10k chữ số.

Trang 9

Đến đây, sau khi đã tìm được các center và phân nhóm dữ liệu vào từng cluster, muốnhiển thị xem center trông như thế nào và các bức ảnh được phân vào mỗi cluster cógiống nhau hay không Dưới đây là kết quả khi chọn ngẫu nhiên 20 bức ảnh từ mỗicluster Áp dụng K-means clustering vào tập test set của bộ cơ sở dữ liệu MNIST vớiK = 10 cluster

Cột 1: centers của các cluster

Các cột còn lại: Mỗi hàng là 20 điểm dữ liệu ngẫu nhiên được chọn ra từ mỗi cluster.

Mỗi hàng tương ứng với một cluster, cột đầu tiên có nền xanh bên trái là centers tìmđược của các clusters (màu đỏ hơn là các pixel có giá trị cao hơn) Chúng ta thấy rằngcác center đều hoặc là giống với một chữ số nào đó, hoặc là kết hợp của hai/ba chữ sốnào đó Ví dụ: center của nhóm thứ 4 là sự kết hợp của các số 4, 7, 9; của hàng thứ 7 làkết hợp của chữ số 7, 8 và 9.

Tuy nhiên, các bức ảnh lấy ra ngẫu nhiên từ mỗi nhóm trông không thực sự giốngnhau Lý do có thể là những bức ảnh này ở xa các center của mỗi nhóm (mặc dù centerđó đã là gần nhất) Như vậy thuật toán K-means clustering làm việc không thực sự tốttrong trường hợp này.

Chúng ta vẫn có thể khai thác một số thông tin hữu ích sau khi thực hiện thuật toánnày Bây giờ, thay vì chọn ngẫu nhiên các bức ảnh trong mỗi cluster, tôi chọn 20 bứcảnh gần center của mỗi cluster nhất, vì càng gần center thì độ tin cậy càng cao Hãyxem hình dưới đây:

Trang 10

Ta có thể thấy dữ liệu trong mỗi hàng khá giống nhau và giống với center ở cột đầutiên bên trái Có một vài quan sát thú vị có thể rút ra từ đây:

1 Có hai kiểu viết chữ số 1, một thẳng, một chéo Và K-means clustering nghĩrằng đó là hai chữ số khác nhau Điều này là dễ hiểu vì K-means clustering làthuật toán Unsupervised learning Nếu có sự can thiệp của con người, chúng tacó thể nhóm hai clusters này vào làm một.

2 Hàng số 9, chữ số 4 và 9 được phân vào cùng 1 cluster Sự thật là hai chữ sốnày cũng khá giống nhau Điều tương tự xảy ra đối với hàng số 7 với các chữ số7, 8, 9 được xếp vào 1 cluster Với các cluster này, chúng ta có thể tiếp tục ápdụng K-means clustering để phân nhỏ cluster đó ra.

3 Trong clustering có một kỹ thuật thường được sử dụng là Hierarchicalclustering (clustering phân tầng ) Có hai loại Hierachical clustering:

- Agglomerative tức “đi từ dưới lên” Ban đầu coi mỗi điểm dữ liệu thuộc 1

cluster khác nhau, sau đó các cặp cluster gần giống nhau được gộp lại làm mộtcluster lớn hơn Lặp lại quá trình này đến khi nhận được kết quả chấp nhậnđược.

- Divisive tức “đi từ trên xuống” Ban đầu coi tất cả các điểm dữ liệu thuộc

cùng một cluster, sau đó chia nhỏ mỗi cluster bằng một thuật toán clusteringnào đó.

III Machine Learning Workflow

- Data collection - thu thập dữ liệu: Để máy tính có thể học và đưa ra các dự

đoán, phân tích lập trình viên cần cung cấp một bộ dữ liệu gọi là Dataset cho

máy Thông thường, chúng ta có thể thu thập các dữ liệu này hoặc sử dụng các

Dataset có sẵn trên các nền tảng hỗ trợ học lập trình học máy.

- Cần lưu ý lựa chọn những bộ dữ liệu từ những nguồn chính thống, như vậy máytính mới có thể học được một cách chính xác và đưa ra những kết quả đúng đắn,có tỷ lệ hiệu quả cao hơn.

- Preprocessing - tiền xử lý: bước này dùng để chuẩn hóa dữ liệu loại bỏ các

thuộc tính không cần thiết, gán nhãn dữ liệu, mã hóa một số đặc trưng, tríchxuất, thu gọn dữ liệu nhưng vẫn đảm bảo kết quả.

- Bước này chiếm nhiều thời gian nhất tỷ lệ thuận với lượng dữ liệu ta cung cấp.Bước 1 và 2 thường chiếm hơn 70% tổng thời gian thực hiện.

- Training model - huấn luyện mô hình: bước này là bước huấn luyện mô hình

hoặc để nó học trên dữ liệu đã thu thập và xử lý ở hai bước đầu tiên.

- Evaluating model - đánh giá mô hình: sau khi huấn luyện mô hình chúng ta

cần sử dụng các công cụ để đánh giá mô hình Độ chính xác của mô hình trên80% được coi là tốt.

- Improve - Cải thiện: Sau khi đánh giá mô hình, những mô hình có độ chính

Trang 11

xác mong muốn Tổng thời gian của 3 bước cuối chiếm khoảng 30% tổng thờigian thực hiện.

IV Các bài toán cơ bản trong machine learning1 Phân loại (Classification)

- Phân loại là một trong những bài toán được nghiên cứu nhiều nhất trong ML.Trong bài toán này, chương trình được yêu cầu xác định lớp/nhãn (class/label)của một điểm dữ liệu trong số C nhãn khác nhau Cặp (dữ liệu, nhãn) được kýhiệu là (x, y) với y nhận một trong C giá trị trong tập đích Y Trong bài toánnày, việc xây dựng mô hình tương đương với việc đi tìm hàm số f ánh xạ mộtđiểm dữ liệu x vào một phần tử y ∈ Y : y = f(x).

- Ví dụ : Bài toán phân loại email rác Trong bài toán này:

+ Nhiệm vụ: xác một email mới trong hộp thư đến là email rác hay không.+ Phép đánh giá: tỉ lệ email rác tìm thấy email thường được xác định đúng.+ Kinh nghiệm: cặp các (email, nhãn) thu thập được trước đó.

2 Hồi quy (Regression)

- Nếu tập đích Y gồm các giá trị thực (có thể vô hạn) thì bài toán được gọi là hồiquy Trong bài toán này, ta cần xây dựng một hàm số f : Rd → R.

- Ví dụ: Ước lượng giá của một căn nhà rộng x m2 , có y phòng ngủ và cách trungtâm thành phố z km

3 Máy dịch (Machine translation)

- Trong bài toán máy dịch , chương trình máy tính được yêu cầu dịch một đoạn

văn trong một ngôn ngữ sang một ngôn ngữ khác Dữ liệu huấn luyện là các cặpvăn bản song ngữ Các văn bản này có thể chỉ gồm hai ngôn ngữ đang xét hoặccó thêm các ngôn ngữ trung gian Lời giải cho bài toán này gần đây đã có nhiều

bước phát triển vượt bậc dựa trên các thuật toán deep learning.

4 Phân cụm (Clustering)

- Phân cụm là bài toán chia dữ liệu X thành các cụm nhỏ dựa trên sự liên quan

giữa các dữ liệu trong mỗi cụm Trong bài toán này, dữ liệu huấn luyện khôngcó nhãn, mô hình tự phân chia dữ liệu thành các cụm khác nhau.

- Ví dụ: Phân cụm khách hàng dựa trên hành vi mua hàng Dựa trên việc mua bán

và theo dõi của người dùng trên một trang web thương mại điện tử, mô hình cóthể phân người dùng vào các cụm theo sở thích mua hàng Từ đó, mô hình cóthể quảng cáo các mặt hàng mà người dùng có thể quan tâm.

5 Hoàn thiện dữ liệu (Data completion)

- Một bộ dữ liệu có thể có nhiều đặc trưng nhưng việc thu thập đặc trưng chotừng điểm dữ liệu đôi khi không khả thi Chẳng hạn, một bức ảnh có thể bị

Trang 12

xước khiến nhiều điểm ảnh bị mất hay thông tin về tuổi của một số khách hàng

không thu thập được Hoàn thiện dữ liệu là bài toán dự đoán các trường dữ liệu

còn thiếu đó Nhiệm vụ của bài toán này là dựa trên mối tương quan giữa cácđiểm dữ liệu để dự đoán những giá trị còn thiếu Các hệ thống khuyến nghị làmột ví dụ điển hình của loại bài toán này.

- Ngoài ra, có nhiều bài toán Machine learning khác như xếp hạng (ranking), thuthập thông tin (information retrieval), giảm chiều dữ liệu (dimentionality

phổ biến nhất trong các thuật toán Machine Learning.

- Các thuật toán phân loại và hồi quy là hai ví dụ điển hình trong nhóm này

2. Học không giám sát (unsupervised learning)

- Trong thuật toán này, chúng ta không biết được outcome hay nhãn mà chỉ có dữliệu đầu vào Thuật toán unsupervised learning sẽ dựa vào cấu trúc của dữ liệuđể thực hiện một công việc nào đó, ví dụ như phân nhóm (clustering) hoặcgiảm số chiều của dữ liệu (dimension reduction) để thuận tiện trong việc lưu trữ

và tính toán.

- Các thuật toán giải quyết bài toán phân cụm và giảm chiều dữ liệu là các ví dụđiển hình của nhóm này.

3. Học bán giám sát (semi-supervised learning)

- Các bài toán khi chúng ta có một lượng lớn dữ liệu X nhưng chỉ một phần trongchúng được gán nhãn được gọi là Semi-Supervised Learning Những bài toán

thuộc nhóm này nằm giữa hai nhóm được nêu bên trên.

4. Học củng cố (reinforcement learning)

- Reinforcement learning là các bài toán giúp cho một hệ thống tự động xác địnhhành vi dựa trên hoàn cảnh để đạt được lợi ích cao nhất (maximizing theperformance) Hiện tại, Reinforcement learning chủ yếu được áp dụng vào LýThuyết Trò Chơi (Game Theory), các thuật toán cần xác định nước đi tiếp theo

để đạt được điểm số cao nhất.

5. Hàm mất mát và tham số mô hình (model parameter)

- Mỗi mô hình ML được mô tả bởi bộ các tham số mô hình (model parameter).

Công việc của một thuật toán ML là đi tìm các tham số mô hình tối ưu cho mỗi

Ngày đăng: 30/06/2024, 22:28

Xem thêm:

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w