[혼공머신]4-2

확률적 경사 하강법(SGD, Stochastic Gradient Descent) 확률적 경사 하강법(SGD)은 기계 학습에서 널리 사용되는 최적화 알고리즘입니다. 이 알고리즘은 대규모 데이터 셋에서도 빠르고 효율적으로 동작합니다. 아래는 확률적 경사 하강법에 대한 핵심 포인트와 상세한 설명입니다. 핵심 포인트 확률적 경사 하강법: 훈련 세트에서 샘플 하나씩 꺼내 손실 함수의 경사를 따라 최적의 모델을 찾는 알고리즘. 미니배치 경사 하강법: 여러 개의 샘플을 동시에 사용하는 방법. 배치 경사 하강법: 전체 샘플을 한 번에 사용하는 방법. 손실 함수: SGD가 최적화할 대상. 이진 분류에는 로지스틱 회귀, 다중 분류에는 크로스엔트로피 손실 함수, 회귀 문제에는 평균 제곱 오차 손실 함수를 사용. 에포크: 전체 샘플을 모두 사용하는 한 번의 반복. 수십에서 수백 번의 에포크를 반복. 주요 패키지와 함수 scikit-learn ...

2024-07-21 · 3 분 · ICE ICE BEAR

[혼공머신]4-2 -추가학습(기타 손실함수)

기타 손실함수 1. Hinge Loss (힌지 손실 함수) 특징: 주로 서포트 벡터 머신(SVM)에서 사용됩니다. 분류 문제에 적합하며, 데이터 포인트가 결정 경계를 넘어갈 때 손실을 가중합니다. 이진 분류 문제에서 많이 사용됩니다. 예시: from sklearn.linear_model import SGDClassifier clf = SGDClassifier(loss='hinge', max_iter=1000, tol=0.001, random_state=42) clf.fit(train_scaled, train_target) print("훈련 세트 점수:", clf.score(train_scaled, train_target)) print("테스트 세트 점수:", clf.score(test_scaled, test_target)) 2. Squared Hinge Loss (제곱 힌지 손실 함수) 특징: 힌지 손실의 변형으로, 제곱된 값을 사용하여 오류가 클 때 더 큰 패널티를 줍니다. 더 큰 마진을 제공하여 분류기의 일반화 능력을 향상시킵니다. 예시: clf = SGDClassifier(loss='squared_hinge', max_iter=1000, tol=0.001, random_state=42) clf.fit(train_scaled, train_target) print("훈련 세트 점수:", clf.score(train_scaled, train_target)) print("테스트 세트 점수:", clf.score(test_scaled, test_target)) 3. Huber Loss (후버 손실 함수) 특징: 회귀 문제에서 사용됩니다. 작은 오류에 대해서는 제곱 오차로 처리하고, 큰 오류에 대해서는 절대 오차로 처리하여 이상치에 강건한 성능을 보입니다. 예시: from sklearn.linear_model import SGDRegressor reg = SGDRegressor(loss='huber', max_iter=1000, tol=0.001, random_state=42) reg.fit(train_scaled, train_target) print("훈련 세트 점수:", reg.score(train_scaled, train_target)) print("테스트 세트 점수:", reg.score(test_scaled, test_target)) 4. Log Loss (로그 손실 함수 또는 로지스틱 손실 함수) 특징: 로지스틱 회귀에서 사용됩니다. 이진 분류 문제에 적합하며, 예측 확률과 실제 클래스 간의 차이를 측정합니다. 예시: clf = SGDClassifier(loss='log', max_iter=1000, tol=0.001, random_state=42) clf.fit(train_scaled, train_target) print("훈련 세트 점수:", clf.score(train_scaled, train_target)) print("테스트 세트 점수:", clf.score(test_scaled, test_target)) 5. Epsilon-Insensitive Loss (엡실론 민감 손실 함수) 특징: 서포트 벡터 회귀(SVR)에서 사용됩니다. 예측 값과 실제 값이 일정 범위(엡실론) 내에 있을 때 손실을 무시합니다. 회귀 문제에서 특정 오차 범위 내의 값을 무시하고, 이상치에 민감하지 않은 모델을 만듭니다. 예시: reg = SGDRegressor(loss='epsilon_insensitive', max_iter=1000, tol=0.001, random_state=42) reg.fit(train_scaled, train_target) print("훈련 세트 점수:", reg.score(train_scaled, train_target)) print("테스트 세트 점수:", reg.score(test_scaled, test_target)) 6. Squared Loss (제곱 오차 손실 함수) 특징: 회귀 문제에서 가장 일반적으로 사용됩니다. 예측 값과 실제 값의 차이를 제곱하여 손실을 계산합니다. 이상치에 민감할 수 있습니다. 예시: reg = SGDRegressor(loss='squared_loss', max_iter=1000, tol=0.001, random_state=42) reg.fit(train_scaled, train_target) print("훈련 세트 점수:", reg.score(train_scaled, train_target)) print("테스트 세트 점수:", reg.score(test_scaled, test_target)) 7. Perceptron Loss (퍼셉트론 손실 함수) 특징: 퍼셉트론 학습에서 사용됩니다. 분류 문제에 적합하며, 예측이 틀렸을 때만 손실을 계산합니다. 예시: clf = SGDClassifier(loss='perceptron', max_iter=1000, tol=0.001, random_state=42) clf.fit(train_scaled, train_target) print("훈련 세트 점수:", clf.score(train_scaled, train_target)) print("테스트 세트 점수:", clf.score(test_scaled, test_target)) 결론 이와 같이 다양한 손실 함수는 각기 다른 문제와 목표에 맞춰 최적의 성능을 발휘할 수 있도록 설계되었습니다. 각 손실 함수의 특성을 이해하고 적절히 선택하는 것이 모델 성능 향상의 핵심입니다.

