본문 바로가기

mambo's coding note346

Python : decorater @ Decorater 데코레이터 목적 > 어떤 class나 함수에 기본을 지킨 상태로 code를 추가하고 싶을 때, 주로 사용한다. > @ 뒤에 함수이름이나 class 이름을 붙여주면 된다. 붙여줄 때는 def 함수로 보통 사용한다. 예시 - 1 (함수를 decorater로 받은 경우) import datetime def datetime_decorator(func): def decorated(): print datetime.datetime.now() func() print datetime.datetime.now() return decorated @datetime_decorator def main_function_1(): print "MAIN FUNCTION 1 START" @datetime_decorator.. 2020. 2. 20.
ML : Model : LDA vs SVM Model 의 선택 : LDA vs SVM 왼쪽 같은 그림을 보고 우리는 선을 그어서 Classification을 할 수 있을거라고 판단을 할 것이다. 이 때, 우리는 LDA vs SVM 이라는 갈림길에 놓인다. 어떠한 선택을 할 것인가?? 우리는 LDA와 SVM의 성격을 알아야 한다. 장단점 / Model LDA SVM 장점 naive bayes 모델과 달리, 설명변수간의 공분산 구조를 반영 (애초에 확률모델에서 naive bayes를 쓴다) 가정이 위반되더라도 어느정도 robust (변화에 민감하지 않다). 데이터가 정규분포를 안 따른다면 covariance 구조를 고려하는 것은 비효율적이기에 정규분포를 안따라도 가능하다. -> LDA의 정규분포를 따라야 하는 단점을 보완가능 Boundary 근처의 .. 2020. 2. 13.
ML : Model : SVM 이란? / LDA vs SVM / SVM 정의 SVM이란? Support Vector Machine(SVM)은 원 훈련(또는 학습)데이터를 비선형 매핑(Mapping)을 통해 고차원으로 변환한다. 이 새로운 차원에서 초평면(hyperplane)을 최적으로 분리하는 선형분리를 찾는다. 즉, 최적의 Decision Boundary(의사결정 영역)를 찾는다. 그렇다면 왜 데이터를 고차원으로 보내는 것일까? 예를 들어, 아래의 [그림1]과 같이 A=[a, d], B=[b, c]는 2차원에서 non-linearly separable(비선형 분리)하다. 이를 통해 한 차원 높은 3차원으로 Mapping하게 되면 linearly separable(선형 분리)하게 된다. 따라서, 충분히 큰 차원으로 적절한 비선형 매핑을 이요하면, 두 개의 클래스를 가진 데이터는 .. 2020. 2. 12.
ML : 라그랑주 승수법 (Lagrange Multiplier) 라그랑주 승수법 Idea 라그랑주 승수법의 아이디어는 f(x,y)=k 라는 "목적함수" (ex. score 함수, error 함수) 를 "조건함수"인 g(x,y)=c 인 함수가 주어질 때, f(x,y)의 극댓값 or 극솟값이 만들어진다. 목적 최적화 문제 (최소화 or 최대화 하는 값을 찾는 문제)룰 풀 때!! 주로 사용한다. f(x,y), g(x,y)=c 가 접할 때, f(x,y)의 극댓값 혹은 극솟값이 만들어진다. 결론 라그랑주 승수의 기본 아이디어는 f(x,y)와 g(x,y)=c가 서로 접할 때, f(x,y)의 극대, 극소값이 발생한다. 이 점은 위의 원을 보고 더 자세히 설명할 수 있다. f,g를 각각 미분했을 때 위의 원 그림을 보면, 접점 구간에서는 각각 편미분의 방향이, 기울기의 방향이 일치.. 2020. 2. 12.
ML : Model : 의사결정나무 (Decision Tree) 의사결정나무 (Decision Tree) 정의, 장단점 > 변수들로 기준(node)을 만들고 이것을 통하여 샘플을 분류하고 분류된 집단의 성질을 통하여 추정하는 모형 > 장점 : 매우 직관적(연속형, 범주형 모두 사용가능)이며 범용성이 좋다. 모델을 보고 해석이 가능하다. (PCA 같은 경우는 내가 잡은 축이 PC1, PC2, 이런 축들이 어떤 의미를 내포하는지 일일히 찾아야 한다.) > 단점 : sample이 변화하면 model도 변화하기 때문에, 높은 변동성을 가진다. -> 나중에 RandomForest로 보완 Decision Tree 용어 Node : 분류의 기준이 되는 변수가 위치. 이것을 기준으로 sample들을 나눔. 위의 그림에서는 outlook 등등 Parent Node : 상대적인 개념,.. 2020. 2. 12.
ML : Model : LDA 배경, 정의, LDA 응용 (QDA) Linear Discriminant Analysis (LDA) 배경 data가 특정 범주로 나눠질 때, 이를 선을 그어서 model을 만드는 것을 LDA라고 한다. 가정 각 숫자 집단은 "정규분포 형태의 확률분포"를 가진다. (μ, σ를 써야하기 때문에) 각 숫자 집단은 "비슷한 형태의 공분산 구조"를 가진다. 특징 Boundary Plane에 직교하는 단위벡터 : 자료들을 이 단위벡터에 정사영 시킨 분포의 형태를 고려. 평균의 차이를 극대화하려면? : 두 평균 vector (μ1 - μ2) 의 차이 벡터를 이용. 분산대비 평균의 차이를 극대화 하는 boundary를 찾는 것이 목표 정의 LDA의 확률모델은 log( fk(x)/ fl(x) ) + log(πk/πl) 이고, 0보다 크면 범주 k, 0보다 .. 2020. 2. 11.
ML : Model : LDA : 사영(Projection) 정사영 v의 u로 위로의 사영이며, proj u v이라고 말한다. 만약 u의 길이가 1 (u가 단위벡터라면), 위 벡터의 크기는 내적의 값과 일치한다. v의 벡터의 크기는 |u||v|/|u|**2 *u = |v|cosθu 이므로 |v|cosθ이다. v와 u의 내적의 크기는 |v||u|cosθ = u는 단위벡터이므로 내적의 크기는 |v|cosθ다. 정사영의 LDA 적용 목표 : 분산은 최소화하면서 평균을 최대화 하는 사영을 찾는 것. 가정 : a를 단위벡터라고 가정 사영된 자료 : x 자료들을 a 단위벡터로 정사영한 것이다. 이는 내적값과 동일하다. 사영된 평균 : μ1, μ2 를 m1, m2로 사영한 것. 대각선으로 사영한 것이다. μT * a 는 내적, 이는 스칼라 값을 가진다. 사영된 표본분산 : 다.. 2020. 2. 10.
ML : Model : LDA Math : 다변량 정규분포 정규분포 위는 정규분포의 함수이다. 밑은 이 변량 정규분포의 함수로, x1, x2 그룹(변수 X) 사이의 상관관계를 정의할 때, x1,x2로 한꺼번에 표현한 함수이다. 실제로 함수를 보면 표준편차를 상관계수를 넣어서 나눠줌으로써 상관관계가 작용함을 보여준다. 상관계수를 ρ라고 하고, ρ= cov(x1,x2)/σ1σ2 = E[(X1-μ1)(X2-μ2)]/σ1σ2 이다. 실제로 ρ가 작아짐에 따라 상관관계, 즉 그래프에서의 선형관계가 옅어짐을 확인할 수 있다. ρ = 0 이면 상관관계가 없고 서로 영향을 주지 않으므로, 이는 독립이다. 따라서 f(x1,x2) = f(x1)f(x2)이다. ρ = 1 이면 상관관계가 짙고 선형관계를 유지함을 알 수 있다. Σ-1의 이유 Σ는 Covariance Matrix 다... 2020. 2. 10.
ML : Model : K-Nearest-Neighbor, KNN K-Nearest-Neighbor, KNN 목적, 정의 위와 같은 그림1에서 우리는 초록색 원이 세모인지, 네모인지를 구별하는 모델을 만들 것 이다. 이 때, 실선을 기준으로 모델을 만든다면, (k=3) 초록색 원이 세모일 것이라고 판단할 것이다. 하지만, 점선을 기준으로 모델을 만든다면, (k=5) 초록색 원은 네모가 더 많기 때문에 네모라고 판단할 것이다. 원 주위에 있는 갯수들, k까지를 선으로 긋는 모델을 정해줌으로써 모델을 만들 수가 있다. 또한 여기에 떨어진 거리를 weight를 주어, category를 판별할 수 있다. 이처럼 k의 갯수를 조정, 거리에 따른 weight를 조정해서 model을 만드는 것을 K-Neighbor-Nearest, KNN이다. k, weight 수치 결정 너무 큰 .. 2020. 2. 9.
ML : Model : (Gaussian) Naive Bayes Classifier Naive Bayes 2020/01/18 - [machine_learning/statistics] - Statistics : 5-5 : 표본공간의 분할과 베이즈정리 Statistics : 5-5 : 표본공간의 분할과 베이즈정리 표본공간의 분할 (Partition) 정의 > 사건 A1, A2 ---- An 이 서로 "배반사건"이고, Ω = A1 ∪ A2 ----- ∪ An 일 때, 사건 A1 --- An 을 교집합이 존재하지 않기 때문에, Ω의 분할이라고 한다... mambo-coding-note.tistory.com http://solarisailab.com/archives/2614 베이즈 정리(Bayes’ Theorem)-베이즈 룰(Bayes Rule)-의 정의와 의미 | 솔라리스의 인공지능 연구실 이.. 2020. 2. 9.
Computer & Structure : Kernel 정의 > 컴퓨터의 운영체제의 핵심이 되는 컴퓨터 프로그램의 하나로, 시스템의 모든 것을 통제한다. > 운영체제, OS의 다른 부분 및 응용 프로그램 수행에 필요한 여러 가지 서비스를 제공한다. 핵심이라고 한다. 연결도 기능 1. OS의 핵심으로, 운영체제의 다른 부분 및 응용프로그램 수행에 필요한 여러가지 서비스를 제공하는 역할 2. 메모리나 저장 장치 내에서 운영체제의 주소공간을 관리 3. 보안 : 컴퓨터 하드웨어와 프로세스의 보안을 책임 (직접 접근이 아니라 kernel에 띄워서 하는 작업이기에!) 4. 자원 관리 : 어떤 프로그램을 어떤 순서로 커널의 처리시간을 공유할것인지, 한정된 시스템 자원을 효율적으로 관리함. 프로그램의 실행을 원활하게 하는 기능 5. 추상화 : 비슷한 종류의 하드웨어에 공통.. 2020. 2. 8.
Pandas : DataFrame vs Series 차이점 우선! Series 는 DataFrame의 요소 중 하나라고 생각하면 된다. 즉 여러 개의 Series가 모여서 하나의 DataFrame이 만들어진다고 생각하면 된다. 위의 그림은 DataFrame과 Series의 차이점을 보여주려고 한다. 우선 DataFrame에서 DataFrame으로 뽑아내려면 [[]] 이중괄호를 해서 type을 DataFrame으로 해주어야한다. Series를 추출하려면 [] 하나만 적용해서 type을 Series로 하면 된다. target = boston[['Target']] -> pandas.core.frame.DataFrame target = boston['Target'] -> pandas.core.series.Series 예시 밑의 그림은 DataFrame과 Seri.. 2020. 2. 4.