오늘은 Ridge, Lasso, ElasticNet에 대해 간략하게 설명해보고자 한다.

 

우리가 지금까지 사용해온 Machine Learning Algorithm인 Linear Regression은

 

비용 함수인 mse를 최소화하는 방향으로 머신러닝 모델이 학습을 진행하게 된다.

하지만, 칼럼의 개수(독립변수의 개수)가 많아질수록 과적합될 가능성이 높아진다. 따라서,

어느 정도의 "규제"를 줌으로써 과적합되는 것을 방지하는 Ridge, Lasso가 등장하였고,

그 둘을 적절히 혼합하여 사용하는 ElasticNet이 등장하였다.


Ridge

릿지는, 기존 회귀분석의 비용함수에 어떠한 규제를 추가함으로써 진행된다.

다음과 같이  Beta_Hat 부분이 우리가 찾아야 할 점이라고 생각해보자.

회귀 함수의 MSE는 weight^2인 부분들의 미분 = 0인 부분을 찾아나가는 과정이다.

그런데, 최적점인 부분은 과적합될 가능성이 높기 때문에, Ridge를 통해 과적합이 되지 않도록 규제해준다.

원은 각각 세타1,세타2의 0,0을 중심으로 한 다고 생각하면, 

타원과 원이 만나는 지점의 세타1, 세타 2의 값이 각각 해당하는 변수의 가중치가 되겠다.

이 가중치는 아래에서 설명할 LASSO처럼 0으로 만들지는 않지만, 중요하지 않은 변수를 0과 가깝게 만들어

줌으로써 과적합을 방지한다고 생각하면 된다.


LASSO

라쏘 또한 릿지와 마찬가지로 기존 회귀분석의 비용 함수에 규제를 추가하여준다.

릿지는 제곱값들의 합, 라쏘는 절댓값들의 합 규제가 각각 추가된다고 생각하면 된다.

 

절댓값인 점을 통해, 다음과 같이 마름모 형태로 LASSO의 세타들은 표현되게 되고, 최적의 비용 함수 mse는 점차 그 값을 늘려가면서 LASSO와 만나는 점에서 멈춘다. 만나는 지점을 보면, 베타 1이 0인 지점에서 만나게 되어, 베타 1을 상수항으로 갖는 변수는 0이 되어 변수가 회귀에 끼치는 영향이 0이 되게 된다.

 

이에 따라, LASSO를 필요 없는 변수를 제외시키기 위해서도 종종 사용된다고 한다.


ElasticNet

엘라스틱 넷은 위에서 보았던 Ridge와 Lasso를 적절히 사용하여 회귀식을 규제한다.

 

Ridge, Lasso 모두 시그마 앞에 알파 값을 통해 규제 정도를 얼마나 줄지 조절해 줄 수 있다.

파이썬 sklearn의 Ridge와 Lasso 알고리즘에는 알파에 해당하는 Hyperparameter가 존재, 그 값을 조정함으로써

규제를 강하게 줄지, 적절히 줄지, 약하게 줄지 사용자가 조절해줄 수 있다.

다중회귀와 다항회귀를 혼동해서 쓰는 사람들이 많다.

다중회귀와 다항회귀는 명확히 다른 개념임을 다시 한번 말하고 싶다.

 

Simple Linear Regression, 단순선형회귀는 독립변수가 한개였다. (ex: y = wx + b)

하지만, 대부분의 문제(?)는 독립변수가 하나뿐이 아니라 여러개일 때가 많다.

 

그럴 경우, 이를 다중회귀, Multiple linear regression이라고 한다.

 

근데 왜 단순 선형회귀로 설명해 놓은 블로그, 책들이 많이 있을까?

차원을 생각하면 쉽다.

우리는 1차원(직선), 2차원(평면) 3차원(공간)까지 밖에 눈으로 확인할 수 없다.

 

단순선형회귀를 한다면, 우리가 중,고등학교시절 자주 보아왔던 2차원 x,y축을 활용할 수 있다.

 

y = w_1x_1 + w_2x_2 + ... + b 와 같이 표현 할 수 있다.

 

변수만 여러개가 되었지, 단순선형회귀에서 사용하는 cost, weight조정등은 같은 개념이다.

 

다중회귀에는 몇가지 가정이 필요하다.

  • There is a linear relationship between the dependent variables and the independent variables.
  • The independent variables are not too highly correlated with each other.
  • yi observations are selected independently and randomly from the population.
  • Residuals should be normally distributed with a mean of 0 and variance σ.

 

 

 

