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() 를 호출하여 예측
Machine Learning Model?
기계 학습에서 모델은 예측 또는 분류와 같은 결과에 도달하기 위해 입력 데이터를 학습하고 있는 개체
가장 기본적인 모델은 위의 주택 가격 예에서와 같이 하나의 지속적인 수량이 다른 것과 비례하는 2차원 선형 회귀이다.
모델은 단순히 이다. 매개 변수 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
'Data Science > Machine Learning' 카테고리의 다른 글
[스크랩] 상품(콘텐츠) 추천 기능 구현하기: (3) 고객 취향 사로잡기 (0) | 2022.03.16 |
---|---|
게임 개발에서 인공지능(AI)을 활용되는 사례 (0) | 2022.02.16 |
C/C++ Machine Learning Library Top 10 (0) | 2022.01.26 |
비지도학습 : DBSCAN (0) | 2022.01.25 |
머신러닝 분류 : 강화학습 (0) | 2022.01.25 |
최근댓글