H2O - Hướng dẫn nhanh
Bạn đã bao giờ được yêu cầu phát triển một mô hình Học máy trên một cơ sở dữ liệu khổng lồ chưa? Thông thường, khách hàng sẽ cung cấp cho bạn cơ sở dữ liệu và yêu cầu bạn đưa ra những dự đoán nhất định như ai sẽ là người mua tiềm năng; nếu có thể phát hiện sớm các trường hợp gian lận, v.v. Để trả lời những câu hỏi này, nhiệm vụ của bạn sẽ là phát triển thuật toán Học máy để cung cấp câu trả lời cho truy vấn của khách hàng. Phát triển một thuật toán Học máy từ đầu không phải là một nhiệm vụ dễ dàng và tại sao bạn nên làm điều này khi có một số thư viện Học máy sẵn sàng sử dụng trên thị trường.
Ngày nay, bạn muốn sử dụng các thư viện này, áp dụng một thuật toán đã được thử nghiệm tốt từ các thư viện này và xem xét hiệu suất của nó. Nếu hiệu suất không nằm trong giới hạn chấp nhận được, bạn sẽ cố gắng tinh chỉnh thuật toán hiện tại hoặc thử hoàn toàn một thuật toán khác.
Tương tự như vậy, bạn có thể thử nhiều thuật toán trên cùng một tập dữ liệu và sau đó chọn một thuật toán tốt nhất đáp ứng tốt yêu cầu của khách hàng. Đây là nơi H2O đến để giải cứu bạn. Đây là một khuôn khổ Học máy mã nguồn mở với các triển khai đã được thử nghiệm đầy đủ của một số thuật toán ML được chấp nhận rộng rãi. Bạn chỉ cần chọn thuật toán từ kho lưu trữ khổng lồ của nó và áp dụng nó vào tập dữ liệu của mình. Nó chứa các thuật toán thống kê và ML được sử dụng rộng rãi nhất.
Để đề cập đến một số ở đây, nó bao gồm máy tăng độ dốc (GBM), mô hình tuyến tính tổng quát (GLM), học sâu và nhiều hơn nữa. Không chỉ vậy, nó còn hỗ trợ chức năng AutoML sẽ xếp hạng hiệu suất của các thuật toán khác nhau trên tập dữ liệu của bạn, do đó giảm nỗ lực của bạn trong việc tìm kiếm mô hình hoạt động tốt nhất. H2O được sử dụng trên toàn thế giới bởi hơn 18000 tổ chức và giao diện tốt với R và Python để bạn dễ dàng phát triển. Nó là một nền tảng trong bộ nhớ cung cấp hiệu suất tuyệt vời.
Trong hướng dẫn này, trước tiên bạn sẽ học cách cài đặt H2O trên máy của mình với cả hai tùy chọn Python và R. Chúng tôi sẽ hiểu cách sử dụng điều này trong dòng lệnh để bạn hiểu rõ dòng làm việc của nó. Nếu bạn là người yêu thích Python, bạn có thể sử dụng Jupyter hoặc bất kỳ IDE nào khác mà bạn lựa chọn để phát triển các ứng dụng H2O. Nếu bạn thích R, bạn có thể sử dụng RStudio để phát triển.
Trong hướng dẫn này, chúng ta sẽ xem xét một ví dụ để hiểu cách làm việc với H2O. Chúng tôi cũng sẽ tìm hiểu cách thay đổi thuật toán trong mã chương trình của bạn và so sánh hiệu suất của nó với thuật toán trước đó. H2O cũng cung cấp một công cụ dựa trên web để kiểm tra các thuật toán khác nhau trên tập dữ liệu của bạn. Đây được gọi là Flow.
Hướng dẫn này sẽ giới thiệu cho bạn cách sử dụng Flow. Bên cạnh đó, chúng ta sẽ thảo luận về việc sử dụng AutoML sẽ xác định thuật toán hoạt động tốt nhất trên tập dữ liệu của bạn. Bạn không hào hứng khi học H2O? Hãy đọc tiếp!
H2O có thể được cấu hình và sử dụng với năm tùy chọn khác nhau như được liệt kê bên dưới -
Cài đặt bằng Python
Cài đặt trong R
GUI luồng dựa trên web
Hadoop
Đám mây Anaconda
Trong các phần tiếp theo của chúng tôi, bạn sẽ thấy hướng dẫn cài đặt H2O dựa trên các tùy chọn có sẵn. Bạn có thể sử dụng một trong các tùy chọn.
Cài đặt bằng Python
Để chạy H2O với Python, cài đặt yêu cầu một số phụ thuộc. Vì vậy, chúng ta hãy bắt đầu cài đặt bộ phụ thuộc tối thiểu để chạy H2O.
Cài đặt phụ thuộc
Để cài đặt phần phụ thuộc, hãy thực hiện lệnh pip sau:
$ pip install requests
Mở cửa sổ bảng điều khiển của bạn và gõ lệnh trên để cài đặt gói yêu cầu. Ảnh chụp màn hình sau đây cho thấy việc thực thi lệnh trên trên máy Mac của chúng tôi:
Sau khi cài đặt yêu cầu, bạn cần cài đặt thêm ba gói như hình dưới đây -
$ pip install tabulate
$ pip install "colorama >= 0.3.8"
$ pip install future
Danh sách các phụ thuộc được cập nhật mới nhất có trên trang H2O GitHub. Tại thời điểm viết bài này, các phần phụ thuộc sau được liệt kê trên trang.
python 2. H2O — Installation
pip >= 9.0.1
setuptools
colorama >= 0.3.7
future >= 0.15.2
Xóa các phiên bản cũ hơn
Sau khi cài đặt các phụ thuộc trên, bạn cần gỡ bỏ mọi cài đặt H2O hiện có. Để làm như vậy, hãy chạy lệnh sau:
$ pip uninstall h2o
Cài đặt phiên bản mới nhất
Bây giờ, chúng ta hãy cài đặt phiên bản mới nhất của H2O bằng lệnh sau:
$ pip install -f http://h2o-release.s3.amazonaws.com/h2o/latest_stable_Py.html h2o
Sau khi cài đặt thành công, bạn sẽ thấy thông báo sau hiển thị trên màn hình:
Installing collected packages: h2o
Successfully installed h2o-3.26.0.1
Kiểm tra cài đặt
Để kiểm tra cài đặt, chúng tôi sẽ chạy một trong các ứng dụng mẫu được cung cấp trong cài đặt H2O. Trước tiên, hãy bắt đầu lời nhắc Python bằng cách gõ lệnh sau:
$ Python3
Khi trình thông dịch Python khởi động, hãy nhập câu lệnh Python sau trên dấu nhắc lệnh Python:
>>>import h2o
Lệnh trên nhập gói H2O trong chương trình của bạn. Tiếp theo, khởi tạo hệ thống H2O bằng lệnh sau:
>>>h2o.init()
Màn hình của bạn sẽ hiển thị thông tin cụm và sẽ trông như sau ở giai đoạn này:
Bây giờ, bạn đã sẵn sàng để chạy mã mẫu. Gõ lệnh sau trên dấu nhắc Python và thực thi nó.
>>>h2o.demo("glm")
Bản demo bao gồm một sổ ghi chép Python với một loạt lệnh. Sau khi thực hiện mỗi lệnh, đầu ra của lệnh đó sẽ được hiển thị ngay lập tức trên màn hình và bạn sẽ được yêu cầu nhấn phím để tiếp tục bước tiếp theo. Ảnh chụp màn hình một phần về việc thực hiện câu lệnh cuối cùng trong sổ tay được hiển thị ở đây -
Ở giai đoạn này, quá trình cài đặt Python của bạn đã hoàn tất và bạn đã sẵn sàng cho thử nghiệm của riêng mình.
Cài đặt trong R
Cài đặt phát triển H2O cho R rất giống với cài đặt nó cho Python, ngoại trừ việc bạn sẽ sử dụng dấu nhắc R để cài đặt.
Khởi động bảng điều khiển R
Khởi động bảng điều khiển R bằng cách nhấp vào biểu tượng ứng dụng R trên máy của bạn. Màn hình điều khiển sẽ xuất hiện như trong ảnh chụp màn hình sau:
Cài đặt H2O của bạn sẽ được thực hiện trên dấu nhắc R ở trên. Nếu bạn thích sử dụng RStudio, hãy nhập các lệnh trong cửa sổ phụ bảng điều khiển R.
Xóa các phiên bản cũ hơn
Để bắt đầu, hãy xóa các phiên bản cũ hơn bằng lệnh sau trên dấu nhắc R:
> if ("package:h2o" %in% search()) { detach("package:h2o", unload=TRUE) }
> if ("h2o" %in% rownames(installed.packages())) { remove.packages("h2o") }
Tải xuống phụ thuộc
Tải xuống các phụ thuộc cho H2O bằng đoạn mã sau:
> pkgs <- c("RCurl","jsonlite")
for (pkg in pkgs) {
if (! (pkg %in% rownames(installed.packages()))) { install.packages(pkg) }
}
Cài đặt H2O
Cài đặt H2O bằng cách gõ lệnh sau trên dấu nhắc R:
> install.packages("h2o", type = "source", repos = (c("http://h2o-release.s3.amazonaws.com/h2o/latest_stable_R")))
Ảnh chụp màn hình sau đây cho thấy đầu ra dự kiến:
Có một cách khác để cài đặt H2O trong R.
Cài đặt trong R từ CRAN
Để cài đặt R từ CRAN, hãy sử dụng lệnh sau trên dấu nhắc R:
> install.packages("h2o")
Bạn sẽ được yêu cầu chọn gương -
--- Please select a CRAN mirror for use in this session ---
Một hộp thoại hiển thị danh sách các trang nhân bản được hiển thị trên màn hình của bạn. Chọn vị trí gần nhất hoặc gương bạn chọn.
Thử nghiệm cài đặt
Trên dấu nhắc R, nhập và chạy đoạn mã sau:
> library(h2o)
> localH2O = h2o.init()
> demo(h2o.kmeans)
Đầu ra được tạo sẽ như trong ảnh chụp màn hình sau:
Quá trình cài đặt H2O trong R của bạn đã hoàn tất.
Cài đặt Luồng GUI Web
Để cài đặt GUI Flow, hãy tải xuống tệp cài đặt từ trang H20. Giải nén tệp đã tải xuống trong thư mục ưa thích của bạn. Lưu ý sự hiện diện của tệp h2o.jar trong cài đặt. Chạy tệp này trong cửa sổ lệnh bằng lệnh sau:
$ java -jar h2o.jar
Sau một lúc, phần sau sẽ xuất hiện trong cửa sổ bảng điều khiển của bạn.
07-24 16:06:37.304 192.168.1.18:54321 3294 main INFO: H2O started in 7725ms
07-24 16:06:37.304 192.168.1.18:54321 3294 main INFO:
07-24 16:06:37.305 192.168.1.18:54321 3294 main INFO: Open H2O Flow in your web browser: http://192.168.1.18:54321
07-24 16:06:37.305 192.168.1.18:54321 3294 main INFO:
Để bắt đầu Luồng, hãy mở URL đã cho http://localhost:54321trong trình duyệt của bạn. Màn hình sau sẽ xuất hiện:
Ở giai đoạn này, quá trình cài đặt Flow của bạn đã hoàn tất.
Cài đặt trên Hadoop / Anaconda Cloud
Trừ khi bạn là một nhà phát triển dày dạn kinh nghiệm, bạn sẽ không nghĩ đến việc sử dụng H2O trên Dữ liệu lớn. Ở đây đủ để nói rằng các mô hình H2O chạy hiệu quả trên cơ sở dữ liệu khổng lồ vài terabyte. Nếu dữ liệu của bạn nằm trên cài đặt Hadoop hoặc trong Đám mây, hãy làm theo các bước được cung cấp trên trang web H2O để cài đặt nó cho cơ sở dữ liệu tương ứng của bạn.
Bây giờ bạn đã cài đặt và thử nghiệm thành công H2O trên máy tính của mình, bạn đã sẵn sàng để phát triển thực sự. Đầu tiên, chúng ta sẽ thấy sự phát triển từ Command prompt. Trong các bài học tiếp theo, chúng ta sẽ học cách thực hiện kiểm tra mô hình trong H2O Flow.
Phát triển trong Command Prompt
Bây giờ chúng ta hãy xem xét việc sử dụng H2O để phân loại thực vật của bộ dữ liệu mống mắt nổi tiếng được cung cấp miễn phí để phát triển các ứng dụng Máy học.
Khởi động trình thông dịch Python bằng cách nhập lệnh sau vào cửa sổ shell của bạn:
$ Python3
Điều này khởi động trình thông dịch Python. Nhập nền tảng h2o bằng lệnh sau:
>>> import h2o
Chúng tôi sẽ sử dụng thuật toán Rừng ngẫu nhiên để phân loại. Điều này được cung cấp trong gói H2ORandomForestEstimator. Chúng tôi nhập gói này bằng cách sử dụng câu lệnh nhập như sau:
>>> from h2o.estimators import H2ORandomForestEstimator
Chúng tôi khởi tạo môi trường H2o bằng cách gọi phương thức init của nó.
>>> h2o.init()
Khi khởi tạo thành công, bạn sẽ thấy thông báo sau trên bảng điều khiển cùng với thông tin cụm.
Checking whether there is an H2O instance running at http://localhost:54321 . connected.
Bây giờ, chúng ta sẽ nhập dữ liệu mống mắt bằng phương thức import_file trong H2O.
>>> data = h2o.import_file('iris.csv')
Tiến trình sẽ hiển thị như trong ảnh chụp màn hình sau:
Sau khi tệp được tải vào bộ nhớ, bạn có thể xác minh điều này bằng cách hiển thị 10 hàng đầu tiên của bảng đã tải. Bạn sử dụnghead phương pháp để làm như vậy -
>>> data.head()
Bạn sẽ thấy kết quả sau ở định dạng bảng.
Bảng cũng hiển thị tên cột. Chúng tôi sẽ sử dụng bốn cột đầu tiên làm các tính năng cho thuật toán ML của chúng tôi và lớp cột cuối cùng làm kết quả dự đoán. Chúng tôi chỉ định điều này trong lệnh gọi đến thuật toán ML của chúng tôi bằng cách tạo hai biến sau.
>>> features = ['sepal_length', 'sepal_width', 'petal_length', 'petal_width']
>>> output = 'class'
Tiếp theo, chúng tôi chia dữ liệu thành đào tạo và thử nghiệm bằng cách gọi phương thức split_frame.
>>> train, test = data.split_frame(ratios = [0.8])
Dữ liệu được chia theo tỷ lệ 80:20. Chúng tôi sử dụng 80% dữ liệu để đào tạo và 20% để thử nghiệm.
Bây giờ, chúng tôi tải mô hình Rừng Ngẫu nhiên được tích hợp sẵn vào hệ thống.
>>> model = H2ORandomForestEstimator(ntrees = 50, max_depth = 20, nfolds = 10)
Trong lệnh gọi trên, chúng ta đặt số lượng cây là 50, độ sâu tối đa của cây là 20 và số lần gấp để xác nhận chéo là 10. Bây giờ chúng ta cần đào tạo mô hình. Chúng tôi làm như vậy bằng cách gọi phương thức train như sau:
>>> model.train(x = features, y = output, training_frame = train)
Phương thức train nhận các đặc trưng và đầu ra mà chúng ta đã tạo trước đó dưới dạng hai tham số đầu tiên. Tập dữ liệu đào tạo được thiết lập để đào tạo, là 80% trong tập dữ liệu đầy đủ của chúng tôi. Trong quá trình đào tạo, bạn sẽ thấy sự tiến bộ như được hiển thị ở đây -
Bây giờ, khi quá trình xây dựng mô hình đã kết thúc, đã đến lúc thử nghiệm mô hình. Chúng tôi thực hiện việc này bằng cách gọi phương thức model_performance trên đối tượng mô hình được đào tạo.
>>> performance = model.model_performance(test_data=test)
Trong lệnh gọi phương thức ở trên, chúng tôi đã gửi dữ liệu thử nghiệm dưới dạng tham số của chúng tôi.
Bây giờ là lúc để xem đầu ra, đó là hiệu suất của mô hình của chúng tôi. Bạn thực hiện việc này bằng cách in hiệu suất.
>>> print (performance)
Điều này sẽ cung cấp cho bạn kết quả sau:
Kết quả hiển thị Lỗi hình vuông trung bình (MSE), Lỗi hình vuông gốc trung bình (RMSE), LogLoss và thậm chí cả Ma trận nhầm lẫn.
Chạy trong Jupyter
Chúng ta đã thấy việc thực thi lệnh và cũng hiểu mục đích của từng dòng mã. Bạn có thể chạy toàn bộ mã trong môi trường Jupyter, từng dòng một hoặc toàn bộ chương trình cùng một lúc. Danh sách đầy đủ được đưa ra ở đây -
import h2o
from h2o.estimators import H2ORandomForestEstimator
h2o.init()
data = h2o.import_file('iris.csv')
features = ['sepal_length', 'sepal_width', 'petal_length', 'petal_width']
output = 'class'
train, test = data.split_frame(ratios=[0.8])
model = H2ORandomForestEstimator(ntrees = 50, max_depth = 20, nfolds = 10)
model.train(x = features, y = output, training_frame = train)
performance = model.model_performance(test_data=test)
print (performance)
Chạy mã và quan sát đầu ra. Bây giờ bạn có thể đánh giá cao mức độ dễ dàng áp dụng và thử nghiệm thuật toán Rừng ngẫu nhiên trên tập dữ liệu của mình. Sức mạnh của H20 vượt xa khả năng này. Điều gì sẽ xảy ra nếu bạn muốn thử một mô hình khác trên cùng một tập dữ liệu để xem liệu bạn có thể đạt được hiệu suất tốt hơn hay không. Điều này được giải thích trong phần tiếp theo của chúng tôi.
Áp dụng một thuật toán khác
Bây giờ, chúng ta sẽ học cách áp dụng thuật toán Gradient Boosting cho tập dữ liệu trước đó của chúng ta để xem nó hoạt động như thế nào. Trong danh sách đầy đủ ở trên, bạn sẽ chỉ cần thực hiện hai thay đổi nhỏ như được đánh dấu trong đoạn mã bên dưới -
import h2o
from h2o.estimators import H2OGradientBoostingEstimator
h2o.init()
data = h2o.import_file('iris.csv')
features = ['sepal_length', 'sepal_width', 'petal_length', 'petal_width']
output = 'class'
train, test = data.split_frame(ratios = [0.8])
model = H2OGradientBoostingEstimator
(ntrees = 50, max_depth = 20, nfolds = 10)
model.train(x = features, y = output, training_frame = train)
performance = model.model_performance(test_data = test)
print (performance)
Chạy mã và bạn sẽ nhận được kết quả sau:
Chỉ cần so sánh kết quả như MSE, RMSE, Ma trận nhầm lẫn, v.v. với kết quả đầu ra trước đó và quyết định sử dụng kết quả nào để triển khai sản xuất. Trên thực tế, bạn có thể áp dụng một số thuật toán khác nhau để quyết định chọn thuật toán tốt nhất đáp ứng mục đích của bạn.
Trong bài học trước, bạn đã học cách tạo các mô hình ML dựa trên H2O bằng giao diện dòng lệnh. H2O Flow đáp ứng mục đích tương tự, nhưng với giao diện dựa trên web.
Trong các bài học sau, tôi sẽ hướng dẫn bạn cách khởi động H2O Flow và chạy một ứng dụng mẫu.
Bắt đầu dòng H2O
Bản cài đặt H2O mà bạn đã tải xuống trước đó có chứa tệp h2o.jar. Để bắt đầu H2O Flow, trước tiên hãy chạy jar này từ dấu nhắc lệnh -
$ java -jar h2o.jar
Khi jar chạy thành công, bạn sẽ nhận được thông báo sau trên bảng điều khiển:
Open H2O Flow in your web browser: http://192.168.1.10:54321
Bây giờ, hãy mở trình duyệt bạn chọn và nhập URL ở trên. Bạn sẽ thấy máy tính để bàn dựa trên web H2O như được hiển thị ở đây -
Về cơ bản đây là một cuốn sổ tương tự như Colab hoặc Jupyter. Tôi sẽ chỉ cho bạn cách tải và chạy một ứng dụng mẫu trong sổ tay này đồng thời giải thích các tính năng khác nhau trong Flow. Nhấp vào liên kết xem ví dụ Dòng chảy trên màn hình trên để xem danh sách các ví dụ được cung cấp.
Tôi sẽ mô tả ví dụ về Dòng chậm trễ của Hãng hàng không từ mẫu.
Nhấp vào liên kết Dòng Chậm trễ của Hãng hàng không trong danh sách các mẫu như thể hiện trong ảnh chụp màn hình bên dưới -
Sau khi bạn xác nhận, sổ ghi chép mới sẽ được tải.
Xóa tất cả đầu ra
Trước khi chúng tôi giải thích các câu lệnh mã trong sổ ghi chép, hãy xóa tất cả các kết quả đầu ra và sau đó chạy sổ ghi chép dần dần. Để xóa tất cả các đầu ra, hãy chọn tùy chọn menu sau:
Flow / Clear All Cell Contents
Điều này được hiển thị trong ảnh chụp màn hình sau:
Khi tất cả các đầu ra được xóa, chúng tôi sẽ chạy từng ô trong sổ ghi chép riêng lẻ và kiểm tra đầu ra của nó.
Chạy ô đầu tiên
Bấm vào ô đầu tiên. Một lá cờ đỏ xuất hiện ở bên trái cho biết rằng ô đã được chọn. Điều này được hiển thị trong ảnh chụp màn hình bên dưới -
Nội dung của ô này chỉ là chú thích chương trình được viết bằng ngôn ngữ MarkDown (MD). Nội dung mô tả chức năng của ứng dụng đã tải. Để chạy ô, hãy nhấp vào biểu tượng Run như được hiển thị trong ảnh chụp màn hình bên dưới -
Bạn sẽ không thấy bất kỳ đầu ra nào bên dưới ô vì không có mã thực thi nào trong ô hiện tại. Bây giờ con trỏ sẽ tự động di chuyển đến ô tiếp theo, ô này đã sẵn sàng để thực thi.
Nhập dữ liệu
Ô tiếp theo chứa câu lệnh Python sau:
importFiles ["https://s3.amazonaws.com/h2o-airlines-unpacked/allyears2k.csv"]
Câu lệnh nhập tệp allyears2k.csv từ Amazon AWS vào hệ thống. Khi bạn chạy ô, nó sẽ nhập tệp và cung cấp cho bạn kết quả sau.
Thiết lập trình phân tích cú pháp dữ liệu
Bây giờ, chúng ta cần phân tích cú pháp dữ liệu và làm cho nó phù hợp với thuật toán ML của chúng ta. Điều này được thực hiện bằng cách sử dụng lệnh sau:
setupParse paths: [ "https://s3.amazonaws.com/h2o-airlines-unpacked/allyears2k.csv" ]
Khi thực hiện câu lệnh trên, một hộp thoại cấu hình thiết lập sẽ xuất hiện. Hộp thoại cho phép bạn một số cài đặt để phân tích cú pháp tệp. Điều này được hiển thị trong ảnh chụp màn hình bên dưới -
Trong hộp thoại này, bạn có thể chọn trình phân tích cú pháp mong muốn từ danh sách thả xuống đã cho và đặt các tham số khác như dấu phân tách trường, v.v.
Phân tích dữ liệu
Câu lệnh tiếp theo, thực sự phân tích cú pháp tệp dữ liệu bằng cách sử dụng cấu hình trên, là một câu lệnh dài và như được hiển thị ở đây -
parseFiles
paths: ["https://s3.amazonaws.com/h2o-airlines-unpacked/allyears2k.csv"]
destination_frame: "allyears2k.hex"
parse_type: "CSV"
separator: 44
number_columns: 31
single_quotes: false
column_names: ["Year","Month","DayofMonth","DayOfWeek","DepTime","CRSDepTime",
"ArrTime","CRSArrTime","UniqueCarrier","FlightNum","TailNum",
"ActualElapsedTime","CRSElapsedTime","AirTime","ArrDelay","DepDelay",
"Origin","Dest","Distance","TaxiIn","TaxiOut","Cancelled","CancellationCode",
"Diverted","CarrierDelay","WeatherDelay","NASDelay","SecurityDelay",
"LateAircraftDelay","IsArrDelayed","IsDepDelayed"]
column_types: ["Enum","Enum","Enum","Enum","Numeric","Numeric","Numeric"
,"Numeric","Enum","Enum","Enum","Numeric","Numeric","Numeric","Numeric",
"Numeric","Enum","Enum","Numeric","Numeric","Numeric","Enum","Enum",
"Numeric","Numeric","Numeric","Numeric","Numeric","Numeric","Enum","Enum"]
delete_on_done: true
check_header: 1
chunk_size: 4194304
Quan sát rằng các thông số bạn đã thiết lập trong hộp cấu hình được liệt kê trong đoạn mã trên. Bây giờ, chạy ô này. Sau một lúc, quá trình phân tích cú pháp hoàn tất và bạn sẽ thấy kết quả sau:
Kiểm tra khung dữ liệu
Sau khi xử lý, nó tạo ra một khung dữ liệu, có thể được kiểm tra bằng cách sử dụng câu lệnh sau:
getFrameSummary "allyears2k.hex"
Khi thực hiện câu lệnh trên, bạn sẽ thấy kết quả sau:
Giờ đây, dữ liệu của bạn đã sẵn sàng để đưa vào thuật toán Học máy.
Câu lệnh tiếp theo là một nhận xét của chương trình cho biết chúng ta sẽ sử dụng mô hình hồi quy và chỉ định sự chính quy hóa đặt trước và các giá trị lambda.
Xây dựng mô hình
Tiếp theo, là tuyên bố quan trọng nhất và đó là xây dựng chính mô hình. Điều này được chỉ định trong câu lệnh sau:
buildModel 'glm', {
"model_id":"glm_model","training_frame":"allyears2k.hex",
"ignored_columns":[
"DayofMonth","DepTime","CRSDepTime","ArrTime","CRSArrTime","TailNum",
"ActualElapsedTime","CRSElapsedTime","AirTime","ArrDelay","DepDelay",
"TaxiIn","TaxiOut","Cancelled","CancellationCode","Diverted","CarrierDelay",
"WeatherDelay","NASDelay","SecurityDelay","LateAircraftDelay","IsArrDelayed"],
"ignore_const_cols":true,"response_column":"IsDepDelayed","family":"binomial",
"solver":"IRLSM","alpha":[0.5],"lambda":[0.00001],"lambda_search":false,
"standardize":true,"non_negative":false,"score_each_iteration":false,
"max_iterations":-1,"link":"family_default","intercept":true,
"objective_epsilon":0.00001,"beta_epsilon":0.0001,"gradient_epsilon":0.0001,
"prior":-1,"max_active_predictors":-1
}
Chúng tôi sử dụng glm, là một bộ Mô hình Tuyến tính Tổng quát với kiểu gia đình được đặt thành nhị thức. Bạn có thể thấy những điều này được đánh dấu trong câu lệnh trên. Trong trường hợp của chúng ta, đầu ra mong đợi là nhị phân và đó là lý do tại sao chúng ta sử dụng kiểu nhị thức. Bạn có thể tự mình kiểm tra các thông số khác; ví dụ, hãy xem alpha và lambda mà chúng tôi đã chỉ định trước đó. Tham khảo tài liệu về mô hình GLM để biết giải thích về tất cả các thông số.
Bây giờ, hãy chạy câu lệnh này. Khi thực thi, kết quả sau sẽ được tạo:
Chắc chắn, thời gian thực hiện sẽ khác trên máy của bạn. Bây giờ, đến phần thú vị nhất của mã mẫu này.
Kiểm tra đầu ra
Chúng tôi chỉ cần xuất ra mô hình mà chúng tôi đã xây dựng bằng câu lệnh sau:
getModel "glm_model"
Lưu ý rằng glm_model là ID mô hình mà chúng tôi đã chỉ định làm tham số model_id trong khi xây dựng mô hình trong câu lệnh trước. Điều này cung cấp cho chúng tôi một đầu ra khổng lồ chi tiết kết quả với một số tham số khác nhau. Một phần đầu ra của báo cáo được hiển thị trong ảnh chụp màn hình bên dưới -
Như bạn có thể thấy trong đầu ra, nó nói rằng đây là kết quả của việc chạy thuật toán Mô hình hóa tuyến tính tổng quát trên tập dữ liệu của bạn.
Ngay phía trên LỊCH SỬ ĐIỂM YẾU, bạn nhìn thấy thẻ MÔ HÌNH THÔNG SỐ, hãy mở rộng nó và bạn sẽ thấy danh sách tất cả các thông số được sử dụng trong khi xây dựng mô hình. Điều này được hiển thị trong ảnh chụp màn hình bên dưới.
Tương tự như vậy, mỗi thẻ cung cấp đầu ra chi tiết của một loại cụ thể. Tự mở rộng các thẻ khác nhau để nghiên cứu kết quả đầu ra của các loại khác nhau.
Xây dựng một mô hình khác
Tiếp theo, chúng tôi sẽ xây dựng mô hình Học sâu trên khung dữ liệu của mình. Câu lệnh tiếp theo trong mã mẫu chỉ là một nhận xét chương trình. Câu lệnh sau đây thực sự là một lệnh xây dựng mô hình. Nó được hiển thị ở đây -
buildModel 'deeplearning', {
"model_id":"deeplearning_model","training_frame":"allyear
s2k.hex","ignored_columns":[
"DepTime","CRSDepTime","ArrTime","CRSArrTime","FlightNum","TailNum",
"ActualElapsedTime","CRSElapsedTime","AirTime","ArrDelay","DepDelay",
"TaxiIn","TaxiOut","Cancelled","CancellationCode","Diverted",
"CarrierDelay","WeatherDelay","NASDelay","SecurityDelay",
"LateAircraftDelay","IsArrDelayed"],
"ignore_const_cols":true,"res ponse_column":"IsDepDelayed",
"activation":"Rectifier","hidden":[200,200],"epochs":"100",
"variable_importances":false,"balance_classes":false,
"checkpoint":"","use_all_factor_levels":true,
"train_samples_per_iteration":-2,"adaptive_rate":true,
"input_dropout_ratio":0,"l1":0,"l2":0,"loss":"Automatic","score_interval":5,
"score_training_samples":10000,"score_duty_cycle":0.1,"autoencoder":false,
"overwrite_with_best_model":true,"target_ratio_comm_to_comp":0.02,
"seed":6765686131094811000,"rho":0.99,"epsilon":1e-8,"max_w2":"Infinity",
"initial_weight_distribution":"UniformAdaptive","classification_stop":0,
"diagnostics":true,"fast_mode":true,"force_load_balance":true,
"single_node_mode":false,"shuffle_training_data":false,"missing_values_handling":
"MeanImputation","quiet_mode":false,"sparse":false,"col_major":false,
"average_activation":0,"sparsity_beta":0,"max_categorical_features":2147483647,
"reproducible":false,"export_weights_and_biases":false
}
Như bạn có thể thấy trong đoạn mã trên, chúng tôi chỉ định đào sâu để xây dựng mô hình với một số tham số được đặt thành các giá trị thích hợp như được chỉ định trong tài liệu về mô hình đào sâu. Khi bạn chạy câu lệnh này, sẽ mất nhiều thời gian hơn so với việc xây dựng mô hình GLM. Bạn sẽ thấy kết quả sau khi xây dựng mô hình hoàn thành, mặc dù với thời gian khác nhau.
Kiểm tra đầu ra của mô hình học sâu
Điều này tạo ra loại đầu ra, có thể được kiểm tra bằng cách sử dụng câu lệnh sau như trong trường hợp trước.
getModel "deeplearning_model"
Chúng tôi sẽ xem xét đầu ra đường cong ROC như hình dưới đây để tham khảo nhanh.
Giống như trong trường hợp trước, hãy mở rộng các tab khác nhau và nghiên cứu các kết quả đầu ra khác nhau.
Lưu mô hình
Sau khi bạn đã nghiên cứu đầu ra của các mô hình khác nhau, bạn quyết định sử dụng một trong những mô hình đó trong môi trường sản xuất của mình. H20 cho phép bạn lưu mô hình này dưới dạng POJO (Đối tượng Java cũ thuần túy).
Mở rộng thẻ cuối cùng PREVIEW POJO trong đầu ra và bạn sẽ thấy mã Java cho mô hình đã tinh chỉnh của mình. Sử dụng điều này trong môi trường sản xuất của bạn.
Tiếp theo, chúng ta sẽ tìm hiểu về một tính năng rất thú vị của H2O. Chúng ta sẽ học cách sử dụng AutoML để kiểm tra và xếp hạng các thuật toán khác nhau dựa trên hiệu suất của chúng.
Để sử dụng AutoML, hãy bắt đầu một sổ ghi chép Jupyter mới và làm theo các bước được hiển thị bên dưới.
Nhập AutoML
Đầu tiên nhập gói H2O và AutoML vào dự án bằng hai câu lệnh sau:
import h2o
from h2o.automl import H2OAutoML
Khởi tạo H2O
Khởi tạo h2o bằng câu lệnh sau:
h2o.init()
Bạn sẽ thấy thông tin cụm trên màn hình như trong ảnh chụp màn hình bên dưới -
Đang tải dữ liệu
Chúng tôi sẽ sử dụng cùng một tập dữ liệu iris.csv mà bạn đã sử dụng trước đó trong hướng dẫn này. Tải dữ liệu bằng câu lệnh sau:
data = h2o.import_file('iris.csv')
Chuẩn bị tập dữ liệu
Chúng ta cần quyết định các tính năng và các cột dự đoán. Chúng tôi sử dụng các tính năng tương tự và cột dự đoán như trong trường hợp trước đó của chúng tôi. Đặt các tính năng và cột đầu ra bằng cách sử dụng hai câu lệnh sau:
features = ['sepal_length', 'sepal_width', 'petal_length', 'petal_width']
output = 'class'
Chia dữ liệu theo tỷ lệ 80:20 để đào tạo và kiểm tra -
train, test = data.split_frame(ratios=[0.8])
Áp dụng AutoML
Bây giờ, tất cả chúng ta đã sẵn sàng để áp dụng AutoML trên tập dữ liệu của mình. AutoML sẽ chạy trong một khoảng thời gian cố định do chúng tôi thiết lập và cung cấp cho chúng tôi mô hình được tối ưu hóa. Chúng tôi thiết lập AutoML bằng cách sử dụng câu lệnh sau:
aml = H2OAutoML(max_models = 30, max_runtime_secs=300, seed = 1)
Tham số đầu tiên chỉ định số lượng mô hình mà chúng tôi muốn đánh giá và so sánh.
Tham số thứ hai chỉ định thời gian mà thuật toán chạy.
Bây giờ chúng ta gọi phương thức train trên đối tượng AutoML như được hiển thị ở đây -
aml.train(x = features, y = output, training_frame = train)
Chúng tôi chỉ định x là mảng tính năng mà chúng tôi đã tạo trước đó, y làm biến đầu ra để chỉ ra giá trị dự đoán và khung dữ liệu là train tập dữ liệu.
Chạy mã, bạn sẽ phải đợi trong 5 phút (chúng tôi đặt max_runtime_secs thành 300) cho đến khi bạn nhận được kết quả sau:
In bảng xếp hạng
Khi quá trình xử lý AutoML hoàn tất, nó sẽ tạo ra một bảng xếp hạng xếp hạng tất cả 30 thuật toán mà nó đã đánh giá. Để xem 10 bản ghi đầu tiên của bảng thành tích, hãy sử dụng mã sau:
lb = aml.leaderboard
lb.head()
Khi thực thi, đoạn mã trên sẽ tạo ra kết quả sau:
Rõ ràng, thuật toán DeepLearning đã đạt điểm tối đa.
Dự đoán trên dữ liệu thử nghiệm
Bây giờ, bạn có các mô hình được xếp hạng, bạn có thể xem hiệu suất của mô hình được xếp hạng cao nhất trên dữ liệu thử nghiệm của mình. Để làm như vậy, hãy chạy câu lệnh sau:
preds = aml.predict(test)
Quá trình xử lý tiếp tục trong một thời gian và bạn sẽ thấy kết quả sau khi hoàn tất.
Kết quả in
In kết quả dự đoán bằng câu lệnh sau:
print (preds)
Khi thực hiện câu lệnh trên, bạn sẽ thấy kết quả sau:
In bảng xếp hạng cho tất cả
Nếu bạn muốn xem thứ hạng của tất cả các thuật toán đã thử nghiệm, hãy chạy câu lệnh sau:
lb.head(rows = lb.nrows)
Khi thực hiện câu lệnh trên, kết quả sau sẽ được tạo (hiển thị một phần):
Phần kết luận
H2O cung cấp một nền tảng mã nguồn mở dễ sử dụng để áp dụng các thuật toán ML khác nhau trên một tập dữ liệu nhất định. Nó cung cấp một số thuật toán thống kê và ML bao gồm cả học sâu. Trong quá trình thử nghiệm, bạn có thể tinh chỉnh các thông số cho các thuật toán này. Bạn có thể làm như vậy bằng cách sử dụng dòng lệnh hoặc giao diện dựa trên web được cung cấp có tên là Flow. H2O cũng hỗ trợ AutoML cung cấp xếp hạng giữa một số thuật toán dựa trên hiệu suất của chúng. H2O cũng hoạt động tốt trên Dữ liệu lớn. Đây chắc chắn là một lợi ích để Nhà khoa học dữ liệu áp dụng các mô hình Học máy khác nhau trên tập dữ liệu của họ và chọn mô hình tốt nhất để đáp ứng nhu cầu của họ.