복습 노트

머신러닝

에이블러 2025. 10. 25. 17:55

<인공지능의 분류>

인공지능: 기계가 인간처럼 사고하고 행동하는 모든 기술

머신러닝: 데이터를 활용해 기계가 스스로 학습하여 알고리즘(=모델)을 개발하는 기술

# 많은 데이터를 통해 데이터 패턴을 파악해서 새로운 데이터가 들어오면 너도 그렇겠지~

     딥러닝: 인간의 신경망을 모방한 인공 신경망을 활용하여 더욱 깊고 정교한 학습 수행

 

AI는 크게 2개 분야로 나뉨

1.     컴퓨터 비전: 이미지, 영상,

2.     자연어 처리: 언어, , 기사, 대화 등

 

<머신러닝의 3요소>

1.    데이터

A.     숫자, 텍스트, 이미지, 소리 등 모든 형태의 정보 → 숫자형으로 변환 필요

B.     머신러닝의 성능은 얼마나 좋은 데이터를 사용하느냐에 따라 결정됨.

# 양과 질을 모두 만족하는 데이터

2.     학습: 데이터에서 패턴을 찾는 과정

A.     학습의 과정

i.             데이터 입력: 학습 데이터 제공

ii.            특징 추출: 데이터에서 의미 있는 정보 추출

iii.           패턴 학습: 데이터 분석 및 패턴 찾기

iv.           모델 평가: 학습된 모델을 평가

v.            최적화: 모델 성능 향상을 위해 추가 학습

3.     모델: 학습한 패턴을 기반으로 새로운 데이터를 예측하는 역할

A.     좋은 모델의 조건

i.             일반화 능력: 새로운 데이터를 잘 예측하는 능력

ii.            과적합 방지: 학습한 데이터에만 과도하게 맞춰지면 안됨 → 새로운 데이터에 성능 떨어짐

iii.           효율성: 너무 복잡하지 않고 빠르게 실행 가능

 

<머신러닝 학습 프로세스>

1.     데이터 수집

2.     데이터 탐색 및 전처리   # 제일 중요

A.     데이터의 구조, 타입, 분포, 이상치, 결측값 등 파악

B.     필요 없는 컬럼 제거, 결측값 처리, 인코딩, 스케일링 등 데이터 정제 수행함

#인코딩: 문자열 → 숫자형 (원핫인코딩 , 레이블인코딩)

#스케일링: 숫자형 정제 (표준화 Standardscaler , 정규화 MinMaxscaler)

3.     데이터 분할

A.     전체 데이터를 학습용(train)과 테스트용(test)으로 나눔

- 나중에 모델을 평가할 때 예측률 100%가 나올 수 있기 때문에 (과적합 방지)

# 일반적으로 7:3 또는 8:2 비율

B.     train_test_split 이용    # X_train, X-test, y_train, y_test  4개로 분할

                       i.        독립 변수(입력값): X

                      ii.        종속 변수(출력값): y    # 결과값=답안지

C.     머신러닝은 데이터를 주로 학습과 테스트로 분할 # 딥러닝은 학습/검증/테스트 분할

4.     모델 선택 및 학습

A.     학습: .fit( )

5.     예측 및 평가

A.     예측: .predict( )

B.     실제값과 모델의 예측값을 비교함으로써 평가.

 

<머신러닝 학습 유형>

1.     지도 학습(Supervised Learning)

A.     문제(X)와 정답(y)을 모두 알려주고 공부시키는 방법

B.     평가가 가능 (X, y 존재)

2.     비지도 학습(Unsupervised Learning)

A.     정답(라벨, Label)이 없는 데이터를 분석하여 숨겨진 패턴을 찾음

                                               i.        ex. 고객들을 비슷한 관심사에 따라 그룹으로 분류

B.     평가 불가능 (X만 존재)

3.     강화 학습(스스로 학습)        # 파이썬으론 안배움

A.     보상을 통해 최적의 행동을 학습함

                                               i.        ex. 알파고

 

<지도 학습(Supervised Learning)>

종속 변수(y)의 유형(범주, 숫자)에 따라 모델 선택

1.    회귀(Regeression) 모델

A.     출력값이 숫자형(특히 연속형) 데이터 (집값, , 기온 예측 등)