"Multiple regressions are based on the assumption that there is a linear relationship between both the dependent and independent variables. It also assumes no major correlation between the independent variables."


다중회귀분석은 조금 다르다.

선형적인 특성을 띄지 않는 데이터를 생각해보자.

 

다음과 같은 데이터는 아무리 직선을 잘 그어도, 이 데이터를 설명하는 직선으로는 살짝 부족한것이 보일 것이다.

 

데이터를 자세히보면, 3차식에는 뭔가 잘 맞을 것 같아 보인다.

이렇게, 데이터의 형태에 따라서 (선형으로는 안될것같을때(??))

polynomial regression을 해주면, 조금 더 높은 정확도를 얻어낼 수 있다.

하지만, 차수를 높일수록, 주어진 데이터에 overfitting이 될수 있음을 항상 염두해 두어야한다.

 

예를들어, 저 그래프를 차수를 높여서 y = wx^3으로 그리면 조금더 맞는(?)그래프를 그릴 수 있을 것 같다.

 

결국 회귀분석의 이론은 다 같다. 그러나, 변수의 형태, 개수에 따라서 그것들이 나누어 지는 것같다.

'Data Anaylsis > Machine Learning' 카테고리의 다른 글

gausian mixture  (0) 2020.04.13
릿지 라쏘 엘라스틱넷  (1) 2020.03.12
단순선형회귀(single linear regression)  (0) 2020.03.05
s  (0) 2020.02.27
데이터분석 기본개념  (0) 2020.02.12

선형 회귀분석의 기초라고 할 수 있는 단순 선형 회귀분석이다.

 

머신러닝에 있어서 정답 레이블이 연속형인 값을 예측하는 데 사용된다.

 

예를 들어보자.

아버지의 키를 통해 아들의 키가 몇이 될지 예측하고 싶다.

<여기서 아버지의 키는 X변수(독립변수, feature), 아들의 키는 Y변수(종속변수, label)이다.>

데이터로 몇 명의 아버지와 몇명의 아들의 키를 가지고 있다.

 

다음과 같이 아버지의 키와 아들의 키를 scatter로 뿌려보면 다음과 같이 보일 것이다.

그러면 우리는 아버지의 키와 아들의 키를 잘 설명할 수 있는 직선을 그을 수 있다.

다음과 같이 여러 직선을 그은 것 중에, 점(실제 데이터)과 예측(점과 X값이 같으면서 선위의 점) 사이의 거리(cost)

최소가 되는 점이 아버지의 키와 아들의 키를 가장 잘 설명하는 직선이 될 것이다.


왜 우리는 이러한 선을 긋고,

예측을 하려는 것일까?

 

머신러닝의 기본으로 다시 돌아와 보면,

데이터가 풍부해짐에 따라 

가지고 있는 데이터를 통해

새로운 데이터를 맞이 했을 때, 그 값을 미리 예측할 수 있다면,

어떠한 서비스를 예측하여 제공해 줄 수도 있고,

기후 예측 등 실생활에서 활용을 할 수 있다.


 

이 예제에서도 마찬가지로, 아버지의 키를 통해 아들의 키가 어떻게 변화하는지를 보면서

아버지의 키와 아들의 키가 관계가 있다는 인사이트를 도출할 수 있다.

 

다시 본론으로 돌아오면, 이러한 점과 선 사이의 거리는 제곱의 형태나 절댓값의 형태로 나타낼 수 있다.

제곱을 다 더한 것이 우리가 자주 듣던 MSE(Mean Squared Error, 평균 제곱 오차)이고,

절댓값을 다 더한 것이 MAE(Mean Absolute Error, 오차절대합)이다.

결국, 점-선 또는 선-점을 합해버리면 그 값들이 상쇄가 되어 제곱이나 절댓값 형태를 취해주어서

상실되는 것을 방지하는 것이다.

 

여기서 제곱을 한다면, 에러가 크게 날 수록, 그 에러에 대해 제곱을 하게 되면 더 크게 값이 형성된다.

제곱 형태를 사용하면, 많이 벗어난 에러애 대해 큰 벌점을 주게 되는 것이다.

이러한 경우, 이상점이 있다면 error가 높을 것이라는 추측을 할 수 있다.


MSE를 활용하여 cost함수를 최소화 하도록 해보자.

수식적으로 간단하게 접근해보자.

저 아버지와 아들의 관계를 나타낸 선을 y = wx + b라고 한다면,

y와 x의 관계를 잘 설명하는 최적의 w와 b를 구하는 것이 목표인 것이다.

 

