Statistics

[grid search] R 코드로 표현한 다양한 손실함수의 형태

  • -
728x90

손실함수 개요

지료의 대표값을 구할 때는 평균을 구하는 방법도 있지만 손실함수를 이용하여 구하는 방법도 있다.
손실함수에서 말하는 손실이란 관측값들과 대표값의 차이로 인해 발생하는 손실의 크기인데 통계학에서는 오차 혹은 잔차라고도 불린다.
 
 그럼 이러한 손실 함수가 어떻게 대표값이 되는걸까? 손실함수가 가장 손실이 최소화 되는 구간이 있는데 그 구간의 값을 대표값으로 삼는 것이다. 이때 자료가 n개라면 n개의 손실이 있을 것이고 n개의 손실에 대한 산술평균이 가장 작어지는 지점 그 지점을 구하는 것이 바로 최적화 방법에 속한다.
 
이러한 손실을 수식으로 정리하여 둔 것이 손실함수이며 다양한 손실함수의 형태가 존재한다.
이제 부터 손실함수의 종류에 대해 알아보자

대표적으로 이렇게 5가지가 있다.
이 함수들은 모두 𝝁에 대한 함수이며 𝝁가 곧 우리가 기존에 알고 있던 대표값이다.
 
이 함수들을 모두 R 코드로 짜보았다.
아래 코드 들을 보면 x자리에 x.vec 으로 변수 이름이 들어가 있는데 벡터 형태의 데이터가 들어갈 것을 의미한다.

square loss

risk.ftn = function {
	fx = mean((x.vec-mu)^2)
	return(fx) 
}

 

absolute loss

risk.ftn = function(x.vec, mu) { 
  fx = mean(abs(x.vec-mu))
  return(fx)
}

 

quantile loss

risk.ftn = function(x.vec, mu, gamma) { 
  fx = mean((1-gamma)*abs(x.vec-mu)*(x.vec < mu) +
              gamma*abs(x.vec-mu)*(x.vec >= mu))
  return(fx)
}

 

Huber loss

risk.ftn = function(x.vec, mu, delta) { 
  fx = mean((x.vec-mu)^2*(abs(x.vec-mu) < delta) +
              (2*delta*abs(x.vec-mu) - delta^2)*(abs(x.vec-mu) >= delta))
  return(fx)
}

 

LASSO

risk.ftn = function(x.vec, mu, lambda) { 
  fx = mean(x.vec-mu)^2 + lambda*abs(mu))
  return(fx)
}
728x90
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.