종단 간 기계 학습 프로젝트를 위한 최선의 접근 방식 [2022]

게시 됨: 2021-01-01

기계 학습은 속도를 높이고 있으며 매우 오랜 기간 동안 논쟁의 대상이 되어 왔습니다. 이 영역의 몇 가지 매우 훌륭한 알고리즘과 아키텍처는 기계 학습의 개념을 실제 세계에 적용하는 것을 가능하게 했습니다.

그것은 더 이상 연구를 위한 개념이 아니며 유용한 응용 분야로 깊숙이 퍼져 있습니다. 그리고 오늘날에는 그 어느 때보다도 기계 학습 프로젝트를 위한 종단 간 파이프라인 기술을 마스터할 필요가 있습니다.

많은 사람들의 머신 러닝에 대한 관심이 증가하고 있으며 ML 및 AI의 기본 사항을 이해하는 데 도움이 될 수 있는 엄청난 양의 리소스가 있습니다. 많은 과정에서 몇 가지 기본 개념을 배우는 것부터 최종적으로 일부 최신 모델을 구축하는 데까지 이끕니다.

하지만 그게 다야? 데이터에 액세스하는 방법을 실제로 배우고 ML 모델이 데이터에서 유용한 기능을 추출할 수 있도록 데이터를 정리하는 방법을 실제로 보고 있습니까? 그리고 배포 부분은 어떻습니까? 우리가 그러한 코스와 커리큘럼을 마친 후에도 비슷한 질문에 답하지 못한 채 남아 있습니다.

이 문제는 모든 프로젝트에 대한 완전한 종단 간 기계 학습 파이프라인에 대한 이해가 부족하기 때문에 발생합니다. 이 기사에서는 ML 프로젝트의 실제 시나리오에서 더 나은 결과를 얻기 위해 정확히 무엇을 해야 하는지 이해하기 위해 그러한 파이프라인 중 하나를 살펴볼 것입니다.

이를 가장 잘 보여주는 책 중 하나는 Aurelien Geron의 Scikit-Learn, Keras 및 TensorFlow를 사용한 실습 머신 러닝입니다.

이 종단 간 파이프라인은 더 나은 이해를 위해 몇 가지 단계로 나눌 수 있으며 다음과 같습니다.

  1. 문제 설명 이해
  2. 필요한 데이터 획득
  3. 데이터 이해
  4. 데이터 정리
  5. 훈련에 가장 적합한 모델 선택
  6. 초매개변수 미세 조정
  7. 결과 발표
  8. 시스템 배포 및 유지 관리

실제 기계 학습 프로젝트의 파이프라인을 더 잘 이해하기 위해 캘리포니아 주택 가격 예측 문제의 인기 있는 예를 사용할 것입니다. 우리는 이 문제 진술과 관련하여 위의 모든 사항을 논의할 것입니다. 프로젝트마다 약간의 변경이 있을 수 있지만 전반적으로 목표는 동일합니다.

목차

문제 설명 이해

좋은 솔루션을 구축하려면 문제 설명을 매우 명확하게 이해해야 합니다. 아마도 기계 학습 모델을 구축하고 훈련하게 될 것이지만 실제 응용 프로그램 영역에는 모델보다 훨씬 더 많은 것이 필요합니다. 모델의 출력은 최종 사용자가 정확히 필요로 하는 것과 일치해야 합니다.

이 특정 예의 경우 인구, 소득, 주택 가격 등과 같은 캘리포니아의 모든 메트릭 데이터 세트가 제공됩니다. 모델이 요구하는 결과는 위치, 인구, 소득 등과 같은 다른 속성이 주어지면 집의 가격을 예측할 수 있어야 한다는 것입니다.

이 단계의 중요한 이유는 수행해야 하는 작업과 필요한 솔루션의 종류를 정확히 이해하기 위한 것입니다. 여기서 문제 진술에 접근하는 방법에 대한 주요 브레인스토밍 부분이 수행됩니다.

읽기: 초보자를 위한 기계 학습 프로젝트 아이디어

