Logo Zephyrnet

Học sâu với R – KDnuggets

Ngày:

Học sâu với R
Hình ảnh từ Trình tạo hình ảnh Bing
 

Ai đã không thích thú với những tiến bộ công nghệ, đặc biệt là trong trí tuệ nhân tạo, từ Alexa cho đến xe tự lái Tesla và vô số cải tiến khác? Tôi ngạc nhiên trước những tiến bộ mỗi ngày nhưng điều thú vị hơn nữa là khi bạn có ý tưởng về điều gì làm nền tảng cho những đổi mới đó. Chào mừng bạn đến Trí tuệ nhân tạo và khả năng vô tận của học kĩ càng. Nếu bạn đang tự hỏi nó là gì, thì bạn đã về nhà.

Trong hướng dẫn này, tôi sẽ giải cấu trúc thuật ngữ và hướng dẫn bạn cách thực hiện một tác vụ học sâu trong R. Lưu ý, bài viết này giả định rằng bạn đã có một số hiểu biết cơ bản về học máy các khái niệm như hồi quy, phân loại và tập hợp.

Hãy bắt đầu với định nghĩa của một số thuật ngữ xung quanh khái niệm học sâu:

Học kĩ càng là một nhánh của học máy dạy máy tính bắt chước các chức năng nhận thức của bộ não con người. Điều này đạt được thông qua việc sử dụng mạng thần kinh nhân tạo giúp giải nén các mẫu phức tạp trong tập dữ liệu. Với deep learning, máy tính có thể phân loại âm thanh, hình ảnh hoặc thậm chí cả văn bản.

Trước khi chúng ta đi sâu vào các chi tiết cụ thể của Học sâu, sẽ rất tốt nếu hiểu được học máy và trí tuệ nhân tạo là gì và ba khái niệm này liên quan với nhau như thế nào.

Trí tuệ nhân tạo: Đây là một nhánh của khoa học máy tính liên quan đến sự phát triển của máy móc có chức năng bắt chước bộ não con người.

học máy: Đây là một tập hợp con của Trí tuệ nhân tạo cho phép máy tính học hỏi từ dữ liệu.

Với các định nghĩa trên, giờ đây chúng ta có ý tưởng về việc học sâu liên quan đến trí tuệ nhân tạo và học máy như thế nào.

Sơ đồ dưới đây sẽ giúp hiển thị mối quan hệ.

Học sâu với R

Học sâu với R

Hai điều quan trọng cần lưu ý về học sâu là:

  • Yêu cầu khối lượng dữ liệu khổng lồ
  • Yêu cầu sức mạnh tính toán hiệu năng cao

Đây là những khối xây dựng của các mô hình học sâu. Như tên cho thấy, từ thần kinh xuất phát từ tế bào thần kinh, giống như tế bào thần kinh của bộ não con người. Trên thực tế, kiến ​​trúc của mạng lưới thần kinh sâu lấy cảm hứng từ cấu trúc của bộ não con người.

Một mạng thần kinh có một lớp đầu vào, một lớp ẩn và một lớp đầu ra. Mạng này được gọi là mạng thần kinh nông. Khi chúng ta có nhiều hơn một lớp ẩn, nó sẽ trở thành một mạng nơ-ron sâu, trong đó các lớp có thể lên tới 100 lớp.

Hình ảnh dưới đây cho thấy một mạng lưới thần kinh trông như thế nào.

Học sâu với R

Học sâu với R

Điều này đưa chúng ta đến câu hỏi làm thế nào để xây dựng các mô hình học sâu trong R? Nhập máy ảnh!

Máy ảnh là một thư viện học sâu mã nguồn mở giúp dễ dàng sử dụng mạng thần kinh trong học máy. Thư viện này là một trình bao bọc sử dụng TensorFlow như một công cụ phụ trợ. Tuy nhiên, có các tùy chọn khác cho phần phụ trợ như Theano hoặc CNTK.

Bây giờ chúng ta hãy cài đặt cả hai TensorFlow và máy ảnh.

Bắt đầu với việc tạo một môi trường ảo bằng cách sử dụng mạng lưới

library(reticulate)
virtualenv_create("virtualenv", python = "/path/to/your/python3") install.packages(“tensorflow”) #This is only done once! library(tensorflow) install_tensorflow(envname = "/path/to/your/virtualenv", version = "cpu") install.packages(“keras”) #do this once! library(keras) install_keras(envname = "/path/to/your/virtualenv") # confirm the installation was successful
tf$constant("Hello TensorFlow!")

 

Bây giờ, cấu hình của chúng ta đã được thiết lập, chúng ta có thể chuyển sang cách chúng ta có thể sử dụng học sâu để giải quyết vấn đề phân loại.

