개인 재정 기계 학습에서 오버 피팅 (Overfitting with Machine Learning)

기계 학습에서 오버 피팅 (Overfitting with Machine Learning)

차례:

비디오: [머신러닝] 오버피팅 (overfitting) 2024

비디오: [머신러닝] 오버피팅 (overfitting) 2024
Anonim

신경망 구조가 주어지면 알고리즘이 데이터에서 거의 모든 것을 학습 할 수 있다고 상상할 수 있습니다. 사실, 알고리즘은 너무 잘하여 그 예측은 종종 overfitting 라고하는 높은 추정 분산의 영향을받습니다. 초과 구현은 신경망이 학습 예제의 모든 세부 사항을 학습하게하여 예측 단계에서이를 복제 할 수있게합니다. 그러나 훈련 세트를 제외하고는 다른 것을 예측하지 않습니다.

실제 문제에 대해 신경망을 사용하는 경우 다른 알고리즘보다 훨씬 더 엄격한 방법으로주의를 기울여야합니다. 신경 회로망은 다른 기계 학습 솔루션보다 더 취약하며 오류가 발생하기 쉽습니다.

먼저, 교육, 검증 및 테스트 세트로 데이터를 신중하게 분리합니다. 알고리즘이 데이터에서 학습하기 전에 매개 변수의 장점을 평가해야합니다. 아키텍처 (아키텍처 및 계층에있는 노드 수). 활성화 함수; 학습 파라미터; 및 반복 수. 특히, 아키텍처는 과핑 (overfitting) 위험이 높은 강력한 예측 모델을 생성 할 수있는 좋은 기회를 제공합니다. 학습 매개 변수는 네트워크가 데이터로부터 얼마나 빨리 학습 하는지를 제어하지만, 학습 데이터의 과적 함을 방지하는 데 충분하지 않을 수 있습니다.

->

이 문제에 대한 두 가지 가능한 해결책이 있습니다.

선형 및 로지스틱 회귀 분석에서와 마찬가지로 첫 번째 해법은

  • 정규화 입니다. 제곱 또는 절대 값의 모든 연결 계수를 합하여 높은 값 (L2 정규화에 의해 달성)이 너무 많은 계수 또는 0과 다른 값 (L1 정규화에 의해 달성 됨)이있는 모델에 불이익을 줄 수 있습니다. 두 번째 해결책은 과핑이 발생할 때 제어하기 때문에 효과적입니다.
  • early-stop 라고하며 알고리즘이 학습 세트에서 학습 할 때 유효성 확인 세트의 비용 함수를 확인하여 작동합니다.
모델이 지나치게 시작될 때를 알지 못할 수도 있습니다. 최적화가 진행됨에 따라 교육 세트를 사용하여 계산 된 비용 함수가 향상됩니다. 그러나 데이터에서 노이즈를 기록하고 일반 규칙 학습을 시작하자마자 샘플 밖 (유효성 검사 샘플)에서 비용 기능을 확인할 수 있습니다. 어떤 시점에서는 모델이 학습 한계에 도달했음을 의미하므로 모델이 개선되지 않고 악화되기 시작합니다.

신경망 블랙 박스 열기

신경망을 만드는 방법을 배우는 가장 좋은 방법은 신경망을 만드는 것입니다. Python은 신경망 및 심층 학습을위한 풍부한 구현을 제공합니다. 파이썬에는 추상적 인 수준에서 복잡한 계산을 할 수있는 Theano와 같은 라이브러리가 있으며, 신경망을 만들 수있는 Lasagne와 같은 실용적인 패키지가 있지만 아직까지는 추상화가 필요합니다. 이러한 이유 때문에 noelarn과 같은 래퍼 (scikit-learn과 호환 가능) 또는 Keras가 필요합니다. Keras는 신경 계산을위한 소프트웨어 라이브러리로 Theano를 대체 할 가능성이있는 Google이 출시 한 TensorFlow 라이브러리를 래핑 할 수도 있습니다.

R은 nnet, AMORE 및 neuralnet과 같이 덜 복잡하고 접근하기 쉬운 라이브러리를 제공합니다. R의 간단한 예제는 분류 네트워크 (아이리스 데이터 세트)와 회귀 네트워크 (보스턴 데이터 세트)를 모두 교육하는 방법을 보여줍니다. 분류에서 시작하여 다음 코드는 데이터 세트를로드하고이를 학습 및 테스트 세트로 분할합니다.

