Ground truth là gì, Định nghĩa và giải thích Ý nghĩa amazon sagemaker

      27

Nếu như con người có kiểu học tập “nước mang lại chân mới nhảy”, thì vào Machine Learning cũng có thể có một thuật toán như vậy.

Bạn đang xem: Ground truth là gì, Định nghĩa và giải thích Ý nghĩa amazon sagemaker

Trong trang này:

1. Giới thiệu 3. Lấy ví dụ trên Python thí điểm 4. Bàn bạc

1. Giới thiệu

Một câu chuyện vui

Có một thằng bạn chuẩn bị mang đến ngày thi cuối kỳ. Vì chưng môn này được mở tài liệu lúc thi đề xuất anh ta không chịu ôn tập để hiểu chân thành và ý nghĩa của từng bài học kinh nghiệm và mối tương tác giữa các bài. Nắm vào đó, anh thu thập toàn bộ các tài liệu trên lớp, bao hàm ghi chép bài bác giảng (lecture notes), những slides và bài tập về bên + lời giải. Để cho chắc, anh ta ra thư viện và các quán Photocopy xung quanh trường mua hết toàn bộ các nhiều loại tài liệu tương quan (khá khen cho cậu này chuyên cần tìm tìm tài liệu). Cuối cùng, anh bạn của họ thu thập được một ông chồng cao tư liệu để mang vào chống thi.

Vào ngày thi, anh sáng sủa mang ông xã tài liệu vào chống thi. Aha, đề này ít nhất mình phải được 8 điểm. Câu 1 tương đồng bài giảng trên lớp. Câu 2 giống hệt đề thi năm kia mà giải thuật có trong tập tài liệu tải ở quán Photocopy. Câu 3 tương tự với bài bác tập về nhà. Câu 4 trắc nghiệm thậm chí là cậu nhớ đúng đắn ba tài liệu có ghi đáp án. Câu cuối cùng, 1 câu cạnh tranh nhưng anh đã có lần nhìn thấy, chỉ cần không nhớ chỗ nào thôi.

Kết quả cuối cùng, cậu ta được 4 điểm, trọn vẹn điểm qua môn. Cậu làm đúng chuẩn câu 1 vì tìm kiếm được ngay vào tập ghi chú bài xích giảng. Câu 2 cũng tìm được đáp án nhưng lời giải của tiệm Photocopy sai! Câu bố thấy gần giống bài về nhà, chỉ không giống mỗi một vài thôi, cậu cho hiệu quả giống như thế luôn, vậy mà lại không được điểm nào. Câu 4 thì tìm được cả 3 tư liệu nhưng gồm hai trong số ấy cho lời giải A, cái còn lại cho B. Cậu lựa chọn A với được điểm. Câu 5 thì không làm cho được dù còn tới 20 phút, do tìm mãi chẳng thấy giải đáp đâu - các tài liệu thừa cũng mệt!!

Không yêu cầu ngẫu nhiên cơ mà tôi dành ra ba đoạn văn để nói về chuyện học hành của chàng trai kia. Lúc này tôi xin trình diễn về một phương pháp trong Machine Learning, được call là K-nearest neighbor (hay KNN), một thuật toán được xếp vào một số loại lazy (machine) learning (máy lười học). Thuật toán này khá kiểu như với giải pháp học/thi của anh bạn kém như mong muốn kia.

K-nearest neighbor

K-nearest neighbor là một trong những thuật toán supervised-learning đơn giản và dễ dàng nhất (mà hiệu quả trong một vài ngôi trường hợp) vào Machine Learning. Lúc training, thuật toán này không học một điều gì từ tài liệu training (đây cũng là vì sao thuật toán này được xếp vào nhiều loại lazy learning), mọi giám sát và đo lường được thực hiện khi nó cần dự đoán tác dụng của tài liệu mới. K-nearest neighbor rất có thể áp dụng được vào cả hai nhiều loại của việc Supervised learning là Classification và Regression. KNN còn gọi là một thuật toán Instance-based xuất xắc Memory-based learning.

Có một vài ba khái niệm tương xứng người-máy như sau:

