자습서: Model Builder에서 회귀를 사용하여 가격 예측

ML.NET 모델 작성기 빌드를 사용하여 가격을 예측하기 위한 회귀 모델을 빌드하는 방법을 알아봅니다. 이 자습서에서 개발하는 .NET 콘솔 앱은 뉴욕의 과거 택시 요금 데이터를 기반으로 택시 요금을 예측합니다.

모델 작성기 가격 예측 템플릿은 숫자 예측 값이 필요한 모든 시나리오에 사용할 수 있습니다. 예제 시나리오에는 집값 예측, 수요 예측 및 판매 예측 등이 있습니다.

이 자습서에서는 다음과 같은 작업을 수행하는 방법을 살펴봅니다.

  • 데이터 준비 및 이해
  • Model Builder 구성 파일 만들기
  • 시나리오 선택
  • 데이터 로드
  • 모델 학습
  • 모델 평가
  • 예측에 모델 사용

필수 구성 요소

필수 구성 요소 및 설치 지침 목록을 보려면 모델 작성기 설치 가이드를 방문하세요.

콘솔 애플리케이션 만들기

  1. "TaxiFarePrediction"이라는 C# .NET Core Console 애플리케이션을 만듭니다. 동일한 디렉터리에 솔루션과 프로젝트 배치선택 해제되어 있는지 확인합니다(VS 2019).

데이터 준비 및 이해

  1. 프로젝트에 Data라는 디렉터리를 만들어 데이터 세트 파일을 저장합니다.

  2. 기계 학습 모델을 교육하고 평가하는 데 사용되는 데이터 세트는 원래 NYC TLC 택시 여행 데이터 세트에서 가져온 것입니다.

    1. 데이터 세트를 다운로드하려면 taxi-fare-train.csv 다운로드 링크로 이동합니다.

    2. 페이지가 로드되면 페이지의 아무 곳이나 마우스 오른쪽 단추로 클릭하고 다른 이름으로 저장을 선택합니다.

    3. 다른 이름으로 저장 대화 상자를 사용하여 이전 단계에서 만든 Data 폴더에 파일을 저장합니다.

  3. 솔루션 탐색기에서 taxi-fare-train.csv 파일을 마우스 오른쪽 단추로 클릭하고 속성을 선택합니다. 고급 아래에서 출력 디렉터리에 복사 값을 변경된 내용만 복사로 변경합니다.

taxi-fare-train.csv 데이터 세트의 각 행에는 택시에서 수행한 주행에 대한 세부 정보가 포함되어 있습니다.

  1. taxi-fare-train.csv 데이터 세트 열기

    제공된 데이터 집합에는 다음과 같은 열이 포함되어 있습니다.

    • vendor_id: 택시 공급업체의 ID가 기능입니다.
    • rate_code: 택시 이동의 요금 유형이 기능입니다.
    • passenger_count: 이동하는 승객 수가 기능입니다.
    • trip_time_in_secs: 이동에 걸린 시간입니다. 이동을 완료하기 전에 이동 요금을 예측하려고 합니다. 해당 시간에는 이동이 얼마나 길지 알지 못합니다. 따라서 이동 시간은 기능이 아니며 모델에서 이 열을 제외합니다.
    • trip_distance: 이동 거리가 기능입니다.
    • payment_type: 결제 방법(현금 또는 신용 카드)이 기능입니다.
    • fare_amount: 지급한 총 택시 요금이 레이블입니다.

label은 예측할 열입니다. 회귀 작업을 수행할 때 목표는 숫자 값을 예측하는 것입니다. 이 가격 예측 시나리오에서는 택시 승차 비용이 예측됩니다. 따라서 fare_amount는 레이블입니다. 식별된 featureslabel 예측을 위해 모델에 제공하는 입력입니다. 이 경우에 trip_time_in_secs를 제외한 나머지 열은 요금을 예측하는 기능 또는 입력으로 사용됩니다.