필요한 데이터 획득

문제 설명을 명확하게 이해하고 문제를 해결하기 위해 기계 학습 접근 방식으로 진행하기로 결정했다면 관련 데이터 검색을 시작해야 합니다. 데이터는 머신 러닝 프로젝트의 가장 중요한 요소이므로 양질의 데이터만 신중하게 찾아 선택해야 합니다. ML 모델의 최종 성능은 훈련 중에 사용된 데이터에 따라 다릅니다.

실제 사례에서도 데이터 분포를 이해하는 데 도움이 될 수 있는 데이터를 찾을 수 있는 다양한 소스가 있습니다. 예를 들어 Kaggle에서 캘리포니아 주택 가격 예측 데이터 세트를 가져올 수 있습니다. 이 데이터는 CSV 형식이므로 Pandas 라이브러리를 사용하여 데이터 세트를 로드합니다.

데이터 이해

작업 중인 데이터를 이해할 수 있는 것은 ML 솔루션의 매우 중요한 측면입니다. 이를 통해 프로젝트에 더 적합한 알고리즘 또는 모델 아키텍처를 선택할 수 있습니다. 데이터를 자세히 살펴보기 전에 먼저 데이터 세트를 학습 세트와 테스트 세트로 분할하는 것이 좋습니다. 이렇게 하면 테스트 세트가 그대로 유지되므로 테스트 세트에 과적합될 가능성이 줄어듭니다. 이렇게 하면 모델에서 데이터 스누핑 편향을 제거할 수 있습니다.

데이터 세트를 이러한 기차 및 테스트 세트로 분할하는 다양한 방법이 있습니다. 이들 중 하나는 하드코딩된 백분율 값으로 분할하는 것입니다. 90% 훈련과 10% 테스트는 대부분의 경우 공통 값입니다.

분할 후 데이터를 이해하려면 기차 세트를 심층적으로 시각화해야 합니다. 현재 데이터셋은 위도와 경도 포인트를 포함하고 있으므로 산점도를 사용하여 위치에 따른 밀도를 보는 것은 매우 유용합니다.

데이터 세트에서 두 속성 간의 상관 관계를 찾는 것은 어떤 속성이 필수 속성과 더 관련이 있는지 이해하는 데 도움이 됩니다. 이 경우 데이터 세트에서 집값과 더 관련이 있는 속성을 찾아야 합니다. 이것은 corr() 메서드를 사용하여 Scikit-Learn에서 쉽게 수행할 수 있습니다. 다른 속성과 관련하여 각 속성의 값을 반환합니다. 따라서 집값과 관련된 관계를 확인해야 하는 경우 다음과 같이 할 수 있습니다.

corr_matrix[“median_house_value”].sort_values(ascending=False)

median_house_value 1.000000중위소득 0.687170total_rooms 0.135231주택_중간_연령 0.114220가구 0.064702total_bedrooms 0.047865인구 -0.026699경도 -0.047279위도 -0.142826

여기서 median_ income집값 과 직접적으로 연관되어 있고 , 반면에 위도 값은 간접적으로 연관되어 있음을 알 수 있다.

마지막으로 일부 속성을 함께 결합하여 일부 기능 엔지니어링을 시도할 수도 있습니다. 예를 들어, total rooms_per_householdtotal_rooms 또는 가구 값 개별 보다 훨씬 더 많은 정보를 제공할 수 있습니다 .

데이터 정리

이 단계에서는 Machine Learning 프로젝트에 대한 데이터를 준비합니다. 전체 파이프라인에서 가장 시간이 많이 걸리고 중요한 단계입니다. 모델의 성능은 주로 데이터를 얼마나 잘 준비하느냐에 달려 있습니다. 일반적으로 필요할 때마다 해당 기능을 사용할 수 있고 생산 라인에서 동일한 기능을 사용하여 예측을 위한 새 데이터를 준비할 수 있으므로 이러한 목적으로 기능을 작성하는 것이 좋습니다.