2024-07-21 · 2 분 · ICE ICE BEAR

[혼공머신]3-1

[혼공머신]3-1 1. 회귀 문제란? 회귀는 임의의 수치를 예측하는 문제로, 타깃값도 임의의 수치가 됩니다. 2. k-최근접 이웃 회귀 k-최근접 이웃 회귀는 k-최근접 이웃 알고리즘을 사용해 회귀 문제를 풉니다. 가장 가까운 이웃 샘플을 찾아 이 샘플들의 타깃값을 평균하여 예측으로 삼습니다. 3. 결정계수 (R²) 결정계수는 회귀 문제의 성능을 측정하는 대표적인 도구입니다. 1에 가까울수록 좋은 모델이며, 0에 가까울수록 성능이 나쁜 모델입니다. 4. 과대적합과 과소적합 과대적합: 모델의 훈련 세트 성능이 테스트 세트 성능보다 훨씬 높을 때 발생합니다. 모델이 훈련 세트에 너무 집착하여 데이터의 거시적인 패턴을 감지하지 못하는 경우입니다. 과소적합: 훈련 세트와 테스트 세트 성능이 모두 낮거나 테스트 세트 성능이 더 높을 때 발생합니다. 더 복잡한 모델을 사용해 훈련 세트에 잘 맞는 모델을 만들어야 합니다. 5. 핵심 패키지와 함수 scikit-learn KNeighborsRegressor: k-최근접 이웃 회귀 모델을 만드는 사이킷런 클래스입니다. n_neighbors 매개변수로 이웃의 개수를 지정합니다. mean_absolute_error(): 회귀 모델의 평균 절댓값 오차를 계산합니다. 첫 번째 매개변수는 타깃, 두 번째 매개변수는 예측값을 전달합니다. mean_squared_error(): 평균 제곱 오차를 계산합니다. numpy reshape(): 배열의 크기를 바꾸는 메서드입니다. 바꾸고자 하는 배열의 크기를 매개변수로 전달합니다. 6. 예제 코드 다음은 k-최근접 이웃 회귀를 사용한 간단한 예제입니다. ...

2024-07-13 · 3 분 · ICE ICE BEAR

[혼공머신]3-1 -추가학습(k-최근접 이웃 모델의 원리와 활용)

