기술과 산업/AI

머신러닝 알고리즘별 개념 비교 및 초보자용 설명

B컷개발자 2025. 5. 21. 13:02
728x90

머신러닝 알고리즘별 개념 비교 및 초보자용 설명

선형 회귀 (Linear Regression)

항목 설명

개념 예: "광고비를 얼마나 쓰면 매출이 얼마나 나올까?"처럼 수치를 예측하는 데 사용
R 예시 parsnip::linear_reg()
Python 예시 sklearn.linear_model.LinearRegression()
실습 데이터 advertising.csv - TV, Radio, Newspaper 광고비와 매출의 관계
초보자 설명 “Y = aX + b”라는 수학식. X(광고비)가 커지면 Y(매출)이 어떻게 변하는지 ‘선’으로 설명하려고 하는 모델입니다.

결정 트리 (Decision Tree)

항목 설명

개념 "고객이 이탈할까 아닐까?", “가격대는 얼마쯤일까?”를 규칙 기반으로 나누며 예측
R 예시 parsnip::decision_tree()
Python 예시 sklearn.tree.DecisionTreeRegressor / Classifier
초보자 설명 데이터의 조건을 따라 "Yes/No"로 분기하며 내려가는 나무 구조입니다.
# Python 예제
from sklearn.tree import DecisionTreeRegressor
from sklearn.datasets import load_diabetes
from sklearn.model_selection import train_test_split

X, y = load_diabetes(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)

tree = DecisionTreeRegressor(max_depth=3)
tree.fit(X_train, y_train)
print("예측값:", tree.predict(X_test[:3]))

랜덤 포레스트 (Random Forest)

항목 설명

개념 여러 개의 결정 트리를 만들고 그 평균으로 예측하는 방식 → 과적합 방지
R 예시 parsnip::rand_forest()
Python 예시 sklearn.ensemble.RandomForestRegressor
초보자 설명 숲은 나무보다 더 똑똑합니다. 여러 트리를 만든 후, 다수결 or 평균을 내서 안정적인 예측을 합니다.

XGBoost / Boosted Trees

항목 설명

개념 에러가 나는 부분에 집중해서 점점 모델을 정교하게 개선하는 방식
R 예시 boost_tree() (tidymodels 기반), xgboost 패키지
Python 예시 xgboost.XGBRegressor
초보자 설명 이전 모델의 실수를 보완하는 방식으로 학습하며, 매우 강력하고 대회에서 자주 사용됩니다. 다만, 튜닝은 어려움.

3. 실습 예시 요약

회귀 문제 예시 (R / Python 공통)

  • 데이터: Advertising.csv
  • 목표: TV 광고비로 매출 예측
  • Python 예시:
import pandas as pd
from sklearn.linear_model import LinearRegression

df = pd.read_csv("Advertising.csv")
X = df[["TV"]]
y = df["Sales"]

model = LinearRegression()
model.fit(X, y)

print("기울기:", model.coef_)
print("절편:", model.intercept_)
  • R 예시:
library(tidymodels)

data <- read.csv("Advertising.csv")
model <- linear_reg() %>% 
  set_engine("lm") %>%
  fit(Sales ~ TV, data = data)

summary(model)

클러스터링 예시 (Python)

from sklearn.cluster import KMeans
from sklearn.preprocessing import StandardScaler
import matplotlib.pyplot as plt

# 가상의 고객 데이터
X = [[20, 40000], [25, 50000], [30, 60000], [35, 65000], [40, 70000]]
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)

kmeans = KMeans(n_clusters=2, random_state=42)
kmeans.fit(X_scaled)

print("클러스터 할당:", kmeans.labels_)

마무리 요약

항목 R 장점 Python 장점

시각화 ggplot2, Shiny plotly, seaborn, Dash
워크플로우 tidymodels, dplyr의 직관적인 문법 scikit-learn, pandas의 통합성
배포 및 자동화 Plumber, Shiny Server FastAPI, Flask, Streamlit, MLFlow
입문 난이도 문법은 비교적 쉽고 문서도 풍부 생태계가 크고 산업에 널리 쓰임

 

728x90