codeit 43

다중 선형 회귀

다중 선형회귀는 선형 회귀를 하나의 입력 변수가 아닌 여러개의 입력 변수를 사용하여 목표 변수를 예측하는 알고리즘이다.  예를 들어, 아래와 같은 학습 데이터가 있으면,집크기, 방 수, 연식, 지하철까지의 거리 등등 을 이용하여 선형 회귀를 통해 집 값을 혜측하려는 것이다. 다중 선형 회귀 문제 표현위의 집 값 예측에 따른 표를 보면 입력 변수는 '집 크기(평), 방 수, 건물 나이(년), 지하철 거리(m)'로 4개의 변수가 있다. 입력 변수를 다른 말로는 '속성(feature)'라고 한다. 첫 번째 입력 변수는 $x_{1}$, 두 번째 입력 변수는 $x_{2}$ 처럼 밑첨자로 변수의 종류를 구분하여 나타낸다.여기서 입력 변수의 개수는 n으로 표현하는데, 위의 표에 따르면 입력 변수가 총 4개이기 때문에..

선형 회귀(Linear Regression)

선형 회귀 (Linear Regression)우선 집 크기가 주어졌을 때, 집 값을 예측한다고 해보자. 이때 선형 회귀는 여기 있는 데이터를 가장 잘 대변해 주는 선을 찾아내는 것이다. 이 데이터에 가장 잘 맞는, 가장 적절한 하나의 선을 찾아내는 거다. 통계학에서는 최적선, 영어로는 line of best fit이라고도 한다. 위의 이미지와 같이 데이터에 잘 맞는 최적선을 찾았다고 가정해보자. 그럼 이걸 어떻게 활용할 수 있을까? 아래 이미지의 최적선을 보면 50평 집 가격은 20억으로, 30평인 집은 약 10억 5천만원이라고 볼 수 있다. 이처럼 정확하진 않더라도 꽤나 합리적인 예측을 할 수 있다. 변수위의 예에서 우리가 맞추려고 하는 '집 가격'은 '목표 변수(target variable)' 또는 ..

정규화(Regularization)와 L1(Lasso), L2(Ridge) 정규화

정규화(Regularization)란?복잡한 모델을 그대로 학습시키면 과적합이 된다. 이때, '정규화' 라는 기법을 통해 학습 과정에서 모델이 과적합 되는 것을 예방할 수 있다. 아래 좌측 이미지와 같은 학습 데이터를 이용하여 다항 회귀를 해보면 우측 이미지처럼 모델이 과적합되어 복잡한 다항 함수가 나오게 된다.  과적합된 함수는 보통 위아래로 엄청 왔다 갔다 하는 특징이 있다. 많은 굴곡을 이용하여 함수가  training데이터를 최대한 많이 통과하도록 하는 것이다. 함수가 이렇게 급격히 변화한다는 것은 함수의 계수, 즉 가설 함수의 θ값들이 굉장히 크다는 의미이다.  정규화는 모델을 학습시킬 때 θ 값들이 너무 커지는 것을 방지해준다. θ 값들이 너무 커지는 걸 방지하면 아래 이미지처럼 trainin..

그리드 서치(Grid Search)와 하이퍼 파라미터 (Hyperparameter)

