실무에 바로 쓰는 바닥부터 시작하는 머신러닝 4-6 [完]
실무에 바로 쓰는 바닥부터 시작하는 머신러닝 5-4 [完]
비지도 학습 : 군집화 모델
k-means clustering 개념

알고리즘의 단계
- 초기화 -k개의 군집 중심을 랜덤하게 설정.
- 할당 단계 - 각 데이터 포인트를 가장 가까운 군집 중심에 할당.
- 업데이트 단계 - 각 군집의 중심을 해당 군집에 속한 데이터 포인트들의 평균으로 업데이트.
- 반복 - 할당 단계와 업데이트 간계를 군집 중심이 더 이상 변화하지 않을때 까지 반복


데이터가 수치형이어야 거리를 구할수있기 때문에 필요한 열만 따로 선택하고 ,
이후 스케일링을 진행한다.
엘보우 방식으로 모델 학습 및 군집화
엘보우 방식은 최적의 k를 선택하는데 사용되며 ,
k를 증가시키면서 각 k에 대한 군집의 응집도를 관성,Inertia를 통해 계산하고,
이를 그래프로 나타내어 그래프에서 응집도가 급격히 감소하는 지점을 찾는 방법이다.



엘보우를 저장하기위한 코드를 넣어놓고
k를 1부터 11까지만 확인핟
그다음 k를 하나하나 돌리면서 클러스터링 작업을 진행하고,
이후 그 결과값을 저장한다.
그후 엘보우 그래프를 그려 시각화를 진행한다.



이후 군집화가 잘 이루어 졌는지 군집 시각화를 진행한다.


비지도 학습 : 군집화모델 -계층적 군집화
계층적 군집화는 데이터포인트를 계층구조로 그룹화하는 방법이다.
데이터를 점진적으로 병합하거나 분할하여 군집을 형성한다.
계층적 군집화의 작동 원리
- 거리 행렬 계산 - 데이터 포인트간의 거리를 계산하여 거리 행렬을 만듭니다.
- 군집 병합/분할 - 거리 행렬을 기반으로 가장 가까운 군집을 병합하거나, 가장 멀리 떨어진 군집을 분할한다.
- 덴드로그램 생성 : 군집화 과정을 시각화한 덴드로그램을 생성한다.
병합 군집화 , 분할 군집화
병합 군집화
병합 군집화는 각 데이터 포인트를 개별군집으로 시작하여 , 가장 가까운 군집을 반복적으로 병합한다.
특징으로는 아래와 같다.
- 단순성 - 구현이 비교적 간단하다 .
- 계산 비용 - 데이터 포인트 수가 많아질수록 계산 비용이 증가한다 .
- 덴드로그램 - 군집화 과정을 시각화한 덴드로그램을 생성할수 있다.
분할 군집화
분할 군집화는 모든 데이터 포인트를 하나의 군집으로 시작하여 , 반복적으로 가장 멀리 떨어진 군집을 분할한다.
주요 특징은 다음과 같다.
- 상대적으로 복잡함 - 병합 군집화보다 구현이 상대적으로 복잡하다
- 효율성 -큰 데이터 셋에서 병합 군집화보다 효율적이다
- 덴드로그램 - 군집화 과정을 시각화한 덴드로그램을 생성할수 있다.

기본적으로 불러오는 방식은 동일하다. 이후 데이터에서 필요한 열을 선택하고 데이터 정규화를 진행한다.


이후 덴드로그램을 생성


덴드로그램을 통해 최적의 군집 수를 결정한후 , 계층적 군집화 모델을 구현한다.
metric은 데이터 포인트간의 거리를 계산하는데 사용함
ward는 cluster간의 거리를 계산하는데 사용함


이후 모델 평가까지 완료하며 실습 종료. -1~1까지 나타내며 1에 가까울수록 잘 진행된것이다.
비지도 학습 : 군집화모델 - DBSCAN
DBSCAN은 밀도 기반 군집화 알고리즘이며 , 데이터 밀도가 높은 영역을 군집으로 간주하고 ,
밀도가 낮은 영역은 노이즈로 처리한다

