Học máy trong R dành cho người mới bắt đầu với ví dụ



Blog về học máy với R này giúp bạn tìm hiểu các khái niệm cốt lõi của Học máy và triển khai các thuật toán học máy khác nhau với R.

Học máy với R

Học máy là hiện tại và tương lai! Từ công cụ đề xuất của Netflix đến xe tự lái của Google, tất cả đều là công nghệ máy học. Blog về Học máy với R này giúp bạn hiểu các khái niệm cốt lõi của học máy, tiếp theo là các thuật toán học máy khác nhau và triển khai các thuật toán học máy đó với R.

Blog về “Học máy với R” này bao gồm các phần sau:





Học máy với R | Edureka

Hiểu về học máy

Fish1- Học máy với R - Edureka



Làm thế nào bạn biết tất cả những người trong số đó là cá?



Khi còn bé, bạn có thể đã bắt gặp hình ảnh một con cá và bạn sẽ được giáo viên mẫu giáo hoặc cha mẹ của bạn nói rằng đây là một con cá và nó có một số đặc điểm cụ thể liên quan đến nó như có vây, mang, một đôi mắt, đuôi, v.v. Bây giờ, bất cứ khi nào bộ não của bạn bắt gặp một hình ảnh có các tính năng đó, nó sẽ tự động ghi nhận nó là một con cá vì bộ não của bạn có đã học rằng nó là một con cá.

Đó là cách bộ não của chúng ta hoạt động, nhưng còn một cỗ máy thì sao? Nếu cùng một hình ảnh được đưa vào một máy, làm thế nào máy sẽ xác định đó là cá?

Đây là nơi M học achine tham gia. Chúng tôi sẽ tiếp tục cung cấp hình ảnh của một con cá vào máy tính có thẻ 'cá' cho đến khi máy học tất cả các tính năng liên quan với một cá.

Sau khi máy học được tất cả các tính năng liên quan đến một con cá, chúng tôi sẽ cung cấp cho nó dữ liệu mới để xác định xem nó đã học được bao nhiêu.

Nói cách khác, Dữ liệu thô / Dữ liệu đào tạo được đưa cho máy, để nó học tất cả các tính năng được liên kết với Dữ liệu đào tạo. Một khi, việc học được thực hiện, nó được đưa ra Dữ liệu mới / Dữ liệu thử nghiệm để xác định mức độ học của máy.

Hãy để chúng tôi tiến lên trong blog Học máy với R này và hiểu về các loại Học máy.

Các loại máy học

  • Học tập có giám sát:

Thuật toán Học có giám sát học từ tập dữ liệu đã biết (Dữ liệu đào tạo) có nhãn để đưa ra dự đoán.

Hồi quy và Phân loại là một số ví dụ về Học tập có Giám sát.

# Phân loại:

Phân loại xác định tập hợp danh mục nào mà một quan sát mới thuộc về nghĩa là một thuật toán phân loại học tất cả các tính năng và nhãn của dữ liệu huấn luyện và khi dữ liệu mới được cấp cho nó, nó phải gán nhãn cho các quan sát mới tùy thuộc vào những gì nó đã học được. từ dữ liệu đào tạo.

Đối với ví dụ này, nếu quan sát đầu tiên được gắn nhãn “Đàn ông” thì nó được phân loại đúng nhưng nếu được gắn nhãn “Phụ nữ” thì phân loại sai. Tương tự đối với lần quan sát thứ hai, nếu nhãn được đưa ra là “Phụ nữ”, nó được phân loại đúng, nếu phân loại khác là sai.

#Hồi quy:

Hồi quy là một thuật toán học có giám sát giúp xác định cách một biến ảnh hưởng đến biến khác.

Ở đây, “living_area” là biến độc lập và “price” là biến phụ thuộc, tức là chúng tôi đang xác định xem “price” thay đổi như thế nào so với “living_area”.

  • Học tập không giám sát:

