티스토리 뷰

반응형


최적화 

> 선분은 시작과 끝 지점이 존재 (무한, 유한 차이) 

> 선분의 어느 점을 표현할 때 w로 표현 

> 직선의 범위는 무한, 직선을 포함하는 집합도 무한 이 집합을 아핀 셋이라고 한다. 

> n차원으로 확장한 것을 아핀 조합이라고 한다 

 

 

> 아핀 셋은 무한, 컨벡스 셋은 유한

 

> 컨벡스 셋은 선분을 포함한 유한 집합 

 

> 회색 영역이 컨벡스 셋인가? 선분을 포함해야 함 (유한이어도) 

> 찾는 solution의 범위가 컨벡스 셋이 아니면 거의 못 찾음 

> 이차 함수 예제로 들었던 이유는 이차 함수가 컨벡스 셋이기 때문이다.

 

> 주어진 점들을 포함하는 컨벡스 셋을 의미 

 

> w.T @ x 는 내적이고 내적 했을 때 스칼라 b를 갖는 벡터 x의 집합을 초평면이라고 한다. 

 

> 원, 세모를 빨간 선을 기준으로 구분할 수 있다

> 여기서 빨간 선이 초평면 

> 내적은 이동거리고 x, w의 내적 즉 이동거리인 b의 합이 빨간 선(초평면)

> w도 찾아야 되는 값 

> 머신러닝은 초평면을 구하는 거고 여러 방법이 있고 잘 찾아야 한다 

 

> w 는 x와 직교(orthogonal)한 특징을 갖는다 

 

> 전체 공간은 두 개의 반공 간(halfsplce)으로 나뉨 

> 반공간 구분은 내적을 해서 b를 넘는지 안 넘는지로 구분 가능 

 

 

> 선분을 그었을 때 f의 함수 그래프보다 위에 있어야 한다 

> 컨벡스 함수를 안 쓰면 여러 가지 증명을 해줘야 하기 때문에 하는 게 좋음 

 

> 편미분의 집합 

> 컨벡스이냐 아니냐를 따지는 케이스는 사실 많이 없음 (배우는 이론은 다 컨벡스이다) 

 

 

> 머신러닝에서 최적화는 컨벡스 최적화이다. 

> 최적화는 함수 f(x)의 최소값을 찾는 것

> x는 피쳐, f(x)는 타겟의 추정량 
> 함수 f는 뭔지 모르지만 f(x)를 통해서 타겟 추정량이 나오면 타겟값과 비교한다.
> 타겟 y, 타겟 추정 y^ 차이를 오차, 머신 러닝에서 손실 Loss라고 표현한다 

> 손실을 하나의 숫자로 표현은 1/n(sig(y-y^))이다. 

> 평균이 들어가지 않아 분산은 아니고 이를 평균 오차 제곱 MSE라고 한다. 

> MSE를 구해서 feature 타이 잘 만들었는지 확인할 수 있고 망소 항목이다. 

> MSE가 거의 목적으로 되어 목적 함수이다. 

> 목적함수가 MSE도 될 수 있고 다른 것도 될 수 있다.

> subject to 제약 조건 

> 제약 조건 중 부등식, 등식 형태가 있을 수 있다. (상황에 따라 달라진다) 

 

 

> 이전 내용은 일반적인 최적화 

> f(x)는 목적함수이면서 컨벡스 함수여야한다. (선분이 함수보다 위에 있어야 함) 

> 등식 부호 대신 내적값이 들어가 있고 초평면이 들어가 있다. 

 

 

> 목적 함수와 제약 조건을 한 줄의 식으로 표현한게 라그랑주 프리멀 함수임 

> 람다는 제약 조건을 얼마나 강하게 넣겠다라는 뜻, 0 이면 제약 조건이 없다

 

> 초평면을 구하는 방법은 라그랑주 프리멀 함수의 미분이 0 되는 지점을 구해서 그림

 

 

