Top 18 릿지 라쏘 All Answers

You are looking for information, articles, knowledge about the topic nail salons open on sunday near me 릿지 라쏘 on Google, you do not find the information you need! Here are the best content compiled and compiled by the https://chewathai27.com/to team, along with other related topics such as: 릿지 라쏘 파이썬 릿지, 라쏘, 릿지, 라쏘, 엘라스틱, 릿지 라쏘 장단점, Lasso 뜻, lasso 머신러닝, 릿지 회귀 alpha, Ridge, Lasso Ridge


[인공지능 20강] 릿지, 라쏘 회귀 (다중 회귀)
[인공지능 20강] 릿지, 라쏘 회귀 (다중 회귀)


Ridge regression(릿지 회귀)와 Lasso regression(라쏘 회귀) 쉽게 이해하기

  • Article author: rk1993.tistory.com
  • Reviews from users: 22264 ⭐ Ratings
  • Top rated: 3.8 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about Ridge regression(릿지 회귀)와 Lasso regression(라쏘 회귀) 쉽게 이해하기 Rge regression(릿지 회귀)와 Lasso regression(라쏘 회귀) 쉽게 이해하기. 우주먼지의하루 2020. 4. 30. 03:33. 320×100. Rge regression와 Lasso regression를 … …
  • Most searched keywords: Whether you are looking for Ridge regression(릿지 회귀)와 Lasso regression(라쏘 회귀) 쉽게 이해하기 Rge regression(릿지 회귀)와 Lasso regression(라쏘 회귀) 쉽게 이해하기. 우주먼지의하루 2020. 4. 30. 03:33. 320×100. Rge regression와 Lasso regression를 … Ridge regression와 Lasso regression를 이해하려면 일단 정규화(regularization)를 알아야합니다. 첫번째 그림을 보면 직선 방정식을 이용하여 선을 그었습니다. 데이터와 직선의 차이가 꽤 나네요. 정확한 예측..우주먼지의하루
  • Table of Contents:

우주먼지의 하루

Ridge regression(릿지 회귀)와 Lasso regression(라쏘 회귀) 쉽게 이해하기

Ridge regression(릿지 회귀)와 Lasso regression(라쏘 회귀) 쉽게 이해하기
Ridge regression(릿지 회귀)와 Lasso regression(라쏘 회귀) 쉽게 이해하기

Read More

선형회귀(linear regression), 라쏘(LASSO), 리지(Ridge)

  • Article author: otugi.tistory.com
  • Reviews from users: 7434 ⭐ Ratings
  • Top rated: 4.9 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about 선형회귀(linear regression), 라쏘(LASSO), 리지(Ridge) 차이가 있다면 라쏘는 가중치들이 0이 되지만, 릿지의 가중치들은 0에 가까워질 뿐 0이 되지는 않는다. 특성이 많은데 그중 일부분만 중요하다면 라쏘가, … …
  • Most searched keywords: Whether you are looking for 선형회귀(linear regression), 라쏘(LASSO), 리지(Ridge) 차이가 있다면 라쏘는 가중치들이 0이 되지만, 릿지의 가중치들은 0에 가까워질 뿐 0이 되지는 않는다. 특성이 많은데 그중 일부분만 중요하다면 라쏘가, … 선형 회귀는 사용되는 특성(feature)의 갯수에 따라 다음과 같이 구분된다. – 단순 선형 회귀(simple linear regression) : 특징이 1개 – 다중 선형 회귀(multiple linear regression) : 특징이 여러개 LASSO와 Ri..
  • Table of Contents:

오뚝이개발자

선형회귀(linear regression) 라쏘(LASSO) 리지(Ridge) 본문

티스토리툴바

선형회귀(linear regression), 라쏘(LASSO), 리지(Ridge)
선형회귀(linear regression), 라쏘(LASSO), 리지(Ridge)

Read More

[Handson ML] 릿지(Ridge),라쏘(Lasso),엘라스틱 넷(Elsatic-net) – 모델 훈련 – yg’s blog

  • Article author: yganalyst.github.io
  • Reviews from users: 21012 ⭐ Ratings
  • Top rated: 3.7 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about [Handson ML] 릿지(Ridge),라쏘(Lasso),엘라스틱 넷(Elsatic-net) – 모델 훈련 – yg’s blog 모델의 과대적합을 방지하기 위해 선형모델에 규제를 걸어주는 릿지, 라쏘 회귀와 엘라스틱 넷에 대해 알아보자. …
  • Most searched keywords: Whether you are looking for [Handson ML] 릿지(Ridge),라쏘(Lasso),엘라스틱 넷(Elsatic-net) – 모델 훈련 – yg’s blog 모델의 과대적합을 방지하기 위해 선형모델에 규제를 걸어주는 릿지, 라쏘 회귀와 엘라스틱 넷에 대해 알아보자. 모델의 과대적합을 방지하기 위해 선형모델에 규제를 걸어주는 릿지, 라쏘 회귀와 엘라스틱 넷에 대해 알아보자
  • Table of Contents:

Skip links

[ML] 은닉 마르코프 모델 (Hidden Markov Model HMM)

[Anaconda] 아나콘다 가상환경 IDE와 연동하기

[Anaconda] 아나콘다 가상환경의 개념 및 활용방법

[클러스터링] 비계층적(K-means DBSCAN) 군집분석

[Handson ML] 릿지(Ridge),라쏘(Lasso),엘라스틱 넷(Elsatic-net) - 모델 훈련 - yg’s blog
[Handson ML] 릿지(Ridge),라쏘(Lasso),엘라스틱 넷(Elsatic-net) – 모델 훈련 – yg’s blog

Read More

다중 회귀 & 판다스 & 규제 (릿지 회귀, 라쏘 회귀 , 엘라스틱 넷 회귀 )

  • Article author: velog.io
  • Reviews from users: 7898 ⭐ Ratings
  • Top rated: 4.1 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about 다중 회귀 & 판다스 & 규제 (릿지 회귀, 라쏘 회귀 , 엘라스틱 넷 회귀 ) 다만, 이 과정에서 편향이 증가할 수 있기 때문에 적절한 조절이 필요. 02. 릿지 회귀 (Rge Regression)와 라쏘 회귀 (Lasso Regression), 엘라스틱 넷 … …
  • Most searched keywords: Whether you are looking for 다중 회귀 & 판다스 & 규제 (릿지 회귀, 라쏘 회귀 , 엘라스틱 넷 회귀 ) 다만, 이 과정에서 편향이 증가할 수 있기 때문에 적절한 조절이 필요. 02. 릿지 회귀 (Rge Regression)와 라쏘 회귀 (Lasso Regression), 엘라스틱 넷 … 다중 회귀, 특성 공학, 판다스, 규제, 릿지 회귀, 라쏘 회귀, 엘라스틱 넷 회귀
  • Table of Contents:

딥러닝 스터디

💡 다중 회귀 (Multiple Regression)

💡 특성 공학 (Feature Engineering)

