[머신 러닝: 지도학습에 대해]

2024. 12. 12. 13:49·Machine learning
더보기

머신러닝의 필수 구성요소

  1. 데이터(DATA)
    • 훈련데이터와, 테스트 데이터로 구분 됩니다.
  2. 특성(Features)
    •  모델이 학습하는 데 사용되는 입력값입니다.  (ex: 집값 예측 문제에서는 집의 면적,위치, 방 개수)
  3. 레이블(Labels)
    • 특성에 대한 정답입니다. 즉, 모델이 예측하려는 목표 값입니다. (ex: 집값)
  4. 모델(Model)
    • 주어진 데이터를 통해 패턴을 학습하고 예측을 수행하는 알고리즘입니다. (ex: 회귀 모델, 분류모델)
  5. 학습(Learning)
    • 모델이 주어진 데이터셋을 통해 특성과 레이블 간의 관계를 학습하고, 이를 통해 예측할 수 있는 능력을 갖는 것입니다.

1. 지도학습(Supervised Learning)이란 무엇인가?

  • 정답(레이블)이 있는 데이터를 활용해 데이터를 모델에게 학습시키는 것
  • 모델에 제공하는 데이터에 특성(입력값)과 그에 해당하는 정답(레이블)이 포함되어 있다.

 

 

 

 

2. 주요 알고리즘

1) 회귀 (Regression) : 예측하려가는 값이 연속적인 숫자일 때 사용합니다.

  • 목표: 숫자처럼 연속적인 값을 출력하는 모델을 만드는 것
  • 특징: 출력값은 실수 범위로 나타납니다.

회귀 대표 알고리즘:

  1. 선형 회귀 (Linear Regression) :
    • 두 변수 간의 관계를 직선으로 모델링
    • ex) 집의 크기와 가격을 바탕으로, 크기에 따른 가격을 예측)\

2. 다항 회귀 (Polynomial Regression)

  • 선형 회귀와 비슷하지만, 직선 대신 곡선을 사용하여 더 복잡한 관계를 모델링
  • ex) 학생의 공부 시간과 성적
  •  

3. 의사결정 회귀 트리 (Decision Tree for Regression)

  • 데이터를 여러 구간으로 나누어 예측하는 방식
  • ex) 고객의 나이를 기준으로 여러 그룹을 나누어, 각 그룹에 따른 구매력 예측
  •  

4. 랜덤 포레스트 회귀 (Random Forest Regression)

  • 여러 개의 결정 트리를 만들어 예측값을 종합하여 더 정확한 예측

[실습]

from sklearn.model_selection import train_test_split  # 데이터를 훈련 세트와 테스트 세트로 분할하는 함수
from sklearn.linear_model import LinearRegression  # 선형 회귀 모델
from sklearn.metrics import mean_squared_error  # 평균 제곱 오차(MSE)를 계산하는 함수

# 데이터 예시 (평수와 가격)
X = [[50], [60], [70], [80], [90]]  # 평수 (특성)
y = [150, 180, 210, 240, 270]       # 가격 (레이블)

# 데이터 분할 (훈련 데이터와 테스트 데이터)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 선형 회귀 모델 생성 및 학습
model = LinearRegression()  # 선형 회귀 모델 객체 생성
model.fit(X_train, y_train)  # 훈련 데이터를 사용해 모델 학습

# 예측 및 평가
y_pred = model.predict(X_test)  # 테스트 데이터에 대해 예측 수행
print("X_test 값:", X_test, "예측 값:", y_pred)  # 테스트 데이터와 예측 값을 출력
print("MSE:", mean_squared_error(y_test, y_pred))  # MSE 계산 (오차의 제곱 평균, 값이 작을수록 좋음)

X_test 값: [[60]] 예측 값: [180.]
MSE: 0.0

MSE



2) 분류 (Classification) : 예측하려는 값이 특정 클래스나 범주에 속하는 경우 사용합니다.

  • 목표: 입력 데이터를 특정 카테고리로 분류하는 것
  • 특징:
    • 출력값은 정수형 라벨 또는 범주형 값으로 나타남.
    • 이진 분류(Binary Classification): 클래스가 두 개(예: Yes/No).
    • 다중 클래스 분류(Multi-Class Classification): 클래스가 세 개 이상(예: 개, 고양이, 새).

 

