개인 재정 기계 학습에서 오버 피팅 (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)

편집자의 선택

럭비 토너먼트의 개요 - 인형

럭비 토너먼트의 개요 - 인형

프로 럭비 캘린더는 다양한 국제, 지역간 및 국내 토너먼트를 특징으로합니다. 럭비 선수들은 클럽, 주 및 국가를 대표하여 1 년 내에 3 개 또는 그 이상으로 경쟁합니다. 수년에 걸쳐 많은 럭비 토너먼트의 이름과 형식은 성장과 스폰서 십 변경으로 인해 변경되었습니다. ...

럭비 - 인형의 법을 다루기

럭비 - 인형의 법을 다루기

럭비는 규칙이 아닌 법에 의해 규율된다. 게임의 법칙은 가장 많은 점수를 매기려고 재미 있고 자유로운 흐름을 유지하기 위해 고안되었습니다. 럭비의 법칙은 끊임없이 진화하고 있으며 게임이 진행되는 곳마다 전 세계에서 동일합니다. 일반적으로 법률은 ...

누가 슈퍼 럭비 팀입니까? - 인형

누가 슈퍼 럭비 팀입니까? - 인형

Super Rugby는 15 개 팀으로 구성됩니다. 공격을 장려하는 포인트 시스템은 경쟁자를 시청자에게 더욱 매력적으로 만듭니다. 수퍼 럭비 팀 15 명은 블루스 : 뉴질랜드 북섬의 오클랜드 블루스 우박. Brumbies : ACT Brumbies는 캔버라 스타디움에서 홈구장을하고 있습니다 ...

편집자의 선택

귀하의 LinkedIn 네트워크에 직업 목록 광고 - 인형

귀하의 LinkedIn 네트워크에 직업 목록 광고 - 인형

LinkedIn은 귀하에게 "공유" Facebook 및 Twitter와 같은 소셜 네트워킹 사이트를 사용하여 귀하의 직업 목록을 작성하고, 네트워크의 모든 사람들 또는 일부 사람들에게 메시지를 보내고, 일자리에 대해 알리고 그들이 알고있는 사람이 누구인지 물어볼 수 있습니다

귀하의 LinkedIn 프로필을 보지 못하도록 차단 - 인형

귀하의 LinkedIn 프로필을 보지 못하도록 차단 - 인형

LinkedIn 사용자가 원하지 않는 자신의 프로파일에 대한 연락처 정보를 제공합니다. 스토커 나 학대받는 사람을 상대 할 때가 있습니다. 이러한 상황에서 LinkedIn을 사용하면 프로필 및 LinkedIn 활동에 대한 사용자의 액세스를 제한 할 수 있습니다. 당신은 오직 ...

자신의 LinkedIn 라이온 또는 그들과의 만남 - 인형

자신의 LinkedIn 라이온 또는 그들과의 만남 - 인형

LinkedIn의 사람들은 이름 옆에있는 "LION"이라는 별명을 사용하거나 요약에 나열해야합니다. 아니요,이 사람들은 실제 고양이 애호가가 아닙니다. LION은 LinkedIn Open Networker의 약자입니다. 라이온은 LinkedIn에있는 사람들과 관계없이 그들이 알고 있는지 여부에 관계없이 누구와도 연결할 수있는 사람입니다.

편집자의 선택

시작 버튼에서 Word 2007을 여는 방법 - 반드시

시작 버튼에서 Word 2007을 여는 방법 - 반드시

더미 인형, Word를 시작할 장소 2007 전설적인 시작 버튼에 있습니다. Word를 시작하는 가장 멋진 방법은 아니지만 일관성 있고 신뢰할 수 있습니다. 문서를 만들어야 할 때 사용할 수있는 좋은 도구입니다. 시작 버튼을 클릭하십시오. 시작 메뉴가 표시됩니다. Word를 선택하십시오 ...

Word 2013에서 하나의 문서를 여는 방법 - 더미

Word 2013에서 하나의 문서를 여는 방법 - 더미

하나의 문서를 다른 문서의 내부에서 엽니 다. 그렇게하는 것은 생각만큼 희귀하지 않습니다. 예를 들어, 약력, 이력서 또는 이력서를 디스크에있는 파일에 올릴 수 있으며 그 정보를 구걸하는 편지 끝에 붙여 넣을 수 있습니다. 그렇다면 ...

빠른 실행 도구 모음으로 Word 2007을 여는 방법 - 더미

빠른 실행 도구 모음으로 Word 2007을 여는 방법 - 더미

Word 2007을 빠르게 시작할 수 있습니다 빠른 실행 도구 모음을 쉽게 사용할 수 있습니다. 작업 표시 줄의 시작 단추 바로 옆에있는 빠른 실행 도구 모음은 프로그램을 나타내는 일련의 아이콘으로 마우스를 한 번 클릭하여 시작할 수 있습니다.