오늘은 머신러닝 과 장고 복습을 하였다.
먼저 머신러닝 에서 배운것들을 리뷰해보겠다.
논리 회귀 (Logistic regression) (sigmoid function)
0, 1 (이진 클래스)
선형회귀보다는 더 잘 예측할 수 있는 모델이다.
어떤 값이든 받을 수 있다.
초록색 점선: 임계치 (Threshold) ; 상황에 따라 임계치를 정할 수 있다.
-> 선형으로 풀 수 없었던 문제들을 로지스틱으로 풀 수 있다.
딥러닝에서는 보편적으로 시그모이드라고 부른다.
음수로 갈수록 0과 가까워지고 양으로 갈수록 1과 가까워진다.
선형회귀에서의 가설은 1차 함수
시그모이드에서는 이수냐 미이수냐 (예: fail/pass) 를 확률로 나타내주는 구조이다.
손실함수: 수식으로 만들면 복잡한 식이 필요하지만, 손실함수를 최소화하는 방식으로 간다는 개념만 인지하면 쉽다.
정답 라벨이 0인경우 (미이수환경)
0에 가깝다: 0의 확률이 100%
1로갈수록 0%에 가깝게
-> CrossEntropy의 손실함수가 쓰인다.
확률분포의 차이를 줄여주는 함수이다.
cost 가 낮아지면 1과 가까워지는 그래프. cost가 높아지면 1과 가까워지는 그래프로도 나타낼 수 있다.
다항 논리 회귀 (Multinominal logistic regression)
예) 시험 전날 공부한 시간을 가지고 성적을 분류하기
두개 이상의 클래스: 다항논리회귀 모델 사용
one-hot encoding : 출력값의 형태를 예쁘게 처리 할 수있다 (컴퓨터가 이해하기 쉬운 방향)
여러개의 항을 0과 1로만 구분할 수 있다.
클래스 라벨의 개수만큼 배열을 0으로 채운다.
다항논리회귀에는 Softmax 함수를 사용한다. (여러개를 구분해야하기 때문. 0,1로 표현하기 어렵다)
가중치를 계산해주고 정답값과 비교하는 과정을 거친다.
y축: 확률 x축: 라벨
정답값의 그래프는 one-hot encoding을 이용해서 그래프를 그리게 된다.
확률분포값을 최소값으로 만들어준다.
Keras 에서는 다항논리 categorical_crossentropy 손실함수를 사용한다.
다양한 머신러닝 모델
Support Vector Machine (SVM)
예) 강아지와 고양이를 분류하는 문제
분류기라고 부른다 (Classifier)
강아지와 고양이의 특징을 구분해서 문제를 풀게 만든다.
그래프 상에 선을 잘 긋는것이 중요하다 = 구분을 잘한다 = 모델의 정확도가 높다
선을 잘 긋는 방법을 알아낸것을 Support Vector Machine (SVM)라고 한다.
선과 개체의 거리를 구하게 된다. (margin and support vector)
거리 (support vector) 가 최대가 되도록 (멀도록) 만든다.
마진(margin)이 클수록 분류기의 성능이 좋다.
feature를 늘리면 그래프를 3차원으로 만들수있다.
두개의 feature로 분류하기 어렵다면 늘릴 수 있다. ->정확도가 높아질 수 있다.
K-nearest Neighbors (KNN) 몇개의 이웃이 나랑 가깝냐
-> 지정된 항목이 어떤 목록과 비슷한지 구별해내는 것.
decision tree (의사결정나무)
Random forest (나무를 여러개 모아둔 것)
하나로 합쳐지는 방식이 중요하다 (majority voting)
전처리 (preprocessing)
전처리는 넓은 범위의 데이터 정제 작업을 뜻한다.
필요없는 데이터를 지우고 필요한 데이터만을 취하는것.
머신러닝 모델의 성능을 높이기 위함이다.
Normalization, standardization
단위가 같더라도 값의 범위가 다르면 문제가 된다.
정규화 (Normalization) 데이터를 0에서 1 사이로 만든다.
100점만점 시험 실제점수 50점 -> 0.5
500점만점 시험 실제점수 50점 -> 0.1
어떤경우에 따라서는 0.5의 값을, -1에서 1의 사이의 값을 가지게 할 수 있다.
표준화 (standardization ) 데이터 평균이 0, 표준편차가 1이 되게하는 방법
X' = (X-X평균)/X 표준편차
원래데이터에서 평균을 빼주면 zero-centered data.
zero-centered data. 에서 표준편차로 나눠주면 Normalization 된다.
-> 최저점으로 수렴할 속도가 빨라진다.
-> 로컬미니멈에 빠질 확률이 줄어든다 (굴곡이 작아지게 됨 )
99%의 모델이 Normalization을 사용한다.
전처리를 꼭 해야 학습속도가 빨라지고 로컬미니멈을 줄여주기 때문에 중요하다.
그리고 장고 복습 한 내용은
- 회원가입 기능
- [ ] 회원 모델 구현
- [ ] 회원 가입 구현
- urls 등록
- views.py 작성
- HttpResponse로 url 연결 확인
- render 작성
- template 작성
- form
- csrf 유무에 따른 차이
관하여 복습을 실시 하였다.
댓글