💡 판다스 (Pandas)

💡 규제 (Regularization)

⌨ 코드

코드

참고

다중 회귀 & 판다스 & 규제 (릿지 회귀, 라쏘 회귀 , 엘라스틱 넷 회귀 )
다중 회귀 & 판다스 & 규제 (릿지 회귀, 라쏘 회귀 , 엘라스틱 넷 회귀 )

Read More

정규화 선형회귀 릿지(ridge), 라쏘(lasso), elastic net

  • Article author: sosoeasy.tistory.com
  • Reviews from users: 3521 ⭐ Ratings
  • Top rated: 4.5 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about 정규화 선형회귀 릿지(ridge), 라쏘(lasso), elastic net 1. 릿지회귀(rge Regression). (1) 정의. 추정계수의 제곱합을 최소로 하는것. 람다는 … …
  • Most searched keywords: Whether you are looking for 정규화 선형회귀 릿지(ridge), 라쏘(lasso), elastic net 1. 릿지회귀(rge Regression). (1) 정의. 추정계수의 제곱합을 최소로 하는것. 람다는 … 0. 정규화 선형회귀? (1) 선형회귀 계수(Weight)에 대한 제약 조건을 추가함으로써 모형이 과도하게 최적화되는 현상인 과최적화를 막는 방법 (2) 계수의 크기가 커지면 과적합됨. => 계수의 크기를 제한함 * 기존..씩씩한 it블로그입니다
  • Table of Contents:

정규화 선형회귀 릿지(ridge) 라쏘(lasso) elastic net

0 정규화 선형회귀

1 릿지회귀(ridge Regression)

2 라쏘회귀(lasso Regression)

3 엘라스틱 넷(elastic net)

티스토리툴바

정규화 선형회귀 릿지(ridge), 라쏘(lasso), elastic net
정규화 선형회귀 릿지(ridge), 라쏘(lasso), elastic net

Read More

머신러닝(Machine Learning) : 라쏘(LASSO) / 릿지(Ridge)

  • Article author: www.robotstory.co.kr
  • Reviews from users: 15254 ⭐ Ratings
  • Top rated: 4.0 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about 머신러닝(Machine Learning) : 라쏘(LASSO) / 릿지(Ridge) 이를 해결하기 위해 모델 자체적으로 규제를 주어 복잡도를 감소시키는 방법이 있는데 대표적으로 라쏘(LASSO)와 릿지(Rge)가 있습니다. 1) 노름(Norm). …
  • Most searched keywords: Whether you are looking for 머신러닝(Machine Learning) : 라쏘(LASSO) / 릿지(Ridge) 이를 해결하기 위해 모델 자체적으로 규제를 주어 복잡도를 감소시키는 방법이 있는데 대표적으로 라쏘(LASSO)와 릿지(Rge)가 있습니다. 1) 노름(Norm). 회귀모델에서는 MSE의 최소값을 통해 최적의 모델을 찾았습니다. 그런데 다중회귀모델의 경우 복잡도가 높기때문에 과대적합(overfitting) 되는 경향이 있습니다. 이를 해결하기 위해 모델 자체적으로 규제를 주어 복잡도를 감소시키는 방법이 있는데 대표적으로 라쏘(LASSO)와 릿지(Ridge)가 있습니다.1&#4특성선택, Embedded, 노름, norm, L1 norm, L2 norm, 정규화, 라쏘, LASSO, 릿지, Ridge
  • Table of Contents:

로봇스토리

댓글 많은글

추천 많은글

조회 많은글

머신러닝(Machine Learning) : 라쏘(LASSO) / 릿지(Ridge)
머신러닝(Machine Learning) : 라쏘(LASSO) / 릿지(Ridge)

Read More

릿지회귀, 라쏘회귀, 엘라스틱넷 :: 대학원생이 쉽게 설명해보기

  • Article author: hwiyong.tistory.com
  • Reviews from users: 27350 ⭐ Ratings
  • Top rated: 3.3 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about 릿지회귀, 라쏘회귀, 엘라스틱넷 :: 대학원생이 쉽게 설명해보기 라쏘 회귀는 L1-Norm을 사용한 회귀입니다. 특성값의 계수가 매우 낮다면 0으로 수렴하게 하여 특성을 지워버립니다. 특성이 모델에 미치는 영향을 0으로 … …
  • Most searched keywords: Whether you are looking for 릿지회귀, 라쏘회귀, 엘라스틱넷 :: 대학원생이 쉽게 설명해보기 라쏘 회귀는 L1-Norm을 사용한 회귀입니다. 특성값의 계수가 매우 낮다면 0으로 수렴하게 하여 특성을 지워버립니다. 특성이 모델에 미치는 영향을 0으로 … Regularization 정규화는 overfitting을 방지하게 됩니다. 정규화항을 통해 모델에 미치는 차원의 수의 수를 감소시키기 때문입니다. 대표적으로 회귀모델에서 정규화항을 붙이는 방법은 3가지가 있습니다. 사실..
  • Table of Contents:

릿지회귀 라쏘회귀 엘라스틱넷

Reference

티스토리툴바

릿지회귀, 라쏘회귀, 엘라스틱넷 :: 대학원생이 쉽게 설명해보기
릿지회귀, 라쏘회귀, 엘라스틱넷 :: 대학원생이 쉽게 설명해보기

Read More