Thuật toán học không giám sát rút ra các suy luận từ dữ liệu không có nhãn.

Phân cụm là một ví dụ của việc học không giám sát. “K-mean”, “Hierarchical”, “Fuzzy C-Means” là một số ví dụ về thuật toán phân cụm.

Trong ví dụ này, tập hợp các quan sát được chia thành hai cụm. Phân cụm được thực hiện trên cơ sở tương tự giữa các quan sát. Có sự tương đồng trong nội bộ cụm cao và tính tương đồng giữa các cụm thấp, tức là có sự tương đồng rất cao giữa tất cả các xe buýt nhưng độ tương đồng thấp giữa xe buýt và ô tô.

  • Học tăng cường:

Học tăng cường là một loại thuật toán học máy trong đó máy móc / đại lý trong một Môi trường học hành vi lý tưởng để tối đa hóa hiệu suất của nó. Phản hồi phần thưởng đơn giản là bắt buộc để đại lý tìm hiểu hành vi của nó, điều này được gọi là tín hiệu tăng cường .

Hãy lấy pacman ví dụ. Miễn là pacman tiếp tục ăn thức ăn, nó sẽ kiếm được điểm nhưng khi đâm vào quái vật, nó sẽ mất mạng. Do đó, pacman biết rằng nó cần ăn nhiều thức ăn hơn và tránh quái vậtđể cải thiện hiệu suất của nó.

Triển khai Học máy với R:

Hồi quy tuyến tính:

Chúng tôi sẽ làm việc với tập dữ liệu kim cương để triển khai thuật toán hồi quy tuyến tính:

Mô tả về tập dữ liệu:

Trước khi xây dựng bất kỳ mô hình nào trên dữ liệu, chúng tôi phải chia dữ liệu thành các bộ “đào tạo” và “kiểm tra”. Mô hình sẽ được xây dựng trên bộ 'tàu' và độ chính xác của nó sẽ được kiểm tra trên bộ 'thử nghiệm'.

Chúng ta cần tải gói “caTools” để chia dữ liệu thành hai bộ.

thư viện (caTools)

Gói “caTools” cung cấp một hàm “sample.split ()” giúp chia nhỏ dữ liệu.

sample.split (giá kim cương $, SplitRatio = 0,65) -> split_index

65% các quan sát từ cột giá đã được gán nhãn 'đúng' và 35% còn lại được gán nhãn 'sai'.

tập con (kim cương, split_index == T) -> đào tạo tập con (kim cương, split_index == F) -> kiểm tra

Tất cả các quan sát có nhãn 'đúng' đã được lưu trữ trong ' đối tượng đào tạo và những quan sát có nhãn 'sai' đã được gán cho bộ 'thử nghiệm'.

Bây giờ việc phân tách đã hoàn tất và chúng ta có các tập hợp “đào tạo” và “kiểm tra”, đã đến lúc xây dựng mô hình hồi quy tuyến tính trên tập hợp đào tạo.

Chúng tôi sẽ sử dụng hàm “lm ()” để xây dựng mô hình hồi quy tuyến tính trên dữ liệu “tàu”. Chúng tôi đang xác định giá bán của các viên kim cương đối với tất cả các biến khác của tập dữ liệu. Mô hình đã xây dựng được lưu trữ trong đối tượng “mod_regress”.

lm (price ~., data = train) -> mod_regress

Bây giờ, chúng tôi đã xây dựng mô hình, chúng tôi cần đưa ra dự đoán trên tập hợp 'thử nghiệm'. Hàm 'dự đoán ()' được sử dụng để nhận các dự đoán. Nó có hai đối số: mô hình xây dựngTập kiểm tra. Các kết quả dự đoán được lưu trữ trong đối tượng “result_regress”.

dự đoán (mod_regress, test) -> result_regress

Hãy liên kết các giá trị giá thực tế từ tập dữ liệu “thử nghiệm” và các giá trị được dự đoán vào một tập dữ liệu duy nhất bằng cách sử dụng hàm “cbind ()”. Khung dữ liệu mới được lưu trữ trong “Final_Data”

