181211-TodayWhatILearned

181210 TWIL


To-Do-list

  1. Insurance EDA 정리
  2. Pandas
  3. 12-5장까지 수학복습
  4. MST 복습

오늘 한 일은 무엇인가

  1. Insurance EDA 정리
  2. (STUDY) A* 알고리즘 시각화
  3. 선형회귀 개념 복습

내일 할 일은 무엇인가

  1. 데이터톤

무엇을 느꼈는가

  • 파이썬으로 작성한 A*알고리즘의 시각화코드를 작성하였다. 제일 빠른 길을 찾아 주었으나, 이것을 시각화하는
    것이 생각보다 어렵다. 그리고 좀더 동적으로 시각화를 해주고 싶은데, 좀더 삽질을 많이해봐야겠다.
    결과데이터를 보여주면 되겠지 했지만, 답을 얻는 과정을 세세하게 시각화하여 보여주는 것 역시 어려운 문제였다.
    비단 알고리즘을 보여주는 것만이 아니라, 지금 공부하는 모든 것이 아마 그럴 것이다.
  • A* 알고리즘을 적용해서 주어진 미로의 최적의 길을 찾는 것은 미로의 크기가 커질수록 검증이 어렵다. 우리가
    작성한 알고리즘으로 풀어준 path가 진짜 제일 빠른 길인지 확인하는 방법이 무엇인가 하는 생각이 든다. 크기가
    작은 미로에서 우리가 한길 한길 찾아가는 정답과 맞아서, 알고리즘이 제대로 작동하고 있다고 생각했다. 하지만,
    점차 크기가 커지면서 정답이 맞는가 확인하는 것은 어려웠다. 작은단위에서 맞는 것이라고 해서, 큰 단위에서 내놓은 답이 과연 정답일 것인지는 어떻게 검증해야하는가. 우리가 소단위에서 다 맞춘 알고리즘이라고 해서 전부 믿어야 하는 것인가라는 생각이든다.
  • 내일은 데이터톤이다. 여태까지 공부한 것을 적용해보고, 실제로 제한시간내에 데이터를 분석해야한다. 아직도 많이 모르고,
    아는 것도 확신하기 어려운데, 잘 할 수 있을지 걱정된다.

181209-TodayWhatILearned

181209 TWIL


오늘 한 일은 무엇인가

  1. Classification 복습 (Entropy, DecisionTree)
  2. MySQL Query Code Imporvement, CodeReview
  3. Insurance Data regression
  4. Algorithm 추가 과제 (2진수, 8진수, 16진수)

내일 할 일은 무엇인가

  1. MySQl, NOSQL 복습, 정리
  2. Insurance Regression 과정 정리, 알게된 것들 정리
  3. Pandas 4장, 7장, 9장 정리
  4. Algorithm 추가 과제 마무리
  5. 수학 12-5장까지 복습

--- ## 무엇을 느꼈는가 - Insuracne Data regression 을 진행하면서, 지난 프로젝트에서는 다가가지 못한 Step 들을 수행하였다. 잔차의 정규성을 검토하면서, 이를 발전 시킬 수 있는 방법에 대해 코드를 작성하였고, EDA 과정을 꼼꼼히 한 덕분인지, regression formula 를 돌리는데 있어 각 스텝마다, 작은 근거들이 생겨났다. - 아직은 수업 자료에서 모든 내용을 담을 만큼 Performance 와 스텝간의 근거들이 명확하지 않기 때문에 공부할 것이 한참남았지만, 오늘 새로운 데이터셋을 좀더 꼼꼼히 EDA 를 하면서, 새롭게 알게되고, 적용할 수 있는 것들이 생겨 뿌듯했다. ---

181208-TodayWhatILearned

181208 TWIL


오늘 한 일은 무엇인가

  1. Decision Tree 연습문제 18.4.2 풀기
  2. Imporve Flights_Delay Regression Project
  3. Insurance Cost dataset EDA
  4. MySQL Quiz 마무리

내일 할 일은 무엇인가

  1. Classification 복습
  2. MySQL 복습
  3. MySQL Query Code Imporvement
  4. Insurance Data EDA
  5. Pandas 정리
  6. Regression 수학 12-5장 복습

