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

Thông tin cơ bản

Tiêu đề Thí nghiệm mongodb cơ bản và ứng dụng
Thể loại Thí nghiệm
Định dạng
Số trang 18
Dung lượng 3,03 MB

Nội dung

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

Bài 2: Vẽ đồ thị đường 14

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

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

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

TÀI LIỆU THAM KHẢO 18

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ế theo kiể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ần phả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ành

1 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 Thêm,Xem,Sửa,Xoá cơ bản.

- Cài đặt được MongoDB Compass để sử dụng giao diện MongoDB một cách trực quan.

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

a Chức năng đọc hoặc truy vấn (Find)

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:

db.CollectionName.find().

- 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:

db.CollectionName.find().pretty()

Đọ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 đặt

ra, 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>

})

- remove: phương thức để xoá dữ liệu.

- query: câu truy vấn để chọn lọc dữ liệu.

- justOne: truyền vào true/false True xóa bản ghi và False xóa tất cả khớp

với query.

- writeConcern: một document chứa write concern.

- collation: một document chứa các quy tắc.

Ngoài ra, những thứ như justOne, writeConcern, collation có thể đưa vào hoặc không Khi ta không đưa vào câu lệnh thì chúng sẽ xoá đi tất cả, nhằm tránh điều đó ta đưa vào nhằm mục đích xóa có chọn lọc, để tránh xoá đi những dữ liệu mà ta không mong muốn.

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

document.

- 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ệu hoặ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/compass

Bướ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 định MongoDB 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ển

1 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.

2 Hướng phát triển

MongoDB phù hợp với các hệ thống:

- Hệ thống real-time (thời gian thực) với nhu cầu phản hồi nhanh

- Các hệ thống BigData với nhu cầu truy vấn nhanh

- Các hệ thống có tần suất Write và Insert lơn

- Các hệ thống có nền tảng là Search Engine

=> Từ những kiến thức có được, có thể kết luận hệ quản trị MongoDB có thể áp dụng tốt cho các ứng dụng mạng xã hội.

Trang 7

CHƯƠNG II: MACHINE LEARNING FOR BEGINNERS

I 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ọc hỏ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ượng

dữ 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ỏi khá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ông ngừ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ấp cho 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ểm vớ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ế trong khi 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ật toá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ạnh nhau, 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ặc

dù 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à t10k-labels-idx1-ubyte.gz vì thư viện python-mnist cần cả hai file này để load dữ liệu từ tập test.

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

- matplotlib: để hiển thị hình vẽ

# %reset

import numpy as np

from mnist import MNIST # require ‘pip install python-mnist’

import matplotlib.pyplot as plt

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ố

display_network.py.

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ốn hiể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ỗi cluster Áp dụng K-means clustering vào tập test set của bộ cơ sở dữ liệu MNIST với

K = 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ằng cá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ống nhau 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ốt trong 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án nà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ãy xem 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 đầu tiê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 ta

có 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 áp dụ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à Hierarchical clustering (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ột cluster 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 clustering nà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áy tí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ích xuấ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ên 80% đượ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ời gian thực hiện

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

1 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án nà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ồi quy 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 trung tâ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ặp vă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ặc

có 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ông

có 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 cho từng điểm dữ liệu đôi khi không khả thi Chẳng hạn, một bức ảnh có thể bị

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

HÌNH ẢNH LIÊN QUAN

Hình ảnh 1 : Giao diện của phần mềm MongoDB. - thí nghiệm mongodb cơ bản và ứng dụng
nh ảnh 1 : Giao diện của phần mềm MongoDB (Trang 2)
Bảng 2: Các toán tử so sánh khi muốn truy vấn có điều kiện - thí nghiệm mongodb cơ bản và ứng dụng
Bảng 2 Các toán tử so sánh khi muốn truy vấn có điều kiện (Trang 3)
Hình ảnh 2: Tạo user, collections và thêm dữ liệu vào những collections đó. - thí nghiệm mongodb cơ bản và ứng dụng
nh ảnh 2: Tạo user, collections và thêm dữ liệu vào những collections đó (Trang 5)
Hình ảnh 3 - 4: Đọc dữ liệu từ các Collections. - thí nghiệm mongodb cơ bản và ứng dụng
nh ảnh 3 - 4: Đọc dữ liệu từ các Collections (Trang 5)
Hình ảnh 5 - 6: Sửa, xóa dữ liệu của các Collections. - thí nghiệm mongodb cơ bản và ứng dụng
nh ảnh 5 - 6: Sửa, xóa dữ liệu của các Collections (Trang 5)
Hình ảnh 7: Chạy MongoDb Compass. - thí nghiệm mongodb cơ bản và ứng dụng
nh ảnh 7: Chạy MongoDb Compass (Trang 6)

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

TÀI LIỆU LIÊN QUAN

w