> 미분해서 0이라고 해서 최적점이 아닐 수 있다. 

> 그래서 라그랑주 듀얼 함수도 봐줘야 한다 

 

 

> 라그랑주 프리멀 함수의 하한이다.

> 예) 월급의 하한은 최저시급

 

> 라그랑주 프리멀과 듀얼 함수의 차이가 0이면 내가 구한 해가 정답일 가능성이 높음 

> 이 차이를 dual gap이라고 한다

> 라그랑주 함수의 최적값 d*는 프리멀 함수의 최적값 p* 보다 작거나 같음 왜냐하면 하한 값이기 때문.

 

> KKT 조건이 만족하면 duality gap이 0이 된다. 

> 위의 식이 목적함수이다. 제약 조건이 없다. 

> yi는 실제 타깃값, 뒤의 값은 예측값, 둘의 차이 즉 loss 임

 

 

> 제약 조건을 걸 수 있다. 

 

> 최적화 방법을 옵티마이저라고 한다. 

> 그 중 유명한 게 그래디언트 디센트다. 

 

> 컴퓨터는 한 번에 미분값을 구하기 어렵기 때문에 여러 번 갈 곳을 찾아서 미분을 하고 갈 곳이 없을 때 정상이고 그 값을 찾는다. 

 

 

> 에타는 학습률을 의미한다.

> 직접 입력하는 값이다. 

> 예를 들어 100이라는 값은 보폭률임, 커지면 빨리 도달함 

> 단점은 정상을 지나쳐 버릴 수 있음

 

> 마이너스 붙는 이유는 가야되는 방향이 반대이기 때문. 

 

 

> 한 걸음 걸을 때 마다 그래디언트를 구해야 함(전체 데이터에서) 

> 연산량이 너무 많음

> 그래서 일부분을 채택하는 방식을 선택하게 됨.

 

> 확률적으로 샘플 뽑아서 연산을 하고 이를 SGD라고 한다.

> 장점을 빠르지만 outlier가 걸리면 한 걸음 아주 이상한 방향으로 갈 수 있다. (정확성 떨어짐)

 

 

> 그래서 정확도를 좀 더 올리기 위해 여러 데이터를 뽑는다. 

> 일반적으로 많이 쓰기 때문에 이것을 SGD라고 한다. 

> 데이터의 크게 두 가지가 있다 Batch / Streaming 

> Batch는 데이터를 모아서 덩어리로 처리

> Streaming은 실시간으로 하나씩 처리 

 

 

> 학습 속도를 가속화 하는 방법이 모멘텀이라고 한다. 

 

 

모형 평가

> 단위가 다르면 비교가 어렵기 때문에 Scaling을 해야 한다 

 

> 표준화하기 위해선 평균과 표준편차를 알고 있어야한다

 

> 데이터 표준화된 데이터를 학습시킨다 

> 혼용하는 단어 standadization, normalization, regularization 

> standardization : (원래 데이터 - 평균)/표준 편차  → 평균 0, 표준편차 1 :표준화

> normalization : 원래 데이터 / 원래 데이터의 크기  크기가 1 :노멀화

> regularization : 제약식을 넣는다. : 정규화

> 데이터가 0, 1 사이로 모이게 된다. 

> 피쳐 별 Min, Max 값 알아야 한다.

> Standardization과 MinMax 차이는 범위다. 

> outlier가 들어가면 그 값은 1이 되고 나머지 값은 0으로 수렴된다. 

> 어떤 게 좋은지는 답은 없고 데이터 상황에 따라 다르다. 

 

> 잘 만들어졌는지 확인하는 방법 

 

> 다 병 걸렸다고 해버리면 치료율이 100% 로지만 정상인 사람들도 병에 걸렸다고 판단될 수 있다. 

 

 

> 반대론 피해율 0%이다. 

 

> 1종 2종 오류이다. 

> 알고리즘 보단 평가지가 매우 중요하다. 

 