실제 데이터에서 가장 많이 발생하는 문제 중 하나는 데이터 세트의 일부 항목에 대한 결측값입니다. 그것을 처리하는 몇 가지 방법이 있습니다. 전체 속성을 직접 삭제할 수 있지만 이는 모델에 좋지 않습니다. 하나의 누락된 값이 있는 행을 제거할 수 있습니다. 주로 사용되는 또 다른 방법은 누락된 값을 0 또는 숫자 값인 경우 전체 열의 산술 평균과 같은 다른 값으로 설정하는 것입니다.

범주형 값의 경우 모델이 작업하기 쉽도록 숫자로 표현하고 원-핫 인코딩으로 인코딩하는 것이 좋습니다. Scikit-Learn은 범주형 값을 원-핫 벡터로 쉽게 변환할 수 있도록 OneHotEncoder 클래스도 제공합니다.

당신이 돌봐야 할 또 다른 것은 기능 스케일링입니다. 값 범위가 매우 극단적인 일부 속성이 있을 수 있습니다. 따라서 모델이 해당 값으로 쉽게 작업하고 더 나은 성능을 발휘할 수 있도록 표준 척도로 크기를 조정하는 것이 좋습니다.

또한 읽어보기: 인도의 기계 학습 엔지니어 급여

훈련에 가장 적합한 모델 선택

모든 데이터 정리 및 기능 엔지니어링을 완료하면 다음 단계가 매우 쉬워집니다. 이제 데이터에 대해 몇 가지 유망한 모델을 훈련하고 최상의 예측을 제공하는 모델을 찾기만 하면 됩니다. 최상의 모델을 선택하는 데 도움이 되는 몇 가지 방법이 있습니다.

캘리포니아 주택 가격 예측의 예는 회귀 문제입니다. 이것은 우리가 숫자 범위에서 가치를 예측해야 함을 의미합니다. 이 경우에는 주택 가격입니다.

여기서 첫 번째 단계는 몇 가지 모델을 훈련하고 검증 세트에서 테스트하는 것입니다. 여기에서 테스트 세트를 사용하면 안 됩니다. 테스트 세트에 대한 과적합으로 이어지며 결국 모델은 매우 낮은 정규화를 갖게 될 것입니다. 이러한 모델 중에서 훈련 정확도와 검증 정확도가 좋은 모델을 대부분 선택해야 합니다. 일부 작업에는 다른 구성과 다른 구성이 필요하므로 사용 사례에 따라 달라질 수도 있습니다.

이미 데이터를 정리했고 전처리 기능이 준비되었으므로 Scikit-Learn 또는 Keras와 같은 일부 프레임워크를 사용하여 3~4줄의 코드로 다른 모델을 훈련하는 것은 매우 쉽습니다. Scikit-Learn에는 의사 결정 트리와 같은 모델에 대한 좋은 하이퍼파라미터를 찾는 데 많은 도움이 되는 교차 검증 옵션도 있습니다.

초매개변수 미세 조정

몇 가지 모델이 최종 후보 목록에 오르면 하이퍼파라미터를 미세 조정하여 진정한 잠재력을 발휘할 필요가 있습니다. 이를 달성하는 방법도 많이 있습니다. 그 중 하나는 하이퍼파라미터를 수동으로 변경하고 만족스러운 결과를 얻을 때까지 모델을 계속해서 훈련할 수 있다는 것입니다. 여기에서 자동화된 작업만큼 많은 조합을 확인할 수 없다는 문제를 명확하게 볼 수 있습니다. 그래서 여기에 이 ​​작업을 자동화하는 몇 가지 좋은 방법이 있습니다.

Grid Search 는 GridSearchCV 클래스 형태로 Scikit-Learn에서 제공하는 훌륭한 기능으로, 자체적으로 교차 검증을 수행하고 더 나은 결과를 위해 완벽한 하이퍼파라미터 값을 찾습니다. 우리가 해야 할 일은 실험해야 하는 하이퍼파라미터를 언급하는 것뿐입니다. 간단하지만 매우 강력한 기능입니다.

