전체 글 150

[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

[Machine Learning] 최소 제곱법

최소 제곱법 (Least Square Method)는 선형 회귀 분석에서 데이터를 하나의 직선으로 표현하기 위해 직선의 기울기와 절편을 구하기 위한 방법입니다. 다중 선형회귀에서도 최소 제곱법을 사용할 수 있지만, 본 포스팅에서는 단순 선형회귀에 대한 최소 제곱법을 소개하겠습니다. 독립 변수 X가 공부 시간, 종속 변수 Y가 시험 점수이고 데이터가 다음과 같을 때 산점도로 확인하면 다음과 같습니다. X = [1, 2, 5, 8, 10] Y = [10, 15, 68, 80, 95] 최소 제곱법을 통해 직선을 만들어보겠습니다. 식은 다음과 같습니다. y = ax + b에서 a와 b는 다음과 같습니다. 여기서 sum은 합, avg는 평균입니다. a = sum(x의 편차 * y의 편차) / sum(x의 편차 제..

AI/Machine Learning 2022.09.07

[Machine Learning] Kaggle Competition 데이터 전처리 예제

https://www.kaggle.com/competitions Kaggle Competitions www.kaggle.com Kaggle은 2010년 설립된 예측모델 및 분석 대회 플랫폼입니다. 위의 링크인 Kaggle Competition으로 들어가시면 기업 또는 단체에서 등록한 머신러닝 문제에 도전할 수 있습니다. Competition에 등록된 문제는 대부분 raw data이기 때문에 회귀 또는 분류 모델로 학습을 하기 위한 전처리 과정이 필수적입니다. 따라서 이전 포스팅을 기반으로 kaggle competition 데이터 전처리를 진행해보겠습니다. https://www.kaggle.com/competitions/hotel-booking-demand-3 Hotel booking demand | Ka..

AI/Machine Learning 2022.08.26

[Machine Learning] 통계학 - 평균과 분산

평균에는 산술 평균, 기하 평균, 조화 평균 등이 있습니다. 우리가 흔히 사용하는 평균은 산술 평균이며, 모든 데이터의 값을 더한 후 데이터 개수로 나누는 것을 의미합니다. 분산(variance)은 변량이 얼마나 퍼져 있는지를 수치화한 것으로, 편차 제곱의 평균으로 계산됩니다. 여기서 편차란 관측 데이터 값에 평균을 뺀 값입니다. 표준 편차(standard deviation)는 분산의 양의 제곱근입니다. 표준 편차가 필요한 이유는 분산에 있습니다. 분산을 계산할 때 편차를 제곱하게 되는데, 이것은 분산 값 자체를 분석하는데 어려움을 줄 수 있습니다. (제곱된 값의 의미를 파악하기 힘듦) 따라서 표준 편차는 분산을 구하는 과정에서 제곱으로 커진 결과를 다시 원래 단위로 조정하는 과정이라고 볼 수 있습니다...

AI/Machine Learning 2022.08.10

[Machine Learning] 통계학 - 확률 변수와 확률 분포

머신러닝은 통계학을 기반 알고리즘이 많이 있습니다. 따라서, 선형대수와 함께 통계학도 머신러닝 알고리즘 이해를 위해서 반드시 선행되어야 합니다. 머신러닝을 위한 통계학 기본을 정리해보도록 하겠습니다. 먼저, 확률(probability)이란 어떤 사건이 일어날 가능성을 수치화시킨 것입니다. 예를 들어 주사위를 던졌을 때, 6이 나올 확률은 1/6입니다. 사건 A의 확률 P(A)는 0

AI/Machine Learning 2022.08.10

[Machine Learning] 선형대수 - 특이값 분해

고윳값 분해는 정방행렬(nxn)에만 적용됩니다. 이와 달리, 특이값 분해(Singular Value Decomposition, SVD)는 정방행렬이 아니더라도(mxn) 분해가 가능합니다. 특이값 분해는 고윳값 분해와 유사하게 아래와 같이 정의됩니다. U는 AA^T의 특이벡터 행렬이고, V는 A^TA의 특이벡터 행렬입니다. Σ는 특이값 대각 행렬입니다. A가 mxn 행렬일 때, U는 mxm, Σ는 mxn, V는 nxn으로 구성됩니다. 또한 U와 V는 A와 A^T의 곱으로 이루어져있기 때문에 대칭 행렬입니다.(A와 A의 전치행렬을 곱하면 대칭 행렬이 됩니다.) 대칭 행렬의 고유 벡터는 서로 직교인 특징이 있습니다.또한, U와 V는 AA^T와 A^TA의 특이벡터 행렬이고 정규 직교 행렬입니다. 특이값 분해를 ..

AI/Machine Learning 2022.08.09

[Machine Learning] 선형대수 - 고윳값 분해

Ax = λx 을 만족할 때, x를 행렬 A의 고유벡터(eigenvector), λ를 행렬 A의 고윳값(eigenvalue)이라고 합니다. 여기서 A는 nxn 정방행렬이어야 합니다. 고유벡터 x는 선형변환 했을 때, 방향은 유지되고 크기만 달라지게 됩니다. 예를 들어 행렬 A와 A의 고유벡터 x가 다음과 같을 때 x와 Ax 벡터의 방향은 같습니다. 고윳값과 고유벡터를 구하는 이유는 행렬의 대각화와 관련이 있으며, 행렬을 대각화를 통해 제곱 연산, 주성분 분석 등 여러 분야에 활용될 수 있습니다. 고윳값을 구하기 위해서 Ax = λx을 기반으로 특성방정식 (characteristic equation)을 이용합니다. (A - λI)가 가변행렬이 아닐 경우에만 고윳값을 계산할 수 있기 때문에 det(A - λ..

AI/Machine Learning 2022.08.09