분류 대표 알로리즘:

  • 로지스틱 회귀 (Logistic Regression)
    • 0 또는 1처럼 두 가지 결과를 예측할 때 사용
    • ex) 이메일이 스팸인지 아닌 구분하는 문제. 스팸이면 0 아니면 1

  • 서포트 벡터 머신 (SVM)
    • 두 클래스를 구분할 수 있는 가장 좋은 경계를 찾는 방법
    • ex) 사과 오렌지의 크기와 색깔 특성으로 두 과일 구분하기

  • k-최근접 이웃 (k-NN)
    • 주어진 데이터와 가장 가까운 데이터를 찾아 예측
    • ex) 꽃잎 길이과 꽃잎 너비를 가지고 꽃의 종류를 예측

  • 의사결정 트리 (Decision Tree for Classification)
    • 여러 조건을 바탕으로 트리 구조로 예측
    • ex) 나의 게임 티어는 어디인가?

  • 랜덤 포레스트 분류 (Random Forest Classification)
    • 여러 개의 결정 트리를 결합하여 더 정확한 예측
    • ex) 다양한 고객 데이터를 통해 고객이 제품을 구매할지 예측하는 문제

 

[분류 실습]

from sklearn.datasets import load_breast_cancer  # 유방암 데이터셋 불러오기
from sklearn.model_selection import train_test_split  # 데이터 분할을 위한 함수
from sklearn.preprocessing import StandardScaler  # 데이터 표준화를 위한 스케일러
from sklearn.neighbors import KNeighborsClassifier  # KNN 분류 모델
from sklearn.metrics import accuracy_score  # 모델 정확도 평가를 위한 함수

# 데이터 로드
data = load_breast_cancer()  # 유방암 데이터셋 로드
X = data.data  # 특성 데이터 (X)
y = data.target  # 레이블 데이터 (y)

# 데이터 분할 (훈련 세트 80%, 테스트 세트 20%)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 데이터 스케일링 (특성 값의 범위를 조정)
scaler = StandardScaler()  # 표준화 스케일러 생성
X_train = scaler.fit_transform(X_train)  # 훈련 데이터 표준화
X_test = scaler.transform(X_test)  # 테스트 데이터 표준화

# KNN 모델 학습 (이웃의 수를 5로 설정)
model = KNeighborsClassifier(n_neighbors=5)  # KNN 분류기 생성
model.fit(X_train, y_train)  # 훈련 데이터로 모델 학습

# 예측 및 평가
y_pred = model.predict(X_test)  # 테스트 데이터에 대한 예측
print(f"정확도: {accuracy_score(y_test, y_pred)}")  # 모델의 정확도 출력


정확도: 0.9473684210526315

 

3) 회귀와 분류의 차이

구분 회귀 분류
출력값 형태 연속적인 실수 값 정수형 또는 범주형 값
목표 숫자 값을 예측 특정 클래스에 속하는 지 예측
예시 주택 가격, 성적 이메일 스팸 여부, 꽃 분류
알고리즘 선형 회귀, 다항회귀,
의사결정 회귀 트리,
랜덤 포레스트 회귀
로지스틱 회귀, SVM, k-NN,
의사결정 트리, 랜덤포레스트 분류

 

'Machine learning' 카테고리의 다른 글

[머신러닝: 지도학습 실습 2]  (6) 2024.12.19
[머신 러닝: 지도학습 실습 1]  (4) 2024.12.18
[머신러닝 데이터 전처리 실습 및 문제풀기]  (5) 2024.12.09
[머신러닝 데이터 불러오기, 전처리 개념]  (5) 2024.12.07
[머신러닝 개념, 구성요소]  (4) 2024.12.05
'Machine learning' 카테고리의 다른 글
  • [머신러닝: 지도학습 실습 2]
  • [머신 러닝: 지도학습 실습 1]
  • [머신러닝 데이터 전처리 실습 및 문제풀기]
  • [머신러닝 데이터 불러오기, 전처리 개념]
100.nam
100.nam
100.nam님의 블로그 입니다.
  • 100.nam
    100.nam님의 블로그
    100.nam
  • 전체
    오늘
    어제
    • 분류 전체보기
      • Python 정리
      • Python 문제 풀기
      • Machine learning
      • SQL 정리
      • SQL 문제풀기
      • Django 정리
      • LangChain,Graph
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    내일배움캠프
    스파르타코딩크럽
    스파르타코딩클럽
    Python
    pandas
    SQL
    vscode
    인공지능을위한파이썬
    머신러닝
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
100.nam
[머신 러닝: 지도학습에 대해]
상단으로

티스토리툴바