본문 바로가기
  • think normal
새로워지기/마흔의 생활코딩

마흔에 정석을 다시 펼치다 01 for.딥러닝 (feat.회귀 이론)

by 청춘만화 2021. 7. 1.


딥러닝과 머신러닝을 배우기 위해 몇개월 전주식트레이팅 시스템을 목적으로 급하게 후려쳐서? 실습했던 파이썬을 다시 차근차근 공부하고 있다.
이 과정에서 매우 인상적인 경험을 하고 있다.
그 경험은 3년전인가? JAVA를 공부할때 보았던 자료구조에 대해 다시 들여다보고 있다. 그리고 30년...전인가? ㅎㄷㄷ.. (아, 물론... 당연히.. 라임을 맞추기 위해 MSG 좀 뿌려서..) 정석책을 펼쳤다.



아직 집에 있다는게 더 신기... =,.=



머신러닝은 기하와 백터를 기반으로 한다. 그리고 머신러닝은 기하와 백터를 텐서로, 사람?과거의 컴퓨팅?은 선형대수로 기하와 백터를 연산했다. 물론 이 둘은 상반된 방식이 아니라 선형대수가 확장되서 텐서가 되었다고 보면 될 것 같다. 그 선형대수는 벡터와 행렬를 기반으로 하고, 다시 이들은 배열, 미분, 적분을 기반으로 한다.
그리하여... 정석을 펼치게 되었다..
다행히 ;D 이 복잡한 수식들은 numpy 모듈을 통해 쉽게? 연산할 수 있다. 물론 선형대수를 상대해줄 numpy을 잘 사용하기 위해서는 다차원 숫자로 관리하는 배열 형태의 자료구조에 대해 이해하고 있어야 하기 때문에..
그리하여2... JAVA를 다시 들여다보고 있는 것이다.

TMI...
선형 대수학...은 개인적으로 아주 큰 인연이 있다... 말그대로 수 십년 전... 수능이 어설프게 좋아서.. 문과를 나오고도 정보통신학과에 특차로 입학했던 나는 대학교 1학년 1학기 이 선형대수 수업의 충격으로 군대로 도피. 전역 후 전과를 했던 기억이 있다...-,.- ㅋㅋㅋ 내가 대학생때 넘파이 모듈이 있었더라면... ㅜㅜ numpy는 2005년에 생김 ㅜㅜ.. 뭐냐.. 이 화석이 된 듯한 느낌적인 느낌은... ㅡ,.ㅜ 또르르..


그렇게 틈틈이 정석과 numpy를 보면서 딥러닝 공부 스타트 중이다.


머신러닝, 딥러닝

  • 기반을 이루는 회귀(예측) 이론
    • 수집된 과거 데이터 셋([..]x = 독립 변수들, y = 종속 변수)들을 통해 미래를 예측
    • 원인[x], 결과y를 그래프에 옮길 수 있으면
    • 그 점들의 패턴(선)을 통해 따라 미래를 예측할 수 있다.
    • 그래프의 점들이,
      • 연속적인 값(선형) = 회귀 ex) 미래의 학교 성적 예측
      • 이산적인 값 = 분류(로지스틱 회귀) ex) 미래의 성공, 실패 예측 또는 다중분류 예측