DBSCAN의 작동원리
1.임의의 데이터 포인트를 선택한다.
2.선택한 데이터 포인트의 eps 반경 내에 있는 모든 데이터 포인트를 찾는다,
3.eps 반경 내의 데이터수 ≥ min_samples : 해당 데이터 포인트를 중심으로 새로운 군집형성.
4.eps 반경 내의 데이터수 < min_samples : 해당 데이터 포인트를 노이즈로 간주
5.군집에 속한 데이터 포인트에 대해 2~4단계를 반복
6.모든 데이터 포인트가 처리될 때까지 이 과정을 반복
DBSCAN의 장점
- 비구형 군집 탐지 :DBSCAN은 비구형 군집을 탐지할수있다.
- 노이즈처리 :노이즈를 효과적으로 처리할수 있다.
- 군집 수 자동 결정 : 군집 수를 사전에 지정할 필요가 없다.

데이터 로드하는 부분은 나머지 군집화 모델들과 방식이 동일하고 코드도 동일하다.

이후 DBSCAN을 수행할시 sklearn.cluster 안의 DBSCAN을 불러와 진행하게 된다.
비지도 학습 : 차원축소 - PCA
PCA는 고차원 데이터를 저차원으로 변환하는 차원 축소 기법이다.
데이터의 분산을 최대한 보존하면서 , 데이터의 주요 특징을 추출해 저차원 공간으로 변환한다.
데이터의 시각화 , 노이즈 제거 , 계산 효율성 향상 등의 이점을 얻을수 있다.

PCA의 작동원리
1. 데이터 표준화 : 각 특성의 평균을 0 , 분산을 1로 맞춘다
2. 공분산 행렬 계산 : 데이터의 공분산 행렬을 계산한다.
3. 고유값 및 고유벡터 계산 : 공분산 행렬의 고유값과 고유벡터를 계산한다.
4. 주성분 선택 : 고유값이 큰 순서대로 고유벡터를 정렬하여 주성분을 선택한다.
5. 데이터 변환 : 선택된 주성분을 사용하여 데이터를 저차원 공간으로 변환한다.
공분산 행렬 및 주성분 선택
공분산 행렬
공분산 행렬은 데이터의 각 특성간의 공분산을 나태내는 행렬이다.
공분산 행렬을 통해 데이터의 분산과 특성간의 상관관계를 파악할수 있다.
주성분 선택
- 고유값이 큰 순서대로 고유벡터를 정렬하여 주성분을 선택.
- 고유값이 클수록 해당 주성분이 데이터의 분산을 더 많이 설명
- 일반적으로 전체 분산의 95% 이상을 설명하는 주성분을 선택

mnist라는 머신러인에서 많이 사용하는 데이터를 사용하는데 ,
sklearn.datasets 안의 fetch_openml이라는 함수를 가져오고, mnist이름과 버젼을 적어주면 된다.

이후 스케일링을 통해 데이터 표준화를 진행하고 PCA를 수행하게 되는데,
sklearn.decomposition 안의 PCA를 사용하면 간단히 진행할수있다.

이후 주성분을 확인하게 되는데 선택된 주성분의 수와 각 주성분이 설명하는 분산 비율을 확인한다.

PCA를 2차원으로 시각화하면 실습은 종료.
비지도 학습 : 차원축소 - t-SNE
t-SNE란 ?
- t-SNE는 고차원 데이터를 저차원으로 변환하여 시각화하는 차원축소 기법이다.
- 데이터 포인트간의 유사성을 보존하면서 , 고차원 데이터를 2차원 또는 3차원 공간으로 변환한다.
- 데이터의 구조와 패턴을 시각적으로 이해할수있다.
t-SNE의 작동원리
1. 고차원 공간에서의 유사성 계산 : 고차원 데이터 포인트 간의 유사성을 확률 분포로 계산한다.
2. 저차원 공간에서의 유사성 계산 : 저차원 데이터 포인트 간의 유사성을 t-분포를 사용하여 계산.
3. KL 발산 최소화 : 고차원 공간과 저차원 공간 간의 유사성 분포 차이를 KL 발산을 통해 최소화
4. 반복적 최적화 : 저차원 공간에서의 데이터 포인트 위치를 반복적으로 조정하여 최적의 시각화를 얻는다.
t-SNE의 장점
- 비선형 구조를 효과적으로 탐지 할수있다.
- 데이터의 클러스터를 명확하게 시각화할수 있다.
- 고차원 데이터를 2차원 또는 3차원으로 변환하여 시각화 할수있다.
비지도 학습 : 차원축소 -LDA
LDA란 ?
- LDA는 차원 축소와 분류를 동시에 수행한다.
- LDA는 데이터의 클래스 간 분산을 최대화하고, 클래스 내 분산을 최소화하는 방향으로 데이터를 변환한다.
- 데이터의 분류 성능을 향상시키고, 저차원 공간에서 데이터의 구조를 시각화 할수있다.

