경사하강법 선형 회귀의 목적식을 최소화 하게끔 그레디언트 벡터를 구해야 함 선형 회귀의 목적식은 ||y-XB||2 (L2 norm)이고 이를 최소화 하는 B를 찾아야함 목적식을 B로 미분하고 주어진 B에서 미분값을 빼주게 되면 경사하강법 알고리즘으로 최소가 되는 값을 찾을 수 있음 경사하강법 기반 선형회귀 알고리즘 X = np.array([1,1],[1,2],[2,2],[2,3]]) y = np.dot(X, np.array([1,2])) + 3 beta_gd = [10.1, 15.1, -6.5] X_ = np.array([np.append(x,[1]) for x in X]) for t in range(5000): error = y - X_ @beta_gd grad = - np.transpose(X_) @..
미분(differentiation) 변수의 움직임에 따른 함수 값의 변화를 측정하는 도구 최적화에서 제일 많이 사용하는 기법 파이썬의 sympy를 사용하면 미분을 계산 가능 import sympy as sym sym.diff(sym.poly(x**2 + 2*x +3), x) -> 2x + 2 함수값을 증가시키고 싶다면 미분값을 더함 함수값을 감소시키고 싶다면 미분값을 뺌 경사 상승법(gradient ascent): 미분값을 더하면서 함수의 극대값을 구할 때 경사 하강법(gradient descent): 미분값을 빼면서 함수의 극소값을 구할 때 극 값에 도달하게 되면 움직임이 멈춤 편미분: 벡터가 입력인 다변수 함수의 경우 사용되는 미분방법 그레디언트 벡터: d차원 벡터를 입력으로 갖는 함수는 편미분을 d..
목차 1. 벡터란 벡터는 숫자를 원소로 가지는 리스트 또는 배열 벡터는 공간에서 한 점을 나타냄 원점으로부터 상대적 위치를 표현 벡터에 숫자를 곱해주면 길이만 변함 (스칼라곱) 벡터끼리 같은 모양을 가지면 덧셈, 뺄셈을 할 수 있음 두 벡터의 덧셈은 다른 벡터로부터 상대적 위치이동을 표현함 # 행벡터 x = [1,8,2] # 열벡터 x = [1, 7, 2] 벡터끼리 같은 모양을 가지면 성분곱을 할 수 있음 x = [1, 2, 3] y = [2, 4, 5] x * y = [2, 8, 15] 2. 벡터의 노름 norm은 원점에서부터의 거리를 말함 임의의 차원 d에 대해 성립 두 벡터사이의 거리는 두 벡터의 뺄셈을 이용해서 구함 1) L1 Norm 각 성분의 변화량의 절대값을 모두 더함 마름모 형태의 기하학정..
목차 1. Numpy Numerical Python 파이썬은 인터프리터 언어이기 때문에 대용량 데이터를 다룰 때 조금 힘들기 때문에 Numpy라는 패키지를 활용 선형대수와 관련된 기능 제공 내부 구조는 C로 되어있음 ndarray(numpy dimension array)라는 단위를 사용 하나의 데이터 type만 사용 Dynamic typing을 지원하지 않음 For문을 사용하지 않고 웬만한면 가능 temp = np.array(["1",2,3], float) type(temp[0]) -> float64 dtype 배열의 데이터 타입을 리턴함 temp = np.array(["1",2,3], float) temp.dtype -> float64 shape dimension의 구성정보 temp = np.array..
목차 1. CSV comma separate value 엑셀 양식의 데이터를 프로그램에 상관없이 쓰기 위한 데이터 형식 탭(TSV), 빈칸(SSV) 등으로 구분해서 만들기도 함 통칭하여 character-separated values(CSV) 라고 부름 csv 모듈보다는 pandas를 많이사용 import csv # delimiter는 데이터를 자르는 기준 # quotation은 "로 되어있다 => "abc, def"가 있을경우 ""안의 ,는 구분자로 사용안함 reader = csv.reader(f, delimiter=",", quotechar='"', quoting=csv.QUOTE_ALL) import csv header = [] rownum = 0 with open("temp.csv","r", en..
1. Exception Handling(예외처리) 예외가 발생할 경우 후속조치 등 대처필요 Exception을 잡게되면 프로그램 코드는 계속 진행하지만 Exception을 잡지 못하고 에러가 발생하게 되면 프로그램이 멈춤 try: # 예외 발생 가능 코드 except : # 예외 발생시 대응하는 코드 except Exception as e: print(e) -> 위에서 잡아내지 않은 에러에 대해 마지막에 모든 Exception 처리 else: # 예외가 발생하지 않을 때 동작하는 코드 finally: # 예외와 상관없이 실행되는 코드 raise 강제로 에러를 만들어냄 raise 예외정보 raise ValueError("숫자가아닙니다") assert 특정 조건에 만족하지 않을 경우 예외발생 assert 뒤..
목차 1. Module 프로그램에서 사용되는 작은 프로그램 조각들 프로그램을 모듈화 시키면 다른 프로그램이 사용하기 쉬움 파이썬의 module은 py파일을 의미 import문을 사용해서 호출 # 두개의 파일이 같은경로에 있는경우 # my_module.py def make_hi(): return "hi" # ex.py import my_module hi = my_module.make_hi() print(hi) => hi 1-1 namespace 파이썬 파일을 import 하는 방법 1) alias - import my_module as my_m 2) 특정 함수 또는 클래스만 호출하기 - from my_module import make_hi 3) 모듈에서 모든함수 또는 클래스를 호출하기 - from my_m..