728x90
머신러닝.. 아주 어렵고도 심오한 내용이다. 현재 AI 시대를 건너고 있다. 이제 점점 더 활성화가 될 것이다. 그 부분에서 우리는 뒤쳐지지 말고 갭을 줄이기 위해 항상 배워두어야 하는데 그 기초가 되는게 머신러닝 / 딥러닝 인 듯 하다.
그래서 Python 으로 머신러닝 및 딥러닝 관련하여 한번 공부를 해보고자 한다.
우선 예시를 하나 들겠다.
선형회귀를 통한 숫자 예측 코드인데 이 부분을 먼저 작성 후 상세히 살펴보자
선형회귀
모델을 사용하여 숫자 패턴을 예측하는 방법
📌 예제: 숫자 시퀀스 예측
데이터:
- 입력값(X): [1, 2, 3, 4, 5]
- 출력값(y): [2, 4, 6, 8, 10] (각 X 값의 2배)
- 목표: X=6일 때 y 값 예측
📌 파이썬 코드 (Linear Regression 사용)
import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
# 1. 데이터 준비 (입력 X, 출력 y)
X = np.array([1, 2, 3, 4, 5]).reshape(-1, 1) # 2D 배열 변환
y = np.array([2, 4, 6, 8, 10]) # 출력값
# 2. 모델 생성 및 학습
model = LinearRegression()
model.fit(X, y)
# 3. 예측 수행
X_test = np.array([[6]]) # 새로운 입력값 6
y_pred = model.predict(X_test) # 예측
# 4. 결과 출력
print(f"X=6일 때 예측된 y 값: {y_pred[0]}")
# 5. 시각화 (데이터 + 예측값)
plt.scatter(X, y, color="blue", label="Actual Data")
plt.plot(X, model.predict(X), color="red", linestyle="--", label="Prediction Line")
plt.scatter(X_test, y_pred, color="green", marker="*", s=200, label="Predicted Value")
plt.xlabel("Input X")
plt.ylabel("Output y")
plt.legend()
plt.show()
📌 실행 결과
X=6일 때 예측된 y 값: 12.0
그래프에는 데이터 점(파란색), 예측선(빨간 점선), 예측값(초록 별)이 표시됩니다.
📌 설명
- 데이터 준비: 숫자 패턴 (X = 1, 2, 3, 4, 5, y = 2, 4, 6, 8, 10)
- 모델 학습: 선형 회귀 모델을 훈련
- 예측: X=6일 때의 값을 예측 (y=12)
- 시각화: 학습된 모델을 그래프로 표시하여 예측값을 확인
좀 더 세부적으로 알아보자
🔹 머신러닝 (Machine Learning, ML)
💡 정의: 데이터에서 패턴을 학습해서 새로운 데이터를 예측하는 기술.
- 사람이 직접 "이렇게 하라"라고 코딩하는 게 아니라, 알고리즘이 데이터에서 규칙을 찾는 방식이야.
- 예를 들어, "키와 몸무게 데이터를 보고 적정 몸무게 예측" 같은 거.
✅ 머신러닝의 주요 알고리즘
- 지도학습 (Supervised Learning) → 정답(라벨)이 있는 데이터를 학습
- 예제: 키와 몸무게 데이터(X)를 주고, 비만 여부(Y)를 예측
- 알고리즘:
- 선형 회귀 (Linear Regression) → 숫자 예측
- 의사결정나무 (Decision Tree) → 분류 문제 해결
- 랜덤 포레스트 (Random Forest) → 앙상블 기법으로 예측 성능 개선
- SVM (Support Vector Machine) → 복잡한 데이터 분류
- 비지도학습 (Unsupervised Learning) → 정답 없이 패턴을 찾음
- 예제: 고객 데이터를 군집으로 묶어서 유형 분석
- 알고리즘:
- K-평균 (K-Means Clustering) → 비슷한 데이터끼리 그룹화
- PCA (Principal Component Analysis) → 차원 축소
- 강화학습 (Reinforcement Learning) → 보상을 최대로 하도록 학습
- 예제: 바둑 AI, 자율주행, 게임 플레이 AI
- 대표 알고리즘: Q-Learning, DQN
🔹 딥러닝 (Deep Learning, DL)
💡 정의: 머신러닝보다 더 강력한 학습 능력을 가진 인공신경망(ANN, Artificial Neural Network) 기반 기술.
- 딥러닝은 머신러닝의 하위 개념이야.
- 이미지, 음성, 텍스트 같은 복잡한 데이터를 더 잘 처리할 수 있어.
- 사람 뇌의 뉴런 구조를 모방한 다층 신경망 (Deep Neural Network, DNN) 을 사용해.
✅ 딥러닝의 주요 알고리즘
- CNN (Convolutional Neural Network)
- 이미지 인식, 얼굴 인식, 객체 탐지 등에 사용
- 예제: 자율주행차가 신호등과 보행자를 인식
- 라이브러리: TensorFlow, PyTorch
- RNN (Recurrent Neural Network) & LSTM (Long Short-Term Memory)
- 순차적 데이터 (시계열, 자연어 처리) 분석에 특화
- 예제: 날씨 예측, 주가 예측, 챗봇
- 라이브러리: TensorFlow, Keras
- GAN (Generative Adversarial Networks)
- 가짜 이미지를 만들어 내는 기술 (딥페이크, AI 그림 생성)
- 예제: 미술작품을 자동 생성하는 AI
🔹 머신러닝 vs 딥러닝 차이점
비교 항목머신러닝 (ML)딥러닝 (DL)
학습 방식 | 특징을 사람이 직접 설계 | 특징을 스스로 학습 |
데이터 요구량 | 적은 데이터도 가능 | 방대한 데이터 필요 |
연산 속도 | 비교적 빠름 | 연산이 복잡해서 느림 |
주요 라이브러리 | scikit-learn | TensorFlow, PyTorch |
🔹 파이썬으로 머신러닝/딥러닝 하기
💻 필요한 라이브러리
pip install numpy pandas scikit-learn matplotlib tensorflow keras torch
📌 머신러닝 예제 (선형 회귀)
import numpy as np
from sklearn.linear_model import LinearRegression
X = np.array([1, 2, 3, 4, 5]).reshape(-1, 1)
y = np.array([2, 4, 6, 8, 10])
model = LinearRegression()
model.fit(X, y)
print("X=6의 예측값:", model.predict([[6]])[0]) # 결과: 12.0
📌 딥러닝 예제 (신경망 만들기 - Keras)
import tensorflow as tf
from tensorflow import keras
import numpy as np
# 간단한 신경망 모델 만들기
model = keras.Sequential([
keras.layers.Dense(8, activation='relu', input_shape=(1,)),
keras.layers.Dense(1)
])
model.compile(optimizer='adam', loss='mse')
# 데이터 준비
X = np.array([1, 2, 3, 4, 5])
y = np.array([2, 4, 6, 8, 10])
# 모델 학습
model.fit(X, y, epochs=100, verbose=0)
# 예측
print("X=6 예측값:", model.predict([6])[0][0]) # 결과 약 12
🔹 마무리
- 머신러닝은 데이터에서 규칙을 찾고 예측하는 기술이고, 딥러닝은 더 복잡한 문제를 해결하는 인공 신경망 기반 기술이야.
- 간단한 패턴 예측은 머신러닝(Scikit-learn)으로 해결하고, 복잡한 이미지/텍스트 분석은 딥러닝(TensorFlow/PyTorch)을 사용하면 돼.