LDA의 작동 원리
1. 클래스별 평균 계산 : 각 클래스의 평균 벡터를 계산
2. 클래스 내 분산 행렬 계산 : 클래스 간 평균 벡터의 분산을 계산하여 클래스 간 분산 행렬을 만든다.
3. 클래스 간 분산 행렬 계상 : 클래스 간 평균 벡터의 분산을 계산하여 클래스 간 분산 행렬을 만든다.
4. 고유값 및 고유벡터 계산 : 클래스 내 분산 행렬의 역행렬과 클래스 간 분산 행렬의 곱의 고유 값과 고유벡터를 계산
5 .선형 판별 축 선택 : 고유값이 큰 순서대로 고유벡터를 정렬하여 선형 판별 축을 선택
6. 데이터 변환 : 선택된 선형 판별 축을 사용하여 데이터를 저차원 공간으로 변환
선형 판별 축 선택
- 고유값이 큰 순서대로 고유벡터를 정렬하여 선형 판별 축을 선택
- 고유값이 클수록 해당 선형 판별 축이 클래스 간 분산을 더 많이 설명한다.
- 일반적으로 , 클래스의 수 -1 만큼의 선형 판별 축을 선택한다.
앙상블 학습 - 배깅과 부스팅
앙상블 학습이란?
여러개의 학습 모델을 결합하여 하나의 강력한 모델을 만드는 기법
개별 모델의 예측을 결합함으로써, 단일 모델보다 더 높은 예측 성능과 일반화 능력을 얻을수있다.
주요 기법으로는 배깅(Bagging) 과 부스팅(Boosting)이 있다.

배깅 : 다수결 원리
- 여러개의 학습 모델을 병렬로 학습시키고 , 그 예측 결과를 평균 또는 다수결로 결합하는 기법.
- 데이터의 샘플링 과정에서 부트스트래핑 기법을 사용하여 , 원본데이터셋에서 중복을 허용한 무작위 샘플을 생성.
- 각 모델은 서로 다른 데이터 샘플을 학습하게 되어, 모델간의 상관성을 줄이고 예측 성능을 향상 시킴
배깅의 장점
- 과적합 감소 : 여러 모델의 예측을 결합함으로써 과적합을 줄일수있다.
- 안정성 향상 : 데이터의 변동에 덜 민감해진다.
- 병렬처리 가능 : 각 모델을 독립적으로 학습시킬수 있어 병렬 처리가 가능하다.
부스팅 : 약한 학습기를 결합한 강한 학습기
- 여러개의 약한 학습기를 순차적으로 학습시키고 , 그 예측 결과를 결합하여 강한 학습기를 만드는 기법.
- 이전 모델이 잘못 예측한 데이터 포인트에 가중치를 부여하여, 다음 모델이 이를 더 잘 학습하도록 함.
부스팅의 장점
- 높은 예측 성능 : 약한 학습기를 결합하여 높은 예측 성능을 얻을수 있다.
- 과적합 방지 : 모델의 복잡도를 조절하여 과적합을 방지할 수 있다.
- 순차적 학습 : 이전 모델의 오류를 보완하는 방식으로 학습이 진행된다.
앙상블 학습 - 랜덤 포레스트
랜덤 포레스트란 ?
배깅 기법을 기반으로 한 앙상블 학습 모델이다.
여러 개의 결정 트리를 학습시키고 , 그 예측 결과를 결합하여 최종 예측을 수행한다.
각 트리가 독립적으로 학습되기 때문에 , 과적합을 방지하고 예측 성능을 향상시킬수 있다.