라이브러리 (신경망)

대상 <- 모델. 매트릭스 (~ 종 & # x00A0; - 1, 데이터 = 아이리스)

colnames (목표) <- c ("setosa", "versicolor", "virginica")

인덱스 1: 4]

test_predictors <- 아이리스 [-index, 1: 4]

인덱스 <- 샘플 (1: nrow (홍채), 100)

train_predictors <

신경망은 기울기 강하에 의존하기 때문에 입력을 표준화하거나 표준화해야합니다. 표준화가 더 좋으므로 최소값은 0이고 최대 값은 모든 피쳐에 대해 1입니다. 당연히, 샘플 밖의 테스트에서 정보를 사용할 기회를 피하기 위해서만 교육 세트를 사용하여 숫자 변환을 수행하는 방법을 배우게됩니다.

min_vector <- 적용 (train_predictors, 2, min)

range_vector <- apply (train_predictors, 2, max) -

적용 (train_predictors, 2, min)

train_scaled <- cbind test_scaled <--cbind (scale (test_predictors,

min_vector, range_vector),

target [-index,])

min_vector, range_vector) summary (train_scaled)

트레이닝 세트가 준비되면 모델을 학습하여 세 가지 이진 변수를 추측 할 수 있습니다. 각 변수는 하나의 클래스를 나타냅니다. 출력은 실제 클래스가 될 확률에 비례하여 각 클래스의 값입니다. 가장 높은 값을 취하여 예측을 선택합니다. 또한 내부 플롯을 사용하여 네트워크를 시각화 할 수 있으므로 신경망 아키텍처와 할당 된 가중치를 볼 수 있습니다.