[혼공머신]3-1 -추가학습(k-최근접 이웃 모델의 원리와 활용) k-최근접 이웃 모델의 수학적 원리 k-최근접 이웃(K-Nearest Neighbors, KNN) 모델은 비모수적 방법으로, 데이터 포인트가 주어졌을 때 가장 가까운 ( k )개의 이웃을 기반으로 새로운 데이터를 예측하는 방법입니다. 이 알고리즘은 다음과 같은 단계를 따릅니다: 거리 측정: 새로운 데이터 포인트와 기존 데이터 포인트 간의 거리를 계산합니다. 일반적으로 유클리드 거리(Euclidean distance)를 사용합니다. 유클리드 거리 ( d )는 다음과 같이 계산됩니다: $$ d(\mathbf{x}i, \mathbf{x}j) = \sqrt{\sum{l=1}^{n} (x{il} - x_{jl})^2} $$ 여기서 $\mathbf{x}_i $와 $ \mathbf{x}_j $는 각각 ( n )차원의 벡터를 나타냅니다. ...

2024-07-13 · 3 분 · ICE ICE BEAR

[혼공머신]3-1 -추가학습(분류와 회귀문제에 모두 사용할 수 있는 머신러닝 모델)

[혼공머신]3-1 -추가학습(분류와 회귀문제에 모두 사용할 수 있는 머신러닝 모델) 1. 결정 트리 (Decision Trees) 결정 트리는 데이터의 특성과 타깃 변수 간의 관계를 모델링하기 위해 트리 구조를 사용하는 알고리즘입니다. 분류(Decision Tree Classifier): 각 노드에서 특정 특성의 값에 따라 데이터를 분할하여 최종적으로 클래스 레이블을 예측합니다. 회귀(Decision Tree Regressor): 각 노드에서 특정 특성의 값에 따라 데이터를 분할하여 최종적으로 타깃 값의 평균을 예측합니다. 예제 코드 from sklearn.tree import DecisionTreeClassifier, DecisionTreeRegressor # 분류 clf = DecisionTreeClassifier() clf.fit(train_input, train_target) clf_pred = clf.predict(test_input) # 회귀 reg = DecisionTreeRegressor() reg.fit(train_input, train_target) reg_pred = reg.predict(test_input) 2. 랜덤 포레스트 (Random Forest) 랜덤 포레스트는 다수의 결정 트리를 사용하여 예측을 수행하는 앙상블 기법입니다. ...

2024-07-13 · 2 분 · ICE ICE BEAR

[혼공머신]3-2 머신러닝에서의 선형 회귀와 다항 회귀

[혼공머신]3-2 머신러닝에서의 선형 회귀와 다항 회귀 머신러닝에서 회귀는 종속 변수(타깃)와 하나 이상의 독립 변수(특성) 사이의 관계를 모델링하는 기본적인 기술입니다. 목표는 이 관계를 나타내는 최적의 선 또는 곡선을 찾는 것입니다. 이 교육 자료에서는 선형 회귀와 다항 회귀의 주요 개념과 이를 Python의 scikit-learn 라이브러리를 사용하여 구현하는 방법에 대해 다룹니다. 선형 회귀 선형 회귀는 특성과 타깃 사이의 선형 관계를 찾는 것을 목표로 합니다. 이 관계는 다음과 같은 선형 방정식으로 표현됩니다: $$ y = \beta_0 + \beta_1 x_1 + \beta_2 x_2 + \cdots + \beta_n $$ 여기서: ...

2024-07-13 · 4 분 · ICE ICE BEAR

[혼공머신]3-3 -추가학습(L1 규제와 L2 규제)

[혼공머신]3-3 -추가학습(L1 규제와 L2 규제) L1 규제와 L2 규제는 머신러닝 모델, 특히 선형 회귀 모델에서 과대적합을 방지하고 모델의 일반화 성능을 향상시키기 위해 사용하는 두 가지 주요 규제 방법입니다. L1 규제 (L1 Regularization, Lasso Regression) 정의: L1 규제는 비용 함수에 계수의 절대값 합을 추가합니다. $$ \text{L1 규제 비용 함수} = \text{기본 비용 함수} + \lambda \sum_{i=1}^{n} |\beta_i| $$ 여기서 $ \lambda $는 규제 강도를 조절하는 하이퍼파라미터이고, $ \beta_i $는 모델의 계수입니다. ...

2024-07-13 · 2 분 · ICE ICE BEAR

[혼공머신]3-3 다중회귀

