🚩λ”₯λŸ¬λ‹ 기초 - part05. Linear Regression (μ„ ν˜• νšŒκ·€ 뢄석)

vincaΒ·2022λ…„ 10μ›” 25일
0

πŸŒ“ AI/DL - theory

λͺ©λ‘ 보기
6/24
post-thumbnail

🟒 Introduction

이제 λ“œλ””μ–΄ ν•™μŠ΅μ„ ν•œλ‹€λŠ” μΈ‘λ©΄μ—μ„œ λ”₯λŸ¬λ‹μ— μœ μ‚¬ν•œ λΆ€λΆ„κΉŒμ§€ 온 것 κ°™λ‹€!

λ’€μ—κ°€μ„œ λ°°μš°κ² μ§€λ§Œ νΌμ…‰νŠΈλ‘ μ„ 배우고, Neural Networkλ₯Ό 배우면...μ§„μ§œ λ”₯ν•΄μ§€λŠ” κ²ƒμœΌλ‘œ μ•ˆλ‹€.
인곡지λŠ₯을 λ§›λ³΄κΈ°λ‘œ λ°°μš΄μ§€λΌ μ •ν™•νžˆλŠ” λͺ¨λ₯΄λ‚˜, CNN, RNN, GCN, GAN..μƒκ°λ§ŒμœΌλ‘œ μ–΄μ§€λŸ¬μš΄....

πŸ›  νšŒκ·€ 뢄석(Regression)

Linear Regressionμ—μ„œ RegressionλΆ€ν„° μ‚΄νŽ΄λ³΄μž! Regression은 λ¬΄μ—‡μΌκΉŒ?

  • νšŒκ·€ 뢄석
    • 자료 뢄석을 μœ„ν•œ 톡계학적 방법
    • 주어진 자료의 κ²½ν–₯μ„±(μ’Œν‘œ ν‰λ©΄μ—μ„œμ˜ data듀이 λ‚˜νƒ€λ‚΄λŠ” ν˜•νƒœ)λ₯Ό λΆ„μ„ν•˜μ—¬ μ΄λŸ¬ν•œ dataλ“€ μ‚¬μ΄μ˜ 상관관계λ₯Ό μΆ”μ •
    • μˆ˜ν•™μ  λͺ¨λΈμ„ κ°€μ •ν•˜κ³ , 주어진 μžλ£Œλ“€μ„ μ‚¬μš©ν•˜μ—¬ 이 λͺ¨λΈμ˜ νŒŒλΌλ―Έν„°λ₯Ό κ²°μ •
    • λŒ€ν‘œμ μœΌλ‘œ μ„ ν˜•νšŒκ·€μ™€ λ‘œμ§€μŠ€ν‹± νšŒκ·€κ°€ μžˆλ‹€.

      μ„ ν˜•νšŒκ·€λŠ” μ˜ˆμΈ‘μ— λ‘œμ§€μŠ€ν‹± νšŒκ·€λŠ” λΆ„λ₯˜μ— μ‚¬μš©λœλ‹€. (μ΄λŸ¬ν•œ κ°œλ…μ€ μ•Œμ•„λ‘μž)

μ΄ν•΄ν–ˆλ‹€λ©΄ 더할 λ‚˜μœ„ μ—†κ² λ‹€λ§Œ, 말이 쑰금 μ–΄λ €μš΄κ°€?

μš°λ¦¬λŠ” μ„ ν˜• νšŒκ·€ 뢄석뢀터 μ•Œμ•„λ³Ό κ²ƒμ΄λ―€λ‘œ, μ„ ν˜•νšŒκ·€λ₯Ό κΈ°μ€€μœΌλ‘œ μ‰½κ²Œ μ΄ν•΄ν•΄λ³΄μž.
(사싀 μ„ ν˜•νšŒκ·€λ₯Ό μ•Œκ³ λ‚˜λ©΄ λ‘œμ§€μŠ€ν‹± νšŒκ·€λ˜ν•œ 크게 λ‹€λ₯Ό λΉ  μ—†λ‹€)

μ‰½κ²Œ 말해, μ‚¬μš©ν•˜κ³ μž ν•˜λŠ” μˆ˜ν•™μ  λͺ¨λΈ (y=ax+by=ax+b / μΌμ°¨μ‹μ΄λ―€λ‘œ μ„ )을 κ°€μ •ν•˜κ³ , 주어진 dataλ“€λ‘œ ν•˜μ—¬κΈˆ μ΄λŸ¬ν•œ data듀을 κ°€μž₯ 잘 λ‚˜νƒ€λ‚Ό 수 μžˆλŠ”(μ ν•©ν•œ) 선을 μ°ΎλŠ” κ³Όμ •. μ΄λŸ¬ν•œ 과정을 곧 ν•™μŠ΅μ΄λΌκ³  ν•œλ‹€.

