MLOps 부트캠프 by 한경+토스뱅크 76

로지스틱 회귀 - 손실 함수

선형 회귀를 통해 하려고 하는 건 학습 데이터에 최대한 잘 맞는 가설 함수를 찾는 것이다. 그러기 위해선 가설 함수를 평가하는 어떤 기준이 있어야 하는데, 그 기준이 되는게 손실 함수이다. 로지스틱 회귀에서도 마찬가지다. 데이터에 잘 맞는 가설 함수를 찾고, 손실 함수를 이용해 가설 함수를 평가한다. 선형 회귀의 손실 함수는 평균 제곱 오차라는 개념을 기반으로 하는데, 데이터 하나하나의 오차를 구한 후에 그 오차들을 모두 제곱항 평균을 내는 작업을 한다. 로지스틱 회귀의 손실 함수는 평균 제곱 오차를 사용하지 않고, 대신 '로그 손실', 영어로는 log loss라는 것을 사용한다. 좀 더 어려운 푷ㄴ으로는 cross entropy라고도 한다.  로그 손실로그 손실은 아래와 같은데, 이를 로그 손실이라고 ..

딥러닝 기초 이론(퍼셉트론, 순전파&역전파, 출력&손실 함수)

딥 러닝 프레임워크딥 러닝 모델을 설계, 훈련, 검증하기 위해 사용되는 소프트웨어 라이브러리나 도구 모음 필요성- 복잡한 수치 계산과 미분을 자동화하여 효율성을 증대 시킬 수 있음- 모델 컴포넌트를 모듈화 하여 재사용 가능- 다양한 하드웨어 환경의 확장을 용이하게 함 주로 사용되는 프레임워크딥러닝의 기초 이론퍼셉트론(Perceptron)인공 신경망의 가장 기본적인 형태퍼셉트론을 구성하는 노드(Node)는 인공 신경망에서 정보를 처리하는 기본 단위라고 할 수 있다. 각 노드는 여러 입력값을 받아 이에 가중치를 곱한 후 합산하여 출력을 생성하는데, 신경망에서는 이러한 노드들이 서로 연결되어 있으며, 이 연결을 통해 데이터가 입력부터 출력까지 흐르게 된다.  초기 퍼셉트론의 구조는 이러한 노드 단위로 각 입력..

다항회귀(Polynomial Regression)

다항회귀란?선형 회귀는 학습 데이터에 가장 잘 맞는 일차식을 찾아서 예측을 하는 알고리즘인 반면, 다항 회귀는 고차식을 찾아서 예측하는 알고리즘이다.  집 값 예측 문제를 생각해보자. 항상 집의 크기라는 변수가 주어진다는 가정을 했고 이걸 하나의 속성으로 이용했는데 사용하는 데이터가 항상 이렇게 하나만 사용해도 의미가 있는 완벽한 변수일 수는 없다. 예를 들어 집이 사각형이라고 가정하고 집 크기 대신 집의 높이와 너비 데이터만 있다고 하자.사실 아무리 너비가 커도 높이가 작거나, 높이만 크고 너비만 작으면 크기가 작고 구조가 효율적이지 않기 때문에 집 값이 높지 않다. 사실 이 두 변수들보다 집값을 예측하는 데 훨씬 좋은 수치는 이 둘을 곱한 값, 집의 넓이다.단순 선형 회귀를 사용하면 이 두 변수가 서..

다중 선형 회귀

다중 선형회귀는 선형 회귀를 하나의 입력 변수가 아닌 여러개의 입력 변수를 사용하여 목표 변수를 예측하는 알고리즘이다.  예를 들어, 아래와 같은 학습 데이터가 있으면,집크기, 방 수, 연식, 지하철까지의 거리 등등 을 이용하여 선형 회귀를 통해 집 값을 혜측하려는 것이다. 다중 선형 회귀 문제 표현위의 집 값 예측에 따른 표를 보면 입력 변수는 '집 크기(평), 방 수, 건물 나이(년), 지하철 거리(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 데이터에 거의 ..

범주형 데이터를 수치형 데이터로 바꿔주는 One-hot Encoding

머신러닝에는 사용되는 데이터터는 아래와 같이 크게 두 종료가 있다. 많은 머신 러닝 알고리즘은 인풋 데이터, 즉 입력 변수의 값이 수치형 데이터여야 한다. 예를 들면 선형 회귀도 손실 함수를 구하고 경사 하강법을 적용하려면 인풋 데이터가 수치형 데이터여야 한다.  그렇다면 범주형 데이터가 있을 땐 어떻게 해야 할까? 범주형 데이터를 -> 수치형 데이터로 바뚸 주면 된다. 그러나 위 이미지처럼 범주에 숫자를 입력하게 된다면 머신러닝 알고리즘은 'A형은 1이니까 가장 작고, O형은 4니까 가장 크고, AB형, B형은 그 사이에 존재한다'라는 관계로 인식하게 되어 오히려 예측에 방해가 된다.  그러므로 범주형 데이터를 수치형 데이터로 바꿔줄 때는 One-hot encoding 방법을 사용한다. One-hot..