ngôn từ người ngôn ngữ Máy học tập in Machine Learning
Câu hỏi Điểm dữ liệu Data point
Đáp án Đầu ra, nhãn Output, Label
Ôn thi Huấn luyện Training
Tập tài liệu sở hữu vào phòng thi Tập tài liệu tập huấn Training set
Đề thi Tập dữ liểu kiểm thử Test set
Câu hỏi vào dề thi Dữ liệu kiểm thử Test data point
Câu hỏi bao gồm đáp án sai Nhiễu Noise, Outlier
Câu hỏi sát giống Điểm dữ liệu gần nhất Nearest Neighbor

Với KNN, trong bài toán Classification, label của một điểm dữ liệu mới (hay hiệu quả của câu hỏi trong bài thi) được suy ra trực tiếp từ K điểm dữ liệu gần nhất trong training set. Label của một kiểm tra data rất có thể được ra quyết định bằng major voting (bầu chọn theo số phiếu) giữa các điểm ngay gần nhất, hoặc nó có thể được suy ra bằng phương pháp đánh trọng số khác nhau cho mỗi trong các điểm gần nhất đó rồi suy ra label. Chi tiết sẽ được nêu vào phần tiếp theo.

Trong câu hỏi Regresssion, áp ra output của một điểm dữ liệu sẽ bằng chính cổng output của điểm tài liệu đã biết gần nhất (trong trường phù hợp K=1), hay những trung bình bao gồm trọng số của đầu ra của rất nhiều điểm gần nhất, hoặc bằng một mối quan hệ dựa trên khoảng cách tới những điểm sớm nhất đó.

Một giải pháp ngắn gọn, KNN là thuật toán đi tìm đầu ra của một điểm tài liệu mới bằng cách chỉ dựa trên thông tin của K điểm dữ liệu trong training set sát nó độc nhất vô nhị (K-lân cận), không xem xét việc tất cả một vài điểm dữ liệu giữa những điểm sớm nhất này là nhiễu. Hình dưới đó là một ví dụ về KNN vào classification cùng với K = 1.


*

Ví dụ trên đây là bài toán Classification cùng với 3 classes: Đỏ, Lam, Lục. Mỗi điểm dữ liệu mới (test data point) sẽ tiến hành gán label theo màu sắc của điểm nhưng mà nó nằm trong về. Trong hình này, tất cả một vài vùng bé dại xem lẫn vào những vùng to hơn khác màu. Ví dụ tất cả một điểm màu Lục ở sát góc 11 giờ nằm giữa hai vùng lớn với tương đối nhiều dữ liệu color Đỏ với Lam. Điểm này rất hoàn toàn có thể là nhiễu. Dẫn mang lại nếu tài liệu test lâm vào tình thế vùng này sẽ có không ít khả năng cho tác dụng không chính xác.

Khoảng giải pháp trong không khí vector

Trong không khí một chiều, khoảng cách giữa nhị điểm là trị hoàn hảo và tuyệt vời nhất giữa hiệu quý giá của hai điểm đó. Trong không gian nhiều chiều, khoảng cách giữa hai điểm có thể được định nghĩa bởi nhiều hàm số không giống nhau, trong các số đó độ dài con đường thằng nổi hai điểm chỉ là một trong những trường hợp đặc biệt quan trọng trong đó. Nhiều thông tin hữu ích (cho Machine Learning) có thể được tìm thấy tại Norms (chuẩn) của vector trong tab Math.

2. đối chiếu toán học

Thuật toán KNN dễ dàng nắm bắt nên đã phần “Phân tích toán học” này đã chỉ có 3 câu. Tôi thẳng đi vào những ví dụ. Gồm một điều đáng xem xét là KNN phải nhớ tất cả các điểm dữ liệu training, việc này sẽ không được lợi về cả bộ nhớ lưu trữ và thời gian đo lường và thống kê - giống như khi cậu bạn của họ không tìm được câu trả lời cho câu hỏi cuối cùng.

3. Ví dụ trên Python

Bộ cơ sở tài liệu Iris (Iris flower dataset).