Model Builder 구성 파일 만들기

솔루션에 Model Builder를 처음 추가하는 경우 mbconfig 파일을 만들라는 메시지가 표시됩니다. mbconfig 파일은 세션을 다시 열 수 있도록 Model Builder에서 사용자가 수행하는 모든 작업을 추적합니다.

  1. 솔루션 탐색기에서 TaxiFarePrediction 프로젝트를 마우스 오른쪽 단추로 클릭하고 추가>Machine Learning Model... 을 선택합니다.
  2. mbconfig 프로젝트 이름을 TaxiFarePrediction으로 지정하고 추가 단추를 클릭합니다.

시나리오 선택

모델 작성기 시나리오 화면

모델을 학습하려면 모델 작성기에서 제공하는 사용 가능한 기계 학습 시나리오 목록에서 선택해야 합니다. 이 경우에 시나리오는 Value prediction입니다.

  1. Model Builder 도구의 시나리오 단계에서 값 예측 시나리오를 선택합니다.

환경 선택

Model Builder는 선택한 시나리오에 따라 다른 환경에 대한 학습을 실행할 수 있습니다.

  1. Local (CPU) 항목이 선택되었는지 확인하고 다음 단계 단추를 클릭합니다.

데이터 로드

모델 작성기는 SQL Server 데이터베이스 또는 로컬 파일 csv 또는 tsv 형식의 두 가지 소스에서 데이터를 허용합니다.

  1. Model Builder 도구 데이터 단계의 데이터 원본 유형 선택에서 파일을 선택합니다.
  2. 텍스트 상자 옆에 있는 찾아보기 단추를 선택하고 파일 탐색기를 사용하여 데이터 디렉터리에서 taxi-fare-test.csv를 선택합니다.
  3. 예측할 열(레이블) 드롭다운에서 fare_amount를 선택합니다.
  4. 고급 데이터 옵션 링크를 클릭합니다.
  5. 열 설정 탭에서 trip_time_in_secs 열의 목적 드롭다운을 선택한 다음 무시를 선택하여 학습 중에 기능으로 제외합니다. 저장 단추를 클릭하여 대화 상자를 닫습니다.
  6. 다음 단계 단추를 클릭합니다.

모델 학습

이 자습서에서 가격 예측 모델을 학습하는 데 사용되는 기계 학습 작업은 회귀입니다. 모델 학습 프로세스 중에 모델 작성기는 다른 회귀 알고리즘 및 설정을 통해 개별 모델을 학습하여 데이터 세트에 가장 적합한 모델을 찾습니다.

모델을 학습하는 데 필요한 시간은 데이터 양에 비례합니다. 모델 작성기는 데이터 소스의 크기에 따라 학습 시간(초) 의 기본값을 자동으로 선택합니다.

  1. 더 긴 학습 시간을 원하지 않는다면 학습 시간(초)의 기본값을 그대로 둡니다.
  2. 학습 시작을 선택합니다.

학습 프로세스 전체에서 진행률 데이터는 학습 단계의 Training results 섹션에 표시됩니다.

  • 상태는 학습 프로세스의 완료 상태를 표시합니다.
  • 최상의 정확도는 지금까지 Model Builder에서 찾은 가장 성능이 뛰어난 모델의 정확도를 표시합니다. 더 높은 정확도는 테스트 데이터에서 모델이 더 정확하게 예측된다는 것을 의미합니다.
  • 최상의 알고리즘은 지금까지 Model Builder에서 찾은 가장 성능이 뛰어난 알고리즘의 이름을 표시합니다.
  • 마지막 알고리즘은 모델 작성기에서 모델을 학습시키는 데 가장 최근에 사용한 알고리즘의 이름을 표시합니다.