cbind (Thực tế = thử nghiệm $ price, Dự đoán = result_regress) -> Final_Data 
as.data.frame (Final_Data) -> Final_Data

Xem qua “Final_Data” bao gồm các giá trị thực và giá trị dự đoán:

Hãy tìm lỗi bằng cách trừ các giá trị được dự đoán khỏi các giá trị thực và thêm lỗi này làm cột mới vào “Final_Data”:

(Final_Data $ Actual- Final_Data $ Predicted) -> lỗi
cbind (Final_Data, lỗi) -> Final_Data

Xem qua “Final_Data” cũng bao gồm lỗi trong dự đoán:

cách tạo một gói java

Bây giờ, chúng ta sẽ tiếp tục và tính toán “ Lỗi hình vuông gốc trung bình ” điều này đưa ra một lỗi tổng hợp cho tất cả các dự đoán

rmse1<-sqrt(mean(Final_Data$error^2)) 
rmse1

Tiếp tục, hãy xây dựng một mô hình khác, để chúng tôi có thể so sánh độ chính xác của cả hai mô hình này và xác định mô hình nào tốt hơn.

Chúng tôi sẽ xây dựng một mô hình hồi quy tuyến tính mới trên tập hợp 'train' nhưng lần này, chúng tôi sẽ loại bỏ các cột 'x' và 'y' khỏi các biến độc lập, tức là 'giá' của những viên kim cương được xác định bởi tất cả các các cột ngoại trừ 'x' và 'y'.

Mô hình đã xây dựng được lưu trữ trong “mod_regress2”:

lm (price ~.-y-z, data = train) -> mod_regress2

Kết quả dự đoán được lưu trữ trong “result_regress2”

dự đoán (mod_regress2, test) -> result_regress2

Giá trị thực tế và giá trị dự đoán được kết hợp và lưu trữ trong “Final_Data2”:

cbind (Thực tế = thử nghiệm $ price, Dự đoán = result_regress2) -> Final_Data2 
as.data.frame (Final_Data2) -> Final_Data2

Cũng hãy thêm lỗi trong dự đoán vào “Final_Data2”

(Final_Data2 $ Actual- Final_Data2 $ Predicted) -> error2
cbind (Final_Data2, error2) -> Final_Data2

Xem qua “Final_Data2”:

Tìm lỗi Root Mean Square Error để nhận được lỗi tổng hợp:

rmse2<-sqrt(mean(Final_Data2$error^2))

Chúng tôi thấy rằng “rmse2” nhỏ hơn một chút so với “rmse1” và do đó mô hình thứ hai tốt hơn một chút so với mô hình đầu tiên.

Phân loại:

Chúng tôi sẽ làm việc với tập dữ liệu “car_purchase” để triển khai phân vùng đệ quy đó là một thuật toán phân loại.

Hãy chia dữ liệu thành các bộ “đào tạo” và “kiểm tra” bằng cách sử dụng hàm “sample.split ()” từ gói “caTools”.

thư viện (caTools)

65% quan sát từ cột 'Đã mua' sẽ được gán nhãn 'ĐÚNG' và phần còn lại sẽ được gán nhãn 'SAI'.

sample.split (car_purchase $ Đã mua, SplitRatio = 0,65) -> split_values

Tất cả các quan sát có nhãn 'TRUE' sẽ được lưu trữ thành dữ liệu 'train' và những quan sát có nhãn 'FALSE' sẽ được gán cho dữ liệu 'test'.

tập con (car_purchase, split_values ​​== T) -> train_data
tập con (car_purchase, split_values ​​== F) -> test_data

Đã đến lúc xây dựng thuật toán Phân vùng đệ quy:

Chúng tôi sẽ bắt đầu bằng cách tải gói 'rpart':

thư viện (rpart)