랜덤 포레스트의 원리
1. 부트스트랩 샘플링 : 원본 데이터셋에서 중복을 허용한 무작위 샘플을 생성한다.
2. 결정 트리 학습 : 각 부트스트랩 샘플을 사용하여 결정 트리를 학습시킨다. 이때, 각 노드에서 무작위로 선택된 특성의 일부만을 사용하여 분할을 수행한다.
3. 예측 결합 : 모든 결정 트리의 예측 결과를 결합하여 최종 예측을 수행한다. 회귀 문제에서는 평균을 사용하고,
분류 문제에서는 다수결을 사용한다.
무작위성
랜덤 포레스트는 두 가지 무작위성을 도입하여 모델의 다양성을 증가시키고 , 과적합을 방지한다.
1. 데이터 샘플링의 무작위성 : 각 결정 트리는 원본 데이터셋에서 무작위로 샘플링된 데이터로 학습된다.
2. 특성 선택의 무작위성 : 각 노드에서 분할을 수행할 때, 무작위로 선택된 특성 일부만을 사용한다.
이러한 무작위성은 모델의 상관성을 줄이고 , 예측 성능을 향상시킨다.
앙상블 학습 - 그래디언트 부스팅 머신 (GBM)
그래디언트 부스팅 머신이란 ?
- 여러개의 약한 학습기를 순차적으로 학습시키고 , 그 예측 결과를 결합하여 강한 학습기를 만드는 앙상블 기법.
- 이전 모델이 잘못 예측한 데이터 포인트에 가중치를 부여, 다음 모델이 이를 더 잘 학습하도록한다.
- 각 트리가 독립적으로 학습되기에 과적합을 방지하고 예측 성능을 향상시킬수 있다.
GBM의 구조
- GBM은 여러개의 결정 트리로 구성된다.
- 각 결정 트리는 이전 트리의 예측 오류를 보완하는 방식으로 학습된다.
- GBM은 각 트리의 예측 결과를 가중합하여 최종 예측을 수행한다.
GBM의 원리
1. 초기모델 학습 : 첫 번째 결정 트리를 학습시켜 초기 모델을 만든다.
2. 잔여 오차 계산 : 초기 모델의 예측 결과와 실제 값 간의 잔여 오차를 계산한다.
3. 잔여 오차 학습 : 잔여 오차를 예측하는 새로운 결정 트리를 학습시킨다.
4. 모델 업데이트 : 새로운 결정 트리를 기존 모델에 추가하여 모델을 업데이트한다.
5. 반복 : 잔여 오차가 충분히 작아질 때까지 2~4 단계를 반복한다.
앙상블 학습 - XGBoost
XGBoost란 ?
- 그래디언트 부스팅 알고리즘을 기반으로한 고성능 앙상블 학습기법.
- 효율성 , 유연성 , 이식성을 목표로 설계 되었으면, 다양한 머신러닝 경진대회에서 우수한 성능을 보여준다.
- 병렬 처리 , 조기 종료 , 정규화 등의 기능을 통해 성능을 극대화한다.
XGBoost 의 구조
- 여러개의 결정 트리로 구성된다.
- 각 결정 트리는 이전 트리의 예측 오류를 보완하는 방식으로 학습된다.
- 각 트리의 예측 결과를 가중합하여 최종 예측을 수행한다.
XGBoost 의 원리
1. 초기모델 학습 : 첫 번째 결정 트리를 학습시켜 초기 모델을 만든다.
2. 잔여 오차 계산 : 초기 모델의 예측 결과와 실제 값 간의 잔여 오차를 계산한다.
3. 잔여 오차 학습 : 잔여 오차를 예측하는 새로운 결정 트리를 학습시킨다.
4. 모델 업데이트 : 새로운 결정 트리를 기존 모델에 추가하여 모델을 업데이트한다.
5. 반복 : 잔여 오차가 충분히 작아질 때까지 2~4 단계를 반복한다.
XGBoost 의 장점
- 병렬 처리 : 트리의 분할을 병렬로 수행하여 학습속도를 향상시킨다
- 조기 종료 : 검증 데이터셋의 성능이 향상되지 않으면 학습을 조기에 종료하여 과적합을 방지한다.
- 정규화 : L1 및 L2 정규화를 통해 모델의 복잡도를 조절하고 과적합을 방지한다.
- 유연성 : 다양한 손실 함수와 평가 지표를 지원하여 다양한 문제에 적용 할수 있게한다.
오늘의 회고
부트캠프에서 제공하는 강의만으로는 이해가 너무 어렵다.
다른 강의를 통해 좀더 이해가 필요하다.
'나의개발일지(TIL)' 카테고리의 다른 글
| TIL 13일차 - 딥러닝 (5) | 2024.10.22 |
|---|---|
| TIL 12일차 - 딥러닝 (2) | 2024.10.21 |
| 나의개발일지(TIL)[스파르타 내일배움캠프]10일차 -머신러닝 (0) | 2024.10.17 |
| [스파르타 내일배움캠프]9일차 -머신러닝 (0) | 2024.10.15 |
| [스파르타 내일배움캠프]8일차 -머신러닝 (0) | 2024.10.14 |