학습이 완료되면 mbconfig 파일에는 학습 후 생성된 TaxiFarePrediction.zip이라는 모델이 있으며 여기에는 다음과 같은 C# 파일 2개가 포함됩니다.

  • TaxiFare.consumption.cs: 이 파일에는 모델을 로드하고 이를 사용하여 예측 엔진을 만든 다음 예측을 반환하는 public 메서드가 있습니다.
  • TaxiFare.training.cs: 이 파일은 사용된 하이퍼 매개 변수를 포함해 최상의 모델을 빌드하기 위해 Model Builder를 동반하는 학습 파이프라인으로 구성됩니다.

평가 단계로 이동하려면 다음 단계 단추를 클릭합니다.

모델 평가

학습 단계의 결과는 최상의 성능을 가진 하나의 모델이 됩니다. Model Builder 도구의 평가 단계에서 최상의 모델 섹션에는 가장 성능이 좋은 모델에 사용되는 알고리즘과 더불어 해당 모델의 RSquared에 관한 메트릭이 포함됩니다.

또한 Visual Studio의 출력 창에는 상위 모델 및 메트릭이 포함된 요약 테이블이 있습니다.

이 섹션에서는 단일 예측을 수행하여 모델을 테스트할 수도 있습니다. 값을 입력하는 텍스트 상자가 제공되며 예측 단추를 클릭하여 최상의 모델에서 예측을 도출할 수 있습니다. 기본적으로 이 상자는 데이터 세트에 있는 임의의 행으로 채워집니다.

정확도 메트릭에 만족하지 않는 경우 모델 정확도를 개선하기 위한 몇 가지 쉬운 방법은 모델을 학습하거나 더 많은 데이터를 사용하기 위한 시간을 늘리는 것입니다. 그렇지 않으면 다음 단계를 클릭하여 사용 단계로 이동합니다.

(선택 사항) 모델 사용

이 단계에는 모델을 사용하는 데 사용할 수 있는 프로젝트 템플릿이 포함됩니다. 이 단계는 선택 사항이며 필요에 가장 적합한 모델 제공 방법을 선택할 수 있습니다.

  • 콘솔 앱
  • Web API

콘솔 앱

솔루션에 콘솔 앱을 추가하는 경우 프로젝트의 이름을 지정하라는 메시지가 표시됩니다.

  1. 콘솔 프로젝트의 이름을 TaxiFare_Console로 지정합니다.

  2. 솔루션에 추가를 클릭하여 현재 솔루션에 프로젝트를 추가합니다.

  3. 애플리케이션을 실행합니다.

    프로그램에서 생성된 출력은 아래 코드 조각과 유사해야 합니다.

    Predicted Fare: 15.020833
    

Web API

솔루션에 웹 API를 추가하는 경우 프로젝트의 이름을 지정하라는 메시지가 표시됩니다.

  1. Web API 프로젝트의 이름을 TaxiFare_API로 지정합니다.

  2. 솔루션에 추가*를 클릭하여 현재 솔루션에 프로젝트를 추가합니다.

  3. 애플리케이션을 실행합니다.

  4. PowerShell을 열고 PORT가 애플리케이션이 수신 대기 중인 포트인 경우 다음 코드를 입력합니다.

    $body = @{
        Vendor_id="CMT"
        Rate_code=1.0
        Passenger_count=1.0
        Trip_distance=3.8
        Payment_type="CRD"
    }
    
    Invoke-RestMethod "https://localhost:<PORT>/predict" -Method Post -Body ($body | ConvertTo-Json) -ContentType "application/json"
    
  5. 성공하면 출력이 아래 텍스트와 같이 표시됩니다.

    score
    -----
    15.020833
    

다음 단계

본 자습서에서는 다음 작업에 관한 방법을 학습했습니다.

  • 데이터 준비 및 이해
  • 시나리오 선택
  • 데이터 로드
  • 모델 학습
  • 모델 평가
  • 예측에 모델 사용

추가 리소스

이 자습서에서 언급한 항목에 대한 자세한 내용은 다음 리소스를 참조하세요.