Dữ liệu tôi sẽ sử dụng cho hướng dẫn này là từ Khảo sát lương đang diễn ra được thực hiện bởi https://www.askamanager.org.

Câu hỏi chính được đặt ra trong biểu mẫu là bạn kiếm được bao nhiêu tiền, cộng với một số chi tiết khác như ngành, tuổi, số năm kinh nghiệm, v.v. Các chi tiết được thu thập vào một trang tính Google mà tôi đã lấy dữ liệu từ đó.

Vấn đề mà chúng tôi muốn giải quyết với dữ liệu là có thể đưa ra một mô hình học sâu dự đoán số tiền mà một người nào đó có thể kiếm được khi cung cấp thông tin như tuổi, giới tính, số năm kinh nghiệm và trình độ học vấn cao nhất.

Tải các thư viện mà chúng tôi sẽ yêu cầu.

library(dplyr)
library(keras)
library(caTools)

 

Nhập dữ liệu

url - “https://raw.githubusercontent.com/oyogo/salary_dashboard/master/data/salary_data_cleaned.csv” salary_data - read.csv(url)

 

Chọn các cột mà chúng ta cần

salary_data - salary_data %>% select(age,professional_experience_years,gender,highest_edu_level,annual_salary)

Bạn có nhớ khái niệm GIGO khoa học máy tính không? (Rác trong Rác ra). Chà, khái niệm này hoàn toàn có thể áp dụng ở đây cũng như trong các lĩnh vực khác. Kết quả đào tạo của chúng tôi sẽ phụ thuộc phần lớn vào chất lượng dữ liệu chúng tôi sử dụng. Đây là điều mang lại khả năng làm sạch và chuyển đổi dữ liệu, một bước quan trọng trong bất kỳ Khoa học dữ liệu dự án.

Một số vấn đề chính mà việc làm sạch dữ liệu tìm cách giải quyết là; tính nhất quán, giá trị còn thiếu, vấn đề chính tả, ngoại lệ và loại dữ liệu. Tôi sẽ không đi vào chi tiết về cách giải quyết những vấn đề đó và đây là lý do đơn giản là không muốn đi lạc đề chủ đề của bài viết này. Do đó, tôi sẽ sử dụng phiên bản dữ liệu đã được làm sạch nhưng nếu bạn muốn biết cách xử lý bit làm sạch, hãy xem bài viết này.

Mạng thần kinh nhân tạo chỉ chấp nhận các biến số và nhận thấy rằng một số biến của chúng tôi có tính chất phân loại, chúng tôi sẽ cần mã hóa các biến đó thành số. Đây là những gì tạo thành một phần của tiền xử lý dữ liệu bước này là cần thiết vì thường thì bạn sẽ không nhận được dữ liệu sẵn sàng để lập mô hình.

# create an encoder function
encode_ordinal - function(x, order = unique(x)) { x - as.numeric(factor(x, levels = order, exclude = NULL))
} salary_data - salary_data %>% mutate( highest_edu_level = encode_ordinal(highest_edu_level, order = c("High School","College degree","Master's degree","Professional degree (MD, JD, etc.)","PhD")), professional_experience_years = encode_ordinal(professional_experience_years, order = c("1 year or less", "2 - 4 years","5-7 years", "8 - 10 years", "11 - 20 years", "21 - 30 years", "31 - 40 years", "41 years or more")), age = encode_ordinal(age, order = c( "under 18", "18-24","25-34", "35-44", "45-54", "55-64","65 or over")), gender = case_when(gender== "Woman" ~ 0, gender == "Man" ~ 1))

 

Thấy rằng chúng tôi muốn giải quyết một phân loại, chúng tôi cần phân loại tiền lương hàng năm thành hai loại để chúng tôi sử dụng nó làm biến phản hồi.

salary_data - salary_data %>% mutate(categories = case_when( annual_salary = 100000 ~ 0, annual_salary > 100000 ~ 1)) salary_data - salary_data %>% select(-annual_salary)

Như trong các phương pháp học máy cơ bản; hồi quy, phân loại và phân cụm, chúng ta sẽ cần chia dữ liệu của mình thành các tập huấn luyện và kiểm tra. Chúng tôi thực hiện điều này bằng cách sử dụng quy tắc 80-20, tức là 80% tập dữ liệu dành cho đào tạo và 20% dành cho thử nghiệm. Đây không phải là điều khó tính, vì bạn có thể quyết định sử dụng bất kỳ tỷ lệ phân chia nào mà bạn thấy phù hợp, nhưng hãy nhớ rằng tập huấn luyện phải có tỷ lệ phần trăm tốt.

