모델 빌더를 사용하여 다중 클래스 분류 모델을 빌드하여 건강 검사 중에 발견된 레스토랑 위반의 위험 수준을 분류하는 방법을 알아봅니다.
이 튜토리얼에서는 다음을 배우게 됩니다:
- 데이터 준비 및 이해
- 모델 작성기 구성 파일 만들기
- 시나리오 선택
- 데이터베이스에서 데이터 로드
- 모델을 훈련시키다
- 모형 평가하기
- 예측에 모델 사용
필수 조건
필수 구성 요소 및 설치 지침 목록은 모델 작성기 설치 가이드를 참조하세요.
모델 작성기 다중 클래스 분류 개요
이 샘플에서는 Model Builder로 빌드된 기계 학습 모델을 사용하여 상태 위반의 위험을 분류하는 C# 콘솔 애플리케이션을 만듭니다. 이 자습서의 소스 코드는 dotnet/machinelearning-samples GitHub 리포지토리에서 찾을 수 있습니다.
콘솔 애플리케이션 만들기
"RestaurantViolations"라는 C# 콘솔 애플리케이션 을 만듭니다.
데이터 준비 및 이해
기계 학습 모델을 학습하고 평가하는 데 사용되는 데이터 세트는 원래 샌프란시스코 공중 보건 레스토랑 안전 점수부에서 작성되었습니다. 편의를 위해 모델 학습 및 예측과 관련된 열만 포함하도록 데이터 세트가 압축되었습니다. 데이터 세트에 대해 자세히 알아보려면 다음 웹 사이트를 방문하세요.
레스토랑 안전 점수 데이터 세트를 다운로드 하고 압축을 풉니다.
데이터 세트의 각 행에는 보건부에서 검사하는 동안 관찰된 위반에 대한 정보와 공중 보건 및 안전에 존재하는 위협에 대한 위험 평가가 포함됩니다.
| 검사 유형 | 위반 설명 | RiskCategory |
|---|---|---|
| 루틴 - 예약되지 않음 | 부적절하게 청소되거나 위생된 식품 접촉 표면 | 보통 위험 |
| 새 소유권 | 위험성이 높은 해충 감염 | 높은 위험 |
| 루틴 - 예약되지 않음 | 닦는 천이 깨끗하지 않거나 제대로 보관되지 않았거나 소독제가 부적절함 | 낮은 위험 |
- 검사 유형: 검사 유형입니다. 이것은 새로운 설립에 대한 첫 번째 검사, 일상적인 검사, 불만 검사 및 기타 많은 유형이 될 수 있습니다.
- ViolationDescription: 검사 중에 발견된 위반에 대한 설명입니다.
- RiskCategory: 위반이 공중 보건 및 안전에 초래하는 위험 심각도입니다.
예측하려는 열은 label입니다. 분류 작업을 수행할 때 목표는 범주(텍스트 또는 숫자)를 할당하는 것입니다. 이 분류 시나리오에서 위반의 심각도에는 낮은, 보통 또는 높은 위험의 값이 할당됩니다. 따라서 RiskCategory 는 레이블입니다. 모델에게 features을 제공하여 label을 예측하게 하는 입력입니다. 이 경우 InspectionType 및 ViolationDescription 은 RiskCategory를 예측하는 기능 또는 입력으로 사용됩니다.
모델 작성기 구성 파일 만들기
솔루션에 모델 작성기를 처음 추가하면 mbconfig 파일을 생성하라는 메시지가 표시됩니다. 이 파일은 mbconfig 세션을 다시 열 수 있도록 Model Builder에서 수행하는 모든 작업을 추적합니다.
- 솔루션 탐색기에서 RestaurantViolations 프로젝트를 마우스 오른쪽 단추로 클릭하고Machine Learning 모델추가>를 선택합니다.
- 프로젝트 이름을
mbconfigRestaurantViolationsPrediction으로 지정하고 추가 단추를 클릭합니다.
시나리오 선택
모델을 학습하려면 Model Builder에서 제공하는 사용 가능한 기계 학습 시나리오 목록에서 선택합니다. 이 경우 시나리오는 데이터 분류입니다.
- 이 샘플의 경우 작업은 다중 클래스 분류입니다. 모델 작성기의 시나리오 단계에서 데이터 분류 시나리오를 선택합니다.
데이터 로드
Model Builder는 SQL Server 데이터베이스 또는 로컬 파일의 데이터를 csv, tsv, 및 txt 형식으로 허용합니다.
- 모델 작성기 도구의 데이터 단계에서 데이터 원본 형식 선택에서 SQL Server 를 선택합니다.
-
데이터 원본 선택 단추를 선택합니다.
- 데이터 원본 선택 대화 상자에서 Microsoft SQL Server 데이터베이스 파일을 선택합니다.
- [항상 사용] 선택 확인란의 선택을 취소하고 [계속]을 클릭합니다.
- 연결 속성 대화 상자에서 찾아보기를 선택하고 다운로드한 RestaurantScores.mdf 파일을 선택합니다.
- 확인을 선택합니다.
- 테이블 드롭다운에서 위반을 선택합니다.
- 열에서 RiskCategory를 선택하여 예측(레이블) 드롭다운을 선택합니다.
- 기본 선택 영역은 고급 데이터 옵션에 그대로 둡니다.
- 다음 단계 단추를 클릭하여 모델 빌더에서 학습 단계로 이동합니다.
모델을 훈련시키다
이 자습서에서 문제 분류 모델을 학습하는 데 사용되는 기계 학습 작업은 다중 클래스 분류입니다. 모델 학습 프로세스 중에 Model Builder는 다양한 다중 클래스 분류 알고리즘 및 설정을 사용하여 별도의 모델을 학습하여 데이터 세트에 가장 적합한 모델을 찾습니다.
모델이 학습하는 데 필요한 시간은 데이터 양에 비례합니다. 모델 작성기에서는 데이터 원본의 크기에 따라 학습할 시간(초) 의 기본값을 자동으로 선택합니다.
- 모델 작성기에서 학습할 시간(초) 의 값을 60초로 설정합니다. 더 오랜 시간 동안 학습하면 모델 작성기에서 더 많은 수의 알고리즘과 매개 변수 조합을 탐색하여 최상의 모델을 검색할 수 있습니다.
- 학습 시작을 클릭합니다.
학습 프로세스 전체에서 진행률 데이터는 학습 단계의 Training results 섹션에 표시됩니다.
- 상태는 학습 프로세스의 완료 상태를 표시합니다.
- 최고의 정확도는 지금까지 모델 작성기에서 찾은 최상의 성능 모델의 정확도를 표시합니다. 정확도가 높을수록 모델이 테스트 데이터에 대해 더 정확하게 예측됩니다.
- 최상의 알고리즘은 지금까지 모델 작성기에서 찾은 가장 성능이 뛰어난 알고리즘의 이름을 표시합니다.
- 마지막 알고리즘은 모델 작성기에서 모델을 학습시키는 데 가장 최근에 사용한 알고리즘의 이름을 표시합니다.
학습이 완료되면 mbconfig 파일에는 학습 후 호출 RestaurantViolationsPrediction.zip 된 모델과 두 개의 C# 파일이 생성됩니다.
- RestaurantViolationsPrediction.consumption.cs: 이 파일에는 모델을 로드하고 이를 사용하여 예측 엔진을 만들고 예측을 반환하는 공용 메서드가 있습니다.
- RestaurantViolationsPrediction.training.cs: 이 파일은 모델 작성기에서 사용한 하이퍼 매개 변수를 포함하여 최상의 모델을 빌드하기 위해 마련한 학습 파이프라인으로 구성됩니다.
다음 단계 단추를 클릭하여 평가 단계로 이동합니다.
모형 평가하기
학습 단계의 결과는 최상의 성능을 가진 하나의 모델이 됩니다. 모델 작성기 도구의 평가 단계에서 최적 모델 섹션의 모델 항목에서 가장 성능이 뛰어난 모델에서 사용하는 알고리즘과 정확도의 해당 모델에 대한 메트릭이 포함됩니다.
또한 Visual Studio의 출력 창에는 상위 모델 및 해당 메트릭을 포함하는 요약 테이블이 있습니다.
또한 이 섹션에서는 단일 예측을 수행하여 모델을 테스트할 수 있습니다. 값을 입력하는 텍스트 상자를 제공하고 예측 단추를 클릭하여 최상의 모델에서 예측을 가져올 수 있습니다. 기본적으로 데이터 세트의 임의 행으로 채워집니다.
(선택 사항) 모델 활용
이 단계에는 모델을 사용하는 데 사용할 수 있는 프로젝트 템플릿이 있습니다. 이 단계는 선택 사항이며 모델을 제공하는 방법에 대한 요구 사항에 가장 적합한 방법을 선택할 수 있습니다.
- 콘솔 앱
- 인터넷 응용 프로그램 인터페이스
콘솔 앱
솔루션에 콘솔 앱을 추가할 때 프로젝트 이름을 지정하라는 메시지가 표시됩니다.
콘솔 프로젝트의 이름을 RestaurantViolationsPrediction_Console로 지정하십시오.
솔루션에 추가를 클릭하여 현재 솔루션에 프로젝트를 추가합니다.
애플리케이션을 실행합니다.
프로그램에서 생성한 출력은 아래 코드 조각과 유사해야 합니다.
InspectionType: Routine - Unscheduled ViolationDescription: Moderate risk food holding temperature Predicted RiskCategory: Moderate Risk
인터넷 응용 프로그램 인터페이스
솔루션에 웹 API를 추가할 때 프로젝트 이름을 지정하라는 메시지가 표시됩니다.
Web API 프로젝트의 이름을 RestaurantViolationsPrediction_API.
솔루션에 추가*를 클릭하여 현재 솔루션에 프로젝트를 추가합니다.
애플리케이션을 실행합니다.
PowerShell을 열고 PORT가 애플리케이션이 수신 대기 중인 포트인 경우 다음 코드를 입력합니다.
$body = @{ InspectionType="Reinspection/Followup" ViolationDescription="Inadequately cleaned or sanitized food contact surfaces" } Invoke-RestMethod "https://localhost:<PORT>/predict" -Method Post -Body ($body | ConvertTo-Json) -ContentType "application/json"성공하면 출력은 아래 텍스트와 유사하게 표시됩니다. 출력에는 예측된 RiskCategory 가 보통 위험 으로 있으며, 낮은 위험, 높은 위험 및 보통 위험과 같은 각 입력 레이블의 점수가 있습니다.
prediction score ---------- ----- Moderate Risk {0.055566575, 0.058012854, 0.88642055}
축하합니다! 보건 위반의 위험을 분류하는 기계 학습 모델을 Model Builder를 사용하여 성공적으로 구축했습니다. 이 자습서의 소스 코드는 dotnet/machinelearning-samples GitHub 리포지토리에서 찾을 수 있습니다.
추가 리소스
이 자습서에서 언급한 항목에 대해 자세히 알아보려면 다음 리소스를 방문하세요.
.NET