핸즈온 머신러닝(2판): 사이킷런, 케라스, 텐서플로 2를 활용한 머신러닝, 딥러닝 … – 오렐리앙 제롱 – Google Sách

  • Article author: books.google.com.vn
  • Reviews from users: 47808 ⭐ Ratings
  • Top rated: 3.9 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about 핸즈온 머신러닝(2판): 사이킷런, 케라스, 텐서플로 2를 활용한 머신러닝, 딥러닝 … – 오렐리앙 제롱 – Google Sách Updating …
  • Most searched keywords: Whether you are looking for 핸즈온 머신러닝(2판): 사이킷런, 케라스, 텐서플로 2를 활용한 머신러닝, 딥러닝 … – 오렐리앙 제롱 – Google Sách Updating 컬러판으로 돌아온 아마존 인공지능 분야 부동의 1위 도서이 책은 지능형 시스템을 구축하려면 반드시 알아야 할 머신러닝, 딥러닝 분야 핵심 개념과 이론을 이해하기 쉽게 설명한다. 사이킷런, 케라스, 텐서플로를 이용해 실전에서 바로 활용 가능한 예제로 모델을 훈련하고 신경망을 구축하는 방법을 상세하게 안내한다. 장마다 제공하는 연습문제를 풀며 익힌 내용을 확인하고 응용할 수도 있다. 머신러닝을 배우고 싶지만 어디서부터 시작해야 할지 막막하다면, 이 책이 인공지능 마스터로 가는 길에 좋은 친구가 될 것이다. 2판은 텐서플로 2를 반영하고 비지도 학습, 자연어 처리, 생성적 적대 신경망(GAN) 등 최신 기법을 추가했다.머신러닝 전문가로 이끄는 최고의 실전 지침서 텐서플로 2.0을 반영한 풀컬러 개정판 이 책의 원서는 출간 직후부터 미국 아마존 인공지능 분야에서 줄곧 1위 자리를 지키고 있습니다. 가장 많은 명저가 경쟁하는 시장에서 이처럼 확고부동한 호응을 얻은 데는 그만한 이유가 있습니다. 이론과 활용을 적절히 섞으면서도 실무에서 확실히 통하도록 구성했고, 나아가 실무자들의 실력을 한층 끌어올려줄 깊이를 담았기 때문이죠.완전히 새로워진 2판에서는 내지를 흑백에서 전면 컬러로 변경했습니다. 사이킷런, 케라스, 텐서플로 2.x를 사용하며 비지도 학습, 자연어 처리, 생성적 적대 신경망을 포함한 딥러닝 최신 기법을 소개합니다. 분산 트레이닝이나 배포, 구글 클라우드와의 연동과 관련된 내용도 맛볼 수 있습니다.이 책 한 권으로 머신러닝과 딥러닝을 통달할 수는 없지만, 인공지능 마스터로 가는 거리를 단축해줄 치트키가 되어줄 것입니다.★ 2판에서 달라진 점1. 더 많은 비지도 학습 기법(군집, 이상치 탐지, 밀도 추정, 혼합 모델 등), 심층 신경망을 훈련하기 위한 다양한 방법(자기 정규화 네트워크 등), 추가적인 컴퓨터 비전 기법(Xception, SENet, YOLO를 사용한 객체 탐지, R-CNN을 사용한 시맨틱 분할 등), 합성곱 신경망(CNN)을 사용하여 시퀀스 다루기(WaveNet 등), CNN과 트랜스포머, 순환 신경망을 사용한 언어 처리, 생성적 적대 신경망(GAN)을 다룹니다.2. 추가적인 라이브러리와 API(케라스, Data API, 강화 학습을 위한 TF-Agents), 분산 전략 API를 사용해 대규모 TF 모델을 훈련하고 배포하기, TF 서빙, TF Addons/Seq2Seq, TensorFlow.js 등을 다룹니다.3. 최신 중요 딥러닝 연구 결과를 설명합니다.4. 텐서플로 2를 사용하고 가능하면 텐서플로 케라스 API 구현(tf.keras)을 사용합니다.5. 사이킷런, 넘파이, 판다스, 맷플롯립, 그 외 다른 라이브러리 최신 버전에 맞게 코드 예제를 업데이트 했습니다.★ 목적과 접근 방식이 책은 여러분이 머신러닝을 거의 모른다고 가정하고, 데이터로부터 스스로 학습하는 프로그램을 실제로 구현하는 데 필요한 개념, 직관, 도구를 알려주는 것을 목표로 합니다.선형 회귀처럼 가장 단순하고 널리 쓰이는 기법부터 시장을 선도하는 딥러닝 기법까지 다채로운 지식과 경험을 담았고, 당장 제품화에 사용할 수 있는 다음의 세 가지 파이썬 프레임워크를 활용했습니다.- 사이킷런(Scikit-Learn): 다양한 머신러닝 알고리즘을 효율적으로 구현했으며 사용하기도 쉬워 머신러닝을 처음 배우기에 가장 좋은 도구입니다.- 텐서플로(TensorFlow): 수치계산을 데이터 플로 그래프를 이용하여 분산 처리해주는, 더 복잡한 라이브러리입니다. 연산을 수천 대의 GPU 서버에 분배하여 대규모 신경망을 효율적으로 학습시키고 운영할 수 있습니다.- 케라스(Keras): 고수준 딥러닝 API입니다. 매우 쉽게 신경망을 훈련하고 실행할 수 있습니다. 케라스는 텐서플로, 시애노(Theano), 마이크로소프트 코그니티브 툴킷(Microsoft Cognitive Toolkit) 위에서 작동합니다. 텐서플로는 자체 케라스 API 구현을 tf.keras란 이름으로 포함하며, tf.keras는 텐서플로 고급 기능을 지원합니다.
  • Table of Contents:
핸즈온 머신러닝(2판): 사이킷런, 케라스, 텐서플로 2를 활용한 머신러닝, 딥러닝 ... - 오렐리앙 제롱 - Google Sách
핸즈온 머신러닝(2판): 사이킷런, 케라스, 텐서플로 2를 활용한 머신러닝, 딥러닝 … – 오렐리앙 제롱 – Google Sách

Read More

규제가 있는 선형 모델 (릿지,라쏘,엘라스틱넷)

  • Article author: haesamiii.tistory.com
  • Reviews from users: 24133 ⭐ Ratings
  • Top rated: 4.0 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about 규제가 있는 선형 모델 (릿지,라쏘,엘라스틱넷) 이때 모델 가중치를 제한하는 방법으로, 릿지/라쏘/엘라스틱넷이 존재한다. 선형 모형 과적합 발생 時, (1) 다항식 차수 감소. (2) 규제 있는 … …
  • Most searched keywords: Whether you are looking for 규제가 있는 선형 모델 (릿지,라쏘,엘라스틱넷) 이때 모델 가중치를 제한하는 방법으로, 릿지/라쏘/엘라스틱넷이 존재한다. 선형 모형 과적합 발생 時, (1) 다항식 차수 감소. (2) 규제 있는 … 모델링에서 과대적합을 감소시키는 방법으로 규제를 사용한다. 다항 회귀 모델에서 규제하는 방법은 다항식의 차수를 줄이는 방법도 있지만, 보통 모델의 가중치를 제한하여 규제를 가하는 방법을 택한다. 이때 모..
  • Table of Contents:

‘ [R_Python] 데이터분석 정리[Python] 머신러닝’ Related Articles

티스토리툴바

규제가 있는 선형 모델 (릿지,라쏘,엘라스틱넷)
규제가 있는 선형 모델 (릿지,라쏘,엘라스틱넷)

Read More