B.     특정 값을 예측(숫자로 표현됨)

-      회귀 모델 종류

n  선형 회귀(1차 함수): 해석이 쉬우나 이상치or비선형성에 약함

u  라쏘(Lasso): L1정규화, 필요 없는 변수 제거

u  릿지(Ridge): L2정규화, 나대는 변수 살짝 죽이기

u  엘라스틱넷: 라쏘+릿지

n  XGBoost 회귀: 오답노트를 작성하며 모델을 강화. 성능 강점. 속도 약점.

# 1번 모델 잘못된 점을 2번 모델에 보완 → 3번 모델 보안 → ---

n  LightGBM 회귀: XGBoost 대비 빠르지만 경량

n  결정트리 회귀: 트리 구조. 이상치에 강함. 과적합 쉬움. 가지치기 필요

# 스무고개 같은 느낌

n  랜덤포레스트 회귀: 다수 트리 앙상블. 결측치에 강함.

# 범용성이 넓어서 무슨 모델 쓸지 모르겠으면 랜덤포레스트 일단 해봐

-      회귀 모델 성능 평가

회귀 모델은 완벽하게 값을 맞출 수 없다.(accuracy 불가능)

n  MAE(Mean Absolute Error): 평균 절대 오차   #스케일 의존적

                       i.        실제값(y) 예측값(y hat)의 차이를 절댓값으로 변환해 평균을 구함.

                      ii.        작을수록 좋다. 스케일 의존적임(서로 다른 모델은 비교X. 지표가 상대적)

                     iii.        스케일 의존적이기 때문에 수치가 너무 크면 오차가 너무 커질 수 있음

                     iv.        실제값보다 낮게 예측했는지 높게 예측했는지 알 수 없음

n  MSE(Mean Squared Error): 평균 제곱 오차 # 스케일 의존적

n  RMSE(Root Mean Squared Error): 평균 제곱근 오차 # 스케일 의존적

n  MAPE(Mean Absolute Percentage Error): 평균 절대 비율 오차 # 스케일 의존적X

                                               i.        실제값이 0에 수렴하면 MAPE는 무한대에 수렴하는 단점

----------------------------------------------------------------------------------------------------

n  R^2(결정계수): 예측력이 얼마나 좋은지 비율로 표현 (1에 가까울수록 좋음)

# R^2는 상관계수 (-1 <= r <= 1)의 제곱으로 구함

 

2.    분류(Classification) 모델

A.     범주형 데이터(ex. 등급, 소속, 학점 등)일 때 사용

B.     특정 그룹(클래스)으로 분류

                       i.        이진분류 (Y2)    # Yes or No

                      ii.        다중분류 (Y3개 이상)

-      분류 모델 종류

n  로지스틱 회귀(Logistic Regression)     # 회귀 모델 아님!!

                                               i.        이진분류만 가능 (임계점을 기준으로 2개로 나눔)

n  결정 트리 : 스무고개

# DecisionTreeRegressor: 회귀 모델  /  DecisionTreeClassifer: 분류 모델

n  랜덤 포레스트 : 결정트리 모음

n  XGboost : 오답노트 작성해서 성능 향상

-      분류 모델 성능 평가    # 모든 지표가 0~1 사이에 값으로 나옴 (높을수록 좋음)

n  정확도(Accuracy)

                                         1.        전체 문제 중에서 정답을 맞춘 비율

                                         2.        클래스의 비율이 균형 잡혀 있을 때만 사용

                                         3.        불균형한 데이터의 경우 정확도는 좋지 않은 지표 → 다른 지표 필요

n  혼동 행렬=오차 행렬 (Confusion Matrix)

1.     예측 범주와 실제 분류 범주를 교차 표 형태로 정렬한 행렬

2.     TPTN이 높아야 좋음.

n  재현율(Recall) = 민감도(sensitivity)

1.     실제 정답이 positive인 것 중에서 모델 예측이 positive인 비율(TP / TP+FN)

# 놓치면 위험할 때, 반드시 잡아내야 할 때 사용 (포착 능력)

2.     FN을 낮추는 것이 중요

ex. 암 환자를 판단해야 할 때

n  정밀도 (Precision)    #재현율과 trade off 관계