Iris flower dataset là một trong những bộ dữ liệu nhỏ (nhỏ hơn không ít so với MNIST. Bộ dữ liệu này bao gồm thông tin của bố loại hoa Iris (một loài hoa lan) không giống nhau: Iris setosa, Iris virginica với Iris versicolor. Mỗi loại tất cả 50 bông hoa được đo với tài liệu là 4 thông tin: chiều dài, chiều rộng lớn đài hoa (sepal), cùng chiều dài, chiều rộng cánh hoa (petal). Dưới đây là ví dụ về hình ảnh của cha loại hoa. (Chú ý, đây không hẳn là cỗ cơ sở dữ liệu hình ảnh như MNIST, mỗi điểm dữ liệu trong tập này chỉ là một trong vector 4 chiều).


*

Bộ dữ liệu nhỏ tuổi này thường xuyên được sử dụng trong tương đối nhiều thuật toán Machine Learning trong số lớp học. Tôi sẽ phân tích và lý giải lý vì không lựa chọn MNIST vào phần sau.

Thí nghiệm

Trong phần này, họ sẽ bóc 150 tài liệu trong Iris flower dataset ra thành 2 phần, call là training set cùng test set. Thuật toán KNN sẽ phụ thuộc vào trông tin sinh hoạt training set để dự đoán xem mỗi tài liệu trong test set khớp ứng với nhiều loại hoa nào. Tài liệu được dự kiến này vẫn được đối chiếu với các loại hoa thật của mỗi tài liệu trong test set để tiến công giá tác dụng của KNN.

Trước tiên, họ cần khai báo vài thư viện.

Iris flower dataset gồm sẵn trong tủ sách scikit-learn.


Tiếp theo, chúng ta load dữ liệu và hiện thị vài dữ liệu mẫu. Những class được gán nhãn là 0, 1, với 2.

Xem thêm: Jual Huawei Freebuds 3 Murah, Tai Nghe Huawei Freebuds 3 Chính Hãng Giá Rẻ


iris = datasets.load_iris()iris_X = iris.datairis_y = iris.targetprint "Number of classes: %d" %len(np.unique(iris_y))print "Number of data points: %d" %len(iris_y)X0 = iris_Xprint " Samples from class 0: ", X0<:5,:>X1 = iris_Xprint " Samples from class 1: ", X1<:5,:>X2 = iris_Xprint " Samples from class 2: ", X2<:5,:>
Kết quả cho biết label dự đoán gần giống với label thiệt của chạy thử data, chỉ gồm 2 điểm trong các 20 điểm được hiển thị có kết quả sai lệch. Ở đây họ làm quen thuộc với khái niệm mới: ground truth. Một cách solo giản, ground truth chính là nhãn/label/đầu ra thực sự của những điểm trong kiểm tra data. Tư tưởng này được dùng nhiều trong Machine Learning, hi vọng lần tới các bạn gặp thì đã nhớ tức thì nó là gì.

Phương pháp đánh giá (evaluation method)

Để đánh giá độ đúng chuẩn của thuật toán KNN classifier này, bọn họ xem xem gồm bao nhiêu điểm trong thử nghiệm data được dự kiến đúng. Lấy con số này phân tách cho tổng con số trong tập kiểm tra data vẫn ra độ bao gồm xác. Scikit-learn cung ứng hàm số accuracy_score nhằm thực hiện quá trình này.


from sklearn.metrics import accuracy_scoreprint "Accuracy of 1NN: %.2f %%" %(100*accuracy_score(y_test, y_pred))

Nhận thấy rằng chỉ xét 1 điểm gần nhất rất có thể dẫn đến hiệu quả sai nếu điểm này là nhiễu. Một cách có thể làm tăng độ chính xác là tăng số lượng điểm cạnh bên lên, lấy ví dụ 10 điểm, với xem xem trong 10 điểm ngay gần nhất, class nào chiếm nhiều phần thì dự đoán kết quả là class đó. Chuyên môn dựa vào đa số này được call là major voting.


clf = neighbors.KNeighborsClassifier(n_neighbors = 10, p = 2)clf.fit(X_train, y_train)y_pred = clf.predict(X_test)print "Accuracy of 10NN with major voting: %.2f %%" %(100*accuracy_score(y_test, y_pred))
Kết trái đã tăng thêm 98%, rất tốt!

Đánh trọng số cho những điểm lân cận

Là một kẻ tham lam, tôi chưa mong muốn dừng tác dụng ở đây vì chưng thấy rằng mình vẫn đang còn thể nâng cao được. Trong kỹ thuật major voting mặt trên, từng trong 10 điểm gần nhất được xem là có vai trò đồng nhất và quý hiếm lá phiếu của mỗi đặc điểm này là như nhau. Tôi mang đến rằng như thế là không công bằng, vì rõ ràng rằng số đông điểm ngay gần hơn nên gồm trọng số cao hơn nữa (càng thân cận thì sẽ càng tin tưởng). Vậy yêu cầu tôi vẫn đánh trọng số khác nhau cho mỗi trong 10 điểm sớm nhất này. Phương pháp đánh trọng số đề xuất thoải mãn điều kiện là một trong những điểm càng sát điểm kiểm tra data thì cần được tiến công trọng số càng cao (tin tưởng hơn). Cách đơn giản nhất là đem nghịch đảo của khoảng cách này. (Trong ngôi trường hợp thử nghiệm data trùng với cùng một điểm dữ liệu trong training data, tức khoảng cách bằng 0, ta lấy luôn label của điểm training data).

Scikit-learn giúp họ đơn giản hóa vấn đề này bằng phương pháp gán gía trị weights = "distance". (Giá trị mang định của weights là "uniform", tương xứng với việc coi tất cả các điểm ở kề bên có giá bán trị tương đồng như nghỉ ngơi trên).


clf = neighbors.KNeighborsClassifier(n_neighbors = 10, p = 2, weights = "distance")clf.fit(X_train, y_train)y_pred = clf.predict(X_test)print "Accuracy of 10NN (1/distance weights): %.2f %%" %(100*accuracy_score(y_test, y_pred))
Aha, 100%.

Chú ý: quanh đó 2 cách thức đánh trọng số weights = "uniform" và weights = "distance" ngơi nghỉ trên, scikit-learn còn cung ứng cho chúng ta một phương pháp để đánh trọng số một phương pháp tùy chọn. Ví dụ, một giải pháp đánh trọng số thịnh hành khác trong Machine Learning là:

trong đó (mathbfx) là demo data, (mathbfx_i) là một trong những điểm vào K-lân cận của (mathbfx), (w_i) là trọng số của điểm đó (ứng cùng với điểm dữ liệu đang xét (mathbfx)), (sigma) là một trong những dương. Nhận thấy rằng hàm số này cũng thỏa mãn điều kiện: điểm càng ngay sát (mathbfx) thì trọng số càng cao (cao nhất bởi 1). Cùng với hàm số này, bạn cũng có thể lập trình như sau:


def myweight(distances): sigma2 = .5 # we can change this number return np.exp(-distances**2/sigma2)clf = neighbors.KNeighborsClassifier(n_neighbors = 10, phường = 2, weights = myweight)clf.fit(X_train, y_train)y_pred = clf.predict(X_test)print "Accuracy of 10NN (customized weights): %.2f %%" %(100*accuracy_score(y_test, y_pred))
Trong trường hợp này, công dụng tương đương với kỹ thuật major voting. Để tiến công giá đúng mực hơn tác dụng của KNN cùng với K khác nhau, biện pháp định nghĩa khoảng tầm cách khác nhau và bí quyết đánh trọng số không giống nhau, bọn họ cần thực hiện quy trình trên với rất nhiều cách chia tài liệu trainingtest khác nhau rồi lấy công dụng trung bình, vày rất hoàn toàn có thể dữ liệu phân chia trong một trường hợp cụ thể là cực tốt hoặc rất xấu (bias). Đây cũng là phương pháp thường được dùng khi reviews hiệu năng của một thuật toán cụ thể nào đó.

4. Thảo luận

KNN đến Regression

Với bài toán Regression, họ cũng trả toàn có thể sử dụng phương thức tương tự: cầu lượng đầu ra dựa trên đầu ra và khoảng cách của những điểm vào K-lân cận. Bài toán ước lượng thế nào các chúng ta có thể tự khái niệm tùy vào từng bài bác toán.


*

Chuẩn hóa dữ liệu

Khi tất cả một thuộc tính trong dữ liệu (hay thành phần trong vector) to hơn các nằm trong tính khác tương đối nhiều (ví dụ thay vày đo bởi cm thì một công dụng lại tính bằng mm), khoảng cách giữa các điểm sẽ phụ thuộc vào trực thuộc tính này khôn xiết nhiều. Để dành được kết quả đúng đắn hơn, một kỹ thuật thường được sử dụng là Data Normalization (chuẩn hóa dữ liệu) để mang các trực thuộc tính có đơn vị đo khác biệt về thuộc một khoảng chừng giá trị, thường xuyên là từ 0 mang lại 1, trước khi thực hiện KNN. Có khá nhiều kỹ thuật chuẩn chỉnh hóa khác nhau, các các bạn sẽ được thấy khi thường xuyên theo dõi Blog này. Những kỹ thuật chuẩn hóa được áp dụng với không chỉ có KNN hơn nữa với hầu như các thuật toán khác.

Sử dụng những phép đo khoảng cách khác nhau

Ngoài norm 1 và norm 2 tôi ra mắt trong bài này, còn rất nhiều các khoảng cách khác nhau hoàn toàn có thể được dùng. Một ví dụ dễ dàng và đơn giản là đếm con số thuộc tính không giống nhau giữa nhì điểm dữ liệu. Số này càng nhỏ dại thì nhì điểm càng gần nhau. Đây đó là giả chuẩn chỉnh 0 mà tôi đã ra mắt trong Tab Math.

Ưu điểm của KNN

Độ phức tạp đo lường của quá trình training là bằng 0. Câu hỏi dự đoán tác dụng của tài liệu mới rất đơn giản. Không yêu cầu giả sử gì về phân phối của những class.

Nhược điểm của KNN

KNN khôn xiết nhạy cảm với nhiễu khi K nhỏ. Như đang nói, KNN là một trong thuật toán cơ mà mọi đo lường và thống kê đều nằm ở vị trí khâu test. Trong các số đó việc tính khoảng cách tới từng điểm dữ liệu trong training set vẫn tốn không hề ít thời gian, nhất là với các cơ sở dữ liệu có số chiều to và có khá nhiều điểm dữ liệu. Cùng với K càng khủng thì độ phức tạp cũng trở nên tăng lên. Không tính ra, việc lưu toàn thể dữ liệu trong bộ nhớ cũng tác động tới tính năng của KNN.

Tăng tốc đến KNN

Ngoài việc thống kê giám sát khoảng cách từ 1 điểm kiểm tra data đến tất cả các điểm vào traing set (Brute Force), có một vài thuật toán khác giúp tăng tốc việc tìm và đào bới kiếm này. độc giả có thẻ search kiếm thêm với nhị từ khóa: K-D Tree và Ball Tree. Tôi xin dành phần này cho người hâm mộ tự search hiểu, và sẽ quay lại nếu gồm dịp. Bọn họ vẫn còn phần lớn thuật toán quan trọng đặc biệt hơn khác đề nghị nhiều sự thân yêu hơn.

Try this yourself

Tôi bao gồm viết một đoạn code ngắn để thực hiện việc Classification mang đến cơ sở tài liệu MNIST. Chúng ta hãy download toàn cục bộ tài liệu này về vày sau này chúng ta còn cần sử dụng nhiều, chạy thử, phản hồi kết quả và nhận xét của các bạn vào phần phản hồi bên dưới. Để trả lời cho thắc mắc vì sao tôi không lựa chọn cơ sở tài liệu này làm cho ví dụ, các bạn đọc hoàn toàn có thể tự tìm ra lời giải khi chạy xong đoạn code này.

Enjoy!


# %resetimport numpy as np from mnist import MNIST # require `pip install python-mnist`# https://pypi.python.org/pypi/python-mnist/import matplotlib.pyplot as pltfrom sklearn import neighborsfrom sklearn.metrics import accuracy_scoreimport time# you need to tải về the MNIST dataset first# at: http://yann.lecun.com/exdb/mnist/mndata = MNIST("../MNIST/") # path khổng lồ your MNIST thư mục mndata.load_testing()mndata.load_training()X_test = mndata.test_imagesX_train = mndata.train_imagesy_test = np.asarray(mndata.test_labels)y_train = np.asarray(mndata.train_labels)start_time = time.time()clf = neighbors.KNeighborsClassifier(n_neighbors = 1, phường = 2)clf.fit(X_train, y_train)y_pred = clf.predict(X_test)end_time = time.time()print "Accuracy of 1NN for MNIST: %.2f %%" %(100*accuracy_score(y_test, y_pred))print "Running time: %.2f (s)" % (end_time - start_time)
Nếu có câu hỏi, bạn cũng có thể để lại comment dưới hoặc trên forum để nhận thấy câu vấn đáp sớm hơn.Bạn đọc hoàn toàn có thể ủng hộ blog qua "Buy me a cofee" ở góc cạnh trên phía trái của blog.Tôi vừa xong xuôi cuốn ebook "Machine Learning cơ bản", bạn cũng có thể đặt sách tại đây.Cảm ơn bạn.

tăng like fanpage