선형 회귀 linear regression( 미래를 예측하기 위한 예측 선)

  • 입력 값x 이 1 개일때
    • y = ax + b 
      • x = 독립 변수, y = 종속 변수
    • (일차 함수, 2차원 = 가중합 함수**) ⇒ 최소제곱법 or 경사하강법**
      • ex) 학생의 성적y은 [ 정보.. ]x에 따라 다르다.
    • 예측선, 일차 함수를 제대로 표현하기 위해
      • a(기울기)와 b(절편, 편향)가 필요
      • a(가중치, 중요도), b(임계값) 값을 통해 y를 결정하는 패턴 파악
      • 최소제곱법( 단, 종속 변수y를 결정하는 독립변수 x가 1개일때만 적용 가능)
      • 가장 정확한 직선(예측 선)을 긋기 위한 기울기a를 찾는 공식
    • 기울기 = x와 y의 편차를 곱해서 합한 값 / x의 편차(각 값과 평균과의 차이)를 합한 값
      • a = (x-x평균)(y-y평균)의 합 / (x-x평균)**2의 합

 

  • 입력 값x 이 여러 개일때
  • 그래프의 점들이 한 선 위에 있지 않기 때문에 그 사이로 선을 긋되 예측 선을 그릴때 각 점과의 오차를 파악하여 최대한 많은 점에 가깝게 그리는 과정이 필요
    • 오차 = 실제값 - 예측값
    • 오차들의 크기(합) = 오차들이 +, -가 나올 수 있기 때문에 전체를 '제곱'
    • 평균제곱오차(평가법) MSE mean square error
      • 처음에는 정확한 오차를 알 수 없기 때문에 그리는 임의(예측)선이 실제값과의 오차를 **평가, 개선(**그 값을 줄여가는)하는 방법
        • 임의의 예측선 그리기
        • 실제값과 예측선을 비교하여 오차평가 = 실제값 - 예측값 = Y - Y_pred

오차그래프

  • 미분의 성질
    • f(x)=a에서 a가 상수(변하지 않는 수)일 때 미분값은 0
    • f(x)=x일때 미분값은1
    • f(x)=ax에서 a가 상수이면 미분값은 a
    • f(x)=$x^a$에서 a가 자연수이면 미분값은 $ax^{a-1}$


경사 하강법

  • 평균제곱오차을 위해 예측선의 평가를 개선시키는 '전처리 작업'
    • 평균제곱오차(평가법) MSE에 예측선y_pred 대입
    • Y_pred = ax+b
    • $1/n\sum(Y-Ypred)^2$ → $1/n\sum(Y-(ax+b))^2$


편미분(, a는 상수)

  • $f(x_1, x_2) = x_1^2 + x_1x_2+a$ 와 같이
    • 여러 변수가 식 안에 있을때, 모든 변수를 미분하는 것이 아니라
    • 원하는 한가지 변수만 미분하고 그 외에는 모두 상수 취급하는 것
  • f(x1, x2)를 편미분 한다
    • $∂f/∂x=2x_1 + x_2$
  • a편미분 = ∂/∂a$MES$$(a, b)$ =2/n $\sum$ (ax+b-y)x = -(2/len(x)) * sum(x *(y - y_pred))
  • b편미분= ∂/∂b$MES$$(a, b)$ = 2/n$\sum$(ax+b-y) = -(2/len(x)) * sum(y - y_pred)



음.. 역시.. 티스토리 기본 설정에서는 포스팅에.. 한계가 있다..
결국, 다시 노션 링크
https://www.notion.so/thinknormal/41c12d969d8948da83d108e703fab227

 

회귀 이론

머신러닝, 딥러닝

www.notion.so





그리고
회귀이론과 관련한
실습내용들
최소제곱법(단순선형회귀 | 2차원 함수)

 

최소제곱법(단순선형회귀 | 2차원 함수)

학생 성적 데이터 셑 x = [2,4,6,8] y= [81,93,91,97]

www.notion.so

경사하강법(단순선형회귀 | 2차원 함수)

 

경사하강법(단순선형회귀 | 2차원 함수)

학생 성적 데이터 셑 x = [2,4,6,8] y= [81,93,91,97]

www.notion.so

경사하강법(다중 회귀 | 다 차원 함수)

 

경사하강법(다중 회귀 | 다 차원 함수)

학생 성적 데이터 셑 x1 = [2, 4, 6, 8] + x2 = [0, 4, 2, 3] y= [81, 93, 91, 97]

www.notion.so

경사하강법(로지스틱 회귀 | 이진분류)

 

경사하강법(로지스틱 회귀 | 이진분류)

학생 성적 데이터 셑 x = [2, 4, 6, 8, 10, 12, 14] y= [0, 0, 0, 1, 1, 1, 1] #0 = 불합격, 1 = 합격

www.notion.so

 

 

댓글