--- ## 무엇을 느꼈는가 - Query 문을 작성하면서, 다양한 방법으로 같은 결과를 얻을 수 있음을 알게 되었다. 같은 결과를 뽑아내는 Query 문의 비교에서, 오늘은 간결하고, 깔끔한 코드를 작성하려고 노력을 하였다. 하지만, 결국 가장 중요한 것은 Query 문이 얼마나 빠르게 동작 하느냐의 문제인 것 같다. 내일은 간결하면서도, 빠르게 동작하는 코드를 작성하는데 좀더 고민해봐야겠다. - 지난 Flights_delay regression project 를 개선하는데 있어, 코드적으로, 기술적으로 부분회기 plot 를 바탕으로 다시 모델링을 하는 방법에 대해 알게 되었다. 여기까지 알게 된 것을 바탕으로, 새로운 Medical cost(Insurance) data 를 regression 으로 모델링 해보려고 한다. 오늘 간단한 EDA 를 진행하였으나, 조금더 데이터를 자세하게 보는 방법론에 대해 공부를 하면서 진행해 보려고 한다. ---

181207_TodayWhatILearned

181207 TWIL


오늘 한 일은 무엇인가

  1. Pandas 3장, 4장(일부)
  2. (Project) 데이터셋 정하기

내일 할 일은 무엇인가

  1. MySQL 복습, QUIZ 풀기
  2. 새로운 데이터셋 EDA, Regression
  3. Pandas 4장, 7장
  4. 지난 프로젝트(Flight_Delay Regression) Update
  5. 알고리즘 추가과제 하나씩 풀기

--- ## 무엇을 느꼈는가 - 와.. 오늘은 그간의 파이썬과 알고리즘, 데이터 구조의 공부한 것을 평가받는 첫 시간이었다. 시간내에 주어진 문제를 효율적으로 푸는 것이 생각보다 어려웠다. pandas의 method 나 numpy method 를 자주 사용하면서, 기본적인 내장 method 는 오히려 더 어색했다. 함수를 짜서, 테스트 케이스를 통과하다가 중간에 발생한 에러는 debugging을 하지 못했다. 또한, 코드 역시 비효율적이고 못생겼다. pyint 의 PEP 8 점수 역시 매우 낮았다. - 다시한번 많이 부족함을 느꼈고, 더 공부해야되고 알아야 하는 것이 한참이나 많다. - 쌓이고 쌓이는 ToDoList 에서 우선순위를 매번 잘 매기고, 너무 한 issue 에만 묻혀있지 말아야하며, 동시에 다양한 주제를 공부해야하므로 정리를 잘해야하고, 그 정리를 다음번에 참조할 수 있게 잘 기록해야하며, scheduling 을 효율적으로 해야하고, 무엇보다 그 순간에 매우 집중해야한다. ---

181205-TodayWhatILearned

181205 TWIL


To-do-list : 오늘 할일

  1. QDA, LDA, 나이브 베이지안 모델 복습, 정리
  • 수식, Predict 과정 중심적으로 공부
  1. (Study) A* 알고리즘 구현
  2. Pandas 3장

오늘 한 일은 무엇인가

  1. (Study) A* 알고리즘 손코딩
  2. QDA, LDA, 나이브 베이지안 모델 복습, 정리

내일 할 일은 무엇인가

  1. (Study) A* 알고리즘 구현
  2. Pandas 3장

