Coding

1.1 선형 모델

linguana 2021. 3. 26. 11:52

출처: scikit-learn.org/stable/modules/linear_model.html

다음은 (목표값이 피처들의 선형 조합일 것으로 기대되는) 회귀를 위한 방법들이다. 수학적인 표기로는 y-hat이 예측 값이다. (y 위에 삿갓 쓰인 모양) 정확한 수식은 출처에서 확인하길, (p개의 x가 있는 다항식임)

y-hat(w, x) = w0 + w1x1 + ... + wpxp

모듈에서 우리는 w = (w1, ..., wp)라는 벡터를 coef_로 지정하였고 w0는 intercept_로 지정하였다.

(co-efficient는 한국말로 "상관계수"이고 intercept는 "절편"임. w는 weight(가중치)의 약자임. 그니까 w0는 상수 같은 성격이고 다른 w는 변수 같은 성격임. 다른 문서에서는 w0를 bias(편향)이라고 부르기도 함)


1.1.1. Ordinary Least Squares ("일반 최소 제곱"이라고 번역해야 하나? OLS)

LinearRegression (선형회귀)는 예측값과 실제값의 차이를 제곱하여 다 더한 값을 최소화하는 목표로 선형 모델을 훈련한다. (쉽게 말해서 loss='mse') 수학적으로는 다음과 같은 형식으로 해결한다(고 하는데 자세한 수식은 출처 참고)

선형회귀모델

LinearRegression은 배열 X, y를 fit 메소드의 인자로 받아들여 상관계수 w를 선형 모델의 coef_ 요소로 저장할 것이다. (쉽게 말해서 X, y라는 데이터를 주면 그것을 훈련한 결과로 가중치를 선형 모델에 저장시킨다는 말, 모르면 코드 봐)

>>> from sklearn import linear_model
>>> reg = linear_model.LinearRegression()
>>> reg.fit ([[0, 0], [1, 1], [2, 2]], [0, 1, 2])
LinearRegression()
>>> reg.fit([[0, 0], [1, 1], [2, 2]], [0, 1, 2])
LinearRegression()
>>> reg.coef_
array([0.5, 0.5])

다음 문단은 원문에 대한 대충대충 번역인데 안 읽고 스킵하는 걸 추천.

"일반 최소 제곱"에 대한 상관계수 예측값은 피처(특성)들의 독립성에 의존한다. (뭔 소리야, 그냥 쭉 읽어보자) 피처들이 서로 상관관계가 있고 디자인 매트릭스(행렬) X의 열들이 선형 의존적인 관계로 수렴할 때, 그 디자인 매트릭스는 결과적으로 singular (특이행렬)에 수렴하고, "최소 제곱" 예측값은 관측치에서 발견된 랜덤한 오차에 민감해지며, 큰 분산을 만들게 된다. (아니, 이건 또 뭔 소리야) 이런 상황(multicollinearity; 공식 번역: 다중공선성; 직역: 다수 상관선형성)은 가령 데이터가 experimental design(실험설계) 없이 수집되었을 때 발생한다. (하나도 읽히지 않는다. 좀 풀어서 얘기해보도록 하자)

내가 이해한 바로는 여기서 말하고 싶은 메세지는 "특성들이 독립적이어야 OLS를 위한 상관계수예측이 잘 된다" 같음. 다른 말로는 특성들이 높은 상관관계가 있다면 (aka 의존적이라면), 모델에 대한 예측이 개판이 된다. (이하 설명, 안 읽어도 무방, 그냥 외우자: "아, 선형 모델 쓰려면 특성들은 독립적이어야 한다") 우리가 피하고 싶은 상황은 데이터가 singular(특이행렬)이 되는 건데, 이 singular이라는 개념이 뭔지부터 알아보자. singular(특이행렬)이란 "역행렬이 존재하지 않는 행렬"이다. 역행렬이 존재하지 않을 조건은 "판별식=0"인데 자세한 식은 아래 출처를 확인해보고, 단순하게 우리가 알아야 할 부분은 판별식이 0일 경우에 x가 없거나 x는 무한히 존재한다는 거다. 그럼 특이행렬이 되면 우리의 모델에 어떤 문제가 있느냐? 우리의 모델은 오차제곱을 줄여나가면서 예측값을 실제값에 가깝게 하는 건데, 특이행렬이 될 경우에는 특성들이 서로 상관관계가 너무 높기 때문에, 갑자기 어떤 부분에서 오차가 뜬금없이 발생하면 그 오차에 너무 민감하고 그래서 분산이 너무 커지는 문제가 생긴다. 쉽게 말하면 모델 예측이 잘 안 된다. 

특이행렬 개념 출처: m.blog.naver.com/PostView.nhn?blogId=redpkzo&logNo=30147779345&proxyReferer=https:%2F%2Fwww.google.com%2F


1.1.1.1. Non-Negative Least Squares (음이 아닌 최소 제곱)

모든 상관계수가 음수가 아니도록 제한할 수 있는데 이는 특히 물리적이거나 자연적으로 음수가 아닌