[혼공머신]3-3 다중회귀 다중 회귀는 여러 개의 특성을 사용하는 회귀 모델입니다. 단순 회귀가 하나의 특성만을 사용하는 반면, 다중 회귀는 여러 개의 특성을 동시에 고려하여 종속 변수에 대한 예측을 수행합니다. 이는 예측의 정확도를 높일 수 있으며, 다양한 실제 문제에서 유용하게 사용됩니다. 데이터 준비 데이터를 준비하는 과정은 머신러닝 모델의 성능에 큰 영향을 미칩니다. 여기서는 pandas 라이브러리를 사용하여 CSV 파일을 로드하고, 필요한 전처리 과정을 수행합니다. import pandas as pd # CSV 파일 로드 data = pd.read_csv('data.csv', sep=',', header=0, skiprows=0, nrows=100) print(data.head()) 위 코드에서는 pandas의 read_csv 함수를 사용하여 데이터를 로드합니다. sep, header, skiprows, nrows 등의 매개변수를 통해 CSV 파일의 형식에 맞게 데이터를 읽을 수 있습니다. ...

2024-07-13 · 2 분 · ICE ICE BEAR

[혼공머신]1-3

[혼공머신]1-3 머신러닝의 기본 개념 특성 특성은 데이터를 표현하는 하나의 성질입니다. 예를 들어, 생선 데이터를 길이와 무게 특성으로 나타낼 수 있습니다. 훈련 머신러닝 알고리즘이 데이터에서 규칙을 찾는 과정을 훈련이라고 합니다. 사이킷런에서는 fit() 메서드를 사용합니다. k-최근접 이웃 알고리즘 k-최근접 이웃 알고리즘은 가장 간단한 머신러닝 알고리즘 중 하나로, 특정 규칙을 찾기보다는 전체 데이터를 메모리에 저장해 둡니다. 모델 머신러닝 프로그램에서 알고리즘이 구현된 객체를 모델이라고 부릅니다. 종종 알고리즘 자체를 모델이라고 부르기도 합니다. 정확도 정확도는 정확한 답을 몇 개 맞혔는지를 백분율로 나타낸 값입니다. 사이킷런에서는 0~1 사이의 값으로 출력됩니다. ...

2024-07-07 · 2 분 · ICE ICE BEAR

[혼공머신]2-1

[혼공머신]2-1 1. 지도 학습과 비지도 학습 지도 학습 (Supervised Learning) 정의: 입력 데이터와 해당 타깃(라벨) 데이터를 사용하여 모델을 훈련한 후, 새로운 입력 데이터에 대한 예측을 수행합니다. 예시: K-최근접 이웃 알고리즘 (K-Nearest Neighbors) 입력 데이터와 그에 따른 레이블(타깃)을 사용하여 새로운 데이터의 레이블을 예측합니다. from sklearn.neighbors import KNeighborsClassifier knn = KNeighborsClassifier(n_neighbors=3) knn.fit(train_input, train_target) prediction = knn.predict(test_input) score = knn.score(test_input, test_target) 비지도 학습 (Unsupervised Learning) 정의: 타깃 데이터가 없으며, 예측보다는 데이터의 구조나 패턴을 찾는 데 중점을 둡니다. 예시: 클러스터링 알고리즘 (K-Means Clustering) 데이터를 몇 개의 그룹으로 묶는 작업을 수행합니다. from sklearn.cluster import KMeans kmeans = KMeans(n_clusters=3) kmeans.fit(data) labels = kmeans.labels_ 2. 데이터 분할 훈련 세트 (Training Set) 정의: 모델을 훈련하는 데 사용하는 데이터입니다. 일반적으로 전체 데이터의 70-80%를 차지합니다. 중요성: 훈련 세트가 클수록 모델이 더 잘 학습할 수 있습니다. 코드 예시: from sklearn.model_selection import train_test_split train_input, test_input, train_target, test_target = train_test_split(data, target, test_size=0.2) 테스트 세트 (Test Set) 정의: 모델을 평가하는 데 사용하는 데이터입니다. 전체 데이터의 20-30%를 차지합니다. 중요성: 모델의 일반화 성능을 평가하는 데 사용됩니다. 코드 예시: from sklearn.model_selection import train_test_split train_input, test_input, train_target, test_target = train_test_split(data, target, test_size=0.2) 3. 핵심 패키지와 함수 NumPy seed() ...

2024-07-07 · 2 분 · ICE ICE BEAR