1.     모델 예측이 positive인 것 중 실제 정답이 positive인 비율(TP / TP+FP)

# 잘못 예측하면 큰일날 때 사용 (예측의 정확성)

2.     FP를 낮추는 것이 중요

ex. 스팸 메일을 필터링 할 때

n  F1-score

1.     RecallPrecision의 조화평균

2.     재현율과 정밀도 어느 한쪽으로 치우치지 둘 다 중요할 때 사용.

 

<비지도 학습(Unsupervised Learning)>

1.     군집화(Clustering)

A.     비슷한 특성을 가진 데이터를 자동으로 그룹(클러스터)으로 묶는 방법.

B.     이상탐지에 주로 사용

-      주요 군집화 알고리즘

n  K-평균 군집화 (K-Means Clustering)

l  대표적 군집화 기법, 계산 빠름, 대규모 데이터 적합

l  K(군집 개수) 미리 지정 필요, 이상치에 민감

                       i.        임의의 중심점(centroid) k를 잡음

                      ii.        각 점을 가장 가까운 중심에 할당

                     iii.        수렴할 때까지 반복

n  계층적 군집화(Hierarchical Clustering)

l  유사도를 기반으로 계층 구조를 만들어 그룹 생성

l  K 미리 몰라도 됨

l  밀도 기반으로 할 때, 이상치 제거하고 싶을 때

i.  병합형: 데이터를 개별 군집으로 시작 → 가까운 군집끼리 합침

ii. 분할형: 전체 데이터를 하나로 시작 → 점차 분할

n  DBSCAN (Density-Based Spatial Clustering of Applications with Noise)

l  K 지정 불필요

l  밀도가 높은 지역을 기준으로 데이터 군집을 찾고 이상치를 식별

-      군집화 모델 성능 평가

n  실루엣 계수

u  각 데이터가 같은 군집 내 얼마나 밀지했는지(응집도)

u  다른 군집과 얼마나 떨어졌는지(분리도)

u  -1 ~ 1범위 (1에 가까울수록 품질↑)

n  Dunn Index

u  (군집 간 최소 거리) / (군집 내 최대 거리)

u  값이 클수록 군집 간 분리가 잘 됨

n  Calinski-Harabasz Index

u  (군집 간 분산) / (군집 내 분산)

u  값이 클수록 군집 품질 좋음

n  Davies-Bouldin Index

u  군집 내 응집도 + 군집 간 부리도를 종합한 지표

u  값이 작을수록 군집 품질 좋음

# 군집화는 지표보다 시각화가 더 중요!!! 물론 지표도 같이 쓰면 좋음

2.     차원 축소(Dimensionality Reduction)

A.     전처리 작업에 많이 쓰임

B.     정보 손실을 최소화하면서 데이터 구조를 단순화

C.     많은 변수(n차원)를 더 적은 수의 핵심 변수로 압축    # 데이터의 컬럼 줄이기

# 몇 개로 압축할지 답은 없음. 내 맘

-      차원 축소 알고리즘

n  주성분 분석(PCA)

u  데이터의 분산(퍼져있는 정도)을 최대한 유지하면서 차원을 축소하는 방법

# 내가 원하는 데이터들이 많은데 손실을 최소화 하면서 모든 정보들을 다 파악할 수 있는 또 다른 축을 만들고 싶을 때

n  t-SNE

u  데이터 간의 관계(거리)를 유지하면서 저차원으로 변환

u  시각화에 매우 특화됨, 결과가 매번 달라질 수 있다는 단점 존재

# 군집의 구조를 잘 보이게 할 때, 끼리끼리 만들고 싶을 때

n  LDA

u  데이터를 가장 잘 구분할 수 있는 방향으로 컬럼을 재생성

u  분류 문제에서 클래스의 종류가 너무 많아서 y를 차원 축소할 때 사용

# 클래스를 구분하고 싶을 때, 최적화 할 때

'복습 노트' 카테고리의 다른 글

생성형AI 1  (0) 2025.11.14
딥러닝  (0) 2025.11.05
데이터 분석 2  (0) 2025.10.19
데이터 분석 1  (0) 2025.10.18
파이썬 기초  (0) 2025.10.16