728x90

What is ML.NET?

ML.NET은 마이크로소프트의 .NET 애플리케이션에 기계 학습(Machine Learning)을 구현할 수 있는 라이브러리이다.

ML.NET를 사용하면 알고리즘을 지정하여 사용자 지정 모델을 학습하거나 미리 학습된 TensorFlow 및 ONNX 모델을 가져올 수 있다. 

Code Example

집 크기(HouseData.Size) 및 가격(HouseData.Price) 데이터를 사용하여 주택 가격을 예측하도록 선형 회귀 모델

 using System;
   using Microsoft.ML;
   using Microsoft.ML.Data;

   class Program
   {
       public class HouseData
       {
           public float Size { get; set; }    //[Feature] 집 크기
           public float Price { get; set; }   //[Label] 집 가격
       }

       public class Prediction
       {
           [ColumnName("Score")]
           public float Price { get; set; }
       }

       static void Main(string[] args)
       {
           MLContext mlContext = new MLContext();

           // 1. Import or create training data
           HouseData[] houseData = {
               new HouseData() { Size = 1.1F, Price = 1.2F },
               new HouseData() { Size = 1.9F, Price = 2.3F },
               new HouseData() { Size = 2.8F, Price = 3.0F },
               new HouseData() { Size = 3.4F, Price = 3.7F } };
           IDataView trainingData = mlContext.Data.LoadFromEnumerable(houseData);

           // 2. Specify data preparation and model training pipeline
           var pipeline = mlContext.Transforms.Concatenate("Features", new[] { "Size" })
               .Append(mlContext.Regression.Trainers.Sdca(labelColumnName: "Price", maximumNumberOfIterations: 100));

           // 3. Train model
           var model = pipeline.Fit(trainingData);

           // 4. Make a prediction
           var size = new HouseData() { Size = 2.5F };
           var price = mlContext.Model.CreatePredictionEngine<HouseData, Prediction>(model).Predict(size);

           Console.WriteLine($"Predicted price for size: {size.Size*1000} sq ft= {price.Price*100:C}k");

           // Predicted price for size: 2500 sq ft= $261.98k
       }
   }

 

Code Flow

  • 학습 데이터를 수집하여 IDataView 개체로 로드
  • 기능을 추출하고 기계 학습 알고리즘을 적용할 작업 파이프라인 지정
  • 파이프라인에서 Fit() 를 호출하여 모델 학습
  • 모델을 평가하고 반복하여 개선
  • 애플리케이션에서 사용할 수 있도록 모델을 이진 형식으로 저장
  • 모델을 ITransformer 개체로 다시 로드
  • CreatePredictionEngine.Predict() 를 호출하여 예측

ML.NET Code Flow

Machine Learning Model?

기계 학습에서 모델은 예측 또는 분류와 같은 결과에 도달하기 위해 입력 데이터를 학습하고 있는 개체

가장 기본적인 모델은 위의 주택 가격 예에서와 같이 하나의 지속적인 수량이 다른 것과 비례하는 2차원 선형 회귀이다.

House Price의 선형 회귀 예시

모델은 단순히 이다. 매개 변수 b  w는 쌍 세트(크기, 가격)에 줄을 맞춰 추정된다. 모델의 매개 변수를 찾는 데 사용되는 데이터를 학습 데이터 라고 한다. 이 기계 학습 모델의 입력을 특성(feature) 이라고 한다. 이 예제에서는 가 유일한 특성이다. 기계 학습 모델을 학습하는 데 사용하는 실측 자료(ground-truth) 값은 레이블(Lable) 이라고 한다. 여기에서는 학습 데이터 세트의  값이 레이블이다. 

 

ML.NET Architecture

ML.NET 애플리케이션은 MLContext 개체로 시작되며, MLContext는 데이터 로드 및 저장, 변환, 트레이닝, 모델 작동을 위한 팩토리 클래스이다.

용도 Class MLContext 속성
데이터 로드 및 저장 DataOperationsCatalog MLContext.Data
데이터 준비 TransformsCatalog MLContext.Transforms
학습 알고리즘    
- 이진 분류 BinaryClassificationCatalog MLContext.BinaryClassification
- 다중 클래스 분류 MulticlassClassificationCatalog MLContext.MulticlassClassification
- 변칙 검색 AnomalyDetectionCatalog MLContext.AnomalyDetection
- 클러스터링 ClusteringCatalog MLContext.Clustering
- 예측 ForecastingCatalog MLContext.Forecasting
- 순위 지정 RankingCatalog MLContext.Ranking
- 재발 RegressionCatalog MLContext.Regression
- 권장 RecommendationCatalog Microsoft.ML.Recommender NuGet 패키지를 추가
- TimeSeries TimeSeriesCatalog Microsoft.ML.TimeSeries NuGet 패키지를 추가
모델 사용 ModelOperationsCatalog MLContext.Data

 


<참고자료>

Microsoft - ML.NET은 무엇이며 어떻게 작동하나요?

https://docs.microsoft.com/ko-kr/dotnet/machine-learning/how-does-mldotnet-work

728x90
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기
반응형