AI/Machine Learning 30

[Machine Learning] 로지스틱 회귀 (Logistic Regression)

일반적으로 선형 회귀 분석은 연속형 값을 예측하기에 적합하지만 범주형(분류)으로 예측하기에는 적합하지 않습니다. 선형 회귀 분석은 타겟 데이터의 범위가 무한대이기 때문입니다. 범위가 무한대라는 것은 만일 피처 데이터를 입력으로 두 개의 class(0, 1)로 분류해야 할 때 예측값이 0 또는 1로 제한되어 있다면 가능하지만, 3이라는 값으로 예측하게 된다면 이것은 0과 1로 분류하기는 어렵다는 것을 의미합니다. 이러한 문제를 해결하기 위한 방법 중 하나가 바로 로지스틱 회귀입니다. 로지스틱 회귀는 일반적인 선형 회귀 분석에서 출력값에 시그모이드 함수를 사용하여 0과 1사이의 값으로 변환시키는 방법으로, 이진 분류 방법입니다. (다중 분류일 경우에는 소프트맥스 함수를 사용해야 합니다.) z는 선형 회귀 모..

AI/Machine Learning 2022.09.29

[Machine Learning] 라쏘, 릿지, 엘라스틱넷 (Ridge, Lasso, ElasticNet)

회귀 분석에는 제약식을 포함할 수 있습니다. 제약이 없다면 측정하려는 가중치 W가 기하급수적으로 커질 수 있으며 이로 인해 분산이 커지는 문제가 발생하게 됩니다. 이를 해결하기 위해 여러가지 제약식을 사용할 수 있습니다. 1. 라쏘 회귀(Lasso Regression) - L1 Regularization 라쏘 회귀는 L1 Loss 형태인 |θ|를 제약식으로 추가하여 특성값의 가중치가 극히 낮은 값이면 0으로 수렴하게 하여 특성을 제거하는 방법입니다. 특성을 0으로 만든다는 것은 상대적으로 bias를 증가시켜 오버피팅을 방지할 수 있습니다. 2. 릿지 회귀(Ridge Regression) - L2 Regularization 릿지 회귀는 L2 Loss 형태인 θ^2를 제약식으로 추가하여 모델 예측에 영향을 ..

AI/Machine Learning 2022.09.28

[Machine Learning] 선형 회귀 (Linear Regression)

회귀 분석은 머신러닝에서 기본이 되는 방법입니다. 회귀란 '한바퀴를 돌아 제자리로 돌아가다'라는 뜻으로, 머신러닝에서 회귀는 모델이 제시하는 추세선으로 데이터를 예측한다는 이야기입니다. 쉽게 말해서, 예측해야 하는 값이 범주형이 아닌 연속형(실숫값)일 경우 모델을 회귀 모델이라고 합니다. 회귀 분석은 여러 종류가 있습니다. 그 중 가장 간단한 방법인 선형 회귀 분석(Linear Regression)에 대하여 알아보겠습니다. 먼저 선형 관계란 두 데이터의 관계를 직선식으로 표현할 수 있다는 말입니다. 오직 1개의 피처 x와 예측하려는 타겟 데이터 y가 선형 관계가 존재할 때, 단일 선형 회귀라고 부르고 이를 수식화하면 다음과 같습니다. 선형 관계는 직선의 방정식으로 보면 됩니다. 즉, 데이터 x가 주어지면..

AI/Machine Learning 2022.09.28

[Machine Learning] K-최근접 이웃 알고리즘 (KNN)

k-최근접 이웃 알고리즘(KNN)은 비교 대상이 되는 데이터 주변에 가까이 존재하는 k개의 데이터와 비교해 가장 가까운 데이터로 판별하는 방법입니다. 예를 들어 위 그림에서 판별해야 할 데이터가 빨간색 삼각형 이라고 할 때, k=1로 설정할 경우 삼각형은 초록색 원으로 판별됩니다. 만약 k=3으로 설정하면 노란색 사각형 개수가 초록색 원의 개수보다 많기 때문에 삼각형은 사각형으로 판별됩니다. 다시 말해, k는 판별해야 할 데이터로부터 가장 가까운 데이터의 개수를 의미하고 이를 기준으로 판별하는 방법입니다. 만약 위 예시처럼 분류가 아닌 회귀(연속형)라면 가장 가까운 k개의 데이터 평균값으로 예측할 수 있습니다. 이러한 KNN 알고리즘은 다른 머신러닝 알고리즘과 달리 학습 데이터 전체를 메모리에 로드 후 ..

AI/Machine Learning 2022.09.28

[Machine Learning] 모델 성능 평가 - 분류, 회귀

