2025/02 26

PCA(주성분분석)와 FA(요인분석)의 차이점 - 목적, 원리, 수학적 기법, 활용

PCA와 FA는 모두 다차원 데이터를 축소하는 기법이지만 목적과 수학적 기법에 차이가 있다. 1. 목적주성분분석(PCA)- 데이터의 분산을 최대한 보존하며 차원을 축소하는 것이 목표- 데이터의 분산을 설명하는 주성분(새로운 축)을 찾고, 데이터를 그 축에 투영하여 차원을 줄인다.- 주성분은 변수의 선형조합이므로 해석이 어렵다. 머신러닝에서 노이즈 제거 및 성능 개선에 주로 사용된다. 요인분석(FA)- 관측된 변수들 간의 숨은 공통된 요인을 찾는 것이 목표- 데이터의 구조를 이해하고 여러 변수들이 소수의 잠재 요인들에 의해 설명될 수 있는지를 분석한다.- 요인은 특정 의미를 가질 가능성이 높다. 마케팅, 경제학 등에서 주로 사용된다.   2. 수학적 기법 주성분분석(PCA) ① 데이터 정규화각 변수의 단위..

📊 Stat 2025.02.23

[ML] 최적화 기법 (경사 하강법, SGD, 미니배치경사하강법, 모멘텀, RMSprop, Adam, 베이지안 최적화)

미분을 이용한 최적화목적함수를 미분하여 기울기(Gradient)를 계산하고, 이를 이용해 모델의 파라미터를 업데이트한다.  경사 하강법(Gradient Descent)가장 널리 사용되는 최적화 기법으로, 목적 함수를 최소화하는 방향으로 이동하는 방식이다. 업데이트 공식:$\theta = \theta-\alpha \nabla L(\theta)$ \alpha: 학습률(learning rate) \nabla L(\theta): 손실함수의 기울기  확률적 경사 하강법(SGD, Stochastic Gradient Descent)전체 데이터셋이 아닌 무작위 데이터 샘플 하나를 이용하여 경사를 계산하고 업데이트한다.Local Minimum을 탈출할 확률이 높으며 속도가 빠르지만, 최적해 근처에서 진동할 수 있다.  ..

⚙️ Tech/ML 2025.02.16

[ML] 최적화란?

머신러닝에서 최적화(Obtimization)는 모델이 주어진 데이터에서 최적의 성능을 발휘하도록 손실함수(loss function) 또는 목적 함수(objectibe funtion)을 최소화 또는 최대화하는 과정을 의미한다. minimize $f(x)$subject to $x\in S$ 최적화 모델은 S에 속하는 x가운데  f(x)를 최소화하는 x를 찾으라는 의미이다.최소화하거나 최대화해야 하는 함수 f를 목적함수(objective funtion)라고 하며, 목적 함수의 입력이자 우리가 그 값을 찾아야 하는 변수 x를 결정 변수(decision variable)라고 한다.또한 x의 범위를 제약하는 식을 제약식이라고 한다. 이 제약식을 만족하는 결정 변수의 값을 실행 가능 해(feasible solutio..

⚙️ Tech/ML 2025.02.16

[ML/python] 앙상블 (voting, bagging, boosting, stacking, 랜덤포레스트, XGBoost, LightGBM)

앙상블앙상블(Ensemble model)은 여러 개의 모델을 조합하여 성능을 향상시키는 기법이다.단일 모델에 비해 일반화 성능이 높고, 과적합 가능성을 줄일 수 있다.앙상블 방법에는 voting, bagging, boosting, stacking이 있으며, 이를 활용한 대표적인 모델로 랜덤포레스트, XGBoost, LightGBM 등이 있다. 대표적인 앙상블 모델은 기본 모델로 깊이가 얕은 결정트리를 사용한다.이유 1) 얕은 결정 트리는 적은 데이터로 학습하더라도 과적합될 가능성이 매우 작다. 특히 배깅은 붓스트랩된 작은 데이터로 모델을 학습하므로 과적합 위험이 적은 모델을 사용해야 한다.이유 2) 시드가 다르면 같은 데이터로 학습한 결정 트리일지라도 다르게 분지될 수 있다.  Voting (보팅)여러 ..

⚙️ Tech/ML 2025.02.15

[ML/python] 신경망 (Neural Network, 오류 역전파 알고리즘, 최대 이터레이션)

신경망은 deep learning의 기본 모델이라 할 수 있다. 입력층(input layer), 은닉층(hidden layer), 출력층(output layer)로 구성된 다층 퍼셉트론(MLP, Multi-Layer Perceptron) 구조를 가진다. 입력층의 각 노드는 특징을 입력받는다. 따라서 편향을 고려하지 않는다면 입력 노드 수는 특징 개수와 같다. 또한 최종 노드는 라벨 혹은 클래스의 개수와 같다. 반면 은닉층은 층과 노드수를 지정해주어야 한다. 은닉층의 복잡도는 모델의 복잡도와 직결된다.  작동 원리① 입력값을 가중합 → ② 활성화 함수 적용 → ③ 그 결과를 다음 노드 전달(혹은 출력층에서 결과 생성)n: 이전 층의 노드 수, a: 활성화 함수, w_i: 이전 층의 i번째 노드와 해당 노드..

