Datumbox Machine Learning Framework phiên bản 0.8.0 đã phát hành PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.

Datumbox Machine Learning Framework phiên bản 0.8.0 được phát hành

Datumbox Framework v0.8.0 đã ra mắt và có một số tính năng mạnh mẽ! Phiên bản này mang đến các thuật toán Tiền xử lý, Lựa chọn tính năng và Lựa chọn mô hình mới, Công cụ lưu trữ mạnh mẽ mới giúp kiểm soát tốt hơn cách lưu / tải Mô hình và Khung dữ liệu, một số mô hình Học máy được đào tạo trước và nhiều cải tiến về bộ nhớ và tốc độ. Tải xuống ngay bây giờ từ Github or Kho lưu trữ trung tâm Maven.

Một trong những mục tiêu chính của phiên bản 0.8.0 là cải thiện cơ chế Lưu trữ của khuôn khổ và cung cấp đào tạo dựa trên đĩa cho tất cả các thuật toán được hỗ trợ. Các công cụ lưu trữ mới giúp kiểm soát tốt hơn cách thức và thời điểm các mô hình đang được duy trì. Một thay đổi quan trọng là các mô hình không được lưu trữ tự động sau khi phương thức fit () kết thúc mà thay vào đó, người ta cần gọi phương thức save () một cách rõ ràng cung cấp tên của mô hình. Điều này cho phép chúng tôi không chỉ loại bỏ các thuật toán tạm thời dễ dàng hơn mà không cần trải qua giai đoạn tuần tự hóa mà còn để lưu / tải các Dataframe:

Configuration configuration = Configuration.getConfiguration();
Dataframe data = ...; //load a dataframe here

MaximumEntropy.TrainingParameters params = new MaximumEntropy.TrainingParameters();
MaximumEntropy model = MLBuilder.create(params, getConfiguration());
model.fit(data);
model.save("MyModel"); //save the model using the specific name
model.close();

data.save("MyData"); //save the data using a specific name
data.close();

data = Dataframe.Builder.load("MyData", configuration); //load the data
model = MLBuilder.load(MaximumEntropy.class, "MyModel", configuration); //load the model
model.predict(data);
model.delete(); //delete the model

Hiện tại chúng tôi hỗ trợ hai công cụ lưu trữ: công cụ InMemory rất nhanh vì nó tải mọi thứ trong bộ nhớ và công cụ MapDB chậm hơn nhưng cho phép đào tạo dựa trên đĩa. Bạn có thể kiểm soát công cụ bạn sử dụng bằng cách thay đổi datumbox.configuration.properties của mình hoặc bạn có thể sửa đổi các đối tượng cấu hình theo chương trình. Mỗi công cụ có tệp cấu hình riêng nhưng một lần nữa bạn có thể sửa đổi mọi thứ theo chương trình:

Configuration configuration = Configuration.getConfiguration(); //conf from properties file

configuration.setStorageConfiguration(new InMemoryConfiguration()); //use In-Memory engine
//configuration.setStorageConfiguration(new MapDBConfiguration()); //use MapDB engine

Xin lưu ý rằng trong cả hai công cụ, có một cài đặt thư mục kiểm soát nơi các mô hình đang được lưu trữ (inMemoryConfiguration.directorymapDBConfiguration.directory thuộc tính trong tệp cấu hình). Đảm bảo rằng bạn thay đổi chúng, nếu không các mô hình sẽ được ghi trên thư mục tạm thời của hệ thống của bạn. Để biết thêm thông tin về cách bạn cấu trúc các tệp cấu hình, hãy xem Ví dụ về mã dự án.

Với cơ chế Lưu trữ mới, việc chia sẻ công khai hiện có thể thực hiện được người mẫu được đào tạo trước bao gồm các lĩnh vực Phân tích tình cảm, Phát hiện thư rác, Phát hiện ngôn ngữ, Phân loại chủ đề và tất cả các mô hình khác có sẵn thông qua Datumbox API. Bây giờ bạn có thể tải về và sử dụng tất cả các mô hình được đào tạo trước trong dự án của bạn mà không yêu cầu gọi API và không bị giới hạn bởi số lượng cuộc gọi hàng ngày. Hiện tại, các mô hình đã xuất bản được đào tạo bằng cách sử dụng công cụ lưu trữ InMemory và chúng chỉ hỗ trợ tiếng Anh. Trong các bản phát hành trong tương lai, tôi dự định cung cấp hỗ trợ cho nhiều ngôn ngữ hơn.

Trong khuôn khổ mới, có một số thay đổi về phương thức công khai của nhiều lớp (do đó nó không tương thích ngược). Sự khác biệt đáng chú ý nhất là ở cách các mô hình được khởi tạo. Như chúng ta đã thấy trong ví dụ mã trước đó, các mô hình không được khởi tạo trực tiếp mà thay vào đó, lớp MLBuilder được sử dụng để tạo hoặc tải một mô hình. Các tham số đào tạo được cung cấp trực tiếp cho trình tạo và không thể thay đổi chúng bằng trình cài đặt.

