Path: blob/master/site/ko/probability/examples/Generalized_Linear_Models.ipynb
25118 views
Copyright 2018 The TensorFlow Probability Authors.
Licensed under the Apache License, Version 2.0 (the "License");
이 노트북에서는 작업 예제를 통해 일반화된 선형 모델을 소개합니다. TensorFlow Probability에서 GLM을 효율적으로 피팅하기 위한 두 가지 알고리즘을 사용하여 이 예제를 두 가지 다른 방법으로 해결합니다. 즉, 밀집 데이터에 대한 Fisher 스코어링과 희소 데이터에 대한 좌표별 근위 경사 하강법입니다. 피팅된 계수를 실제 계수와 비교하고, 좌표별 근위 경사 하강법의 경우 R의 유사한 glmnet
알고리즘 출력과 비교합니다. 마지막으로, GLM의 몇 가지 주요 속성에 대한 추가적인 수학 정보와 파생 내용을 제공합니다.
배경 설명
일반화된 선형 모델(GLM)은 변환(연결 함수)으로 래핑되고 지수족의 응답 분포를 가지고 있는 선형 모델()입니다. 연결 함수와 응답 분포의 선택은 매우 유연하여 GLM에 뛰어난 표현력을 제공합니다. 모든 정의 및 결과의 순차적인 표시부터 명확한 표기법으로 GLM을 구성하는 내용까지, 전체 세부 사항은 아래의 "GLM 사실의 파생"에서 확인할 수 있습니다. 다음을 요약합니다.
GLM에서 반응 변수 에 대한 예측 분포는 관측된 예측 변수 의 벡터와 연관됩니다. 분포의 형식은 다음과 같습니다.
여기서 는 매개변수("가중치")이고 는 분산("분산")을 나타내는 하이퍼 매개변수이며 , , , 는 사용자 지정된 모델군에 의해 그 특성이 부여됩니다.
의 평균은 선형 응답 와 (역) 연결 함수의 구성에 의해 에 따라 달라집니다. 예:
여기서 는 소위 연결 함수입니다. TFP에서 연결 함수와 모델군의 선택은 tfp.glm.ExponentialFamily
하위 클래스에 의해 공동으로 지정됩니다. 예를 들면 다음과 같습니다.
tfp.glm.Normal
, 일명 "선형 회귀"tfp.glm.Bernoulli
, 일명 "로지스틱 회귀"tfp.glm.Poisson
, 일명 "푸아송 회귀"tfp.glm.BernoulliNormalCDF
, 일명 "프로빗 회귀".
tfp.Distribution
이 이미 일급 객체이기 때문에 TFP는 연결 함수보다 Y
에 대한 분포에 따라 모델군의 이름을 지정하는 것을 선호합니다. tfp.glm.ExponentialFamily
서브 클래스 이름에 두 번째 단어가 포함된 경우, 이는 비표준 연결 함수를 나타냅니다.
GLM에는 최대 가능도 estimator를 효율적으로 구현할 수 있게 해주는 몇 가지 놀라운 속성이 있습니다. 이러한 속성 중 가장 중요한 것은 로그-가능도 의 기울기 및 Fisher 정보 행렬에 대한 간단한 공식입니다. 이는 동일한 예측 변수 아래 응답의 재표본 추출에서 음의 로그-가능도에 대한 Hessian 기대값입니다. 즉, 다음과 같습니다.
여기서 는 th 행이 th 데이터 샘플에 대한 예측 벡터인 행렬이고 는 th 좌표가 th 데이터 샘플에 대해 관찰된 응답인 벡터입니다. 여기서(대략적으로 말하면), 및 , 및 굵은 글씨체는 이러한 함수의 벡터화를 나타냅니다. 이러한 기대치와 편차가 어떤 분포에 걸쳐져 있는지에 대한 자세한 내용은 아래의 "GLM 사실 도출"에서 확인할 수 있습니다.
예제
이 섹션에서는 TensorFlow Probability의 두 가지 기본 제공 GLM 피팅 알고리즘인 Fisher 점수(tfp.glm.fit
) 및 좌표별 근위 경사 하강법(tfp.glm.fit_sparse
)을 간략하게 설명하고 예시합니다.
합성 데이터세트
일부 훈련 데이터세트를 로드한다고 가정해 보겠습니다.
참고: 로컬 런타임에 연결하세요.
이 노트북에서는 로컬 파일을 사용하여 Python과 R 커널 간에 데이터를 공유합니다. 이 공유를 활성화하려면 로컬 파일을 읽고 쓸 수 있는 권한이 있는 동일한 컴퓨터에서 런타임을 사용하세요.
L1 정규화 미사용
tfp.glm.fit
함수는 일부 인수를 취하는 Fisher 스코어링을 구현합니다.
model_matrix
=response
=model
= 호출 가능하며 인수가 주어지면 삼중 .를 반환합니다.
model
을 tfp.glm.ExponentialFamily
클래스의 인스턴스로 사용하는 것이 좋습니다. 몇 가지 미리 만들어진 구현을 사용할 수 있으므로 대부분의 일반적인 GLM에는 사용자 지정 코드가 필요하지 않습니다.
수학적 세부 사항
Fisher 스코어링은 최대 가능도 추정치를 찾기 위한 Newton의 방법을 변형한 것입니다.
로그-가능도의 기울기 0을 찾는 Vanilla Newton의 방법은 업데이트 규칙을 따릅니다.
여기서 은 단계 크기를 제어하는 데 사용되는 학습률입니다.
Fisher 스코어링에서는 Hesian을 음의 Fisher 정보 행렬로 바꿉니다.
[여기서 는 랜덤인 반면 는 여전히 관찰된 응답의 벡터입니다.]
아래 "GLM 매개변수를 데이터에 피팅하기" 공식을 사용하면 다음과 같이 단순화됩니다.
L1 정규화 사용
tfp.glm.fit_sparse
는 Yuan, Ho 및 Lin 2012의 알고리즘을 기반으로 희소 데이터세트에 더 적합한 GLM 피터를 구현합니다. 해당 요소에는 다음이 포함됩니다.
L1 정규화
매트릭스 반전 없음
기울기와 Hessian에 대한 평가가 거의 없음
먼저 코드의 사용 예를 제시합니다. 알고리즘의 세부 사항은 아래 "tfp.glm.fit_sparse
에 대한 알고리즘 세부 사항"에서 더 자세히 설명합니다.
학습된 계수는 실제 계수와 동일한 희소성 패턴을 가집니다.
R의 glmnet
와 비교하기
좌표별 근위 경사 하강법의 출력을 유사한 알고리즘을 사용하는 R의 glmnet
출력과 비교합니다.
참고: 이 섹션을 실행하려면 R colab 런타임으로 전환해야 합니다.
R, TFP 및 실제 계수 비교(참고: Python 커널로 돌아가기)
tfp.glm.fit_sparse
에 대한 알고리즘 세부 정보
알고리즘을 Newton의 방법에 대한 세 가지 수정 시퀀스로 제시합니다. 각각에서 에 대한 업데이트 규칙은 벡터 와 로그-가능도의 그래디언트 및 Hessian을 근사 계산하는 행렬 를 기반으로 합니다. 단계에서 변경할 좌표 를 선택하고 업데이트 규칙에 따라 를 업데이트합니다.
이 업데이트는 학습률이 인 Newton과 유사한 단계입니다. 최종 조각(L1 정규화)을 제외하고 아래 수정 사항은 및 를 업데이트하는 방식만 다릅니다.
출발점: 좌표별 Newton 방법
좌표별 Newton 방법에서는 및 를 로그-가능도의 실제 그래디언트 및 Hessian으로 설정합니다.
그래디언트 및 Hessian에 대한 더 적은 평가
로그-가능도의 그래디언트와 Hessian은 종종 계산하는 데 비용이 많이 들기 때문에 대략적으로 계산하는 것이 좋습니다. 다음과 같이 할 수 있습니다.
일반적으로 Hessian을 로컬 상수로 근사하고 (근사) Hessian을 사용하여 그래디언트를 1차로 근사합니다.
때로 위와 같이 "바닐라" 업데이트 단계를 수행하여 를 정확한 그래디언트로 설정하고 를 로그-가능도의 정확한 Hessian으로 설정합니다. 에서 평가됩니다.
Hessian을 음의 Fisher 정보로 대체
바닐라 업데이트 단계의 비용을 더 줄이기 위해 정확한 Hessian 대신 를 음의 Fisher 정보 행렬(아래 "GLM 매개변수를 데이터에 맞추기"의 공식을 사용하여 효율적으로 계산할 수 있음)로 설정할 수 있습니다.
근위 경사 하강법을 통한 L1 정규화
L1 정규화를 통합하기 위해 아래의 업데이트 규칙을
더 일반적인 다음 업데이트 규칙으로 대체합니다.
여기서 ParseError: KaTeX parse error: Expected 'EOF', got '&' at position 15: r_{\text{l0}} &̲gt; 0는 제공된 상수(L1 정규화 계수)이고 는 다음과 같이 정의된 소프트 임계값 연산자입니다.
이 업데이트 규칙에는 다음과 같은 두 가지 영감을 주는 속성이 있으며 아래에서 설명합니다.
의 제한적인 경우(즉, L1 정규화 없음), 이 업데이트 규칙은 원래 업데이트 규칙과 동일합니다.
의 제한적인 경우(즉, L1 정규화 없음), 이 업데이트 규칙은 원래 업데이트 규칙과 동일합니다.
퇴화 사례 는 원래 업데이트 규칙을 복구합니다.
(1)을 보려면 이면 이므로
따라서
GLM 사실 도출
이 섹션에서는 이전 섹션에서 사용된 GLM에 대해 자세히 설명하고 결과를 도출합니다. 그런 다음 TensorFlow의 gradients
를 사용하여 로그-가능도와 Fisher 정보의 그래디언트에 대한 파생 공식을 수치적으로 검증합니다.
점수 및 Fisher 정보
확률 밀도가 ParseError: KaTeX parse error: Expected '}', got '\right' at position 24: …\cdot | \theta)\̲r̲i̲g̲h̲t̲}_{\theta \in \…인 매개변수 벡터 로 매개변수화된 확률 분포군을 고려하세요. 매개변수 벡터 에서 결과 의 점수는 (에서 평가됨)의 로그-가능도의 그래디언트로 정의됩니다. 즉,
주장: 점수의 기대치는 0
강하지 않은 규칙성 조건(적분에서 미분을 전달할 수 있음)에서는 다음과 같습니다.
증명
다음을 가지고 있습니다.
여기서 우리는 다음을 사용했습니다: (1) 미분에 대한 연쇄 법칙, (2) 기대치의 정의, (3) 적분 기호로 미분 전달(규칙성 조건 사용), (4) 확률 밀도의 적분은 1
주장(Fisher 정보): 점수의 분산은 로그-가능도의 음수 기대 Hessian과 같습니다.
강하지 않은 규칙성 조건(적분에서 미분을 전달할 수 있음)에서는 다음과 같습니다.
여기서 는 항목이 인 Hessian 행렬을 나타냅니다.
이 수식의 좌변은 매개변수 벡터 에서 분포군의 Fisher 정보라고 합니다.
주장 증명
다음을 가지고 있습니다.
여기서 우리는 다음을 사용했습니다. (1) 미분에 대한 연쇄 법칙, (2) 미분에 대한 몫 법칙, (3) 연쇄 법칙을 역으로 이용.
증명을 완료하려면 다음을 보여주는 것으로 충분합니다.
이를 위해 적분 기호로 미분을 두 번 전달합니다.
로그 분할 함수의 도함수에 대한 보조 정리
, 및 가 스칼라 값 함수인 경우 는 두 배 미분 가능하므로 다음에 의해 정의되는 분포군은
에 대한 적분 하에서 에 대한 미분을 전달할 수 있도록 하는 강하지 않은 규칙성 조건을 충족하며, 그러면 다음과 같이 됩니다.
그리고
(여기서 는 미분을 나타내므로 와 는 의 1차 도함수와 2차 도함수입니다.)
증명
이 분포군에 대해 를 갖습니다. 그러면 라는 사실로부터 첫 번째 수식이 따라옵니다. 그리고 다음과 같습니다.
과분산 지수군
(스칼라) 과분산 지수군은 밀도가 다음 형식을 취하는 분포군입니다.
여기서 및 는 알려진 스칼라 값 함수이고 및 는 스칼라 매개변수입니다.
[는 과도하게 결정됨: 어떤 에 대해서든지 함수는 모든 에서 라는 제약 조건에 의해 완전히 결정됩니다. 의 다른 값으로 생성된 는 모두 동일해야 하며, 이에 따라 및 함수에 제약 조건이 부여됩니다.]
충분한 통계량의 평균과 분산
"로그 분할 함수의 도함수에 대한 보조 정리"와 동일한 조건에서 다음과 같습니다.
그리고
증명
"로그 분할 도함수의 미분에 대한 보조 정리"에 의해 다음과 같습니다.
그리고
그러면 기대치가 선형()이고 분산이 2차 동차()라는 사실로부터 결과가 나옵니다.
일반화된 선형 모델
일반화된 선형 모델에서 반응 변수 에 대한 예측 분포는 관측된 예측 변수 의 벡터와 연관됩니다. 분포는 과분산 지수군의 구성원이고 매개변수 는 로 대체됩니다. 여기서 는 알려진 함수이고 는 이른바 선형 응답이며, 는 학습할 매개변수(회귀 계수)의 벡터입니다. 일반적으로 분산 매개변수 도 학습할 수 있지만 여기서의 설정에서는 를 알려진 대로 취급합니다. 그래서 설정은 다음과 같습니다.
여기서 모델 구조는 분포 와 선형 응답을 매개변수로 변환하는 함수 로 특징지어집니다.
전통적으로, 선형 응답 에서 평균 로의 매핑은 다음으로 표기됩니다.
이 매핑은 일대일이어야 하며 그 반대인 를 이 GLM에 대한 링크 함수라고 합니다. 일반적으로 GLM은 연결 함수와 분포군의 이름을 지정하여 설명합니다(예: "Bernoulli 분포 및 로짓 연결 함수가 있는 GLM"(로지스틱 회귀 모델이라고도 함)). GLM을 완전히 특성화하려면 함수도 지정해야 합니다. 가 ID이면 는 표준 링크 함수라고 말합니다.
주장: 충분한 통계량의 측면에서 표현하기
다음을 정의합니다
그리고
그러면 다음을 얻습니다.
증명
"충분한 통계량의 평균과 분산"에 의해 다음을 얻습니다.
연쇄 법칙으로 미분하면 를 얻습니다.
그리고 "충분한 통계량의 평균과 분산"에 의해 다음과 같습니다.
결론은 다음과 같습니다.
데이터에 GLM 매개변수 피팅
위에서 파생된 속성은 GLM 매개변수 를 데이터세트에 피팅하는 데 매우 적합합니다. Fisher 점수와 같은 준뉴턴 방법은 로그 가능도의 그래디언트와 Fisher 정보에 의존하며, 이제 GLM에 대해 특히 효율적으로 계산할 수 있음을 보여줍니다.
예측 변수 벡터 및 연관된 스칼라 응답 를 관찰했다고 가정합니다. 행렬 형식에서 우리는 예측 변수 와 응답 를 관찰했다고 말할 것입니다. 여기서 는 번째 행이 인 행렬이고, 는 번째 요소가 인 벡터입니다. 그러면 매개변수 의 로그 가능도는 다음과 같습니다.
단일 데이터 샘플의 경우
표기법을 단순화하기 위해 먼저 단일 데이터 포인트인 의 경우를 살펴보겠습니다. 그런 다음 가산성을 통해 일반적인 경우로 확장합니다.
그래디언트
다음을 가지고 있습니다.
따라서 연쇄 법칙에 의해 다음과 같습니다.
이와 별도로 "충분한 통계량의 평균과 분산"에 의해 가 됩니다. 따라서 "주장: 충분한 통계량의 관점에서 표현"에 의해 다음과 같습니다.
Hessian
두 번째 미분하면 곱의 법칙에 의해 다음을 얻습니다.
Fisher 정보
"충분한 통계량의 평균과 분산"에 의해 다음을 얻습니다.
따라서
여러 데이터 샘플의 경우
이제 케이스를 일반 케이스로 확장합니다. 는 번째 좌표가 번째 데이터 샘플의 선형 응답인 벡터를 나타낸다고 하겠습니다. (해당 , 해당 )는 스칼라 값 함수 (해당 , 해당 )를 각 좌표에 적용하는 브로드캐스트된(벡터화된) 함수를 나타낸다고 하겠습니다. 그러면 다음과 같습니다.
그리고
여기서 분수는 요소별 나눗셈을 나타냅니다.
수식을 수치적으로 검증하기
이제 로그 가능도 그래디언트에 대한 위의 수식을 tf.gradients
를 사용하여 수치적으로 검증하고, Fisher 정보 수식을 tf.hessians
를 사용하여 Monte Carlo 추정으로 검증합니다.
참고 자료
[1]: Guo-Xun Yuan, Chia-Hua Ho and Chih-Jen Lin. An Improved GLMNET for L1-regularized Logistic Regression. Journal of Machine Learning Research, 13, 2012. http://www.jmlr.org/papers/volume13/yuan12a/yuan12a.pdf
[2]: skd. Derivation of Soft Thresholding Operator. 2018. https://math.stackexchange.com/q/511106
[3]: Wikipedia Contributors. Proximal gradient methods for learning. Wikipedia, The Free Encyclopedia, 2018. https://en.wikipedia.org/wiki/Proximal_gradient_methods_for_learning
[4]: Yao-Liang Yu. The Proximity Operator. https://www.cs.cmu.edu/~suvrit/teach/yaoliang_proximity.pdf