aa (기울기)와 bb(y절편 - bias라고 함)을 data듀을 κ°€μž₯ 잘 ν‘œν˜„ν•  수 μžˆλŠ” 선이 λ˜λ„λ‘ 잘 μ΄λ™ν•˜λ©° μ‘°μ •ν•˜λŠ” 것!
μœ„ 그림처럼 데이터듀을 κ°€μž₯ 잘 ν‘œν˜„ν•˜λŠ” 직선(Linear)을 찾자!

πŸ›  Linear Regression (μ„ ν˜• νšŒκ·€ 뢄석)

ν•œ 개 μ΄μƒμ˜ 독립 λ³€μˆ˜(xx)와 쒅속 λ³€μˆ˜(yy) μ‚¬μ΄μ˜ μ„ ν˜• 상관 관계λ₯Ό μ •λž΅μ μœΌλ‘œ μΆ”μ •ν•˜λŠ” νšŒκ·€ 뢄석 방법
즉 xx에 λ”°λΌμ„œ yyκ°€ κ²°μ •λœλ‹€.

  • 독립 λ³€μˆ˜ : β€˜x값이 변함에 따라 y값도 λ³€ν•œλ‹€β€™ μ •μ˜ ν•˜μ—μ„œ λ…λ¦½μ μœΌλ‘œ λ³€ν•  수 μžˆλŠ” xκ°’
  • 쒅속 λ³€μˆ˜ : 독립 λ³€μˆ˜μ— 따라 μ’…μ†μ μœΌλ‘œ λ³€ν•˜λŠ” κ°’

자 그럼 μ‹μœΌλ‘œ ν‘œν˜„ν•΄λ³΄μž. 사싀 μš°λ¦¬λŠ” 이미 식을 λ΄€μ—ˆλ‹€.

πŸ›  μ„ ν˜• νšŒκ·€λΆ„μ„μ˜ μˆ˜μ‹

  • λ‹€μŒκ³Ό 같은 μˆ˜μ‹μœΌλ‘œ ν‘œν˜„λœλ‹€!
    사싀상 y=ax+by=ax+b μ—μ„œ λ‹¨μˆœνžˆ ν‘œν˜„ν•˜λŠ” λ³€μˆ˜λ§Œ μ‘°κΈˆμ”© λ°”λ€Œμ—ˆμ„ 뿐 λ™μΌν•˜λ‹€.
    wλŠ” κ°€μ€‘μΉ˜(기울기)λ₯Ό λ‚˜νƒ€λ‚΄κ³  bλŠ” λ°”μ΄μ–΄μŠ€(y절편)을 λ‚˜νƒ€λ‚Έλ‹€.
    μ‰½κ²Œλ§ν•΄ κ·Έμ € ν•˜λ‚˜μ˜ 1μ°¨ν•¨μˆ˜(직선 = Linear)일 뿐이닀.

πŸ›  Linear Regression의 λͺ©μ 

  • 일반적으둜 반볡적인 방법이 뢄석적인 방법보닀 더 μ ν•©ν•œ parameta(기울기, y절편)λ₯Ό 찾을 수 μžˆλ‹€.

    잘 이해가 λ˜μ§€ μ•Šμ•„λ„ 상관없닀. λ°”λ‘œ μ•„λž˜ Linear Regression 예제λ₯Ό 톡해 같은 말을 μƒμ„Ένžˆ μ„œμˆ ν•œλ‹€.

πŸ›  Linear Regression 예제

μ„ ν˜• νšŒκ·€λŠ” μ•žμ„œ λ§ν–ˆλ“―, μ˜ˆμΈ‘μ— μ‚¬μš©λ˜κ³  이후 배우게 될 λ‘œμ§€μŠ€ν‹± νšŒκ·€λŠ” λΆ„λ₯˜μ— μ‚¬μš©λœλ‹€.

자 그럼 μ„ ν˜•νšŒκ·€λ₯Ό 톡해 κ³΅λΆ€μ‹œκ°„μ— λŒ€ν•œ 성적을 μ˜ˆμΈ‘ν•΄λ³΄μž.

