머신러닝 학습 어떻게 시작할까? 4. 툴 선택하기 : R platform (숙련자용)
개발자에서 머신러닝 실무자까지 14일 만에
이 미니 코스에서는 14 일 이내에 R을 사용하여 시작하고, 정확한 모델을 구축하고, 예측 모델링 머신러닝 프로젝트를 자신 있게 완료하는 방법을 알아볼 것입니다. 단계별 자습서와 모든 예제에 대한 R 소스 코드 파일을 포함한 새로운 책 Machine Learning Project with R로 프로젝트를 시작하십시오. 이제 시작해 보겠습니다.
이 미니 코스는 누구를 위한 것인가요?
시작하기 전에 올바른 위치에 있는지 확인해 보겠습니다. 아래 목록은 이 과정이 누구를 위해 설계되었는지에 대한 몇 가지 일반적인 지침을 제공합니다.
이 점과 정확히 일치하지 않으면 당황하지 말고, 그 영역을 조금 더 연구하면 됩니다.
- 짧은 코드를 작성하는 방법을 알고 있는 개발자. 즉, 기본 구문을 알고 나면 R과 같은 새로운 프로그래밍 언어를 선택하는 것이 큰 문제가 아닙니다. 당신이 천부적인 재능을 타고 났다는 뜻이 아니라 단지 약간의 노력으로 C와 같은 언어를 배울 수 있다는 것을 의미합니다.
- 약간의 머신러닝을 알고 있는 개발자. 교차 검증, 일부 알고리즘 및 편향 분산 트레이드 오프와 같은 머신러닝의 기본 사항에 대해 알고 있습니다. 하지만 당신이 머신러닝 박사 학위를 가지고 있다는 뜻은 아니며, 단지 몇 개의 랜드마크를 알고 있거나 어디에서 찾아야 하는지 알고 있다는 것을 의미합니다.
이 미니 코스는 R에 대한 교과서나 머신러닝에 관한 교과서가 아닙니다.
이 미니 코스는 머신러닝을 약간 알고 있는 개발자부터 머신러닝을 위한 가장 강력하고 가장 인기있는 플랫폼인 R을 사용하여 결과를 얻을 수 있는 개발자까지 만들어 줄 것입니다.
미니 코스 개요 (예상 사항)
이 미니 코스는 14개의 수업으로 나뉩니다.
하루에 한 번의 수업을 완료하거나 (권장 사항) 하루에 모든 수업을 완료 할 수 있습니다. 모든 것은 당신의 시간과 열정의 수준에 달려 있습니다.
다음은 R에서 머신러닝을 시작하고 생산적으로 시작할 수 있는 14개 수업입니다.
- 1일차: R을 다운로드하여 설치합니다.
- 2 일차 : 기본 구문으로 R을 탐색하십시오.
- 3일차 : 데이터 및 표준 머신러닝 데이터 세트를 로드합니다.
- 4일차 : 설명 통계로 데이터를 이해합니다.
- 5일차 : 시각화를 사용하여 데이터를 이해합니다.
- 6일차 : 데이터 전처리를 통한 모델링 준비.
- 7일차 : 리샘플링 방법을 사용한 알고리즘 평가.
- 8일차 : 알고리즘 평가 메트릭.
- 9일차 : 스팟 체크 알고리즘.
- 10일차 : 모델 비교 및 선택.
- 11일차 : 알고리즘 튜닝을 통해 정확도를 향상시킵니다.
- 12일차 : 앙상블 예측으로 정확도를 향상시킵니다.
- 13일차 : 모델을 마무리하고 저장합니다.
- 14일차 : Hello World 종단간 프로젝트.
각 수업에는 60 초 또는 최대 30 분이 걸릴 수 있습니다. 시간을 내서 자신의 페이스대로 수업을 완료하십시오.
1일차: R 다운로드 및 설치
플랫폼에 액세스할 수 있을 때까지 R에서 머신러닝을 시작할 수 없습니다.
오늘 수업은 쉽습니다, 당신은 다운로드하여 컴퓨터에 R 플랫폼을 설치해야 합니다.
- R 홈페이지를 방문하여 운영 체제(Linux, OS X 또는 Windows)용 R을 다운로드합니다.
- 컴퓨터에 R을 설치합니다.
- 명령줄에서 “R”을 입력하여 처음으로 R을 시작합니다.
R을 설치하는 데 도움이 필요하면 게시물을 확인하십시오.
2일차: 기본 구문으로 R에서 둘러보기
기본 R 스크립트를 읽고 쓸 수 있어야 합니다.
개발자는 새로운 프로그래밍 언어를 매우 빠르게 선택할 수 있습니다. R은 대/소문자를 구분하고 주석에 해시(#)를 사용하며 단일 등호(=) 대신 대<에 화살표 연산자(=)를 사용합니다.
오늘날의 과제는 R 대화형 환경에서 R 프로그래밍 언어의 기본 구문을 연습하는 것입니다.
- 화살표 연산자(<-)를 사용하여 언어로 과제를 연습합니다.
- 벡터, 목록 및 데이터 프레임과 같은 기본 데이터 구조를 사용하여 연습하십시오.
- If-then-Else 및 루프와 같은 흐름 제어 구조를 사용하는 연습을 하십시오.
- 함수 호출, 패키지 설치 및 로딩을 연습하십시오.
예를 들어, 다음은 숫자 목록을 만들고 평균을 계산하는 예입니다.
기본 R 구문에 대한 도움이 필요한 경우 게시물을 참조하세요.
3일차: 데이터 및 표준 머신러닝 데이터 세트 로드
머신러닝 알고리즘에는 데이터가 필요합니다. CSV 파일에서 자신의 데이터를 로드 할 수 있지만 R에서 머신러닝을 시작할 때는 표준 머신러닝 데이터 세트에 대해 연습해야 합니다.
오늘 수업의 과제는 R에 데이터를 로드하고 표준 머신러닝 데이터 세트를 찾아 로드하는 것입니다.
R과 함께 제공되는 데이터 세트 패키지에는 유명한 홍채 꽃 데이터 세트를 포함한 많은 표준 데이터 세트가 있습니다. mlbench 패키지에는 사람 표준 머신러닝 데이터 세트도 포함되어 있습니다.
- read.csv() 함수를 사용하여 CSV 파일을 R에 로드하는 연습을 합니다.
- 데이터 세트 및 mlbench 패키지에서 표준 머신러닝 데이터 세트를 로드하는 연습을 합니다.
도움말: 함수에 대한 도움말을 얻을 수 있습니까? FunctionName 또는 help() 함수를 호출하고 도움이 필요한 함수 이름을 인수로 전달합니다.
시작하기 위해 아래 코드 조각은 mlbench 패키지를 설치 및 로드하고, 제공하는 모든 데이터 세트를 나열하고, PimaIndiansDiabetes 데이터 세트를 환경에 연결하여 게임을 즐길 수 있도록 합니다.
4일차: 설명 통계로 데이터 이해
데이터를 R에로드 한 후에는 데이터를 이해할 수 있어야합니다.
데이터를 더 잘 이해할수록 모델을 더 정확하고 정확하게 만들 수 있습니다. 데이터를 이해하는 첫 번째 단계는 설명 통계를 사용하는 것입니다. 오늘 여러분의 레슨은 데이터를 이해하기 위해 설명적인 통계를 사용하는 방법을 배우는 것입니다.
- head() 함수를 사용하여 처음 몇 행을 살펴보는 데이터를 이해합니다.
- dim() 함수를 사용하여 데이터의 차원을 검토합니다.
- summary() 함수를 사용하여 데이터 분포를 검토합니다.
- cor() 함수를 사용하여 변수 간의 쌍 단위 상관 관계를 계산합니다.
아래 예제에서는 홍채 데이터 세트를 로드하고 각 속성의 분포를 요약합니다.
5일차: 시각화를 통한 데이터 이해
어제 수업부터 계속하면 데이터를 더 잘 이해할 수 있는 시간을 할애해야 합니다.
데이터에 대한 이해를 높이는 두 번째 방법은 데이터 시각화 기술(예: 플로팅)을 사용하는 것입니다.
오늘 수업은 R에서 플로팅을 사용하여 속성과 상호 작용을 이해하는 방법을 배우는 것입니다.
- hist() 함수를 사용하여 각 속성의 히스토그램을 만듭니다.
- boxplot() 함수를 사용하여 각 속성의 상자와 수염 플롯을 만듭니다.
- pairs() 함수를 사용하여 모든 속성의 쌍 단위 산점도를 만듭니다.
예를 들어 아래 코드 조각은 홍채 데이터 세트를 로드하고 데이터 세트의 산점도 행렬을 만듭니다.
6일차: 데이터 전처리를 통한 모델링 준비
Raw data가 모델링에 가장 적합한 모양으로 설정되지 않을 수 있습니다.
때로는 데이터의 고유한 구조를 모델링 알고리즘에 가장 잘 표현하기 위해 데이터를 사전 처리해야합니다. 오늘 수업에서는 캐럿 패키지에서 제공하는 전처리 기능을 사용합니다.
캐럿 패키지는 수행할 전처리 유형을 나타내기 위해 메서드 인수를 사용하는 preprocess() 함수를 제공합니다. 데이터 세트에서 전처리 매개 변수가 준비되면 동일한 전처리 단계를 가질 수 있는 각 데이터 세트에 적용할 수 있습니다.
다음과 같이 캐럿 패키지를 설치하고 로드할 수 있습니다.
- 스케일 및 중심 옵션을 사용하여 수치 데이터(예: 평균 0 및 표준 편차 1)를 표준화합니다.
- range 옵션을 사용하여 수치 데이터(예: 0-1 범위)를 정규화합니다.
- BoxCox 옵션을 사용하여 Box-Cox 전력 변환과 같은 고급 전력 변환을 살펴보십시오.
예를 들어 아래 코드 조각은 홍채 데이터 세트를 로드하고 데이터를 정규화하는 데 필요한 매개 변수를 계산한 다음 데이터의 정규화된 복사본을 만듭니다.
7일차: 리샘플링 방법을 사용한 알고리즘 평가
머신러닝 알고리즘을 학습하는 데 사용되는 데이터 세트를 학습 데이터 세트라고 합니다. 알고리즘을 학습하는 데 사용되는 데이터 세트는 새 데이터에 대한 모델의 정확도에 대한 신뢰할 수 있는 추정치를 제공하는 데 사용할 수 없습니다. 모델을 만드는 전체 아이디어는 새로운 데이터에 대한 예측을 수행하는 것이기 때문에 이것은 큰 문제입니다.
리샘플링 방법이라는 통계 방법을 사용하여 학습 데이터 세트를 하위 집합으로 분할할 수 있으며, 일부는 모델을 학습하는 데 사용되며 다른 일부는 보류되어 보이지 않는 데이터에 대한 모델의 정확도를 추정하는 데 사용됩니다.
오늘 수업의 목표는 캐럿 패키지에서 사용할 수있는 다양한 리샘플링 방법을 사용하여 연습하는 것입니다. R에서 createDataPartition(), trainControl() 및 train() 함수에 대한 도움말을 찾아보십시오.
- 데이터 세트를 학습 및 테스트 집합으로 분할합니다.
- k-fold 교차 검증을 사용하여 알고리즘의 정확도를 추정합니다.
- 반복된 k-fold 교차 검증을 사용하여 알고리즘의 정확도를 추정합니다.
아래 코드 조각은 캐럿 패키지를 사용하여 10배 교차 검증을 사용하여 홍채 데이터 세트에서 Naive Bayes 알고리즘의 정확도를 추정합니다.
이 단계에 대한 도움이 더 필요하신가요?
리샘플링 방법에 대한 게시물을 살펴보십시오.
8일차: 알고리즘 평가 메트릭
데이터 세트에서 머신러닝 알고리즘의 기술을 평가하는 데 사용할 수 있는 다양한 메트릭이 있습니다.
train() 함수의 캐럿에서 테스트 도구에 사용되는 메트릭을 지정할 수 있으며 회귀 및 분류 문제에 기본값을 사용할 수 있습니다. 오늘 수업의 목표는 캐럿 패키지에서 사용할 수 있는 다양한 알고리즘 성능 메트릭을 사용하여 연습하는 것입니다.
- 분류 문제(예: 홍채 데이터 세트)에 대해 정확도 및 Kappa 메트릭을 사용하는 연습을 합니다.
- 회귀 문제(예: longley 데이터 세트)에 대해 RMSE 및 RSquared 메트릭을 사용하는 연습을 합니다.
- 이진 분류 문제에 대해 ROC 메트릭을 사용하는 연습(예: mlbench 패키지의 PimaIndiansDiabetes 데이터 세트).
아래 코드 조각은 홍채 데이터 세트에서 LogLoss 메트릭을 계산하는 방법을 보여 줍니다.
9일차: 스팟 체크 알고리즘
어떤 알고리즘이 데이터에 대해 가장 잘 수행되는지 미리 알 수 없습니다.
시행 착오 과정을 통해 발견해야 합니다. 저는 이것을 스팟 체크 알고리즘이라고 부릅니다. 캐럿 패키지는 많은 머신러닝 알고리즘 및 도구에 대한 인터페이스를 제공하여 이러한 알고리즘의 예상 정확도를 비교합니다.
이 단원에서는 다양한 머신러닝 알고리즘을 스팟 체크하는 연습을 해야 합니다.
- 데이터 세트에서 선형 알고리즘을 스팟 체크합니다(예: 선형 회귀, 로지스틱 회귀 및 선형 판별 분석).
- 데이터 세트에서 일부 비선형 알고리즘 (예 : KNN, SVM 및 CART)을 스팟 확인합니다.
- 데이터 세트에서 몇 가지 정교한 앙상블 알고리즘 (예 : 무작위 포리스트 및 확률적 그라디언트 부스팅)을 스팟 체크하십시오.
도움말: 다음을 입력하여 캐럿에서 사용할 수 있는 모델 목록을 가져올 수 있습니다: names(getModelInfo())
예를 들어, 아래 코드 조각은 mlbench 패키지의 Pima Indians Diabetes 데이터 세트에 대한 두 개의 선형 알고리즘을 스팟 체크합니다.
10일차: 모델 비교 및 선택
데이터 세트에서 머신러닝 알고리즘을 확인하는 방법을 알았으므로 이제 여러 알고리즘의 예상 성능을 비교하고 최상의 모델을 선택하는 방법을 알아야 합니다. 고맙게도 캐럿 패키지는 모델 간의 성능 차이를 플롯하고 요약 할 수있는 도구 모음을 제공합니다. 오늘 수업에서는 R에서 머신러닝 알고리즘의 정확도를 비교하는 연습을 할 것입니다.
- summary() 캐럿 함수를 사용하여 결과 테이블을 만듭니다 (힌트, 이전 단원에 예제가 있음)
- 점도표() 캐럿 함수를 사용하여 결과를 비교합니다.
- bwplot() 캐럿 함수를 사용하여 결과를 비교합니다.
- diff() 캐럿 함수를 사용하여 결과 간의 통계적 유의성을 계산합니다.
아래 코드 조각은 어제 예제를 확장하고 스팟 체크 결과의 플롯을 만듭니다.
11일차 : 알고리즘 튜닝을 통한 정확도 향상
데이터 세트에서 잘 작동하는 하나 또는 두 개의 알고리즘을 찾은 후에는 해당 모델의 성능을 향상시킬 수 있습니다.
알고리즘의 성능을 높이는 한 가지 방법은 매개 변수를 특정 데이터 세트에 조정하는 것입니다.
캐럿 패키지는 머신러닝 알고리즘에 대한 매개 변수 조합을 검색하는 세 가지 방법을 제공합니다. 오늘 수업의 목표는 각각을 연습하는 것입니다.
- 알고리즘의 매개 변수를 자동으로 조정합니다 (예 : train() 에 대한 tuneLength 인수 참조).
- 지정한 그리드 검색을 사용하여 알고리즘의 매개 변수를 조정합니다.
- 무작위 검색을 사용하여 알고리즘의 매개 변수를 조정합니다.
trainControl() 및 train() 함수에 대한 도움말을 살펴보고 메서드와 tuneGrid 인수를 기록해 둡니다.
아래 사용 코드 조각은 홍채 데이터 세트에서 임의의 포리스트 알고리즘에 대한 그리드 검색을 사용하는 예입니다.
12일차: 앙상블 예측으로 정확도 향상
모델의 성능을 향상시킬 수 있는 또 다른 방법은 여러 모델의 예측을 결합하는 것입니다.
일부 모델은 배깅을 위한 랜덤 포리스트와 부스팅을 위한 확률적 그래디언트 부스팅과 같은 내장 기능을 제공합니다. 스태킹(또는 블렌딩)이라고 하는 또 다른 유형의 앙상블링은 여러 모델의 예측을 가장 잘 결합하는 방법을 배울 수 있으며 패키지 caretEnsemble에 제공됩니다.
오늘 수업에서는 앙상블 방법을 사용하여 연습합니다.
- 무작위 숲과 캐럿에서 CART 알고리즘을 가방에 넣은 앙상블을 연습하십시오.
- 캐럿의 그라디언트 부스트 머신과 C5.0 알고리즘으로 앙상블을 증폭하는 연습을 하십시오.
- caretEnsemble 패키지와 caretStack() 함수를 사용하여 앙상블 스태킹을 연습합니다.
아래 코드 조각은 스태킹을 사용하여 여러 모델의 예측을 결합하는 방법을 보여 줍니다.
13일차: 모델 완성 및 저장
머신러닝 문제에서 성능이 좋은 모델을 찾은 후에는 이를 마무리해야 합니다.
오늘 수업에서는 모델 완성과 관련된 작업을 연습합니다.
- predict() 함수를 사용하여 캐럿을 사용하여 학습된 모델로 예측을 수행하는 연습을 합니다.
- 잘 작동하는 모델의 독립 실행형 버전을 연습합니다.
- 학습된 모델을 파일에 저장하고 saveRDS() 및 readRDS() 함수를 사용하여 다시 로드하는 연습을 합니다.
예를 들어 아래 코드 조각은 일반적인 용도로 사용할 준비가 된 전체 데이터 세트에 대해 학습된 임의 포리스트 알고리즘을 만드는 방법을 보여 줍니다.
14일차: Hello World 종단간 프로젝트
이제 예측 모델링 머신러닝 문제의 각 작업을 완료하는 방법을 알아보았습니다.
오늘 수업에서는 조각을 모으고 표준 머신러닝 데이터 세트를 종단간 작업하는 연습이 필요합니다.
- 홍채 데이터 세트를 종단간 작업(머신러닝의 Hello World)
여기에는 다음 단계가 포함됩니다.
- 설명 통계 및 시각화를 사용하여 데이터를 이해합니다.
- 문제의 구조를 가장 잘 노출하기 위해 데이터를 사전 처리합니다.
- 자신의 테스트 도구를 사용하여 여러 알고리즘을 스팟 검사합니다.
- 알고리즘 매개 변수 튜닝을 사용하여 결과를 개선합니다.
- 앙상블 방법을 사용하여 결과를 개선합니다.
- 나중에 사용할 수 있도록 모델을 마무리합니다.
끝! (당신이 얼마나 멀리 왔는지 보십시오)
잠시 시간을내어 당신이 얼마나 멀리 왔는지 되돌아보십시오.
- 머신러닝에 대한 관심과 R을 사용하여 머신러닝을 연습하고 적용할 수 있기를 바라는 강한 욕구로 시작했습니다.
- 아마도 처음으로 R을 다운로드, 설치 및 시작했으며 언어 구문에 익숙해지기 시작했습니다.
- 여러 가지 교훈을 통해 천천히 그리고 꾸준히 예측 모델링 머신러닝 프로젝트의 표준 작업이 R 플랫폼에 매핑되는 방법을 배웠습니다.
- R을 사용하여 첫 번째 머신러닝 문제를 종단간 작업한 일반적인 머신러닝 작업에 대한 레시피를 기반으로 합니다.
- 표준 템플릿을 사용하면 수집한 조리법과 경험을 통해 새롭고 다른 예측 모델링 머신러닝 문제를 스스로 해결할 수 있습니다.
당신은 짧은 시간 안에 먼 길을 왔습니다.
이것은 계속 연습하고 기술을 개발하는 머신러닝 여행의 시작에 불과합니다.