> 민감도는 sensitivity보단 recall이란 단어를 많이 씀

> 병에 걸린 사람들 중 적중한 것이 recall

> 내가 병에 걸렸다고 한 사람들 모아 놓고 그중 맞춘 비율이 precision 

> 어떤 것을 사용할지가 매우 중요.

> TP 1 FN1 FP 2 TN 96 이면 accuracy 0.97, 민감도 0.5 이런 상황에선 recall을 사용해야 한다.

> 이런 상황은 데이터 결과가 치우쳐진 경우 

> 해커 판별 시 정상인이 정상인으로 판단하는 건 accuracy도 높음 해커들이 별로 없지만 결국 별로 의미 없음

> 데이터 벨런스가 잘 잡혀있으면 accuracy 써도 무방함. 

> 대중적으로 많이 쓰는 건 accuracy랑 recall. 

 

> MSE 범위는 0에서 무한대

> 단위를 맞추는 RMS, 절댓값의 합의 평균 MAE 

 

> 녹색 점을 예측한다고 할 때 2가지가 있다고 가정해 보면 

> MSE 기준 2번이 더 좋은 모델이다.
> 하지만 주어진 데이터에서 새로운 데이터를 맞추는 것이 목적이다

> 데이터가 달라진다고 하면 1번 모델이 더 적절하다 

> 따라서 파란색 선이 오버피팅이라고 한다 

> 오버피팅은 특정 형태만 잘 맞추는 모델이다.

> 적절한 모형보다 차수가 높아서 오버피팅이라고 한다. 

> 오버피팅을 빠져나가기 힘들다 (MSE가 최소이기 때문에) 

> MSE가 커서 걱정하다 MSE가 낮아짐 알고 보면 오버피팅의 경우가 많다.

> 평가 지표로만 판단하면 안 되고 그래프나 시각화를 통해 오버 피팅을 확인해야 한다. 

> 2차원 보다 작은 1차원이기 때문에 언더 피팅이다. 

> 못 맞추는 게 문제임

> 오버 피팅이 더 문제이다 왜냐하면 맞췄는지 못 맞췄는지 판단하기 어려움

 

> 학습시키고 나서 정답을 잘 맞히는지 확인을 못 함

> 그래서 학습을 1~8까지만 학습하고 모델을 만든 후 9, 10회로 잘 맞추는지 확인하는 개념이 교차 검증(Cross Validation) 

> 새로운 데이터가 올 때까지 기다려야 하는데 시간적 여유가 없는 케이스가 많다

 

> Training Data만 학습시키고 Test Data는 학습에 사용하지 않는다

 

> 더 쪼갠다 Validation, (Validation Data)를 사용하지 않는 경우도 있다

 

> 5 등분해서 validation을 활용해서 데이터가 쏠리지 않게 validation 위치를 바꿔가면서 학습시키는 방법

> k는 등분 개수 5개

> 알고리즘 배울 때 Train/Test만 나눠서 함

> 비율은 8:2, 7:3 (라이브러리 디폴트 갑은 7.5 : 2.5) 

> validation은 등분이라 상관없음

 

 

 

> 사용하는 라이브러리는 scikit-learn 

> R은 모델마다 라이브러리를 써야 함

> 그래서 통합 라이브러리가 나왔는데 이 라이브러리도 또 여러 개임

> regression 회기, 연속형 데이터 예측 

> clustering은 비지도 학습 classification 은 지도 학습

> dimensionality reduction 차원 축소 

 

Ref : https://losskatsu.github.io/categories/#

반응형

'Machine Learning 입문' 카테고리의 다른 글

9. 앙상블 학습  (2) 2024.12.28
8. 지도 학습  (0) 2024.12.26
6. 확률 분포 & 가설 검정  (0) 2024.12.26
5. 데이터 전처리 처리 및 시각화  (0) 2024.12.26
4. 기초 통계 & 시각화  (2) 2024.12.26
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함