본문 바로가기
  • Fearless

전체 글95

[ML개론] (16) Occam's Razor & N-fold cross validation 우리는 dataset을 활용하여 g(x)를 학습시키려고 한다. 이 g(x) 함수는 true fn인 f(x)=sin x를 예측하는 것이 그 목적이다. 실제 dataset은 sin x를 따르고 있는데, 우리에게 주어진 관측치가 두 점 밖에 없을 경우 우리는 녹색선으로 목표함수를 예측할 것이다. 그러나 이는 sin함수를 잘 설명하지 못한다. 비슷한 예로 관측치가 sin함수 봉우리 상단에 몰려있다고 가정하자. 그럼 해당 관측치를 기반으로 예측된 목표함수는 우상향하는 직선이 될 것이다. 그러나 이 경우 실제로는 봉우리 하단에 위치할 값과의 오차가 극대화된다. 반면 이번에는 수평선을 그어 목표함수를 예측하는 경우를 생각해보자. 이 경우 이전 예시와는 달리 큰 error가 발생하진 않을 것이다. 그러나 모형이 지나치.. 2022. 2. 24.
[ML개론] (15) bias & variance model의 efficiency는 어떻게 측정하고 향상시킬 수 있을까? 우리는 기존데이터를 통해 model의 parameter를 학습시키면서 lost function을 최적화하는 방식을 취했다. 이 모형은 새로이 관측되는 데이터의 label을 예측하기 위해 활용된다. 따라서 model의 efficiency는 정확한 예측에서 비롯된다고 볼 수 있다. 그러나 여기엔 두가지 문제가 존재한다. 첫째, 정확도는 어떻게 측정할 수 있을까? 둘째, 우리가 학습에 활용한 training dataset이 지나치게 편향된 데이터는 아니었을까? 우리는 parameter inference를 위해 Training을 진행한다. 사실 과거데이터를 통해 model을 학습하는 것이기 때문에 data의 특성이 시간에 걸쳐 변화한다면 우.. 2022. 2. 24.
[ML개론] (14) dual SVM with Kernel 이전글을 통해 dual SVM을 풀어내는 방식은 알아냈다. 그러나 여전히 trend가 존재하는, nonlinear한 형태의 data를 어떻게 분류할지에 대해선 모른다. 그 방법인 Kernel fn에 대해 알아보자. 우리는 좌측그림과 같은 XOR문제를 2차원상에서 해결할 수 없다. 따라서 이를 특정 standard basis 위로 옮겨 3차원 상에 mapping(L -> H)하여 classification을 진행할 수 있다. 그러나 feature의 갯수가 많아질수록 Φ(x) 또한 무한히 커지게 되어 연산과정에 부담이 된다. 따라서 이를 보완하기 위해 등장한 것이 kernel이다. 솔직히 아직도 그 방식을 완벽히 이해하진 못하겠지만 추후 실습코드와 함께 보충을 기약하며 이해한 것을 정리해보겠다. mappin.. 2022. 2. 21.
[ML개론] (13) dual problem of SVM SVM은 inequality constraint인 (wx+b)y>=1 아래 w*w를 최소화하는 convex problem과 마찬가지다. 이는 이전글(https://alba-tross.tistory.com/95)에서 살펴볼 수 있듯이 primal fn을 Lagrangian dual fn으로 변형함으로서 더욱 쉽게 해결할 수 있다. 따라서 SVM의 primal fn을 duality를 이용하여 dual problem으로 해결하고자 한다. 풀이방법은 다음과 같다. 첫째, optimal solution w,b를 구하기 위해 Lagrangian fn인 L(w,b,λ)를 w,b로 편미분한다. 그 결과는 위의 식과 같다. 둘쨰, 구한 w*, b* 값을 Lagrangian dual fn인 q(λ)에 대입한다. 그리고나서.. 2022. 2. 21.
[최적화] (11) solving dual problem with KKT 그럼 Regularity condition이 충족되었다는 가정하에 inequality constraint가 주어진 primal problem을 duality를 활용하여 풀어보자. 이 때 KKT가 활용된다. 우선 del_x L=0으로 L을 최소화하는 x*를 찾고, del_λ,μ q(λ,μ)=0으로 q를 극대화하는 λ,μ값을 찾는다. 후술하겠지만 간단히 얘기하자면 Lagrangian fn이 x,λ,μ의 함수이기 때문에 del_x L=0의 x*는 x(λ,μ)의 형태로 나오는데, 이 λ,μ를 del_λ,μ q(λ,μ)를 통해 찾아 optimal solution인 x*를 찾아낸다는 얘기다. 자 그럼 처음보는 q(λ,μ), Lagrangian dual problem을 정의해보자. q(λ,μ) = min(L(x,λ,.. 2022. 2. 21.
[최적화] (10) KKT condition Lagrangian을 복습해보면 위 두 조건이 optimal solution의 필요조건이었기에 이를 만족하는 lambda를 찾으면 x*를 구할 수 있었다. 그럼 위 수식과 같이 inequality constraint가 존재하는 문제의 필요조건은 무엇인가? 바로 KKT다. KKT는 총 5가지로 구성된다. stationarity, complementary slackness, dual feasibility, primal feasibility가 바로 그것이다. 이 5가지 조건을 모두 만족하는 lambda, mu가 존재하는데 이를 구하면 x*를 얻을 수 있다. 그런데 3,4,5번에 해당하는 feasibility condition은 사실상 주어지는 것과 마찬가지다. g(x*)=0이어야만 한다. 그럼 stationa.. 2022. 2. 21.
[최적화] (9) Backtracking Line Search 이전 게시글에서 살펴본 Infeasible Start Newton's Method을 실제로 활용할 때는 W_k+1 = Wk - t*(R(w)/R'(w))로 업데이트해준다. 차이점은 t가 붙었다는 것인데 이 t는 Backtracking Line Search를 융합해준 결과다. 그렇다면 Backtracking Line Search는 어떠한 tool인지 알아보자. 우선 Backtracking을 알기 이전에 Line-Search의 개념을 짚고 넘어갈 필요가 있다. Line Search는 주어진 del x, 즉 newton's method에선 -f'(xk)/f''(xk), gradient method에선 -f'(xk)에다가 상수 t만큼 곱하여 알고리즘을 돌리는 방법이다. 가령 t=0이면 움직이지 않는 것이니 f(.. 2022. 2. 21.
[최적화] (8) Infeasible Start Newton's Method 시작에 앞서 양질의 강의를 무료로 제공해주시는 혁펜하임(https://www.youtube.com/watch?v=Nj2aLgatB1Y)님께 감사인사를 전합니다. 본 게시물은 강의를 듣고난 후 정리용도에 불과하니 강의 수강을 권합니다. 지속적으로 강조하지만 연산과정의 복잡성 때문에 optimization problem의 대부분을 algorythm으로 푼다. newton's method의 핵심을 복기해보면 결국 2차 이상의 목적함수 f(x)의 local min/max를 알고리즘적으로 찾는 것이다. 이 때 우리는 taylor series를 활용한다. 만약 f(x)가 2차함수라면 아래 그림과 같이 특정 지점 Xk에서 talyor series로 근사한다. 근사된 함수의 local min/max point가 있을텐.. 2022. 2. 21.
[최적화] (7) Lagrangian Multiplier Method 여지껏 우리는 convex problem을 풀기 위한 방법인 gradient method와 newton method를 살펴봤다. 사실 좌측 그림과 같이 2차함수의 경우 미분한 도함수가 0이 되는 지점을 찾으면 convex problem이 해결된다. 그러나 우측 그림과 같은 고차함수의 경우 이를 미분하는 연산 자체가 복잡할 뿐더러 미분이 불가한 함수일 수도 있다. 따라서 우리는 gradient method, newton method와 같이 initial point만 주어진다면 바로 인근의 local minimum을 찾을 수 있는 방법론들을 살펴봤다. "도함수가 0이다"라는 조건은 해당지점이 local minimum이기 위한 필요조건이다. 실제로 해당지점이 local max, saddle point일 수도 .. 2022. 2. 21.
[ML개론] (10) Naive Bayes to Logistic Regression 두괄식으로 결론부터 말하자면 NBC는 Generative model의 한 종류이며, LR은 DIscriminative model의 한 종류다. Generative는 joint distribution인 P(X,Y)를 학습에 활용한다. 그러나 P(X,Y)를 활용할 수는 없고 Bayes Thm으로부터 파생되는 prior * likelihood를 사용한다. NBC의 argmax function의 원소가 P(X|Y)P(Y)라는 점에서 이는 P(X,Y)를 학습하는 것과 마찬가지다. P(X,Y)는 (X,Y)라는 instance가 관찰될 확률을 뜻하는데, NBC의 경우에는 P(X=긍정적단어들, Y=긍정)과 같이 특정 X에 대해 특정 Y가 함께 관측될 확률을 학습한다. 반면 Discriminative는 사후확률인 P(Y.. 2022. 2. 20.
[파이썬] openpyxl & selenium 활용법 from selenium import webdriver from selenium.webdriver.chrome.service import Service from webdriver_manager.chrome import ChromeDriverManager from openpyxl import Workbook wb = Workbook() sheet = wb.active sheet.append(['date','region','normal','book']) def set_chrome_driver(): chrome_options = webdriver.ChromeOptions() driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), .. 2022. 2. 8.
[최적화] (5) Symmetric Rank-one Update(SR1) A가 nonsymmetric한 경우를 방지하기 위해 symmetric rank-one update가 도입된다. 이는 u*v에서 u*u로 broyden's method의 단점이 보완된 형태다. Hk+1 = Hk + u*u의 양변에 yk를 곱한다. Hk = inverse of (yk / sk) 이기 때문에 Hk*yk는 sk가 된다. 이 식을 정리해주면 우측 상단의 식이 전개된다. u*u*x를 (u*u) * x가 아닌 u*(u*x)로 본다면 괄호 안의 항은 scalar의 형태가 된다. 그럼 이 식은 vector u에다가 특정 scalar값을 곱해주면 z가 된다는 뜻이 된다. 그러면 u는 z와 무조건 평행한 일직선상 위에 놓여야하며 u*x는 무조건 특정한 값이어야만 한다. 따라서 x와 z값만 알고 있다면 u는 .. 2022. 2. 5.
반응형