하이퍼 파라미터 (Hyperparameter)많은 머신 러닝 알고리즘은 학습을 하기 전에 미리 정해주어야 하는 변수 또는 파라미터들이 있다.여기서 하이퍼 파라미터란 학습을 하기 전에 미리 정해줘야 하는 변수 또는 파라미터들을 의미하는데 scikit-learn에서 보통 모델을 만들 때 옵셔널 파라미터로 정해주는 변수들이다.하이퍼 파라미터에 어떤 값을 넣어주느냐에 따라 성능에 큰 차이가 있을 수 있기 때문에 모델의 성능을 높여주는 좋은 하이퍼 파라미터를 고르는게 굉장히 중요하다.  예를 들면, Lasso는 L1 정규화를 해주는 회귀 모델인데, scikit-learn에서 Lasso 모델을 만들 때 alpha와 max_iter라는 옵셔널 파라미터를 지정해 준다. model = Lasso(alpha=0.001, ..

k겹 교차 검증(k-fold cross validation)

k겹 교차 검증(k-fold cross validation)은 머신 러닝 모델의 성능을 조금 더 정확하게 평가할 수 있는 방법이다. 머신 러닝 알고리즘을 만들 때, training set은 모델이 인풋 변수를 잉용하여 아웃풋 변수를 예측할 수 있도록 학습시키는데 사용하고, test set은 학습시킨 모델이 얼마나 예측을 잘 하는지, 즉 모델의 성능이 얼마나 좋은지를 파악하기 위해 사용한다.  이렇게 모델의 성능을 파악하면 어떤 문제가 생길 수 있을까?test set에서만 성능이 좋은 걸 수도 있고, 반대로 test set에서만 성능이 좋지 않게 나올 수도 있다.  교차 검증은 이런 문제를 해결해 주는 방법이다.k-겹 교차 검증k-겹 교차 검증은 먼저 전체 데이터를 k개의 같은 사이즈로 나눈 후, 반복적으..

편향(Bias)와 분산(Variance)

편향아래 좌측의 데이터를 살펴보면 어느 정도까지는 키가 늘어날 때 몸무게가 같이 늘어나지만, 일정 키부터는 몸무게가 잘 늘어나지 않는다. 따라서 우측의 곡선이 데이터를 더 정확하게 표현한다고 볼 수 있다. 이처럼 좌측 직선 모델의 문제는 모델이 너무 간단해서 아무리 학습을 해도 우측과 같은 곡선 관계를 나타내지 못하는데 이를 통해 모델에 한계가 있다는 것을 알 수 있다.이처럼 모델이 너무 간단해서 데이터의 관계를 잘 학습하지 못하는 경우 모델의 편향, 영어로는 bias가 높다고 한다. 이번에는 높은 차항의 회귀를 사용해서, 위와 같은 관계를 학습했다고 해보자.이때, 아래의 복잡한 곡선은 모델의 복잡도를 늘려서 training 데이터의 관계를 잘 학습할 수 있도록 하였으므로 training 데이터에 거의 ..

클러스터 분석 - 계층, 밀도, 분포 기반 클러스터링, DBSCAN, GMM

from sklearn.mixture import GaussianMixturen_components = 4 # 분포 개수random_state = 10 # 모델 고정model = GaussianMixture(n_components=n_components, random_state=random_state)# GMM 모델 학습model.fit(df)df['gmm_label'] = model.predict(df)# 시각화sns.scatterplot(x=df[0], y=df[1], hue=df['gmm_label'], palette='rainbow', alpha=0.7, s=100)계층 기반 클러스터링: 유사한 데이터를 묶은 클러스터들을 층으로 쌓아가며 클러스터링 하는 방식데이터간 관계를 쉽게 파악할 ..

편미분으로 기울기 벡터 구하기

위의 함수에 대해 그래프를 그리면 아래와 같다. 그리고 편미분을 통해 함수의 기울기 벡터를 구해보았다. 이 벡터는 해당 지점에서의 기울기를 알려 주기도 하지만, 그래프를 가장 가파르게 올라갈 수 있는 방향도 함께 알려준다. 2차원 그래프에서도 가장 가파르게 올라가기 위해 왼쪽으로 가야 하는지, 오른쪽으로 가야 하는지, 기울기가 그 방향을 알려 준다는 것을 배웠다. 마찬가지로 고차원 그래프에서도 기울기가 그 방향을 알려주는데 대신 기울기가 벡터가 된다. 예를 들어서 x가 1이고 y가 1인 지점에 놓였다고 생각해보자. 기울기 벡터는 2, 4 이므로 이 벡터를 그래프에 표시하면, x 방향으로 두 칸이고 y 방향으로 네 칸이니까, 위와 같은 대각선 방향이 나온다. 이 대각선 방향으로 움직인다면, 가장 가파르게 ..

편미분과 기울기

편미분위의 함수가 있다고 가정해보자.인풋 변수가 $x$와 $y$ 이렇게 두 개로 이루어져 있다. 이럴 때에는 '편미분'을 해야 하는데,편미분이란 두 인풋 변수 $x$랑 $y$에 대해서 모두 미분을 하는 게 아닌 변수 하나에 대해서만 미분을 하는 것이다. 즉, 변수 $x$ 에 대해서 편미분을 할 수도 있고, 변수 $y$에 대해서 편미분을 할 수도 있다.  $x$ 에 대해서 편미분$x$ 에 대해서 미분을 하면: $d/dx$ 를 쓰는데, $x$ 에 대해서 편미분을 하면 $∂/∂x$ 를 쓴다. (*'델'이라고 읽음)변수 $x$ 에 대해서 편미분을 한다면 $x$ 를 제외한 나머지 변수들은 마치 상수인 것처럼 취급하게 되므로 $x$ 를 제외한 나머지 변수 $y$ 를 변수가 아니라 그냥 일반 숫자(상수)처럼 취급 한..

선형대수학 - 극소점, 극대점 그리고 안장점

순간 변화율이 양수면 해당 지점에서 x가 늘어나면 y도 늘어난다. 반대로 순간 변화율이 음수라는 것은, 해당 지점에서 x가 늘어나면 y가 줄어든다는 뜻이다. 그런데 순간 변화율이 0인 지점은 해당 지점에서 x가 변해도 y는 그대로라는 의미이다. 이런 순간 변화율이 0인 지점이 발생하는 경우는 아래와 같다. 극소점 (Local Minimum)극소점은 이렇게 그래프에서 아래로 볼록 튀어 나오는 경우를 말한다. 이 지점에서 왼쪽으로는 기울기가 음수고, 오른쪽으로는 기울기가 양수인데, 기울기가 음수에서 양수로 전환할 때 한 번 0을 찍고 가게 된다. 참고로 지금 아래로 볼록 튀어 나오는 부분이 여러 개 있는 경우에는 극소점이 여러 개 있는 것인데, 이 중에서 제일 작은 값은 최소점, 영어로는 global m..