λ‹€μŒκ³Ό 같은 κ³΅λΆ€μ‹œκ°„/성적에 κ΄€ν•œ dataκ°€ μžˆμ„ λ•Œ, 이λ₯Ό μ’Œν‘œν‰λ©΄μƒμ— λ‚˜νƒ€λ‚΄λ©΄ λ‹€μŒκ³Ό 같이 λ‚˜νƒ€λ‚œλ‹€.
μ—¬κΈ°μ„œ κ³΅λΆ€μ‹œκ°„μ΄xx 성적은 yy둜 ν‘œν˜„λœλ‹€. 즉, κ³΅λΆ€μ‹œκ°„μ΄ 성적에 영ν–₯(λ³€ν™”)λ₯Ό λΌμΉ˜λ―€λ‘œ λ…λ¦½λ³€μˆ˜λŠ” κ³΅λΆ€μ‹œκ°„, μ’…μ†λ³€μˆ˜λŠ” 성적이 λœλ‹€.

κ·Έλ¦¬κ³ λ‚˜μ„œ μš°λ¦¬λŠ” 가섀을 μ„Έμš°κ²Œ λœλ‹€.
가섀이라고 ν•΄μ•Ό κ±°μ°½ν•  것은 μ—†κ³ , μ΄λŸ¬ν•œ 데이터λ₯Ό κ°€μž₯ 잘 ν‘œν˜„ν•  수 μžˆμ„κ²ƒμ΄λΌ μ˜ˆμƒλ˜λŠ” μž„μ˜μ˜ 직선을 ν•˜λ‚˜ κΈ‹λŠ” 것이닀.

  • μž„μ˜μ˜ 직선 H(x)=wx+bH(x)=wx+bλ₯Ό μ •μ˜ν•œλ‹€.

    μ—¬λŸ¬κ°€μ§€ κ°€μ„€ 쀑 빨간색 선이 κ°€μž₯ 데이터듀에 κ°€κΉκ²Œ 잘 ν‘œν˜„ν•˜λŠ” 것 κ°™λ‹€.
    그럼 μ™œ 빨간선이 κ°€μž₯ 잘 ν‘œν˜„ν•˜λŠ” 것 같은가?
    잘 ν‘œν˜„ν•œλ‹€μ˜ 기쀀은 μ‹€μ œ λ°μ΄ν„°μ™€μ˜ μ˜€μ°¨κ°€ λœλ‹€.
    μ˜€μ°¨λŠ” 가섀을 μ„Έμš΄ μ„ κ³Ό μ‹€μ œ λ°μ΄ν„°κ°„μ˜ 거리의 μ°¨λ‹€.

    λ”°λΌμ„œ λΉ¨κ°„ 선이 κ°€μž₯ 잘 ν‘œν˜„ν•˜λŠ” 것 κ°™λ‹€κ³  μš°λ¦¬λŠ” 생각할 수 μžˆλ‹€!

ν—ˆλ‚˜ μ €λŸ¬ν•œ 선은 λŒ€λž΅μ μœΌλ‘œ 그은 것이고, κ°€μž₯ 잘 ν‘œν˜„ν•˜λŠ” λΉ¨κ°„ 선을 μ‹€μ œλ‘œ κ΅¬ν•˜λŠ” 방법은 그럼 μ–΄λ–»κ²Œ 될까? λ°”λ‘œ μ΅œμ†Œ μ œκ³±λ²•μ„ μ΄μš©ν•œλ‹€.

🧩 μ΅œμ†Œ μ œκ³±λ²•

μ΅œμ†Œμ œκ³±λ²•μ΄λž€?
κ·Όμ‚¬μ μœΌλ‘œ κ΅¬ν•˜λ €λŠ” 해와 μ‹€μ œ ν•΄μ˜ 였차의 제곱의 합이 μ΅œμ†Œκ°€ λ˜λŠ” ν•΄λ₯Ό κ΅¬ν•˜λŠ” 방법

  • Q. μ œκ³±μ„ν•˜λŠ” μ΄μœ λŠ” λ­”κ°€μš”?
    A. 선보닀 μœ„μ— μžˆμ„ μˆ˜λ„, μ•„λž˜ μžˆμ„ μˆ˜λ„ μžˆκΈ°μ— 각 μ˜€μ°¨μ—μ„œμ˜ λΆ€ν˜Έ(-/+)차이λ₯Ό μ—†μ• κΈ° μœ„ν•΄μ„œμ΄λ‹€.
  • Q. 합은 μ™œ ν•©μΈκ°€μš”?
    A. 각 λ°μ΄ν„°λ§ˆλ‹€ μ˜€μ°¨λŠ” 각각 λ°œμƒν•˜κΈ° λ•Œλ¬Έμ— 전체 λ°μ΄ν„°μ—μ„œ λ°œμƒν•œ 였차λ₯Ό μ „λΆ€ λ”ν•΄μ£ΌλŠ” 것을 의미.