set.seed(123) sample_split - sample.split(Y = salary_data$categories, SplitRatio = 0.7)
train_set - subset(x=salary_data, sample_split == TRUE)
test_set - subset(x = salary_data, sample_split == FALSE) y_train - train_set$categories
y_test - test_set$categories
x_train - train_set %>% select(-categories)
x_test - test_set %>% select(-categories)

 

Máy ảnh nhận đầu vào ở dạng ma trận hoặc mảng. Chúng tôi sử dụng hàm as.matrix để chuyển đổi. Ngoài ra, chúng ta cần chia tỷ lệ các biến dự đoán và sau đó chúng ta chuyển đổi biến phản hồi thành kiểu dữ liệu phân loại.

x - as.matrix(apply(x_train, 2, function(x) (x-min(x))/(max(x) - min(x)))) y - to_categorical(y_train, num_classes = 2)

Khởi tạo mô hình

Tạo một mô hình tuần tự mà chúng ta sẽ thêm các lớp bằng cách sử dụng toán tử đường ống.

model = keras_model_sequential()

Định cấu hình các Lớp

Sản phẩm đầu vào_hình dạng chỉ định hình dạng của dữ liệu đầu vào. Trong trường hợp của chúng tôi, chúng tôi đã có được điều đó bằng cách sử dụng ncol chức năng. kích hoạt: Ở đây chúng tôi chỉ định chức năng kích hoạt; một hàm toán học chuyển đổi đầu ra thành định dạng phi tuyến tính mong muốn trước khi chuyển nó sang lớp tiếp theo.

các đơn vị: số nơ ron trong mỗi lớp của mạng nơ ron.

model %>% layer_dense(input_shape = ncol(x), units = 10, activation = "relu") %>% layer_dense(units = 10, activation = "relu") %>% layer_dense(units = 2, activation = "sigmoid")

Chúng tôi sử dụng phương pháp biên dịch để làm điều này. Hàm nhận ba đối số;

tối ưu hóa : Đối tượng này chỉ định quy trình đào tạo. sự mất : Đây là chức năng để giảm thiểu trong quá trình tối ưu hóa. Các tùy chọn khả dụng là mse (lỗi bình phương trung bình), binary_crossentropy và categorical_crossentropy.

số liệu : Những gì chúng tôi sử dụng để theo dõi đào tạo. Độ chính xác cho các bài toán phân loại.

model %>% compile( loss = "binary_crossentropy", optimizer = "adagrad", metrics = "accuracy"
)

Bây giờ chúng ta có thể điều chỉnh mô hình bằng cách sử dụng phương thức điều chỉnh từ Keras. Một số đối số mà phù hợp đưa vào là:

kỷ nguyên : Một kỷ nguyên là một phép lặp trên tập dữ liệu huấn luyện.

batch_size : Mô hình cắt ma trận/mảng được truyền cho nó thành các đợt nhỏ hơn mà nó lặp lại trong quá trình huấn luyện.

xác thực_split : Máy ảnh sẽ cần cắt một phần dữ liệu đào tạo để có được bộ xác thực sẽ được sử dụng để đánh giá hiệu suất mô hình cho mỗi kỷ nguyên.

Shuffle : Tại đây, bạn cho biết liệu bạn có muốn xáo trộn dữ liệu đào tạo của mình trước mỗi kỷ nguyên hay không.

fit = model %>% fit( x = x, y = y, shuffle = T, validation_split = 0.2, epochs = 100, batch_size = 5
)

Đánh giá mô hình

Để có được giá trị chính xác của mô hình, hãy sử dụng hàm đánh giá như bên dưới.

y_test - to_categorical(y_test, num_classes = 2)
model %>% evaluate(as.matrix(x_test),y_test)

Dự đoán

Để dự đoán dữ liệu mới, hãy sử dụng hàm predict_classes từ thư viện máy ảnh như bên dưới.

model %>% predict(as.matrix(x_test))

Bài viết này đã giới thiệu cho bạn những kiến ​​thức cơ bản về học sâu với Keras trong R. Bạn có thể tìm hiểu sâu hơn để hiểu rõ hơn, khám phá các tham số, bắt tay vào chuẩn bị dữ liệu và có thể mở rộng quy mô tính toán bằng cách tận dụng sức mạnh của điện toán đám mây.
 
 
bà Clinton nhà văn tại Mây sao Thổ tin rằng việc phân tích dữ liệu để có được thông tin chi tiết có thể hành động là một phần quan trọng trong công việc hàng ngày của anh ấy. Với kỹ năng trực quan hóa dữ liệu, sắp xếp dữ liệu và học máy, anh ấy tự hào về công việc của mình với tư cách là một nhà khoa học dữ liệu.

 
Nguyên. Đăng lại với sự cho phép.
 

tại chỗ_img

Tin tức mới nhất

tại chỗ_img