마이크로소프트웨어 387호: 개발자의 인공지능(Developer`s AI) – 마소팀 – Google Sách

  • Article author: books.google.com.vn
  • Reviews from users: 30041 ⭐ Ratings
  • Top rated: 4.5 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about 마이크로소프트웨어 387호: 개발자의 인공지능(Developer`s AI) – 마소팀 – Google Sách Updating …
  • Most searched keywords: Whether you are looking for 마이크로소프트웨어 387호: 개발자의 인공지능(Developer`s AI) – 마소팀 – Google Sách Updating 책 소개마이크로소프트웨어는 IT 산업과 종사자들과 함께 공부하고(Learn), 첨단 트렌드와 신기술을 시도(Try)하고 그 성과를 모두와 나누는(Share) 지식 산업의 말벗(인공지능 연관어 검색으로 ‘나침반’과 ‘버팀목’을 입력한 결과)이 되겠습니다. 소프트웨어를 ‘S’, ‘O’, ‘F’, ‘T’, ‘W’, ‘A’, ‘R’, ‘E’ 각 낱말로 소주제를 구분해, IT 산업 전반에 걸친 다양한 이야기를 들어볼 수 있습니다. S(Schema) – 전체적인 조망과 문제의식으로 주제를 시작합니다. O(Opinions) – 주제나 자기 계발을 위한 팁을 얻을 수 있습니다. F(Future) – 미래를 위한 기술과 서비스에 필요한 인사이트를 소개합니다. T(Technology) – 개발에서 활용한 기술이나 구현 방법을 자세하게 탐구합니다. W(Words) – 한글과 한국어를 중심으로 언어를 탐구해볼 수 있는 프로젝트를 살펴봅니다. A(Applied) – 기술과 서비스를 구현할때 참고할 수 있는 기법을 알아봅니다. R(Research) – 소프트웨어를 활용한 다양한 연구과제를 담습니다. E(Enterprise) – 주제 관련 상품이나 기업의 기술을 알려드립니다.목차Schema S1. 이제는 모든 기업이 인공지능 기업이다 – 김진형 S2. 뫼비우스의 띠, 인공지능 그리고 사람 – 이재포 S3. 21세기의 골드러쉬 인공지능 이야기 – 김영욱 S4. 개발자와 머신러닝, 무엇을 할 것인가 – 임백준 S5. 개발자는 감투가 아니다 – 허광남 Opinion O1. 인공지능 개발자의 사회적 감수성 – 김현철 O2. 위기의 호모 사피엔스 – 이범석 O3. 청태종과 빌게이츠의 네 가지 공통점 – 고평석 Future F1. SK텔레콤 '누구'로 알아보는 API의 방식과 음성인식 인공지능의 미래 – 김영준 Technology T1. 아마존 에코, IoT 버튼으로 원격지 전등 제어하기 – 이경수 T2. 당장 쓸 수 있는 마이크로소프트의 인공지능 기술들 – 김영욱 T3. 머신러닝, 딥러닝 그리고 매트랩 – 김종남 Words W1. 자연어 처리 기술과 우리말 – 이상구 W2. 의료정보학의 텍스트 마이닝에 대하여 – 한충현 W3. 아프리카TV의 word2vec 활용 사례 – 최규민 W4. 기계학습을 이용한 텍스트 감정 분석 – 유재명 W5. 오픈소스 R과 KoNLP – 전희원 Applied A1. 무한의 탑에서 펼쳐지는 AI와 게이머의 한판 승부, 이경종 엔씨소프트 팀장 – 조병승 A2. 스타크래프트 인공지능 경진대회 – 김경준 외 A3. 인공지능 국방분야 적용 방안 – 정해주 A4. 기계학습 성문분석으로 보이스피싱 예방 연구 – 전옥엽 외 Research R1. 인공신경망에게 월광 소나타 가르치기 – 홍정모 외 R2. 추론하는 딥러닝 모델 – 남상협 외 Enterprise E1. 작은 데이터로 큰 가치를 만드는 소물인터넷 – 송태민 E2. I-C-B-M을 활용한 스마트팩토리 비즈니스 – 반승환 E3. 인공지능의 시대, 컴퓨팅의 진화 – 나승주 E4. 국내외 오픈 데이터 동향과 시사점 – 김선호 E5. 주요 RDBMS의 트랜잭션 처리 아키텍처 – 권건우 E6. 모두를 위한, 모두의연구소 – 조병승 E7. 인공지능과 머신러닝 – 김승일 E8. Caffe를 이용한 객체 분류 – 정찬희 E9. 딥러닝을 활용한 예술작품 제작 – 신성진
  • Table of Contents:
마이크로소프트웨어 387호: 개발자의 인공지능(Developer`s AI) - 마소팀 - Google Sách
마이크로소프트웨어 387호: 개발자의 인공지능(Developer`s AI) – 마소팀 – Google Sách

Read More


See more articles in the same category here: https://chewathai27.com/to/blog.

선형회귀(linear regression), 라쏘(LASSO), 리지(Ridge)

728×90

300×250

SMALL

선형 회귀는 사용되는 특성(feature)의 갯수에 따라 다음과 같이 구분된다.

– 단순 선형 회귀(simple linear regression) : 특징이 1개

– 다중 선형 회귀(multiple linear regression) : 특징이 여러개

LASSO와 Ridge는 선형 회귀의 단점을 보완해 범용성을 부여하기 위해 만들어진 도구들이다.

선형 회귀란?

예컨대, 어묵을 팔고 있는 사람이 기온에 따른 자신의 어묵 판매량을 알아보기 위해 상관관계를 조사했다고 하자. 그 결과 기온이 낮은 날에는 어묵 판매량이 늘어나는 경향이 있었다. 이를 바탕으로 경향성을 분석하자 y=ax+b와 같은 선형 관계가 나타났다. 덕분에 어묵 장수는 자신의 다음 날의 기온을 일차함수식에 넣어 판매량을 예측한 뒤 필요한 만큼의 재료를 준비하여 신선한 상태로 어묵을 판매할 수 있었고, 입소문이 나 손님들로 북적거리게 되었다.

단순 선형 회귀

단순 선형 회귀란 단 하나의 특징(feature)을 가지고 라벨값(label) 혹은 타깃(target)을 예측하기 위한 회귀 모델을 찾는 것이다.

단순 선형 회귀(출처:위키피디아)

파란색 점은 여러 샘플(sample)이고 x축은 샘플의 특징값, y축은 라벨값을 나타낸다. 위 그래프에선 특징값이 커지면 라벨값도 커지는 경향을 보이고 있다. 이 현상을 가장 잘 설명해주는 선형함수를 찾아낸 것이 빨간색 선이다. 이처럼 선형함수가 주어지면 새로운 데이터의 특징값이 주어졌을 때 라벨값을 예측할 수 있다. 단순 선형 회귀를 위한 식을 일반화해 나타내면 아래와 같다.

좌변의 y^는 예측값, x가 특징이다. 1차 함수의 관점에서 보자면 w는 기울기 b는 y절편이지만 여기서는 w를 가중치, b를 편향이라고 보는 것이 더 적절하다. 여러 샘플들을 이용해 가장 최적의 w와 b를 찾아야 하는데 보통 경사하강법을 사용한다.

다중 선형 회귀

위의 오뎅 예시에선 단 하나의 특징, 기온을 가지고 회귀 모델을 만들었다. 하지만 특징 하나만을 가지고는 정확한 예측이 어렵다. 요일에 따라 판매량이 달라질 수 있고, 비나 눈이 오는지에 따라서도 달라질 수 있다. 이처럼 하나가 아닌 여러 개의 특징을 활용해 회귀 모델을 만드는 것을 다중 선형 회귀라 한다. 다중 선형 회귀의 예측 함수는 아래와 같다.

여기서 특성은 총 p+1개, 그에 따라 가중치도 p+1개이다. 주어진 여러 샘플들의 p+1개의 특징(x[0]~x[p])과 라벨값(y) 사이의 관계를 잘 나타내주는 w와 b를 찾아야 한다. 특징이 1개인 선형 회귀에선 모델이 직선이었지만, 2개면 평면이 되고, 그 이상이면 초평면(hyperplane)이 된다.

최적의 가중치와 편향 찾기

선형 회귀에서 어떻게 최적의 가중치와 편향을 찾아낼 수 있을까? 이 부분이 중요하다. 바로 라벨값(y)과 예측값(y^) 사이의 평균제곱오차(Mean Squared Error, MSE)를 최소화하는 파라미터 w와 b를 찾으면 된다.

그런데 다중 선형 회귀 모델은 과적합(overfitting)되는 경향이 있다. 필요이상으로 자세하게 특징값과 라벨값의 관계를 분석했다는 것이다. 이로 인해 일반화 능력(범용능력)이 떨어져 새로운 데이터를 제대로 예측하지 못한다. 이를 해결하기 위한 것이 바로 라쏘(LASSO)와 릿지(Ridge)이다.

라쏘(LASSO)

기존의 선형 회귀에선 적절한 가중치와 편향을 찾아내는 것이 관건이었다. 라쏘는 거기에 추가적인 제약 조건을 준다. 바로 MSE가 최소가 되게 하는 가중치와 편향을 찾으면서 동시에, 가중치들의 절댓값의 합이 최소가 되게 한다는 것이다. 다시 말해, 가중치의 모든 원소가 0이 되거나 0에 가깝게 되도록 해야 한다. 따라서 어떠한 특징들은 모델을 만들 때 사용되지 않기도 한다. 어떤 벡터 요소의 절댓값의 합은 L1-norm이다. 즉, 라쏘는 L1-norm 페널티를 가진 선형 회귀 방법이다. 식은 아래와 같다.

m은 가중치의 갯수(혹은 특징의 갯수)이고, α는 페널티의 효과를 조절해주는 하이퍼파라미터다. 이 값이 커지면 페널티 항의 영향력이 커지고, 작아져서 거의 0이 되면 선형 회귀와 같아진다. MSE와 penalty항의 합이 최소가 되게 하는 w와 b를 찾는 것이 바로 라쏘의 목적이다.

그런데 이러한 방법이 어떻게 범용성을 부여해 과적합을 방지하는 것일까? 우선 MSE항이 작아질수록 라벨값과 예측값들의 차이가 작아지고, L1-norm이 작아질수록 많은 가중치들이 0이 되거나 0에 가까워진다는 것을 기억하자. α가 크면 전체값(MSE+penalty)이 L1-norm의 영향을 크게 받아 L1-norm을 작게 만드는 것이 우선시된다. 반면, α가 작으면 MSE가 작아지게 하는 것에 더 비중을 두게 된다. 따라서, α가 너무 작으면 overfitting(복잡도가 너무 큼)이, 너무 크면 underfitting(복잡도가 너무 작음)이 일어난다. α는 하이퍼파라미터로 cross-validation을 통해 적절한 값을 설정해주어야한다.

라쏘의 장점은 크게 두가지다.

– 첫번째는 제약 조건을 통해 일반화된 모형을 찾는다는 것이다.

– 두번째는 가중치들이 0이 되게 함으로써 그에 해당하는 특성들을 제외해준다. 결과적으로 모델에서 가장 중요한 특성이 무엇인지 알게되는 등 모델 해석력이 좋아진다.

릿지(Ridge)

마지막으로 라쏘와 굉장히 유사한 릿지에 대해 간단히만 언급하자면 패널티 항에 L1-norm 대신에 L2-norm 패널티를 가진다. 차이가 있다면 라쏘는 가중치들이 0이 되지만, 릿지의 가중치들은 0에 가까워질 뿐 0이 되지는 않는다. 특성이 많은데 그중 일부분만 중요하다면 라쏘가, 특성의 중요도가 전체적으로 비슷하다면 릿지가 좀 더 괜찮은 모델을 찾아줄 것이다.

출처

728×90

300×250

LIST

[Handson ML] 릿지(Ridge),라쏘(Lasso),엘라스틱 넷(Elsatic-net) – 모델 훈련

개요

모델의 과대적합을 방지하는 좋은 방법은 모델에 규제를 가하는 방법이다.

이러한 방법으로 다항회귀모델의 다항식 차수를 감소시키는 등 자유도를 줄이는 방법이 있다.

보통 선형회귀모델에서는 모델의 가중치를 제한함으로써 규제를 가하는데, 이번 포스팅에서는 이러한 가중치를 제한하는 릿지, 라쏘, 엘라스틱넷에 대해 공부해보도록 하자.

1. 릿지 회귀

릿지 회귀(Ridge Regression)는 통계학에서 능형회귀라고 부르는데, 선형회귀에 규제가 추가된 것으로 비용함수에 다음 항이 추가된다.

이 규제는 비용함수에 추가되는 것으로 테스트 세트에서 성능을 평가하거나 실제 샘플을 예측할때는 적용되지 않는다.

위 식의 하이퍼파라미터인 α는 모델을 얼마나 많이 규제할지 조절한다.

α=0이면 릿지회귀는 선형회귀와 같아지고, α가 커질수록 모든 가중치가 0에 가까워져 결국 데이터의 평균을 지나는 수평선이 된다.

위 식에서 i가 1부터 시작하는 것은 θ0는 규제되지 않는 것을 의미한다.

w를 가중치 벡터(θ1~θn)라고 정의하면 규제항은 ½(∥ w ∥2)^2와 같다.

(½을 곱한 것은 미분하면 2를 곱해 깔끔하게 떨어지게 하기 위함)

여기서 ∥ w ∥2가 가중치 벡터의 ℓ2노름이다.

이를 경사하강법에 적용하려면 MSE 그라디언트 벡터에 αw를 더하면 된다.

(참고 : 경사하강법)

선형회귀와 마찬가지로 릿지 회귀를 계산하기 위해 정규방정식과 경사하강법을 이용할 수 있다(이 두 계산방식의 장단점은 선형회귀 포스팅의 계산복잡도에 관련이 있다).

위 식은 릿지회귀의 정규방정식으로, A는 편향에 해당하는 맨 왼쪽 위의 원소가 0인 (n+1)X(n+1)의 단위 행렬이다.

(원래 단위 행렬은 주대각선이 1이지만, 편향에 해당하는 θ0는 규제에 포함되지 않으기 때문)

선형 데이터 셋에 정규방정식을 사용하여 릿지모델을 훈련시켜보자.

import numpy as np np . random . seed ( 42 ) m = 20 # 데이터 수 X = 3 * np . random . rand ( m , 1 ) # 0~1 난수*3 y = 1 + 0.5 * X + np . random . randn ( m , 1 ) / 1.5 # 1차방정식 형태 X_new = np . linspace ( 0 , 3 , 100 ). reshape ( 100 , 1 ) # 0~3사이 100개

solver=”cholesky” 를 사용하면 숄레스키 분해라고도 하는 행렬분해를 이용해 정규방정식의 해를 구하는데 유용하다.

from sklearn.linear_model import Ridge ridge_reg = Ridge ( alpha = 1 , solver = “cholesky” , random_state = 42 ) ridge_reg . fit ( X , y ) ridge_reg . predict ([[ 1.5 ]]) # 새로운 샘플에 대한 예측

array([[1.55071465]])

이번엔 경사하강법을 이용해 릿지모델을 훈련시켜보자.

이전 포스팅에서도 배웠지만, 정규방정식의 해를 구하기 위해 역행렬을 계산하는 과정에서 시간이 매우 오래걸리므로, 경사하강법이 유용할 때가 있다.

solver=’sag’ 를 이용하면 확률적 평균 경사하강법(Stochastic Average Gradient Descent)를 사용할 수 있다.

이는 SGD와 비슷하지만 현재 gradient와 이전 단계에서 구한 모든 gradient를 합해서 평균한 값으로 모델 파라미터를 갱신한다.

ridge_reg = Ridge ( alpha = 1 , solver = “sag” , random_state = 42 ) ridge_reg . fit ( X , y ) ridge_reg . predict ([[ 1.5 ]])

array([[1.5507201]])

SGDRegressor 을 이용한 방법이다.

penalty 옵션으로 사용할 규제를 지정하는데 “l2”는 SGD가 비용함수에 가중치 벡터의 ℓ2노름의 제곱을 2로 나눈 규제항을 추가하게 만든다(즉, 릿지 회귀가 된다.).

from sklearn.linear_model import SGDRegressor sgd_reg = SGDRegressor ( max_iter = 5 , penalty = “l2” , random_state = 42 ) sgd_reg . fit ( X , y . ravel ()) sgd_reg . predict ([[ 1.5 ]])

array([1.13500145])

다음은 각기다른 α를 사용해 릿지모델을 훈련시킨 결과이다.

왼쪽은 평병한 릿지모델, 오른쪽은 다항회귀( PolynomialFeatures(degree=10) )를 사용해 먼저 데이터를 확장하고 StandardScaler 를 사용해 스케일 조정 후 릿지모델에 적용한 결과이다.

(규제를 사용한 다항회귀)

from sklearn.linear_model import Ridge , LinearRegression import matplotlib.pyplot as plt from sklearn.pipeline import Pipeline from sklearn.preprocessing import PolynomialFeatures , StandardScaler def plot_model ( model_class , polynomial , alphas , ** model_kargs ): for alpha , style in zip ( alphas , ( “b-” , “g–” , “r:” )): model = model_class ( alpha , ** model_kargs ) if alpha > 0 else LinearRegression () if polynomial : model = Pipeline ([ ( “poly_features” , PolynomialFeatures ( degree = 10 , include_bias = False )), ( “std_scaler” , StandardScaler ()), ( “regul_reg” , model ), ]) model . fit ( X , y ) y_new_regul = model . predict ( X_new ) lw = 2 if alpha > 0 else 1 plt . plot ( X_new , y_new_regul , style , linewidth = lw , label = r “$\alpha = {}$” . format ( alpha )) plt . plot ( X , y , “b.” , linewidth = 3 ) plt . legend ( loc = “upper left” , fontsize = 15 ) plt . xlabel ( “$x_1$” , fontsize = 18 ) plt . axis ([ 0 , 3 , 0 , 4 ]) plt . figure ( figsize = ( 10 , 4 )) plt . subplot ( 121 ) plot_model ( Ridge , polynomial = False , alphas = ( 0 , 10 , 100 ), random_state = 42 ) plt . ylabel ( “$y$” , rotation = 0 , fontsize = 18 ) plt . subplot ( 122 ) plot_model ( Ridge , polynomial = True , alphas = ( 0 , 10 **- 5 , 1 ), random_state = 42 ) plt . show ()

α를 증가시킬수록 직선에 가까워 지는 것을 알 수 있다(분산은 줄고 편향이 증가).

2. 라쏘 회귀

라쏘 회귀(Lasso Regression) 는 릿지 회귀처럼 비용함수에 규제항을 더하지만 ℓ2노름의 제곱을 2로 나눈 것 대신 가중치 벡터의 ℓ1노름을 사용한다.

다음은 위와 같은 방법으로 릿지 대신 라쏘모델과 더 작은 α를 사용한 결과이다.

from sklearn.linear_model import Lasso plt . figure ( figsize = ( 10 , 4 )) plt . subplot ( 121 ) plot_model ( Lasso , polynomial = False , alphas = ( 0 , 0.1 , 1 ), random_state = 42 ) plt . ylabel ( “$y$” , rotation = 0 , fontsize = 18 ) plt . subplot ( 122 ) plot_model ( Lasso , polynomial = True , alphas = ( 0 , 10 **- 7 , 1 ), random_state = 42 ) plt . show ()

c:\users\user\appdata\local\programs\python\python37\lib\site-packages\sklearn\linear_model\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 2.802867703827423, tolerance: 0.0009294783355207351 positive)

라쏘회귀의 중요한 특징은 덜 중요한 변수의 가중치를 완전히 제거하려고 한다는 점이다.

위 그래프를 보면 다항회귀의 차수가 거의 0이 되어가는(직선이 되어가는) 것을 볼 수 있다.

즉, 라쏘회귀는 자동으로 변수를 선택하고 희소모델(sparse model)을 만든다(즉, 0이아닌 변수의 가중치가 적다).

다음은 다차원 방정식 y = 2×1 + 0.5×2로, 최적의 파라미터는 θ1=2, θ2=0.5이다.

t1a , t1b , t2a , t2b = – 1 , 3 , – 1.5 , 1.5 t1s = np . linspace ( t1a , t1b , 500 ) t2s = np . linspace ( t2a , t2b , 500 ) t1 , t2 = np . meshgrid ( t1s , t2s ) T = np . c_ [ t1 . ravel (), t2 . ravel ()] Xr = np . array ([[ 1 , 1 ], [ 1 , – 1 ], [ 1 , 0.5 ]]) yr = 2 * Xr [:, : 1 ] + 0.5 * Xr [:, 1 :] J = ( 1 / len ( Xr ) * np . sum (( T . dot ( Xr . T ) – yr . T ) ** 2 , axis = 1 )). reshape ( t1 . shape ) N1 = np . linalg . norm ( T , ord = 1 , axis = 1 ). reshape ( t1 . shape ) N2 = np . linalg . norm ( T , ord = 2 , axis = 1 ). reshape ( t1 . shape ) t_min_idx = np . unravel_index ( np . argmin ( J ), J . shape ) t1_min , t2_min = t1 [ t_min_idx ], t2 [ t_min_idx ] t_init = np . array ([[ 0.25 ], [ – 1 ]])

def bgd_path ( theta , X , y , l1 , l2 , core = 1 , eta = 0.05 , n_iterations = 200 ): path = [ theta ] for iteration in range ( n_iterations ): gradients = core * 2 / len ( X ) * X . T . dot ( X . dot ( theta ) – y ) + l1 * np . sign ( theta ) + l2 * theta theta = theta – eta * gradients path . append ( theta ) return np . array ( path ) fig , axes = plt . subplots ( 2 , 2 , sharex = True , sharey = True , figsize = ( 10.1 , 8 )) for i , N , l1 , l2 , title in (( 0 , N1 , 2. , 0 , “Lasso” ), ( 1 , N2 , 0 , 2. , “Ridge” )): JR = J + l1 * N1 + l2 * 0.5 * N2 ** 2 tr_min_idx = np . unravel_index ( np . argmin ( JR ), JR . shape ) t1r_min , t2r_min = t1 [ tr_min_idx ], t2 [ tr_min_idx ] levelsJ = ( np . exp ( np . linspace ( 0 , 1 , 20 )) – 1 ) * ( np . max ( J ) – np . min ( J )) + np . min ( J ) levelsJR = ( np . exp ( np . linspace ( 0 , 1 , 20 )) – 1 ) * ( np . max ( JR ) – np . min ( JR )) + np . min ( JR ) levelsN = np . linspace ( 0 , np . max ( N ), 10 ) path_J = bgd_path ( t_init , Xr , yr , l1 = 0 , l2 = 0 ) path_JR = bgd_path ( t_init , Xr , yr , l1 , l2 ) path_N = bgd_path ( np . array ([[ 2.0 ], [ 0.5 ]]), Xr , yr , np . sign ( l1 ) / 3 , np . sign ( l2 ), core = 0 ) ax = axes [ i , 0 ] ax . grid ( True ) ax . axhline ( y = 0 , color = ‘k’ ) ax . axvline ( x = 0 , color = ‘k’ ) ax . contourf ( t1 , t2 , N / 2. , levels = levelsN ) ax . plot ( path_N [:, 0 ], path_N [:, 1 ], “y–” ) ax . plot ( 0 , 0 , “ys” ) ax . plot ( t1_min , t2_min , “ys” ) ax . set_title ( r “$\ell_{}$ penalty” . format ( i + 1 ), fontsize = 16 ) ax . axis ([ t1a , t1b , t2a , t2b ]) if i == 1 : ax . set_xlabel ( r “$\theta_1$” , fontsize = 16 ) ax . set_ylabel ( r “$\theta_2$” , fontsize = 16 , rotation = 0 ) ax = axes [ i , 1 ] ax . grid ( True ) ax . axhline ( y = 0 , color = ‘k’ ) ax . axvline ( x = 0 , color = ‘k’ ) ax . contourf ( t1 , t2 , JR , levels = levelsJR , alpha = 0.9 ) ax . plot ( path_JR [:, 0 ], path_JR [:, 1 ], “w-o” ) ax . plot ( path_N [:, 0 ], path_N [:, 1 ], “y–” ) ax . plot ( 0 , 0 , “ys” ) ax . plot ( t1_min , t2_min , “ys” ) ax . plot ( t1r_min , t2r_min , “rs” ) ax . set_title ( title , fontsize = 16 ) ax . axis ([ t1a , t1b , t2a , t2b ]) if i == 1 : ax . set_xlabel ( r “$\theta_1$” , fontsize = 16 ) plt . show ()

MSE 비용함수는 동일하지만, ℓ1,ℓ2 페널티 그래프에 있는 등고선은 다르다(왼쪽 열).

오른쪽 열은 비용함수에 규제항이 포함되어 있어서(라쏘와 릿지) 등고선이 다르게 나타나며초 최적 파라미터 값(빨간 네모)이 달라진 것을 볼 수 있다.

라쏘 비용함수에서 배치 경사하강법의 경로가 전역 최솟값(빨간 네모)으로 가는 도중에 지그재그로 튀는 경향을 보이는데, 이는 θ2=0에서 기울기가 갑자기 바뀌기 때문이다.

라쏘의 비용함수가 θi=0에서 미분가능하지 않기 때문인데, 이를 위해 서브그래디언트 벡터 g(미분이 불가능한 지점 근방 그래디언트들의 중간값)를 사용할 수 있다.

공식은 다음과 같다(경사하강법 적용을 위해 라쏘 비용함수에 사용할 수 있는 서브그래디언트 공식).

전역 최솟값에 수렴하기 위해서 학습률을 점진적으로 줄여나갈 필요가 있다.

위 그래프에 대해 완벽하게 이해가 되지 않아서, 여기1와 여기2에 들어가보면 자세하고 명확한 설명이 나와있으니 참고하면 좋을 것 같다.

다음은 사이킷런의 Lasso 모듈을 사용한 예제이다.

from sklearn.linear_model import Lasso lasso_reg = Lasso ( alpha = 0.1 ) lasso_reg . fit ( X , y ) lasso_reg . predict ([[ 1.5 ]])

array([1.53788174])

마찬가지로 SGDRegressor(penalty=’l1′) 을 사용할 수도 있다.

3. 엘라스틱넷

엘라스틱 넷(Elastic Net)은 릿지회귀와 라쏘회귀를 절충한 모델이다.

규제항은 릿지와 회귀의 규제항을 단순히 더해서 사용하며, 두 규제항의 혼합정도를 혼합비율 r을 사용해 조절한다.

r=0이면 릿지회귀와 같고, r=1이면 라쏘회귀와 같다.

식은 다음과 같다.

그렇다면 지금까지 배운 규제가 있거나 없는 선형모델들을 언제 사용해야 할까?

적어도 규제가 있는 것이 없는 것보다는 대부분의 경우에 좋고, 릿지가 기본이 되지만 실제로 쓰이는 변수가 몇 개뿐이라고 의심되면 라쏘나 엘라스틱넷을 이용하자(라쏘는 덜 중요한 변수의 가중치를 0으로 만들어버려 변수선택의 효과가 있다).

하지만 극단적으로 변수의 수가 훈련샘플의 수 보다도 많고, 변수 몇개가 강하게 연관(다중공선성 의심)되어 있을 경우에는 라쏘에 문제가 발생하므로 엘라스틱넷을 선호한다.

라쏘는 변수 수가 샘플 수(n)보다 많으면 최대 n개의 변수를 선택하고, 여러 변수간 강한 상관관계를 띄면 임의의 변수 하나를 선택한다.

다음은 ElasticNet 을 사용한 간단한 예제이다.

from sklearn.linear_model import ElasticNet elastic_net = ElasticNet ( alpha = 0.1 , l1_ratio = 0.5 , random_state = 42 ) elastic_net . fit ( X , y ) elastic_net . predict ([[ 1.5 ]])

array([1.54333232])

4. 조기 종료

조기종료란 경사하강법과 같이 반복학습 알고리즘을 규제하는 방법으로, 검증 에러가 최솟값에 도달하면 훈련을 중지(조기 종료)시키는 것이다.

다음은 배치 경사하강법으로 훈련시킨 복잡한 모델(고차원 다항회귀모델)을 보여준다.

# 비선형 데이터 생성 np . random . seed ( 42 ) m = 100 X = 6 * np . random . rand ( m , 1 ) – 3 y = 2 + X + 0.5 * X ** 2 + np . random . randn ( m , 1 )

plt . plot ( X , y , “b.” ) plt . show ()

이제 이 데이터를 이용해 조기종료할 시점이 어디일지 찾아보자.

from sklearn.model_selection import train_test_split # 훈련, 검증 데이터 셋 생성 X_train , X_val , y_train , y_val = train_test_split ( X [: 50 ], y [: 50 ]. ravel (), test_size = 0.5 , random_state = 10 )

from sklearn.base import clone from sklearn.metrics import mean_squared_error # 90차 다항회귀모델 및 스케일 조정 poly_scaler = Pipeline ([ ( “poly_features” , PolynomialFeatures ( degree = 90 , include_bias = False )), ( “std_scaler” , StandardScaler ()) ]) # 훈련, 검증 세트로 고차원 다항회귀모델을 통해 새로운 변수 추가(90개) X_train_poly_scaled = poly_scaler . fit_transform ( X_train ) X_val_poly_scaled = poly_scaler . transform ( X_val ) # SGD모델 생성 sgd_reg = SGDRegressor ( max_iter = 1 , tol =- np . infty , warm_start = True , # fit()메서드 호출마다 기존 유지 penalty = None , learning_rate = “constant” , eta0 = 0.0005 , random_state = 42 ) # 초기 검증오차 무한대로 지정 minimum_val_error = float ( “inf” ) best_epoch = None best_model = None # 1000번의 epoch 실행 for epoch in range ( 1000 ): sgd_reg . fit ( X_train_poly_scaled , y_train ) # 연속적인 fit메서드 호출 y_val_predict = sgd_reg . predict ( X_val_poly_scaled ) # 검증 세트 훈련 val_error = mean_squared_error ( y_val , y_val_predict ) # 검증 세트 평가 # 검증 오차를 계속 비교해가면서 최적 단계와 모델 찾기 if val_error < minimum_val_error : minimum_val_error = val_error best_epoch = epoch best_model = clone ( sgd_reg ) print ( "최적 step :" , best_epoch ) 최적 step : 239 warm_strat=True 옵션을 주면 fit() 메서드가 호출될 때 알고리즘이 처음부터 다시 학습하지 않고, 이전 모델 파라미터에서 훈련을 이어가도록 할 수 있다. 239번째 epoch에서 가장 작은 검증오차를 보여, 그 후로 학습이 진행되더라도 검증오차가 이보다 작아지지 않기 때문에 이 단계에서의 조기종료가 필요할 것으로 예상된다. 시각화해보자. sgd_reg = SGDRegressor ( max_iter = 1 , tol =- np . infty , warm_start = True , penalty = None , learning_rate = "constant" , eta0 = 0.0005 , random_state = 42 ) n_epochs = 500 train_errors , val_errors = [], [] for epoch in range ( n_epochs ): sgd_reg . fit ( X_train_poly_scaled , y_train ) y_train_predict = sgd_reg . predict ( X_train_poly_scaled ) y_val_predict = sgd_reg . predict ( X_val_poly_scaled ) train_errors . append ( mean_squared_error ( y_train , y_train_predict )) val_errors . append ( mean_squared_error ( y_val , y_val_predict )) best_epoch = np . argmin ( val_errors ) best_val_rmse = np . sqrt ( val_errors [ best_epoch ]) plt . annotate ( 'Best model' , xy = ( best_epoch , best_val_rmse ), xytext = ( best_epoch , best_val_rmse + 1 ), ha = "center" , arrowprops = dict ( facecolor = 'black' , shrink = 0.05 ), fontsize = 16 , ) best_val_rmse -= 0.03 # 좀 더 보기좋게 표시하기 위함 plt . plot ([ 0 , n_epochs ], [ best_val_rmse , best_val_rmse ], "k:" , linewidth = 2 ) plt . plot ( np . sqrt ( val_errors ), "b-" , linewidth = 3 , label = "Validation set" ) plt . plot ( np . sqrt ( train_errors ), "r--" , linewidth = 2 , label = "Training set" ) plt . legend ( loc = "upper right" , fontsize = 14 ) plt . xlabel ( "Epoch" , fontsize = 14 ) plt . ylabel ( "RMSE" , fontsize = 14 ) plt . show () 그래프를 보면 검증세트(Validation Set)는 알고리즘이 학습됨에 따라 RMSE는 감소하면서 최솟값에 도달했다가 다시 상승하는 것을 알 수 있다. 이는 모델이 훈련데이터에 과대적합되었기 때문에 나타나는 현상이다. SGD나 미니배치 경사하강법의 경우 비용함수의 곡선이 매끄럽지 않아서 최솟값에 도달했는지 확인하기 어려울 수 있다. 이럴때, 검증 오차가 일정 시간동안(일정 횟수동안) 최솟값보다 클 때 모델이 더 개선되지 않는다고 판단하여 학습을 멈추고 최소였던 검증오차로 되돌아가는 방식을 사용할 수 있다. Reference 도서 [Hands-0n Machine Learning with Scikit-Learn & Tensorflow] 를 공부하며 작성하였습니다.

다중 회귀 & 판다스 & 규제 (릿지 회귀, 라쏘 회귀 , 엘라스틱 넷 회귀 )

예를 들어 특성이 두개라고 하면,

‘타깃 = a * 특성1 + b * 특성2 + 절편’ 은 평면이 된다.

from sklearn.linear_model import Ridge ridge = Ridge() ridge.fit(train_scaled, train_target) print(ridge.score(train_scaled, train_target)) print(ridge.score(test_scaled, test_target)) import matplotlib.pyplot as plt train_score = [] test_score = [] alpha_list = [0.001, 0.01, 0.1, 1, 10, 100] for alpha in alpha_list: ridge = Ridge(alpha=alpha) ridge.fit(train_scaled, train_target) train_score.append(ridge.score(train_scaled, train_target)) test_score.append(ridge.score(test_scaled, test_target)) plt.plot(np.log10(alpha_list), train_score) plt.plot(np.log10(alpha_list), test_score) plt.xlabel(‘alpha’) plt.ylabel(‘R^2’) plt.show() ridge = Ridge(alpha=0.1) ridge.fit(train_scaled, train_target) print(ridge.score(train_scaled, train_target)) print(ridge.score(test_scaled, test_target))

So you have finished reading the 릿지 라쏘 topic article, if you find this article useful, please share it. Thank you very much. See more: 파이썬 릿지, 라쏘, 릿지, 라쏘, 엘라스틱, 릿지 라쏘 장단점, Lasso 뜻, lasso 머신러닝, 릿지 회귀 alpha, Ridge, Lasso Ridge

Leave a Comment