μ΅œμ†Œμ œκ³±λ²•μ„ μ‚¬μš©ν•œ 근사적인 선을 κ΅¬ν•˜λŠ” 방법 2가지

  1. μž”μ°¨ μ œκ³±ν•©(RSS: Residual Sum of Squares)을 μ΅œμ†Œν™”ν•˜λŠ” κ°€μ€‘μΉ˜μ™€ λ°”μ΄μ–΄μŠ€ ꡬ함
  2. μž”μ°¨ μ œκ³±ν•©μ˜ κ·Έλ ˆλ””μ–ΈνŠΈ(gradient) 벑터가 0이 λ˜λ„λ‘ 함 (Gradient descent)
  • μ—¬κΈ°μ„œλŠ” 방법 1을 μ‚¬μš©ν•œλ‹€. / 방법2λŠ” Gradient descent νŒŒνŠΈμ—μ„œ 기술

🎱 μž”μ°¨λž€?

데이터가 가지고 μžˆλŠ” μ‹€μ œκ°’(y)μ—μ„œ μ˜ˆμΈ‘ν•œ y^=H(x)=wx+b\hat y=H(x)=wx+b 직선을 λΊ€ κ°’.
μ˜ˆμΈ‘κ°’μ€ y^\hat y 즉, μ˜ˆμΈ‘ν•œ 선에 λŒ€ν•΄μ„œ x 값을 λŒ€μž…ν•΄μ„œ λ‚˜μ˜¨ y 결과값을 μ˜λ―Έν•œλ‹€.

자, 이제 μ΅œμ†Œμ œκ³±λ²•μ„ μ•Œμ•˜μœΌλ‹ˆ 이λ₯Ό μ΄μš©ν•΄μ„œ, λͺ¨λΈ(Linear)λ₯Ό 계산해 보자.

🧩 μ΅œμ†Œ μ œκ³±λ²•μ„ μ‚¬μš©ν•œ λͺ¨λΈ μΆ”μ •(계산)

  • λ‹€μŒκ³Ό 같은 식을 μ‚¬μš©ν•΄μ„œ data듀을 κ°€μž₯ 잘 ν‘œν˜„ν•˜λŠ” 기울기 및, μ ˆνŽΈμ„ μΆ”μ •ν•  수 μžˆλ‹€.
  • μ—¬κΈ°μ„œ 절편(b)λ₯Ό ꡬ할 λ•Œ, 기울기(ww)κ°€ μ‚¬μš©λ˜λŠ” 것을 μ£Όμ˜ν•˜μž. ww β†’ aa둜 μΉ˜ν™˜λ˜μ–΄ ν‘œκΈ°λ¨
  • μœ„ 식을 μ‚¬μš©ν•΄μ„œ xx,yy에 λŒ€ν•œ 평균/기울기/μ ˆνŽΈμ„ ꡬ할 수 있고, μ΅œμ’…μ μΈ μΆ”μ •λœ 선을 ꡬ할 수 μžˆλ‹€.
  • 이λ₯Ό 파이썬 μ½”λ“œλ‘œ κ³„μ‚°ν•˜λ©΄ λ‹€μŒκ³Ό κ°™λ‹€.
#λ³΅μ‚¬μš© μ½”λ“œ
import numpy as np
x = [2, 4, 6, 8]
y = [81, 93, 91, 97]
#x와 y의 평균값
mx = np.mean(x)
my = np.mean(y)
print("x와 y의 평균값:", mx, my)
#기울기 κ³΅μ‹μ˜ λΆ„λͺ¨
divisor = sum([(mx - i)**2 for i in x])
#기울기 κ³΅μ‹μ˜ λΆ„μž
dividend = np.sum([(mx-xi)*(my-yi) for xi, yi in zip(x, y)])
print("λΆ„λͺ¨μ™€ λΆ„μž:", divisor, dividend)
#κΈ°μšΈκΈ°μ™€ y 절편
a = dividend / divisor
b = my - (mx*a)
print("κΈ°μšΈκΈ°μ™€ y 절편:", a, b)
  • μ½”λ“œ μ‹€ν–‰ κ²°κ³Ό
    x와 y의 평균값: 5.0 90.5
    λΆ„λͺ¨μ™€ λΆ„μž: 20.0 46.0
    κΈ°μšΈκΈ°μ™€ y 절편: 2.3 79.0
    λ‹Ήμ—°ν•˜μ§€λ§Œ μ†μœΌλ‘œ κ³„μ‚°ν•œ 결과와 λ™μΌν•œ 것을 μ•Œ 수 μžˆλ‹€.