세트. 씨앗 (102) 999 nn_iris <- neuralnet (setosa + versicolor + virginica ~ 999 세 길이와 세펄 너비

+ 꽃잎 길이 + 꽃잎 너비, 999 data = train_scaled, hidden = c (nn_iris, test_scaled [1: 4])

y_predicted <- 적용 (예측 $ net. 결과, 1, 최대)

y_true <- 적용 (test_scaled [5: 7], 1, 최대)

confusion_matrix <- table (y_true, y_predicted)

print (confusion_matrix)

print (confusion_matrix) /

합계 (confusion_matrix)

인쇄 (confusion_matrix)

인쇄 (붙여 넣기 ("정확도:", 정확도))

다음 예제는 보스턴 데이터 세트를 사용하여 보스턴의 집값을 예측하는 방법을 보여줍니다. 절차는 이전 분류와 동일하지만 여기서 단일 출력 단위가 있습니다. 또한이 코드는 테스트 세트의 예측 결과를 실제 값과 비교하여 모델 적합성을 검증합니다.

no_examples <- nrow (Boston)

기능은

기능을 설정합니다. index = - sample (1: no_examples, 400)

train <- 보스턴 [인덱스,]

테스트 <- boston [-index,]

min_vector <- 적용 (train (train, 2, max) - 적용 (train, 2, min)

scaled_train <- scale (train, min_vector, range_vector)

scaled_test <- scale nn_boston <- neuralnet (수식, 데이터, 테스트, min_vector, range_vector)

수식 = 붙여 넣기 ("medv ~", 붙여 넣기 (기능 [1: 13], 축소 = & apos; +) (nn_boston, scaled_test [1: 13])

predict_values ​​<- (예측 $ net). 결과 (9) range_vector [14]) + min_vector [14] 999 RMSE <- sqrt (평균 ((test [14] - 예측 된 값) ^ 2)) 999 print (paste ("RMSE:", (0, 1, lwd = 1)

기계 학습에서 오버 피팅 (Overfitting with Machine Learning)

편집자의 선택

OneNote 2013에서 메모 서식을 지정하는 방법 - 인형

OneNote 2013에서 메모 서식을 지정하는 방법 - 인형

Windows 용 OneNote에서 메모를 서식 지정하는 과정은 OneNote 2013과는 조금 다른 것입니다. 다음은 Windows 용 OneNote에서 주요 서식 지정 작업을 수행하는 방법입니다. OneNote에서 텍스트를 수정하고 조작하는 방법 Windows 용 OneNote에는 리본이 없으므로 ...

OneNote 2013에서 메모를 보내는 방법 - 간단한 방법 인

OneNote 2013에서 메모를 보내는 방법 - 간단한 방법 인

OneNote 2013과 메모를 공유하는 방법은 전자 메일 수신자 또는 Microsoft Word 또는 블로그에 파일로 보내는 것입니다. 현재 메모를 파일로 보내려면 다음과 같이하십시오. OneNote 2013에서 공유하려는 메모를 열고 선택하십시오.

OneNote 2013에서 메모를 동기화하는 방법 - 인형

OneNote 2013에서 메모를 동기화하는 방법 - 인형

OneNote 2013은 수동으로 파일을 저장하는 전체 개념 동기화하는 데 유리합니다. 자동 또는 수동으로 파일을 동기화 할 수 있습니다. 이렇게하면 파일을 관리 할 때 약간의 자유가 생깁니다. OneNote에서 자동으로 동기화하는 방법 OneNote는 노트, 섹션 등을 변경할 때마다 노트를 자동 저장합니다.

편집자의 선택

루비 인형 용 인형 치트 시트 - 인형

루비 인형 용 인형 치트 시트 - 인형

루비 온 레일스는 오픈 소스 프레임 워크입니다. 웹 사이트 및 웹 기반 데이터베이스를 구축하는 데 사용할 수 있습니다. 물론 다른 프로그래밍 언어와 마찬가지로 Ruby의 키워드와 Rail의 명명 규칙을 알아야합니다.

웹 사이트 재 설계를위한 테스트 방법론 - 새로운 웹 사이트를 구축하거나 웹 사이트 디자인을 재 설계 할 때

웹 사이트 재 설계를위한 테스트 방법론 - 새로운 웹 사이트를 구축하거나 웹 사이트 디자인을 재 설계 할 때

웹 사이트를 통해 테스트 방법론을 표준화하는 데 시간을 투자해야합니다. 하나의 테스트 방법론으로 표준화함으로써 테스트 결과를보다 정확하게 평가할 수 있습니다. 또한 테스트를 팀의 일부 직원에게 위임 할 수 있습니다. 체크리스트가 있습니다 ...

웹 사이트 호스팅을위한 열 개의 장소 - 인형

웹 사이트 호스팅을위한 열 개의 장소 - 인형

항상 좋은 질문입니다 . 요즘에는 매우 다양한 웹 서비스가 있기 때문에 웹 사이트의 정의가 문제가되고 있습니다. 따라서 여기에는 두 개의 블로깅 사이트를 포함하여 "실제"웹 사이트를 호스팅 할 수있는 10 개의 장소가 있습니다. Google Page Creator :이 유연한 페이지 생성 서비스는 ...

편집자의 선택

Mac 용 Office 2011의 스크랩북에 클립을 추가하는 방법 - 스크랩북은 하나임

Mac 용 Office 2011의 스크랩북에 클립을 추가하는 방법 - 스크랩북은 하나임

Office 2011 Toolbox 인터페이스의 중요한 탭에 대해 설명합니다. PowerPoint 슬라이드의 그림과 같은 것을 선택하고 편집 → 복사를 선택하면 해당 그림이 클립 보드로 전송됩니다. 이제 열려있는 Word 문서로 이동하여 편집 → 붙여 넣기를 선택하여 복사본을 가져올 수 있습니다.

Mac 용 Office 2011의 올바른 버전을 선택하는 방법 - 마네킹

Mac 용 Office 2011의 올바른 버전을 선택하는 방법 - 마네킹

Office 2011 for Mac 여러 버전이 제공되므로 Mac에 새로운 Word, Excel, PowerPoint 등을 설치할 때 약간의 연구가 필요합니다. Mac 용 Office 2011의 각 버전에는 다른 가격 및 다양한 응용 프로그램 및 기능 세트가 있습니다. 다음 목록은 에디션을 선택하는 데 도움이됩니다.

Mac 용 Office 2011에서 리본을 사용자 지정하는 방법 - Office 2011의 새로운

Mac 용 Office 2011에서 리본을 사용자 지정하는 방법 - Office 2011의 새로운

리본은 고정 된 화면 영역을 차지하는 크고 두꺼운 도구 모음과 같습니다. Office 2011의 첫 번째 리본 반복은 제한적인 사용자 지정 기능을 제공합니다. 리본의 오른쪽 가장자리에있는 휠을 클릭하여 리본을 사용자 정의 할 수 있습니다. 리본이 응답하지 않습니다 ...