⚙️ Tech/ML 2025.02.14

[ML/python] 결정 트리 (decision tree, DTC, class_weight, export_text, plot_tree)

결정트리는 트리 구조를 기반으로 분류와 회귀에 모두 사용되는 모델이다.전체 데이터를 가지고 있는 뿌리 노드(root node)에서 가지(branch)를 통해 분할되고, 최종 잎 노드(leaf node)로 분류 또는 예측 결과를 출력한다. 특징결정트리는 해석이 매우 쉽다. 따라서 설명력이 중요한 과제에 많이 사용되며, 특정 이벤트의 발생 조건을 판단하는 데도 사용한다.모든 특성을 이진화하므로 스케일링 등의 데이터 전처리가 필요없다. 결정 트리는 데이터 공간을 비선형적으로 분리할 수 없다. 따라서 기존 특징을 변환하거나 새로운 특징을 생성하는 등 특징 공간을 잘 정의하는 것이 중요하다. 분할 평가 지표데이터의 분할은 데이터를 가장 잘 나누는 특성 기준을 평가한다. 평가 지표는 지니지수, 엔트로피 지수를 활용..

⚙️ Tech/ML 2025.02.14

[ML/python] K-최근접 이웃(K-Nearest Neighbors, K-NN)

K-NN은 가장 가까운 k개의 데이터의 라벨을 바탕으로 새로운 데이터의 라벨을 예측하는 모델이다.샘플 간 거리(유클리드, 맨해튼 등) 혹은 유사도(코사인유사도)를 기반으로 분류와 회귀를 이용해 예측한다. k값 (이웃 수)성능 면에서는 이웃의 수인 k값이 매우 중요하다. k가 너무 작으면 노이즈에 민감해 과적합(overfitting)이 발생 가능하고, 새로운 데이터가 이상치 근처에 있으면 잘못된 분류로 이어질 수 있다. 반대로 k가 너무 크면 모델이 너무 일반화(underfitting)되어 패턴을 제대로 학습하지 못한다.일반적으로 k는 홀수로 설정하고, 경험적으로 찾거나 교차 검증으로 최적값을 결정한다(√데이터수 등). 또한 샘플 수 및 특징 수와 어느정도 관계가 있으므로, 데이터 밀도(데이터 공간 크기 ..

⚙️ Tech/ML 2025.02.14

[ML/python] 선형모델 (multiple linear regression, Lasso, Ridge, logistic)

1. 선형 회귀기본적인 구조의 회귀 모델손실함수에 따라 다중 선형 회귀(multiple linear regression), 라쏘(Lasso), 릿지(Ridge), 엘라스틱넷(Elastic Net) 등으로 구분  w는 가중치 벡터(weight vector), b는 편향(bias) 선형적인 모델 구조이며, 가중합 형태로 구성되어 있어서 스케일 차이에 크게 영향을 받는다.따라서 모든 특징이 연속형이고 스케일이 유사한 데이터에 적합하다.    선형회귀모델 학습은  w와 b 가운데 손실 함수를 최소화하는 w*와 b*를 찾는 문제라고 정의할 수 있다.위 식의 손실함수 L(w,b)를 어떻게 설정하느냐에 따라 모델의 종류가 달라진다.    다중 선형 회귀 모델은 오차 제곱합을 손실 함수로 사용한다.이를 손실함수로 사용..

⚙️ Tech/ML 2025.02.12

[ML/python] 머신러닝 파이프라인 사용하기 (Pipeline, pickle)

머신러닝 자동화를 위한 파이프라인 사용 방법의 간단한 코드이다.결측값 대체, 스케일링, 특징 선택, 모델 학습 과정을 실행하는 파이프라인을 만든다. 먼저 인스턴스를 생성한다.from sklearn.impute import SimpleImputerfrom sklearn.preprocessing import MinMaxScalerfrom sklearn.svm import SVCimputer = SimpleImputer(strategy = "mean") #결측치 평균 대체scaler = MinMaxScaler() #Min-Max 스케일링model = SVC(kernel = "rbf") #커널이 rbf인 서포트벡터머신 파이프라인을 생성하고 학습한다. 파이프라인 인스턴스는 ("이름",인스턴스) 튜플로 이루어진..

⚙️ Tech/ML 2025.02.12

[ML/python] 분류모델, 회귀모델 평가

모델 평가 단계의 간단한 코드 입니다. 먼저 데이터로 모델을 학습합니다. 모델은 이진 분류 모델, 다중 분류 모델, 회귀 모델 순입니다.from sklearn.tree import DecisionTreeClassifier as DTCfrom sklearn.tree import DecisionTreeRegressor as DTRmodel1 = DTC(max_depth = 10)model2 = DTC(max_depth = 10)model3 = DTR(max_depth = 10)#파라미터 설정 다른 방법#parameter = {"max_depth": 10}#model = DTC(**parameter)model1.fit(X1_train, y1_train)model2.fit(X2_train, y2_train)mo..

⚙️ Tech/ML 2025.02.12