무작위 검색 은 유사한 목적으로 사용할 수 있는 또 다른 접근 방식입니다. Grid Search는 실험할 하이퍼파라미터의 공간이 적을 때 잘 작동하지만 하이퍼파라미터가 많을 때는 RandomizedSearchCV를 사용하는 것이 좋습니다. 임의의 하이퍼파라미터를 시도하고 전체에서 본 최고의 값을 제시합니다.

마지막으로 Ensemble Learning 의 접근 방식입니다 . 여기에서 여러 모델을 사용하여 각각의 예측을 제공할 수 있으며 마지막으로 모든 평균에 대한 최종 예측을 선택할 수 있습니다. 이것은 매우 유망한 방법이며 Kaggle에서 많은 대회에서 우승합니다.

최종 모델에 대한 모든 하이퍼파라미터를 미세 조정한 후 모델을 사용하여 테스트 세트에 대한 예측을 수행할 수 있습니다. 여기에서 모델이 테스트 세트에서 얼마나 잘 수행되고 있는지 평가할 수 있습니다. 테스트 세트의 정확도를 높이기 위해 테스트 세트의 샘플에 과적합을 초래할 수 있으므로 이후에 모델을 미세 조정해서는 안 된다는 점을 기억하십시오.

결과 발표

최적의 모델이 선택되고 평가가 완료되면 결과를 제대로 표시해야 합니다. 시각화는 데이터와 그 이면의 패턴을 이해하는 것이므로 더 나은 기계 학습 프로젝트를 만드는 열쇠입니다. 원시 수치 결과는 이미 이 영역에 익숙한 사람들에게 좋게 들릴 수 있지만 프로젝트를 매력적으로 만들고 모든 사람이 우리 솔루션에서 실제로 일어나는 일을 명확하게 이해할 수 있도록 그래프와 차트로 시각화하는 것이 매우 중요합니다.

시스템 배포 및 유지 관리

대부분의 학습자는 파이프라인의 이 단계에 도달하고 실제 시나리오에서 적용할 프로젝트를 배포하는 동안 엄청난 문제에 직면합니다. Jupyter Notebook에서 모델을 빌드하고 교육하는 것은 매우 쉽지만 중요한 부분은 모델을 성공적으로 저장한 다음 라이브 환경에서 사용하는 것입니다.

ML 엔지니어가 직면하는 가장 일반적인 문제 중 하나는 실시간으로 수신되는 데이터와 모델을 학습시킨 데이터에 차이가 있다는 것입니다. 여기서 우리는 모델 훈련을 위한 파이프라인을 생성하면서 구축한 전처리 기능을 사용할 수 있습니다.

배포할 수 있는 기계 학습 모델에는 온라인 모델과 오프라인 모델의 두 가지 유형이 있습니다. 온라인 모델은 실시간으로 수신되는 데이터에서 계속 학습하는 모델입니다. 오프라인 모델은 새로운 샘플에서 학습하지 않으며 수신한 데이터의 종류에 변경이 있는 경우 적절하게 업데이트 및 유지 관리해야 합니다. 따라서 두 가지 유형의 모델에 대한 적절한 유지 관리가 필요합니다.

기계 학습 모델을 배포하는 동안 사용자가 쉽게 상호 작용할 수 있도록 플랫폼에 래핑해야 합니다. 옵션은 다양하며 웹 앱, Android 앱, Restful API 등으로 래핑할 수 있습니다. 이러한 앱 또는 API 구축에 대한 기본 지식은 큰 장점입니다. Google Cloud Platforms, Amazon Web Services 또는 Microsoft Azure와 같은 클라우드 서비스에 NodeJS 또는 Python 앱을 배포할 수 있어야 합니다.

Django 또는 Flask와 같은 일부 프레임워크에 익숙하지 않은 경우 몇 줄의 추가 코드로 Python 코드를 웹 앱 형태로 배포할 수 있는 Streamlit을 사용해 볼 수 있습니다. 탐색할 수 있는 다양한 라이브러리와 프레임워크가 있습니다.

