ML 모델을 모니터링하는 이유는 무엇입니까? 기계 학습 프로젝트는 반복 프로세스입니다. Jupyter 노트북 내부의 성공적인 모델에서만 멈추지 않습니다. 모델이 온라인 상태 인 후에도 멈추지 않으며 사람들은 액세스 할 수 있습니다. 배치 후에도 개발 단계에서와 마찬가지로 작동하도록 지속적으로 꼭대기를해야합니다.
드리프트 감지 :
교육 데이터와 생산 데이터 간의 데이터 분포 변경을 감지합니다.성능 추정 :
즉각적인 근거 진실없이 생산의 모델 성능을 추정합니다. 자동화 된보고 :배포 된 모델 건강 및 성능에 대한 보고서를 생성합니다. Alerting System :
데이터 드리프트 및 성능 문제에 대한 경고를 제공합니다.모델 공정성 평가 :
편견을 방지하기위한 모델 공정성을 모니터링합니다 ML 프레임 워크와의 호환성 :이러한 문제를 해결 한 후 새로운 로봇 배치를 출시합니다. 그러나 몇 주 안에 비슷한 불만이 발생합니다. 당황하면서 우리는 더 깊이 파고 목표가 사용자로 자주 대체되었음을 알게됩니다.
.컨셉 드리프트
. 기계 학습 용어에서는 입력 변수와 대상 결과 사이의 관계가 변경 될 때 개념 드리프트가 발생합니다. 우리의 로봇의 경우, 새로운 유형의 대상은 이제 기계 학습 모델이 데이터의 역학을 크게 훈련시킬 때 조정 해야하는 것처럼, 다르게 촬영에 적응해야한다는 것을 의미했습니다..
3. 발행 해상도
데이터 재조정 :
기능 엔지니어링 : 처음부터 재교육하는 대신 일부 모델은 최근 데이터 세트에서 미세 조정할 수 있습니다. 이것은 딥 러닝 및 생성 모델과 잘 어울립니다.
신용 스코어링 모델 :
경제 변화는 사람들의 지출과 신용 습관을 바꿉니다. 신용 점수 모델이 적응하지 않으면 정당화되지 않은 거부 또는 위험한 승인으로 이어질 수 있습니다.
건강 모니터링 시스템 :
의 예입니다.
그러한 경우, 모델이 잘 수행되는지 확인하기 위해 지상 진실을 이용할 때까지 기다리는 데 너무 많은 비용이 듭니다. 따라서 ML 엔지니어는 모델 성능이없는 모델 성능을 추정하는 방법이 필요합니다. CBPE 또는 DLE와 같은 알고리즘이 들어 오는 곳입니다 (나중에 자세히 설명).
2. 근본 원인 분석
모델 재교육 : 더 비싼 방법은 새로운 데이터로 모델을 재교육하여 정확한 상태를 유지하는 것입니다. 이것은 데이터와 개념 드리프트 모두에 적합합니다
모델 미세 조정 : 이상 탐지 :
import warnings import matplotlib.pyplot as plt import numpy as np import pandas as pd import seaborn as sns import xgboost as xgb from sklearn.model_selection import train_test_split from sklearn.preprocessing import OneHotEncoder warnings.filterwarnings("ignore")
dataset_link = "https://raw.githubusercontent.com/BexTuychiev/medium_stories/master/2024/1_january/4_intro_to_nannyml/diamonds_special.csv" diamonds_special = pd.read_csv(dataset_link) diamonds_special.head()
참고 :
"코드 설명"버튼을 사용하여 함수에 대한 줄별로 설명을 받으십시오. 이제 모델 훈련으로 넘어 가자.
<p>
<is> 이제, 여기에, 이미 튜닝 된 하이퍼 파라미터로 회귀자를 훈련시키는 코드가 있습니다.
</is></p>
<have> Great - 우리는 유효성 검사 세트에서 RMSE 측면에서 503 $를 달성하는 모델이 있습니다. 테스트 세트에서 모델을 한 번에 평가하겠습니다. <ul>
<li>
<performance> 테스트 성능은 551 $입니다. 충분합니다. <enough>
<set> 참조 세트 생성
이 시점까지 모든 것이 매우 간단했습니다. 이제 우리는 기본 부분으로 왔습니다 - 참조 및 분석 세트를 작성합니다.
<is> 참조 세트는 모델 모니터링 컨텍스트에 사용되는 테스트 세트의 또 다른 이름입니다. Nannyml은 테스트 세트에서 모델의 성능을 생산 성능의 기준으로 사용합니다. 참조 세트에는 특징과는 별도로 두 개의 열이 있어야합니다.<ul>
대상 자체 - 지상 진실 - 다이아몬드 가격 <li>
<pred> 테스트 예측 - 우리는 y_test_pred 로 생성되었습니다
</pred>
</li>
<our> 지금, 우리의 테스트 세트에는 기능과 대상이 포함되어 있지만 y_test_pred가 누락되었습니다 :
<li>
<it> 추가하자 :
</it>
</li>
<will> 이제 테스트 세트의 이름을 참조로 바꿀 것입니다
</will></our>
</ul>
<set> 분석 세트 생성
이 시점에서 회귀자가 클라우드에 배치되었다고 상상해 봅시다. 상상력은 실제로이 기사의 과잉 인 모델을 배포하는 것보다 간단합니다.
<ploy> 우리는 다이아몬드 가격 책정 모델을 배치 한 후 다이아몬드의 대량 배송이 다가오고 있다는 소식을받습니다. 화물이 도착하기 전에, 다이아몬드의 물리적 측정은 우리에게 Prod (여전히 상상하고 있음)로 우리에게 보내져 웹 사이트에서 가격을 창출하고 마케팅을 시작할 수 있습니다. 그래서, 생성합시다. <p>
</p>
<dia> 실제 다이아몬드가 도착하고 인간 전문가가 모델에 의해 생성 된 가격을 확인하기 전에 모델이 잘 수행되는지 확인해야합니다. 우리는 웹 사이트에서 부정확 한 가격으로 다이아몬드를 표시하고 싶지 않습니다. <div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">import warnings
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import seaborn as sns
import xgboost as xgb
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import OneHotEncoder
warnings.filterwarnings("ignore")
</pre><div class="contentsignin">로그인 후 복사</div></div><div class="contentsignin">로그인 후 복사</div></div><div class="contentsignin">로그인 후 복사</div></div>
이를 위해서는 y_prod_pred를 새로운 다이아몬드의 실제 가격 인 지상 진실과 비교하여 모델의 성능을 측정해야합니다. 그러나 가격이 확인되기 전에 우리는 근거 진실을 갖지 않을 것입니다. 따라서 우리는 지상 진실없이 모델의 성능을 추정해야합니다. <p>
이 작업을 수행하려면 Nannyml은 분석 세트가 필요합니다. 모델에 의해 작성된 예측과 함께 생산 데이터를 포함하는 데이터.
<set> 분석 세트 생성은 참조를 작성하는 것과 유사합니다.
</set></p>
<are> 이제, 우리는 회귀 자의 성능을 추정 할 준비가되었습니다. <div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">dataset_link = "https://raw.githubusercontent.com/BexTuychiev/medium_stories/master/2024/1_january/4_intro_to_nannyml/diamonds_special.csv"
diamonds_special = pd.read_csv(dataset_link)
diamonds_special.head()
</pre><div class="contentsignin">로그인 후 복사</div></div><div class="contentsignin">로그인 후 복사</div></div><div class="contentsignin">로그인 후 복사</div></div>
2 단계 : Nannyml의 성능 추정
<lannyml>
직접 손실 추정 (dle) 회귀
신뢰도 기반 성능 추정 (CBPE) 분류
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false"># Extract all feature names
all_feature_names = diamonds_special.drop(["price", "set"], axis=1).columns.tolist()
# Extract the columns and cast into category
cats = diamonds_special.select_dtypes(exclude=np.number).columns
# Define the target column
target = "price"
</pre><div class="contentsignin">로그인 후 복사</div></div>
<the> 우리는 작업에 DLE 알고리즘을 사용합니다. DLE은 근거 진실없이 생산 모델의 성능을 측정하고 RMSE, RMSLE, MAE 등과 같은 다양한 회귀 유사 메트릭을보고 할 수 있습니다.
<le> DLE을 사용하려면 먼저 기준 성능을 설정하기 위해 참조에 적합해야합니다.
nannyml 에서 dle을 사용한 성능 추정
</le></the></lannyml></are></dia></ploy></set></is></set></enough></performance>
</li>
</ul></have>
import warnings import matplotlib.pyplot as plt import numpy as np import pandas as pd import seaborn as sns import xgboost as xgb from sklearn.model_selection import train_test_split from sklearn.preprocessing import OneHotEncoder warnings.filterwarnings("ignore")
reciption_type : 작업은 무엇입니까?
소개에서 언급 한 바와 같이, 생산에서 모델이 실패하는 가장 일반적인 이유 중 하나는 드리프트입니다. 이 섹션에서는 데이터 (기능) 드리프트 감지에 중점을 둘 것입니다.
1. PCA는 참조에 적합하여 더 낮은 차원으로 압축합니다.
이 단계에서는 PCA의 특성으로 인해 원래 데이터 세트에 대한 일부 정보가 손실됩니다.2. 그런 다음 참조 _lower는 원래 차원으로 압축 해제 -ERECTION_RECONSTATION.
- reconstruct_error로 명명되어 있습니다. <_> reconstruct_error는 생산 데이터의 재구성 오류를 비교하기 위해 기준으로 작동합니다.
4. 동일한 감소/재구성 방법이 생산 데이터 배치에 적용됩니다.
import warnings import matplotlib.pyplot as plt import numpy as np import pandas as pd import seaborn as sns import xgboost as xgb from sklearn.model_selection import train_test_split from sklearn.preprocessing import OneHotEncoder warnings.filterwarnings("ignore")
Jensen-Shannen 거리, Hellinger 거리
dataset_link = "https://raw.githubusercontent.com/BexTuychiev/medium_stories/master/2024/1_january/4_intro_to_nannyml/diamonds_special.csv" diamonds_special = pd.read_csv(dataset_link) diamonds_special.head()
<img src="/static/imghw/default1.png" data-src="https://img.php.cn/upload/article/000/000/000/174140252261550.png" class="lazy" alt="Python의 Nannyml을 사용한 엔드 투 엔드 ML 모델 모니터링 워크 플로우" >
<the> 랭커 결과가 나면 Pandas Dataframe이므로 머리를 인쇄 할 수 있습니다.
<p> </p>
<that> 우리는 가장 문제가되는 특징이 색과 깊이라는 것을 알 수 있습니다. 기사를 쓰기 전에 인위적으로 표류하게 한 나라는 날 놀라지 않아야합니다.
<was> 그러나 이것이 실제 시나리오라면, 당신은 이러한 기능에 대한 문제 해결에 일정 시간을 보내고 싶을 것입니다.
<p> 결론
<monitor> 모델 모니터링은 매혹적인 모델을 산산조각 내기 때문에 머신 러닝이 끝났다는 환상을 산산조각냅니다. 지구가 둥글고 사용자 패턴이 바뀌면서 오랫동안 모델은 없어도 모델이 없습니다. 이로 인해 모델 모니터링이 ML 엔지니어의 기술 세트의 중요한 부분이됩니다. </monitor></p>
오늘날 우리는 기본 모델 모니터링 워크 플로를 다루었습니다. 우리는 기본 모니터링 개념에 대해 이야기하면서 시작했습니다. 그런 다음 코드로 헤드 우선으로 뛰어 들었습니다. 데이터를 Nannyml과 호환되는 형식으로 위조했습니다. 추정 모델 성능을위한 첫 번째 플롯을 만들었고, 실현 된 성능과 비교하기 위해 다른 것을 만들었습니다. 성능이 떨어지고 있다는 몇 가지 경고를 받았습니다. 다변량 드리프트 감지로 확인했습니다. 무거운 기능 드리프트를 발견했습니다. 개별 기능 드리프트 감지로 이중 점검; 표류 기능을 식별했습니다. <p>
<we> 불행히도, 우리는 문제 해결에서 바로 중단되었습니다. 워크 플로우 모니터링의 마지막 단계는이 기사의 범위를 벗어납니다. 그러나 모델 모니터링에 대한 훌륭한 권장 사항이 있습니다.
</we></p>
<ing> 머신 러닝 모니터링 개념 코스
<ing> Python 코스에서의 기계 학습 모니터링
<h2>
<cour>이 두 과정 모두 Nannyml의 CEO이자 창립자 인 당신이 기대할 수있는 최고의 사람으로부터 만들어졌습니다. 과정에는 놓칠 수없는 많은 정보가 있습니다. </cour>
</h2>
<reading> 나는 또한 일부 실습 튜토리얼을 위해 보모 ML 문서를 읽는 것이 좋습니다. </reading></ing></ing></was></that></the>
위 내용은 Python의 Nannyml을 사용한 엔드 투 엔드 ML 모델 모니터링 워크 플로우의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!