머신러닝 모델을 통해 해결해야 할 문제 종류(분류, 회귀)에 따라 성능 평가 방법이 다릅니다. 먼저 분류(classification) 문제의 평가 지표입니다. 1. 정확도(Accuracy) 위 식에서 I는 지시 함수(Indicator Function)으로, y ̂_k과 y_k 값이 동일하면 1, 서로 다른 값을 가지면 0이라는 의미입니다. 사이킷런의 accuracy_score()를 사용해보겠습니다. from sklearn.metrics import accuracy_score y_pred = [1, 1, 3, 2] y_true = [0, 1, 2, 3] print(accuracy_score(y_true, y_pred, normalize=False)) # 1 print(accuracy_score(y_true..

AI/Machine Learning 2022.09.27

[Machine Learning] 오차 행렬 (Confusion Matrix)

모델의 성능을 평가하는 방법에는 여러 가지가 있습니다. 먼저 이진 분류 케이스는 아래 표와 같습니다. 정답으로 분류되는 경우(모델이 정답을 맞힌경우)는 데이터를 양성(Positive)으로 예측했을 때, 실젯값도 양성일 때는 정답(True)으로 분류하고, 이 경우를 True Positive(TP)라고 합니다. 반대로 음성(Negative)으로 예측했을 때, 실젯값도 음성일 때는 True Negative(TN)라고 합니다. 오답으로 분류되는 경우는 양성으로 예측했을 때, 실젯값은 음성인 경우 False Positive(FP)라고 합니다. 그리고 음성으로 예측했을 때, 실젯값은 양성인 경우 False Negative(FN)라고 합니다. 정리하면 모델 예측이 양성이면 Positive, 음성이면 Negative이..

AI/Machine Learning 2022.09.27

[Machine Learning] 손실 함수 - 비용 함수, 목적 함수

손실 함수(loss function)는 학습 모델(머신러닝 등)의 예측값이 실젯값과 얼마나 차이가 나는지 그 손실 정도를 수치로 나타내는 함수입니다. 좋은 모델을 만들기 위해서는 손실을 최소화시켜야 합니다.손실 함수는 각 데이터마다 예측값과 실제값의 차이를 계산하지만, 비용 함수는 데이터 셋 전체를 대상으로 계산합니다.손실 함수와 비용 함수가 차이는 있지만, 실제로는 두 함수를 구분 없이 사용하는 편입니다. 1. L1 손실 함수 L1 Loss는 실젯값과 예측값의 차이에 기댓값을 취한 것입니다. 손실을 맨해튼 거리(Manhattan distance)로 계산한 것과 같습니다. 이와 관련된 비용 함수에는 MAE(Mean Absolute Error)가 있습니다. MAE는 데이터 셋의 L1 Loss의 평균을 나타..

AI/Machine Learning 2022.09.27

[Machine Learning] 그리드 서치

그리드 서치(grid search)는 학습 과정에서 하이퍼 파라미터의 후보군을 정하여 학습 후 모델 성능을 비교하여 최적의 하이퍼 파라미터를 선정하는 방법입니다. 예를 들어, KNN(K-Nearest Neighbor) 알고리즘에서 사용할 수 있는 k 값의 후보는 여러가지가 있을 수 있습니다. k 값의 후보를 정해 놓고 모든 후보에 대한 모델 생성 및 학습 후, 성능을 비교하는 방법입니다. from sklearn import datasets from sklearn.metrics import accuracy_score from sklearn.preprocessing import StandardScaler from sklearn.model_selection import train_test_split from ..

AI/Machine Learning 2022.09.13

[Machine Learning] 파이프라인

머신러닝 모델을 사용할 때, 사이킷런에서는 파이프라인(Pipeline)을 제공합니다. 파이프라인은 데이터 전처리와 모델 예측 등 머신러닝 과정을 순차적으로 처리할 수 있도록 합니다. 파이프라인은 코드를 간결하게 작성할 수 있고, 가시성을 높여줍니다. from sklearn import datasets from sklearn.preprocessing import StandardScaler from sklearn.ensemble import RandomForestRegressor from sklearn.model_selection import train_test_split from sklearn.metrics import mean_absolute_error raw_boston = datasets.load_b..

AI/Machine Learning 2022.09.13

[Machine Learning] 크로스-밸리데이션 (cross-validation)

크로스-밸리데이션(cross-validation)은 오버피팅(overfitting)을 해결하기 위한 방법 중 하나입니다. 오버피팅이란 모델이 학습 데이터에 대한 예측 성능이 좋고, 테스트 데이터에 대한 예측 성능은 좋지 않은 것을 말합니다. 일반적으로 학습을 위한 데이터는 훈련, 검증, 테스트 데이터로 나눠집니다. 훈련 및 검증 데이터로 모델 학습을 진행하고, 테스트 데이터로 모델을 평가합니다. 하지만 데이터 수가 적거나 편향되어 있을 경우 오버피팅 될 수 있기 때문에, 아래와 같이 K개의 폴드로 나눠 학습 및 검증하는 방법이 K-fold cross validation 입니다. K=5 일 경우, 데이터를 5개의 폴드로 나눠 흰색 부분 4개를 학습 데이터로 사용하고 회색 부분 1개를 검증에 사용합니다. 그..

AI/Machine Learning 2022.09.13