Apa itu ML.NET?
ML.NET adalah kerangka kerja pembelajaran mesin gratis, sumber terbuka, dan lintas platform, yang dibuat oleh Microsoft, untuk platform pengembang .NET.
ML.NET
ML.NET merupakan kerangka pembelajaran mesin, sumber terbuka, dan lintas platform gratis untuk platform pengembang .NET.
ML.NET memungkinkan Anda melatih, membuat, dan mengirimkan model pembelajaran mesin kustom menggunakan C# atau F# untuk berbagai skenario ML. ML.NET menyertakan fitur seperti pembelajaran mesin otomatis (AutoML) dan alat seperti ML.NET CLI dan ML.NET Pembuat Model, yang mempermudah integrasi pembelajaran mesin ke aplikasi Anda.
ML.NET langkah demi langkah
ML.NET mengikuti langkah-langkah dasar yang sama untuk hampir setiap skenario; ini menggabungkan pemuatan data, transformasi, dan pelatihan model untuk memudahkan Anda membuat model pembelajaran mesin.
Buat konteks ML.NET
MLContext adalah titik awal untuk semua operasi ML.NET. MLContext
digunakan untuk semua aspek pembuatan dan penggunaan model ML.NET. Konsepnya mirip dengan DbContext
dalam Entity Framework.
var mlContext = new MLContext();
Setelah memiliki contoh MLContext
, Anda dapat memuat dan mengubah data, memilih algoritme terbaik untuk tugas pembelajaran mesin, melatih model Anda. Setelah dilatih, Anda dapat menguji model untuk akurasi, menyimpannya ke disk, dan menggunakannya untuk membuat prediksi. MLContext
dapat diinisialisasi dari model yang sebelumnya disimpan ke disk.
Muat data
Pembelajaran mesin menggunakan data yang diketahui (misalnya, data pelatihan) untuk menemukan pola guna membuat prediksi pada data baru yang tidak diketahui.
Input untuk pembelajaran mesin disebut Fitur, yang merupakan atribut yang digunakan untuk membuat prediksi. Output pembelajaran mesin disebut Label, yang merupakan prediksi aktual.
Data dalam ML.NET dinyatakan sebagai IDataView, yang merupakan cara yang fleksibel dan efisien untuk menjelaskan data tabular (misalnya, baris dan kolom). Objek IDataView dapat berisi angka, teks, boolean, vektor, dan lainnya. Anda dapat memuat data dari file atau dari sumber streaming real-time ke IDataView.
LoadFromTextFile
memungkinkan Anda memuat data dari format TXT, CSV, TSV, dan file lainnya.
IDataView trainingData = mlContext.Data
.LoadFromTextFile<SentimentInput>(dataPath, separatorChar: ',', hasHeader: true);
LoadFromEnumerable
memungkinkan pemuatan dari koleksi dalam memori, JSON/XML, database relasi dan non-relasi (misalnya, SQL, CosmosDB, MongoDB), dan banyak sumber data lainnya.
IDataView trainingData = mlContext.Data
.LoadFromEnumerable<SentimentInput>(inMemoryCollection);
Ubah data
Biasanya, data yang Anda miliki tidak cocok untuk digunakan secara langsung untuk melatih model pembelajaran mesin. Data mentah perlu diproses sebelumnya menggunakan transformasi data.
Transformer mengambil data, mengerjakannya, dan mengembalikan data baru yang telah diubah.
Terdapat kumpulan transformasi data bawaan untuk mengganti nilai yang hilang, konversi data, menampilkan teks, dan banyak lagi.
// Convert sentiment text into numeric features
IEstimator<ITransformer> dataTransformPipeline = mlContext.Transforms.Text
.FeaturizeText("Features", "SentimentText");
Pilih algoritma
Saat menggunakan pembelajaran mesin dan ML.NET, Anda harus memilih tugas pembelajaran mesin yang sesuai dengan skenario Anda. ML.NET menawarkan lebih dari 30 algoritma (atau pelatih) untuk berbagai tugas ML:
Tugas ML | Algoritma |
---|---|
Klasifikasi biner (misalnya, analisis sentimen) | AveragedPerceptronTrainer, SdcaLogisticRegressionBinaryTrainer |
Klasifikasi multi-kelas (misalnya, kategorisasi topik) | LightGbmMulticlassTrainer, OneVersusAllTrainer |
Regresi (misalnya, prediksi harga) | LbfgsPoissonRegressionTrainer, FastTreeRegressionTrainer |
Pengklusteran (misalnya, segmentasi pelanggan) | KMeansTrainer |
Deteksi Anomali (misalnya, deteksi lonjakan penjualan sampo) | RandomizedPcaTrainer |
Rekomendasi (misalnya, rekomendasi film) | MatriksFactorizationTrainer |
Peringkat (misalnya, hasil pencarian) | LightGbmRankingTrainer, FastTreeRankingTrainer |
IEstimator<ITransformer> trainer = mlContext.BinaryClassification.Trainers
.AveragedPerceptron(labelColumnName: "Sentiment", featureColumnName: "Features"));
IEstimator<ITransformer> trainingPipeline = dataTransformPipeline.Append(trainer);
Latih model
Transformasi dan algoritma data yang telah Anda tentukan tidak dijalankan hingga Anda memanggil metode Fit()
(karena pendekatan pemuatan ML.NET yang malas). Ini adalah ketika pelatihan model terjadi.
Estimator mengambil data, mempelajari dari data, dan membuat transformator. Dalam hal pelatihan model, data pelatihan adalah input, dan model yang dilatih adalah output; dengan demikian, model yang dilatih adalah transformator yang mengubah Fitur input dari data baru menjadi prediksi output.
ITransformer model = pipeline.Fit(trainingData);
Evaluasi model
ML.NET menawarkan evaluator yang menilai performa model Anda pada berbagai metrik:
- Akurasi
- Area di bawah kurva (AUC)
- R-Squared
- Akar Kuadrat dari Rata-rata Kuadrat Galat (RMSE)
// Make predictions on test data
IDataView predictions = model.Transform(testDataView);
// Evaluate model and return metrics
var metrics = mlContext.BinaryClassification
.Evaluate(predictions, labelColumnName: "Sentiment");
// Print out accuracy metric
Console.WriteLine("Accuracy" + metrics.Accuracy);
Sebarkan & gunakan model
Anda dapat menyimpan model terlatih sebagai file biner, yang kemudian terintegrasi ke dalam aplikasi .NET Anda.
mlContext.Model.Save(model, trainingData, "model.zip");
Setelah menyimpan model yang dilatih, Anda dapat memuat model di aplikasi .NET lainnya.
MLContext mlContext = new MLContext();
DataViewSchema predictionPipelineSchema;
ITransformer trainedModel = mlContext.Model.Load("model.zip", out predictionPipelineSchema);
Anda kemudian dapat menggunakan model yang dimuat untuk mulai membuat prediksi. Anda dapat menggunakan Mesin Prediksi, yang merupakan API kemudahan yang digunakan untuk membuat prediksi tunggal, atau metode Transformasi, yang digunakan untuk membuat prediksi batch.
var predEngine = mlContext.Model.CreatePredictionEngine(model);
SentimentInput sampleComment = new SentimentInput{ SentimentText = "This is very rude!" };
SentimentOutput result = predEngine.Predict(sampleComment);
Console.WriteLine(result.Prediction);
Tanya Jawab Umum ML.NET
Untuk apa ML.NET digunakan?
ML.NET adalah kerangka kerja pembelajaran mesin untuk pengembang .NET; Anda dapat menggunakan ML.NET untuk mengintegrasikan model pembelajaran mesin kustom ke aplikasi .NET. Anda dapat menggunakan ML.NET untuk berbagai skenario, seperti analisis sentimen, prediksi harga, rekomendasi produk, perkiraan penjualan, klasifikasi gambar, deteksi objek, dan banyak lagi! Lihat repo sampel GitHub kami untuk mendapatkan contoh lainnya tentang apa yang dapat Anda lakukan dengan ML.NET.
Apa perbedaan antara AI dan pembelajaran mesin?
AI adalah cabang komputasi yang melibatkan pelatihan komputer untuk melakukan hal-hal yang biasanya membutuhkan kecerdasan manusia. Pembelajaran mesin adalah bagian dari AI yang melibatkan komputer yang belajar dari dan menemukan pola dalam data agar kemudian dapat membuat prediksi pada data baru sendiri.
Mengapa saya memerlukan ML.NET dan bagaimana ML.NET berbeda dari penawaran AI/ML Microsoft lainnya?
Microsoft menawarkan banyak produk dan layanan AI dan ML, jadi berikut adalah uraian perbedaan di antara keduanya:
- ML.NET: Bangun solusi pembelajaran mesin kustom dan integrasikan ke dalam aplikasi .NET Anda.
- Azure Cognitive Services: Layanan cloud yang menyediakan model AI dan pembelajaran mesin bawaan untuk ditambahkan ke aplikasi Anda. Menyertakan sekumpulan API untuk menggunakan berbagai model untuk metode komunikasi alami dengan visi dan ucapan.
- Azure Machine Learning: Lingkungan komprehensif di cloud untuk menghosting siklus hidup model ML ujung ke ujung Anda termasuk pelatihan model, penerapan versi, penyebaran, dan manajemen rilis pada skala cloud.
Jenis aplikasi apa yang dapat saya sebarkan model ML.NET?
Anda dapat menggunakan ML.NET dengan hampir semua aplikasi .NET, termasuk aplikasi dan layanan web, Layanan Mikro/Kontainer, aplikasi desktop (WPF dan WinForms), Azure Functions, dan jenis aplikasi sisi server Azure, serta aplikasi konsol.
Kerangka kerja apa yang dapat saya gunakan dengan ML.NET?
ML.NET didukung di .NET, .NET Core (versi 2.0 dan yang lebih baru) dan .NET Framework (versi 4.6.1 dan yang lebih baru).
Arsitektur proses apa yang didukung oleh ML.NET?
ML.NET saat ini didukung pada proses x64 dan x86.
OS apa yang dapat saya gunakan dengan ML.NET?
ML.NET bersifat lintas platform, sehingga didukung di Windows, Linux, dan macOS.
Apakah ML.NET gratis?
Ya! Seperti platform .NET lainnya, ML.NET 100% gratis. Untuk informasi selengkapnya, lihat .NET gratis. ML.NET dilisensikan di bawah lisensi MIT.
Bahasa pemrograman apa yang terbaik untuk ML.NET?
ML.NET saat ini didukung untuk C# dan F#.
Bagaimana cara mempelajari ML.NET?
Anda dapat memulai ML.NET dengan tutorial ini, atau Anda dapat melihat Dokumen ML.NET untuk mempelajari lebih lanjut.
Bagaimana cara menginstal ML.NET?
Anda dapat menambahkan ML.NET ke proyek .NET apa pun dengan menambahkan paket NuGet Microsoft.ML, atau Anda dapat memulai dengan Model ML.NET Builder (Windows) atau ML.NET CLI (Windows, macOS, dan Linux).
Siap untuk memulai?
Tutorial langkah demi langkah kami akan membantu Anda menjalankan ML.NET di komputer.