기술과 산업/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