--- ## 무엇을 느꼈는가 - 스터디에서 다같이 알고리즘을 파악하고, 이를 바탕으로 손코딩을 진행했다. Class 단위로 짜는 거였고, 우리끼리 자료들을 바탕으로 알고리즘을 공부하고, 이를 구현하는 것까지 개인적으로 매우 Challenging 했다. 오늘 손코딩을 마무리 하면서, 머릿속에 있는 알고리즘을 어떻게 풀어내는지, 설계부터 각각의 함수까지 계획을 세우는데 매우 큰 보람과 배움이 있었다. - 내일부터는 스터디원들과 함께 오늘 작성한 것을 바탕으로 실제 코딩을 들어갈 계획이다. 아직 미숙한 점이 많기에, 손코딩을 진행한 것들에 대해 Debugging 이 많이 필요하겠지만, 너무 재미있는 시간이었다. - 오후 남은 시간에는 QDA 부터 나이브 베이지안 모델까지(gaussain, bernoulli, multinomial) 수식과 그 메소드들을 하나하나 뜯어보고 분석하는 시간을 가졌다. 단순히 패키지의 메소드를 돌리면 되겠지가 아니라, 메소드를 돌리기전에 간단한 data에 대해 결과를 얻기까지 직접 손으로 풀어보고 계산하여, 메소드를 돌렸을 때 결과와 비슷한지 확인 하는 시간을 통해, 각 분포가 모델링 되는데까지 과정을 이해하는데 도움이 많이 되었다. - 또한 자료에 나오는 다양한 시각화 메소드, 시각화 하는데 필요한 domain 설정, Numpy와 Seaborn 의 메소드들을 파악해보면서, 시각자료의 의도를 생각해보기도 하였다. - 많지 않은 범위를 이렇게 공부하다보니, 꽤많은 시간이 필요하여 오늘의 다른 목표들을 채우지는 못했지만, 스터디와 개인 공부 두가지를 통해, 하루를 매우 생산적으로 보낸 것 같아 뿌듯하다.

Generative Model

확률론적 생성모형 (Generative Model)

확률론적 생성모형의 기본 개념

  • 우리가 궁금한 것은 $ x $ (features) 들이 있을 떄, $ y $가 어떤 Class 인지 맞추는 것이다. 맞추기 위해서는 training set 으로 부터 각 Class 마다 $ P(y \mid x) $의 모형을 알아내야 한다.

  • 베이즈 정리를 이용하여, $ y=C_k $일 때의 조건부 확률을 구할 수 있다.
    $$
    P(y = C_k \mid x) = \dfrac{P(x \mid y = C_k); P(y = C_k)}{P(x)}
    $$

  • 이 때, $ P(x \mid y = C_k) $
    == Likelihood
    == y가 k라는 클래스 일 때, x의 확률을 구하는 것이 관건

Likelihood 추정의 알고리즘

  1. $ P(x \mid y = C_k) $ 가 ** 어떤 ** 확률분포를 따를 것이다라고 가정


  2. x의 특성에 따라 우리가 알고 있는 특정 확률분포를 따른다! 라고 가정


  3. Class k 를 만드는 data들을 통해 이 확률분포의 모수값을 구한다.


  4. 모수값을 안다 == $ P(x \mid y = C_k) $ 의 pdf 를 알고 있다.


  5. test set x 가 들어오면 $ P(x \mid y = C_k) $ 를 구할 수 있다.

181204-TodayWhatILearned

181204 TWIL


오늘 한 일은 무엇인가

  1. Heap 구조 공부, 코드 짜보기
  2. Logistic Regression method 정리

내일 할 일은 무엇인가

  1. QDA, LDA, 나이브 베이지안 모델 복습, 정리
  • 특히, 수식들 정리 + Method보다는 predict 결과가 나오는 데까지 확률계산, 흐름 중점적으로 공부
  1. (Study) A* 알고리즘 구현
  2. Pandas 3장

무엇을 느꼈는가

  • Heap 구조를 공부하면서, class 단위로 짜져 있는 코드들을 혼자서 구현하려면 어디서부터 계획을 세워야
    되는가에 대해 고민했다. 또한, 어떤 이슈가 있을 때, 어떤 알고리즘과 자료구조를 선택해야하는지에 대한 판단
    근거 역시 앞으로 정리 해야할 필요성을 느낀다.
  • 우선 간단하게 알고 있는 데이터 구조 전체에 대해 서로 비교하여 장, 단점 정도 빠른시일 내에 정리해야겠다.

181203-TodayWhatILearned

181203 TWIL


To-do-list : 오늘 할일

  1. Pandas Cookbook 2장 복습, 3장
  2. ROC 커브, Logistic Regression
  3. 시간 날 때, 새로운 데이터셋 EDA

오늘 한 일은 무엇인가

  1. ROC, AUC, Logistic Regression 정리
  2. Flask_app : classification model application 코드 해석
  3. Pandas 2장 복습