Cột “Đã mua” sẽ là biến phụ thuộc và tất cả các cột khác là biến độc lập, tức là chúng tôi đang xác định xem người đó đã mua xe hay chưa đối với tất cả các cột khác. Mô hình được xây dựng trên “train_data” và kết quả được lưu trữ trong “mod1”.

rpart (Đã mua ~., data = train_data) -> mod1

Hãy vẽ sơ đồ kết quả:

âm mưu (mod1, margin = 0,1) văn bản (mod1, khá = T, cex = 0,8)

Bây giờ, hãy tiếp tục và dự đoán kết quả trên “test_data”. Chúng tôi đang cung cấp mô hình rpart đã xây dựng “mod1” làm đối số đầu tiên, bộ kiểm tra “test_data” làm đối số thứ hai và loại dự đoán là “lớp” cho đối số thứ ba. Kết quả được lưu trữ trong đối tượng ‘result1’.

dự đoán (mod1, test_data, type = 'class') -> result1

Chúng ta hãy đánh giá độ chính xác của mô hình bằng cách sử dụng hàm “repeatMatrix ()” từ gói dấu mũ.

thư viện (dấu mũ) nhầm lẫnMatrix (bảng (test_data $ Đã mua, kết quả1))

Ma trận nhầm lẫn cho chúng ta biết rằng trong số 90 quan sát mà người đó không mua xe, 79 quan sát được phân loại đúng là “Không” và 11 quan sát bị phân loại sai là “CÓ”. Tương tự, trong số 50 quan sát nơi người đó thực sự mua xe, 47 quan sát được phân loại đúng là “CÓ” và 3 quan sát được phân loại sai là “KHÔNG”.

Chúng ta có thể tìm độ chính xác của mô hình bằng cách chia các dự đoán đúng với tổng các dự đoán, tức là (79 + 47) / (79 + 47 + 11 + 3).

K-Means Clustering:

Chúng tôi sẽ làm việc với tập dữ liệu 'iris' để triển khai phân nhóm k-means:

Hãy xóa cột 'Loài' và tạo một tập dữ liệu mới chỉ bao gồm bốn cột đầu tiên từ tập dữ liệu 'iris'.

iris [1: 4] -> iris_k

Chúng ta hãy lấy số lượng các cụm là 3. Hàm “Kmeans ()” lấy dữ liệu đầu vào và số lượng các cụm mà dữ liệu sẽ được phân nhóm. Cú pháp là: kmeans (dữ liệu, k) trong đó k là số trung tâm cụm.

kmeans (iris_k, 3) -> k1

Phân tích phân cụm:

str (k1)

Hàm str () cung cấp cấu trúc của các kmean bao gồm các tham số khác nhau như withinss, betweenss, v.v., phân tích mà bạn có thể tìm ra hiệu suất của kmeans.

betweenss: Giữa tổng các ô vuông, tức là độ tương đồng giữa các cụm

withinss: Trong tổng bình phương, tức là độ tương tự giữa các lớp

totwithinss: Tổng của tất cả các withins của tất cả các cụm, tức là tổng điểm tương đồng trong cụm

Một phân cụm tốt sẽ có giá trị thấp hơn là “tot.withinss” và giá trị “betweenss” cao hơn, điều này phụ thuộc vào số lượng cụm ‘k’ được chọn ban đầu.

Đã đến lúc trở thành chuyên gia trong Học máy để tận dụng những cơ hội mới đến với bạn. Điều này đưa chúng ta đến phần cuối của điều này “ Học máy với R ' Blog. Tôi hy vọng blog này có nhiều thông tin.

Edureka có một giúp bạn có kiến ​​thức chuyên môn về các Thuật toán Máy học như K-Means Clustering, Quyết định Cây, Rừng ngẫu nhiên, Naive Bayes. Bạn cũng sẽ tìm hiểu các khái niệm về Thống kê, Chuỗi thời gian, Khai thác văn bản và giới thiệu về Học sâu. Các đợt mới cho khóa học này sắp bắt đầu !!