go hard to Hardware

[머신러닝 입문] 메타코드 강의 후기_머신러닝 입문 올인원_1강 회귀(6) 본문

ML,DL/ML 입문

[머신러닝 입문] 메타코드 강의 후기_머신러닝 입문 올인원_1강 회귀(6)

냔냐냔나 2024. 4. 28. 16:19

 

http://mcode.co.kr/video/list2?viewMode=view&idx=21

 

메타코드M

빅데이터 , AI 강의 플랫폼 & IT 현직자 모임 플랫폼ㅣ메타코드 커뮤니티 일원이 되시기 바랍니다.

mcode.co.kr

Ridge Regression

- 머신러닝 모델의 MSE 오차와 Ridge 를 합함

- β_1, ..., β_n 중 β_2가 MSE를 이용해서 오차가 잘 안 구해지는 상황일 때

- β_2를 특정 값으로 만들어서 loss 값을 올릴 바에, 0으로 만들어서 Loss를 줄이고자 함

- 그래서 파라미터의 크기를 식 뒤에 붙여줌

- L2 : norm의 제곱값을 사용한다는 의미

Lasso Regression

- 머신러닝에서 L1 정규화 손실함수는, β에 절대값의 합을 넣어 준다.

- 0에서의 오차값의 차이를 더해준다는 의미이다.

- 절대값 합이 s일 때, 이는 마름모로 표현됨

- 최적의 값은 MSE 등고선이 마름모와 만날 때

 

Ridge와 Lasso 비교

- 실제로 둘 중 뭐가 좋은지 정답은 없지만, L2 regression을 더 많이 사용함

- 정규화에 대한 하이퍼파라미터(λ) 가 커지면 복잡도가 줄어듦

- Lasso는 마름모, Ridege는 원의 모양 -> 등고선이 만나는 모습을 생각해보면 Lasso의 희소성이 더 커진다.

- 0을 가진 parameter가 많아지게 하는 법 : 1. λ 키우기 2. β의 지수값을 줄이기

- 뭐가 좋은지 명확하게 알 수 없기 때문에 머신러닝은 실험으로 검증을 꼭 해봐야 함

 

이제는 Colab으로 머신러닝 실습을 수행한다!

크게는 Numpy 를 이용해서 선형 회귀를 학습 해 보고,

이후해는 scikit-learn 을 이용해서 optimization을 진행한다.

- pickle이라는 데이터 타입을 이용해서 저장

- 파이썬 문법대로 x, y에 이 데이터를 저장

- scatter를 이용해서 그래프에 표현

- 머신러닝 모델의 학습을 위해서 학습데이터와 평가데이터를 나누는데, 사이킷런의 함수인 _split을 사용한다

 

다음은 Numpy를 이용해 선형 회귀 모델 찾는 방법이다.

- 우선은 위와 같은 MSE, Gradients를 계산할 수 있는 수식을 코딩해야 한다.

- 이럴 때 jupyter notebook, colab의 마크다운 문법을 사용하면 위와같은 보고서, 수식, 그림도 파일 안에 담을 수 있다.

- 마크다운도 문법이 있기때문에, 검색 등을 이용해 참고하면 보고서 형태의 내용을 담을 수 있다.

- 위 식에서, 코드에 사용되는 변수는 

MSE : n = 샘플 개수,  실제 값, 모델에 의해 예측된 값

Gradient : ,  bias, 𝑥𝑖 =  입력 변수

등이 있다.

- weight와 b의 초기화는 0.0로

- list는 시각화를 하기위해 선언했다.

- GD는 epoch만큼 반복하는데, 이를 위해서 for문을 사용한다.

- dw는 편미분값으로 mean 함수를 사용할 수 있다.

- parameter를 업데이트 할때 lr 을 곱해줘서 업데이트 한다.

- 경사하강법을 위한 코드를 다 작성했다.

 

 

메타코드 서포터즈로서 작성하였습니다.