L1 손실 함수를 사용하여 R에서 (물류?) 회귀를 어떻게 훈련합니까?


11

로지스틱 회귀를 R사용할 수 있습니다.

glm(y ~ x, family=binomial(logit)))

그러나 IIUC는 로그 가능성을 최적화합니다.

선형 ( ) 손실 함수 (이 경우 총 변동 거리 와 동일)를 사용하여 모델을 학습하는 방법 이 있습니까?L1

즉, 숫자 벡터 주어진 및 비트 (논리) 벡터 , I는 (증가하는 사실)를 단조 함수를 생성하고자 되도록최소화됩니다.y f | f ( x ) y |xyf|f(x)y|

또한보십시오


당신이 원하는 것은 존재하지 않으며, 무딘 것입니다. 우리는 대안에 대해 논의 할 수 있지만 당신이하려는 일을 더 철저히 진술해야합니다. L1 손실이있는 로지스틱 모델을 왜 적합하게 하시겠습니까?
user603

@ user603 : TVD를
sds

이항 분포 데이터를 피팅하는 대신 데이터에 로지스틱 곡선 을 피팅하는 것, 즉 비선형 회귀 의 형태 이지만 규범 대신 사용하는 하는 것 . 실제로 손실 함수최대 값이 이 아니라고 제안합니다 (이 경우 이항 GLM을 잘못 사용함). 그것이 정말 다른 한편, 만약 됩니다 0-1로 제한, 손실 함수는 이해가되지 않습니다. 실제 상황을 자세히 설명해 주시겠습니까? L 2| f ( x ) y | 1L1L2|f(x)y|1
Glen_b-복지 모니카

하십시오 참고 도움을 당신이 부탁 하지 않는 여러 사이트에 크로스 포스트에게 같은 질문을하지만, 대신에 하나 개의 사이트를 선택합니다. 나중에 어떤 사이트가 가장 좋은지 마음이 바뀌면 운영자의주의를 끌기 위해 플래그를 지정하고 사이트 이동을 요청하십시오.
Glen_b-복지 모니카

@ Glen_b : "비트 (논리) 벡터 y"는 0/1 응답을 의미한다고 생각합니다.
sds

답변:


21

더 나은 단어가 없기 때문에 수학적으로 결함이 있기 때문에 원하는 것은 존재하지 않습니다.

그러나 먼저, 나는 당신의 질문의 전제가 건전하다고 생각하는 이유를 강조 할 것입니다. 그런 다음 그로부터 도출 한 결론이 로지스틱 모델에 대한 오해에 근거한다고 생각하는 이유를 설명하려고 노력할 것이며, 마지막으로 대안적인 접근법을 제안 할 것입니다.

I가 나타내는 것 하여 관찰 (대담한 글자가 경로를 나타낸다)의 어느 거짓말 차원 공간 (첫 번째 엔트리 1)와 , 와 의 단조로운 함수 , 등을 말한다 로지스틱 곡선 아이디어를 고치기 위해. 편의상, 나는 이 비해 충분히 크다고 가정합니다 . np x{(xxi,yi)}i=1nnp p<n y i[0,1]f( xxxip<nyi[0,1]xf(xxi)=f(xxiββ) n pxxiββnp

적합 모델을 평가 하기 위해 TVD 를 기준 으로 사용하려는 경우 , 데이터에 대해 가능한 모든 후보 중에서 동일한 기준을 최적화하는 것이 적합하다는 것이 합리적입니다. 그 후

ββ=argminββRp||yyf(xxiββ)||1

문제는 오류 용어입니다 : 그리고 만약 우리가 을 강제한다면 (우리는 단순히 모델이 편향 되기를 원합니다 )heteroskedastic 이어야 합니다 . 때문이다 두 값 0을 취할 수 1. 따라서 주어진 , 또한 두 개의 값을 취할 수있다 : , 때 확률 및 발생합니다.ϵi=yif(xxiββ)E(ϵϵ)=0ϵi yixxiϵi1f(xxiββ)yi=1f(xxiββ)f(xxiββ)yi=1확률 와 함께 발생합니다 .1f(xxiββ)

이러한 고려 사항은 다음을 의미합니다.

var(ϵϵ)=E(ϵϵ2)=(1f(xxββ))2f(xxββ)+(f(xxββ))2(1f(xxββ))=(1f(xxββ))f(xxββ)=E(yy|xx)E(1yy|xx)

따라서 은 일정하지 않지만 오목한 포물선 모양이며 가 와 같은 경우 최대화됩니다 .var(ϵϵ)xxE(y|xx).5

잔차 의이 고유 이분산성은 결과를 초래 합니다. 이는 손실 함수를 최소화 할 때 샘플의 부분적으로 임을 의미 합니다. 즉, 피팅 된 는 데이터를 전혀 맞추지 않고 가 와 같은 위치에 모여있는 데이터의 일부에만 해당하지 않습니다 . 요컨대, 이들은 샘플에서 가장 유익한 데이터 포인트입니다 . 이는 노이즈 성분이 가장 큰 관측치에 해당합니다. 따라서, 당신의 적합은 쪽으로 끌어 당겨 집니다 (예 : 관련이 없음).l1ββxxE(yy|xx).5ββ=ββ:f(xxββ).5

위의 설명에서 분명한 한 가지 해결책은 편견의 요구를 없애는 것입니다. 추정값을 편향시키는 일반적인 방법은 축소 용어를 포함시키는 것입니다. 응답의 규모를 조정하면 :

yi+=2(yi.5),1in

계산상의 편의를 위해 를 다른 모노톤 함수 -속편이 매개 변수 벡터의 첫 번째 구성 요소를 로, 나머지 은 로 표시하는 것이 편리 하며 축소 용어 (예 : 형식 중 하나)를 포함합니다. ) 결과 최적화 문제는 다음과 같습니다.f(xxββ)g(xx,[c,γγ])=xx[c,γγ]cp1γγ||γγ||2