결론

이 전체 기사를 마치기 위해 머신 러닝 프로젝트는 파이프라인 측면에서 다른 기존 프로젝트와 상당히 다르며 이 파이프라인을 마스터하면 다른 모든 것이 훨씬 쉬워집니다.

많은 초보자가 간과하는 경향이 있는 이 종단 간 파이프라인의 가장 중요한 단계 중 일부는 데이터 정리 및 모델 배포입니다. 이러한 단계만 수행하면 나머지 부분은 다른 프로젝트와 같습니다.

이러한 단계를 따르고 프로젝트에 대한 파이프라인을 설정하면 작업에 대한 명확한 비전을 갖는 데 도움이 되고 문제 디버깅을 보다 쉽게 ​​관리할 수 있습니다. 따라서 이 단계를 진행하고 이 체크리스트를 사용하여 엔드 투 엔드 머신 러닝 프로젝트를 직접 구현하는 것이 좋습니다. 문제 설명을 선택하고 데이터 세트를 찾은 다음 프로젝트를 즐겁게 진행하세요!

기계 학습에 대해 자세히 알아보려면 IIIT-B 및 upGrad의 기계 학습 및 AI PG 디플로마를 확인하세요. 이 PG 디플로마는 일하는 전문가를 위해 설계되었으며 450시간 이상의 엄격한 교육, 30개 이상의 사례 연구 및 과제, IIIT- B 동문 자격, 5개 이상의 실용적인 실습 캡스톤 프로젝트 및 최고의 기업과의 취업 지원.

머신 러닝 또는 ML이란 무엇입니까?

제공된 데이터에서 명시적으로 프로그래밍하지 않고 작업을 학습하는 시스템의 능력을 기계 학습이라고 합니다. 이 분야는 데이터에 접근하고 스스로 학습할 수 있는 컴퓨터 프로그램의 개발에 중점을 둡니다. 방대한 인공지능(AI) 과목의 하위분야이다. 머신 러닝은 생산성, 마케팅, 영업, 고객 행복, 기업 이익을 높이기 위해 거의 모든 분야에서 구현되고 있습니다. 많은 IT 전문가들이 이에 관심을 갖고 있으며, 이들은 이직을 고려하고 있습니다.

종단 간 ML 프로젝트란 무엇입니까?

종단 간 기계 학습 프로젝트에는 데이터 준비, 데이터에 대한 모델 교육 및 해당 모델 배포와 같은 단계가 포함됩니다. 코드를 작성하고 작업 프로세스를 자동화하는 방법인 파이프라인으로 구성됩니다. 이러한 파이프라인은 제대로 컴파일될 때 성공적인 머신 러닝 프로젝트의 형성으로 이어집니다. 문제 설명을 이해하고, 적절한 데이터를 얻고, 데이터를 이해하고, 데이터를 정리하고, 훈련을 위한 최적의 모델을 선택하고, 하이퍼파라미터를 미세 조정하고, 결과를 제시하는 것은 관련된 단계의 일부일 뿐입니다.

머신 러닝에서 하이퍼파라미터란 무엇입니까?

하이퍼파라미터는 머신 러닝에서 학습 과정에 영향을 미치기 위해 값을 사용하는 파라미터입니다. 모델 하이퍼파라미터와 알고리즘 하이퍼파라미터의 두 부분으로 분류할 수 있습니다. 모델 선택 작업을 지시하기 때문에 훈련 세트에 머신을 제공하는 동안 모델 하이퍼파라미터를 가정할 수 없습니다. 대조적으로 알고리즘 하이퍼파라미터는 모델의 성능에는 영향을 미치지 않지만 학습 프로세스의 속도와 품질에는 영향을 미칩니다. 다른 모델 훈련 기술에는 다른 하이퍼파라미터가 필요하지만 하이퍼파라미터가 필요하지 않은 몇 가지 기본 알고리즘이 있습니다.