여기서  

y는 우리가 예측할 값이므로 H(x)로 표현할 수 있다.

이러한 과정을 Gredient Decesnt, 경사하강법이라고 부른다.

이를 수식적으로 표현해보면, 다음과 같은 cost 식을 도출해 낼 수 있다. 우리는 이 cost(W,b)를 최소화하는 것이 목적이다.

위의 식에서 H(x)자리에 wx+b를 대입하고, 식을 푼다면 이 식은 W에 대한 2차방정식으로 표현될 수 있다.

(나머지 문자는 상수 취급)

그러면 우리는 2차방정식을 그래프(2차함수, 아래로볼록)을 그릴 수 있고,

X축은 W축, Y축은 COST축이라고 말할 수 있다.

 

이 cost가 가장 작은 지점은  이차함수에 있어서 미분된 값(기울기)가 0이 되는 지점일 것이다.

그 값을 구하기 위해 W미분값이 최소가 되는 값을 구하는 과정이 바로 Gredient Decent의 핵심 아이디어이다.

 

기존 가중치 - 알파(learning rate, 학습률) * W를 미분해서 나온 값 * cost(W)값 을 진행하면서

W의 값을 계속 업데이트 해나가며, 더이상 W가 움직이지 않을때, 그 지점이 바로 cost의 최솟값, w의 최적값이 되는 것이다.

 

 여기서 알파값(learning rate)을 어떻게 잡느냐에 따라 W가 움직이는 속도가 정해진다. learning rate 값이 클수록 W는 크게크게 바뀌게될 것이고, learning rate 값이 작을수록 천천히 접근하게 될 것이다.

이를 잘 맞춰 주어야한다.

 

단순선형회귀의 기본적인 개념은 여기까지다.

질문이 있으시다면 댓글에 적어주시면

성실히 답변해드리겠슴다.

 

'Data Anaylsis > Machine Learning' 카테고리의 다른 글

gausian mixture  (0) 2020.04.13
릿지 라쏘 엘라스틱넷  (1) 2020.03.12
다중회귀, 다항회귀(Multiple linear regression, Polynomial regression)  (0) 2020.03.06
s  (0) 2020.02.27
데이터분석 기본개념  (0) 2020.02.12

X와 Y의 관계를 찾는 것!

우리의 주 관심은 Y(예측하려는 대상)

Yㅡㄹ 설명하는 X변수는 보통 여러개

여러개의 X와 Y의 관계를 찾는것!

X변수들을 조합(결합)하여 Y를 표현

조합하는 방법은 무수히 많음

수학적으로는, Y = f(X1,X2....)

 

 

옵션 - 빠른실행도구모음

Single Linear Regression,

Multiple Linear Regression,

Lasso, Ridge,

 

Polynomial Regression,

----------------------------------------------

random forest

앙상블

 

 

kmeans : 초기 k개의 중심점을 랜덤으로 잡아서 중심점과 점들 사이의 오차를 줄여나가는 방향으로

 더이상 중심점이 움직이지 않을때까지 중심점을 이동시키며 k 개로 군집을 형성한다.

bisecting kmeans : K means의 문제점을 살짝 개선시킨 것으로,

hierarchical clustering과 k means의 합성으로 보면 좋다.

처음 1개의 중심점에서 2개의 sub clustering으로 나아가는 방향으로 클러스터 갯수를 계속 늘려간다.

K를 몇으로 잡느냐에 따라 클러스터의 갯수가 정해진다.

이 클러스터는 k means의 문제점인 어떠한 클러스터에는 빈값을 가질 수 도 있기 때문에 그 점을 개선시키기 위해

계층적 군집화를 바탕으로 k means를 하는 것이다.

 

 

Scaling: Keep in mind that in order to implement a PCA transformation features need to be previously scaled. 

 

Note: The main issue with "Random Under-Sampling" is that we run the risk that our classification models will not perform as accurate as we would like to since there is a great deal of information loss (bringing 492 non-fraud transaction from 284,315 non-fraud transaction)

 

Correlation Matrices

Correlation matrices are the essence of understanding our data. We want to know if there are features that influence heavily in whether a specific transaction is a fraud. However, it is important that we use the correct dataframe (subsample) in order for us to see which features have a high positive or negative correlation with regards to fraud transactions.

 

Note: We have to make sure we use the subsample in our correlation matrix or else our correlation matrix will be affected by the high imbalance between our classes. This occurs due to the high class imbalance in the original dataframe.

 

Anomaly Detection:

Our main aim in this section is to remove "extreme outliers" from features that have a high correlation with our classes. This will have a positive impact on the accuracy of our models.

 

Interquartile Range Method:

  • Interquartile Range (IQR): We calculate this by the difference between the 75th percentile and 25th percentile. Our aim is to create a threshold beyond the 75th and 25th percentile that in case some instance pass this threshold the instance will be deleted.
  • Boxplots: Besides easily seeing the 25th and 75th percentiles (both end of the squares) it is also easy to see extreme outliers (points beyond the lower and higher extreme).

Outlier Removal Tradeoff:

We have to be careful as to how far do we want the threshold for removing outliers. We determine the threshold by multiplying a number (ex: 1.5) by the (Interquartile Range). The higher this threshold is, the less outliers will detect (multiplying by a higher number ex: 3), and the lower this threshold is the more outliers it will detect.

 

The Tradeoff: The lower the threshold the more outliers it will remove however, we want to focus more on "extreme outliers" rather than just outliers. Why? because we might run the risk of information loss which will cause our models to have a lower accuracy. You can play with this threshold and see how it affects the accuracy of our classification models.

 

-----------------------------------------------------------------------------------------------------------------------------------

 

앙상블

전체적인 어울림이나 통일, 조화 

성능이 별로 좋지 않은 모델들을 이용해서

하나의 모델만을 사용할때보다 더 좋은 결과를 보여준다

 

투표기반분류기()

직접투표(민주적인 투표)

다수결의 투표

간접투표는 확률을 이용해서 더 높은 확률이 나온 모델을 사용한다.

 

확률이 높은 모델에 더 비중을 들수 있기 때문에 더 좋다.

 

모델도 다양한 모델들을 사용할 수록 좀 더 일반화된 결과를 보여줄 수 있다.

앙상블은 그럼 갯수를 늘릴 수록 더 좋은것인가? -- 

0.5보다는 높아야된다.

 

배깅 앤드 페이스팅

샘플을 여러번 뽑아 각 모델을 학습시켜 결과를 집계

배깅은 중복 허용, 페이스팅은 중복 불가

배깅을 사용하면 오버피팅을 막을 ㅅ 있다.

 

out of bag 평가 63프로정도만 사용되고 37퍼정도는 남아있게 된다.

검증셋, 교차 검증에 사용해서 배깅 성능 측정을 위한 좋은 지표가 된다.

 

검증을 위해 데이터를 따로 빼놓는것이

교차검증 - 오버피팅을 방지하기 위해서

 

랜덤포레스트

각각의 트리들은 독립적으로 생성하게 되고, 랜덤 샘플해서 피쳐또한 모두 사용하지 않고,

피쳐도 랜덤으로 선택한다.

 

소프트 투표를 쓴다 + 배깅을 쓴다

 

중요한 매개변수 n-estimators, max-features

(default값을 사용하는 것이 좋다.) 모델이 돌아가면서 스스로 최적의 갯수를 찾아낸다.

 

부스팅 -

여러개의 모델들을 연결 시켜서 더 좋은 모델을 만드는 앙상블 학습 방법이다.

아다부스트는

데이터가 잘 학습되지 않는 곳에 가중치를 주어 모델의 성능을 향상시킨다.

 

그래디언트 부스팅

잔여 오차에 대해 새로운 모델을 학습시키는 방법이다.

 

잔여오차를 데이터로 또 만들어서 그 오차에대한 모델을 학습시켜서 

 

확인하면 좋은 매개변수 : learning rate, n_estimator(여기서 모델의 갯수는 잔여오차 모델의 갯수인가)

early stopping 잘씀

 

stacking (?)

잘모르겠다.

 

-----------------------------------------------------------------------------------------------------------------------------------

데이터베이스를 왜 설명하냐?

 

창고같은거다.

 

비지도학습

(파라미터)

 

-----------------------------------------------------------------------------------------------------------------------------------

의사결정나무 설명력이 없다? (X)

SVM 초평면

 

-----------------------------------------------------------------------------------------------------------------------------------

데이터 전처리

데이터 품질이란 신뢰성을 의미

 

잡음이 많이 포함되는 경우, 오버피팅이 발생할수 있으며 일반화가 어렵다.

이상치 일반적인 데이터인데 기존 범주를 살짝 벗어나는 것이다.

결측치

 

데이터 수집

데이터 정제 

 

결측치가 몇퍼센트가 없으면 버리는게 좋고, 너무 많으면 대체를 하는건가?

noise 제거 방법 (잘모르겠음)

 

 

+ Recent posts