[c,γγ]=argmin[[c,γγ]Rpi=1nmax(0,1yi+xxi[[c,γγ])+12||γγ||2

이 새로운 (볼록한) 최적화 문제에서 올바르게 분류 된 관측치에 대한 페널티는 0이며 l_1에서와 같이 미스 분류 된 것에 대해서는 와 선형으로 증가 합니다 손실. 이 제 최적화 문제에 대한 해결책은 계수 (완전한 분리와 함께) 경축 선형 SVM이다. 와는 반대로 TVD 유형의 페널티가있는 데이터에서 이러한 를 배우는 것이 좋습니다 (바이어스 항으로 인해 'type'). . 결과적으로이 솔루션은 널리 구현됩니다. 예를 들어 R 패키지 LiblineaR을 참조하십시오 .xx[[c,γ]l1[c,γγ]ββ[c,γγ]


나는 당신에게 25 점 이상을 줄 수 있기를 바랍니다 :-)
sds

@sds; 감사합니다 : 그것은 큰 질문이었습니다 :) 나는 하루 동안 돌아와 세부 사항을 채우고 오타를 수정합니다.
user603

8

왜 당신이 0과 1 사이에 제한된 것을 위해 L1 손실을 사용하고 싶은지 잘 모르겠습니다. 목표가 무엇인지에 따라, 한 방향으로 평평한 L1 손실과 비슷한 힌지 손실과 같은 것을 고려하고 싶을 수도 있습니다 다른 사람.

어쨌든 아래 코드는 요청한 것을 수행해야합니다. 최적의 응답은 기본적으로 단계 함수입니다.

set.seed(1)

# Fake data
x = seq(-1, 1, length = 100)
y = rbinom(100, plogis(x), size = 1) # plogis is the logistic function

# L1 loss
loss = function(y, yhat){
  sum(abs(y - yhat))
}

# Function to estimate loss associated with a given slope & intercept
fn = function(par){
  a = par[1]
  b = par[2]
  loss(y = y, yhat = plogis(a + b * x))
}

# Find the optimal parameters
par = optim(
  par = c(a = 0, b = 0),
  fn = fn
)$par

# Plot the results
plot(y ~ x)
curve(plogis(par[1] + par[2] * x), add = TRUE, n = 1000)

0

L1, L2 모델에 glmnet 패키지를 사용할 수 있습니다. 로지스틱 회귀에만 국한되지 않고 포함합니다.

여기 비네팅이 있습니다 : http://web.stanford.edu/~hastie/glmnet/glmnet_alpha.html

웹 세미나도 있습니다 : https://www.youtube.com/watch?v=BU2gjoLPfDc

Liblinear는 좋지만 glmnet을 시작하는 것이 더 쉽다는 것을 알았습니다. Glmnet에는 교차 유효성 검사를 수행하고 AUC와 같은 다양한 메트릭을 기반으로 정규화 매개 변수를 선택하는 기능이 포함되어 있습니다.

이론과 관련하여 나는 올가미 (L1 정규화)와 통계 학습 요소의 장에 관한 tibshiarini 논문을 읽을 것입니다. http://statweb.stanford.edu/~tibs/lasso/lasso.pdf

로그 손실에 대해서는 단지 모델을 평가하는 것입니다. 모델 피팅의 손실 기능이 아닙니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.