내일 할 일은 무엇인가

  1. Heap, Graph 부분 복습
  2. Pandas 3장, 4장
  3. 새로운 데이터셋 EDA, Regression 함수 적용

--- ## 무엇을 느꼈는가 - Pandas를 조금씩 정리하고, 새로운 것들을 알게 되면서 이전에는 몰랐던 편리한 기능들이 많이 있음을 알게 되었다. 손에 익히게 되면서 아주 조금씩 판다스에대해서 편해지기 시작하였다. Pandas 를 심도 있고 공부해보고자 했던 처음 이유인 '데이터셋을 보고 먼저 손이 나가도록 하자'는 목표에는 아직도 멀었지만, 하루하루 조금씩 노력해온 1주 반동안, 이전보다 조금더 편해졌다는 것이 느껴진다. - 이렇게 체감적으로, 한파트 한파트씩 아주 더디지만 조금씩 편해지고, 손에 익는 다는 것을 느끼면서, 점점더 재미있어 질것이라 믿는다. ---

NGINX

Nginx

0. What is nginx?

  • client 가 외부 IP와 그 포트를 통해 server 에 접근하면,
  • 그 때부터는 request 를 내부 IP 와 port 로 연결을 해주어야 한다.
  • 일종의 proxy server 역할을 해주는 것이 nginx

1. Install Nginx

1
2
$ sudo apt-get update
$ sudo apt-get install nginx

2. Manage the Nginx Process

  • nginx Process
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #start Nginx
    $ sudo systemctl start nginx

    #stop nginx
    $ sudo systemctl stop nginx

    #restart nginx
    $ sudo systemctl restart nginx

    #check status nginx
    $ sudo systemctl status nginx

    # reload nginx
    $ sudo systemctl reload nginx

3. Structure

  • /etc/nginx
    • Nginx의 설정에 관련된 directory
  • /etc/nginx/nginx.conf
    • nginx의 기본설정 파일, global설정은 이 파일에서
  • /etc/nginx/sites-available/
    • 포트 접속시 개별 설정하는 directory
    • 여기 안에 default 파일 변경

4. Nginx Configuration

4.1 static file serving

/etc/nginx/sites-available/default 파일 수정

1
2
3
4
5
6
7
8
9
server {
location / {
root /path/to/html ;
}

location /images/ {
root /path/to/image;
}
}

4.2 proxy server

  • port 별로 설정이 가능하다
    1
    2
    3
    4
    5
    6
    7
    8
    server {
    # default 는 80 port (http default)
    # 8080 port 에 대해서
    listen 8080;
    location / {
    proxy_pass http://localhost:8080;
    }
    }
  • 여러개의 포트를 연결
server {
  listen 8080;
  listen 80;

  location / {
    proxy_pass http://localhost:8080;
  }
}

181129-TodayWhatILearned

181129 TWIL


To-do-list : 오늘 할일

  1. Pandas ~ 150page
  2. wiki 구성 방안
  3. REST API, NGINX, AWS 공부

오늘 한 일은 무엇인가

  1. Pandas 80page
  2. wiki 구성
  3. REST API, NGINX, AWS 공부

내일 할 일은 무엇인가

  1. Pandas 150page 마무리
  2. 복습

--- ## 무엇을 느꼈는가 - 지금껏 구성해온 개인 wiki 혹은 cheatsheet등을 로컬 서버등을 이용해 wiki page 를 이용하고 싶었다. 가장 많이 사용한다는 gollum api 를 설치해보았지만, 생각보다 편하지 않았다. gitlab이나 github 등은 온라인에서 작성이 가능하지만, 로컬에서 그 해당 파일을 갖기가 불편했다. 또 검색기능도 중요했다. - 결국, 지금 작성하고 있는 git blog 에 wiki tab 관리로 하기로 했다. - 돌고돌아 gitblog 의 tab 을 활용해서 wiki 하기로 했다. 앞으로 좀더 깔끔하게 정리 파일을 관리하고, - 직접 참고할 자료이니, 무엇보다도 내가 보기 편해야 할 것이다.