🎯 μ†μ‹€ν•¨μˆ˜(Loss Function)와 λΉ„μš©ν•¨μˆ˜(Cost function)

  • μ†μ‹€ν•¨μˆ˜? λΉ„μš©ν•¨μˆ˜?
    • μ†μ‹€ν•¨μˆ˜λž€ ν•œ 개의 data에 λŒ€ν•œ loss(였차)
    • λΉ„μš©ν•¨μˆ˜λž€ λͺ¨λ“  data에 λŒ€ν•œ loss(였차)의 평균
      🎈 μ‰½κ²Œ 말해 λΉ„μš©ν•¨μˆ˜λž€, μ†μ‹€ν•¨μˆ˜λ₯Ό μ „λΆ€ λ”ν•΄μ„œ 평균을 λ‚Έ 것
      이λ₯Ό MSE(Mean Square Error: 평균 제곱였차)라고 ν•œλ‹€.
  • 였차λ₯Ό κ΅¬ν•˜λŠ” 방법
    (H(x(k))(H(x^{(k)}) - y(k))2y^{(k)})^2 = 예츑 κ°’ = μΆ”μ •ν•œ μ§μ„ μ˜ κ²°κ³Ό yκ°’ = y^\hat y) - μ‹€μ œ λ°μ΄ν„°μ˜ κ²°κ³Ό yyκ°’ 계산 ν›„ 제곱
    🎈 ex.) μ‹€μ œ 데이터 (2, 4)λΌλŠ” 값이 μžˆλŠ” 경우, μΆ”μ • 직선 y=wx+by=wx+b에 2λ₯Ό λŒ€μž…ν•˜μ—¬ λ‚˜μ˜¨ y 값이 μ˜ˆμΈ‘κ°’(y^\hat y)이 되고, μ‹€μ œ λ°μ΄ν„°μ˜ κ²°κ³Όκ°’ yyλŠ” 4이닀. 이λ₯Ό λΉΌμ£Όκ³  μ œκ³±ν•œλ‹€.

  • 평균 제곱 였차(MSE : Mean Square Error)λ₯Ό Cost function으둜 μ‚¬μš©ν•œλ‹€

🎯 μ†μ‹€ν•¨μˆ˜, λΉ„μš©ν•¨μˆ˜μ˜ λͺ©μ μ€?

자 λ§ˆμ§€λ§‰μœΌλ‘œ, κΉ”λ”ν•˜κ²Œ λ‹€μ‹œ μ •λ¦¬ν•΄λ³΄μž.
자, Linear regressionμ΄λž€ μ„ ν˜• νšŒκ·€λ₯Ό 톡해 졜적의 Model을 μΆ”μ •ν•˜λŠ” 과정이닀.
μ†μ‹€ν•¨μˆ˜λŠ” 데이터와 예츑 ν•¨μˆ˜ κ°„ 였차λ₯Ό 기반으둜 μœ λ„λœλ‹€.
λΉ„μš©ν•¨μˆ˜λŠ” μ΄λŸ¬ν•œ μ†μ‹€ν•¨μˆ˜λ₯Ό 기반으둜 μœ λ„λœλ‹€.
λ”°λΌμ„œ, λΉ„μš©ν•¨μˆ˜ J(w,b)J(w,b)의 w,bw, b값이 μ΅œμ†Œκ°€ λœλ‹€λ©΄ "λͺ¨λ“  data에 λŒ€ν•œ 였차λ₯Ό μ΅œμ†Œν™”"ν•˜λŠ” 것이라고 ν•  수 μžˆλ‹€.

이걸둜 μ„ ν˜•νšŒκ·€μ— λŒ€ν•΄μ„œ μ•Œμ•„λ³΄μ•˜λ‹€.

λ‹€μŒ part06μ—μ„œλŠ” "2. μž”μ°¨ μ œκ³±ν•©μ˜ κ·Έλ ˆλ””μ–ΈνŠΈ(gradient) 벑터가 0이 λ˜λ„λ‘ 함" ν•˜λŠ”Gradient Desent에 λŒ€ν•΄μ„œ μ•Œμ•„λ³΄λ„λ‘ ν•˜μž. 🎡

profile
뢉은 λ°° μ˜€μƒ‰ 딱닀ꡬ리 개발자 πŸ¦ƒCloud & DevOps

0개의 λŒ“κΈ€