Một cải tiến khác là cách chúng tôi thực hiện Lựa chọn mô hình. Phiên bản v0.8.0 giới thiệu gói chọn mô hình mới cung cấp tất cả các công cụ cần thiết để xác nhận và đo lường hiệu suất của các mô hình của chúng tôi. Trong gói con chỉ số, chúng tôi cung cấp các chỉ số xác thực quan trọng nhất để phân loại, phân nhóm, hồi quy và đề xuất. Lưu ý rằng ValidationMetrics bị xóa khỏi từng thuật toán riêng lẻ và chúng không còn được lưu trữ cùng với mô hình. Khung công tác cung cấp gói con bộ tách mới cho phép tách tập dữ liệu gốc bằng các lược đồ khác nhau. Hiện tại, phân chia K-fold được thực hiện bằng cách sử dụng lớp KFoldSplitter trong khi việc phân vùng tập dữ liệu thành một tập huấn luyện và thử nghiệm có thể đạt được với ShuffleSplitter. Cuối cùng để nhanh chóng xác thực một mô hình, khung công tác cung cấp lớp Trình xác thực. Đây là cách người ta có thể thực hiện xác thực chéo K-lần trong một vài dòng mã:

ClassificationMetrics vm = new Validator<>(ClassificationMetrics.class, configuration)
    .validate(new KFoldSplitter(k).split(data), new MaximumEntropy.TrainingParameters());

Gói Tiền xử lý mới thay thế các Máy biến áp dữ liệu cũ và giúp kiểm soát tốt hơn cách chúng tôi mở rộng quy mô và mã hóa dữ liệu trước các thuật toán máy học. Các thuật toán sau được hỗ trợ để chia tỷ lệ các biến số: MinMaxScaler, StandardScaler, MaxAbsScaler và BinaryScaler. Để mã hóa các biến phân loại thành boolean, bạn có thể sử dụng các phương pháp sau: OneHotEncoder và CornerConstraintsEncoder. Đây là cách bạn có thể sử dụng các thuật toán mới:

StandardScaler numericalScaler = MLBuilder.create(
    new StandardScaler.TrainingParameters(), 
    configuration
);
numericalScaler.fit_transform(trainingData);

CornerConstraintsEncoder categoricalEncoder = MLBuilder.create(
    new CornerConstraintsEncoder.TrainingParameters(), 
    configuration
);
categoricalEncoder.fit_transform(trainingData);

Một cập nhật quan trọng khác là gói Lựa chọn Tính năng đã được viết lại. Hiện tại tất cả các thuật toán lựa chọn tính năng đều tập trung vào các kiểu dữ liệu cụ thể, làm cho nó có thể liên kết các phương pháp khác nhau với nhau. Kết quả là lớp TextClassifier và lớp Modeler nhận được một danh sách các tham số của bộ chọn tính năng thay vì chỉ một.

Như đã đề cập trước đó, tất cả các thuật toán hiện hỗ trợ đào tạo dựa trên đĩa, bao gồm cả những thuật toán sử dụng Ma trận (chỉ có ngoại lệ là Máy vectơ hỗ trợ). Cơ chế công cụ lưu trữ mới thậm chí còn cho phép cấu hình một số thuật toán hoặc khung dữ liệu để được lưu trữ trong bộ nhớ trong khi những thuật toán khác trên đĩa. Một số cải tiến về tốc độ đã được giới thiệu chủ yếu do cơ chế công cụ lưu trữ mới nhưng cũng do việc điều chỉnh các thuật toán riêng lẻ như các thuật toán trong họ DPMM.

Cuối cùng nhưng không kém phần quan trọng là phiên bản mới cập nhật tất cả các phụ thuộc lên phiên bản mới nhất của chúng và loại bỏ một số phụ thuộc như commons-lang và lp_solve. Commons-lang, được sử dụng để phân tích cú pháp HTML, được thay thế bằng triển khai HTMLParser tùy chỉnh nhanh hơn. Lp_solve được thay thế bằng một trình giải Java simplex thuần túy, có nghĩa là Datumbox không còn yêu cầu các thư viện hệ thống cụ thể được cài đặt trên hệ điều hành. Hơn nữa, lp_solve phải ra đi vì nó sử dụng LGPLv2 không tương thích với giấy phép Apache 2.0.

Phiên bản 0.8.0 mang đến nhiều tính năng và cải tiến mới hơn trên khuôn khổ. Để có cái nhìn chi tiết về những thay đổi, vui lòng kiểm tra changelog.

Đừng quên sao chép mã của Khung dữ liệu v0.8.0 từ Github, hãy xem Mã ví dụ và tải xuống các mô hình Học máy được đào tạo trước từ Sở thú dữ liệu. Tôi rất mong nhận được ý kiến ​​và đề xuất của bạn.

Dấu thời gian:

Thêm từ Hộp dữ liệu