머신러닝

파이썬 라이브러리를 활용한 머신러닝 (1/3)

데이터_박과장 2023. 3. 24. 09:25

본 페이지는 "파이썬 라이브러리를 활용한 머신러닝"의 데이터와 코드 이해를 돕고자 작성한 페이지 입니다. 책을 구매해 주시면 감사하겠습니다.

 

 

머신러닝을 위한 질문

  • 어떤 정보를 얻기 위해 질문을 하고 있나요? 그 정보는 제공 가능한 데이터로부터 추론될 수 있나요?
  • 머신러닝의 관점에서, 내가 가진 문제를 가장 잘 기술하는 방법은 무엇일까요?
  • 문제를 해결하는 데 필요한 데이터는 충분히 수집되었나요?
  • 수집한 데이터의 특성은 무엇이며, 좋은 예측 결과를 만들어낼 수 있을까요?
  • 머신러닝 모델의 성능을 어떻게 측정할 수 있나요?
  • 머신러닝 솔루션이 다른 연구나 제품과 어떻게 상호작용할 수 있을까요?

 

머신러닝으로 해결할 수 있는 문제 예시:

지도 학습:

  • 손으로 쓴 우편번호 숫자 인식
  • 의료 영상을 기반으로 한 종양 판단
  • 의심스러운 신용카드 거래 탐지

 

비지도 학습:

  • 블로그 글의 주제 분류
  • 고객들을 취향이 비슷한 그룹으로 클러스터링
  • 비정상적인 웹사이트 접근 탐지

 

준지도 학습:

  • 강화 학습

 

머신러닝의 분류에 대해서는 아래 블로그에 자세히 내용을 담았습니다.

https://d-craftshop.tistory.com/7

 

머신러닝의 분류 (taxonomy of Machine learning)

머신러닝의 흐름을 이해할 수 있도록 분류체계에 대한 이해를 돕고자 한다. 서플라이체인과 관련하여 머신러닝이 사용된다는 포브스의 기사가 있고 관련 사진을 공유한다. 시간이 되시는 분들

d-craftshop.tistory.com

 

 

관련 라이브러리 소개

 

Scipy

적분, 푸리에변환, 최적화 등 금융분야에서 활발히 사용되는 라이브러리입니다. 책에서 희소행렬을 구현할때 본 라이브러리를 사용하였습니다. 

https://scipy.org/

 

SciPy

Fundamental algorithms SciPy provides algorithms for optimization, integration, interpolation, eigenvalue problems, algebraic equations, differential equations, statistics and many other classes of problems. Broadly applicable The algorithms and data struc

scipy.org

 

Numpy

행렬연산에 매우 유용한 라이브러리입니다. 라이브러리 사용에 대한 리뷰를 담았으니 참고하여 주시기 바랍니다.

https://d-craftshop.tistory.com/29

 

Numpy 라이브러리 리뷰 (1/2)

행렬계산, 데이터 인덱싱, 배열변환 등에서 많은 편의를 제공하는 numpy를 리뷰하는 시간을 갖겠습니다. 가급적 예시의 코드들을 '직접 써보며' 확인하신다면, 학습효과가 배가될 것으로 생각합

d-craftshop.tistory.com

 

https://d-craftshop.tistory.com/30

 

Numpy 라이브러리 리뷰 (2/2)

마저 고고 하시죠!! 바로 위에 seed에 번호 안달린거는 실행할 때마다 결과 달라집니다. 실컷 머신러닝 해놓고 결과 재현안되서 고생하는일 없도록 주의하시죠~ 바로 위에 코드는 직접 실행해 보

d-craftshop.tistory.com

 

Pandas

 

데이터 시리즈와 데이터프레임을 지원하는 라이브러리입니다. SQL, CSV, 엑셀파일 등을 읽어올 수 있어서 역시 매우 자주 사용되는 라이브러리로 사용법을 알아두시기 바랍니다.

 

https://d-craftshop.tistory.com/12

 

Pandas library

Pandas는 파이썬 라이브러리 중 하나로, 데이터를 쉽고 빠르게 정리하고 분석할 수 있는 도구입니다. Pandas와 함께 자주 사용되는 라이브러리인 NumPy는 다차원 배열 객체를 제공하는 반면, Pandas는

d-craftshop.tistory.com

 

 

 

 

MG-Learn

 

책에서 사용되는 파이썬 라이브러리 중, 교과서의 그래프, 데이터 적재 등과 관련된 코드와 관련된 mglearn 라이브러리가 있습니다. 자세히 알고 싶으신 분들은 깃헙에 방문해 보시는 것을 추천합니다.

mglearn


 

GitHub - amueller/mglearn: mglearn helper package for "Introduction to Machine Learning with Python"

mglearn helper package for "Introduction to Machine Learning with Python" - GitHub - amueller/mglearn: mglearn helper package for "Introduction to Machine Learning with Python"

github.com

 

 

 

 

 

 

일반화, 과대적합, 과소적합

일반화 (generalization):

  • 모델이 처음 보는 데이터에 대해 정확하게 예측할 수 있는 경우, 훈련 데이터에서 테스트 데이터로 일반화되었다고 합니다.
  • 머신러닝의 목적은 가능한 한 정확하게 일반화하는 것입니다.

 

과대적합 (overfitting):

  • 가진 정보를 모두 사용해서 너무 복잡하게 모델을 만드는 것을 의미합니다.
  • 모델이 훈련 데이터의 각 자료에 너무 가깝게 맞추어져서 새로운 데이터에 대한 예측력이 떨어지는 상황입니다.

 

과소적합 (underfitting):

  • 너무 간단한 모델이 선택되는 것을 의미합니다.
  • 모델이 너무 간단하여 데이터의 다양성과 면면을 잡아내지 못하고, 훈련 데이터에도 잘 맞지 않는 상황입니다.

 

모델 복잡도와 데이터 세트 크기의 관계

 

데이터 세트에 다양한 데이터 포인트가 많을수록 과대적합을 방지하면서 더 복잡한 모델을 만들 수 있습니다. 더 많은 데이터 포인트를 수집할수록 다양성이 증가하여 더 복잡한 모델을 구축할 수 있습니다. 그러나 중복되거나 매우 유사한 데이터 포인트를 수집하는 것은 도움이 되지 않습니다. 데이터 포인트를 복사하거나 추가하여 데이터 양을 늘리는 것은 의미가 없습니다.

 

 

소개된 예제 데이터 세트 설명

 

이진 분류 데이터 세트 (forge)

  • 이진 분류 데이터 세트
  • 두 개의 column과 타겟 변수로 이루어짐

 

회귀 데이터 세트 (wave)

  • 인위적으로 만든 회귀 데이터 세트
  • 입력 특성과 타겟 변수로 이루어짐 

 

위스콘신 유방암 데이터 세트 (cancer)

  • 유방암의 임상 데이터를 기록해 놓은 이진 분류 데이터 세트
  • 특성 30개, 데이터 포인트 569개 (악성 212개, 양성 357개)

 

보스턴 주택가격 데이터 세트 (boston)

  • 범죄율, 찰스 강 인접도, 고속도로 접근성 등의 정보를 이용해 보스턴 주변의 주택 평균 가격을 예측하기 위한 회귀 데이터 세트
  • 특성 13개, 데이터 포인트 506개

 

 

k-최근접 이웃 (k-NN) 알고리즘


k개의 '최근접 이웃'을 찾아 새로운 데이터 포인트에 대한 분류 또는 회귀 예측을 수행하는 알고리즘

최근접 이웃을 판단하는 거리는 맨하탄거리, 유클리디안 거리 등 몇가지 방법이 있지만 유클리디안 거리가 일반적입니다.

  • 분류: 가장 가까운 k 개 이웃의 분류 중 가장 많은 분류값을 예측값으로 이용합니다.
  • 회귀: 가장 가까운 k 개 이웃의 target값의 평균을 예측값으로 이용합니다.

 

아래는 예시 코드와 결과물입니다. 

샘플코드

 

결과물

 

K-NN 분류 실행 시 시사점

  1. 이웃이 1인 경우, 결정경계가 트레이닝 데이터에 가깝게 따라갑니다.
  2. 분류이웃의 개수가 많을 수록 분류 단면이 부드러워 지면서 매끄러운 클러스터링 결과물이 나옵니다. 

즉, 이웃의 개수가 적으면 과대적합이 되는 경우를 주의해야 하고, 이웃의 개수가 너무 많으면 과소적합의 가능성을 유의해야 합니다.

 

과대적합과 과소적합은 중요한 개념으로 아래의 블로그 페이지에 자세히 설명하였습니다.

https://d-craftshop.tistory.com/9

 

과대적합(Overfitting)과 과소적합(Underfitting)

과대적합(Overfitting)과 과소적합(Underfitting)은 머신러닝에서 모델의 성능과 관련된 중요한 개념입니다. 과대적합은 모델이 학습 데이터에 지나치게 맞추어져 새로운 데이터에 대해서는 일반화(gen

d-craftshop.tistory.com

 

 

과대적합 과소적합의 더욱 자세한 예시를 살펴보겠습니다.

 

위 코드를 입력하시면 아래와 같은 K-NN 알고리즘이 실행됩니다. 언급한대로 이웃이 1인 경우 트레이닝 데이터에 최적화 되어 테스트 데이터에 대한 예측력이 상대적으로 낮아짐을 확인할 수 있습니다.

반면, 이웃의 개수설정이 너무 많은 경우 트레이닝 셋 자체의 예측력이 낮아짐이 확인됩니다. (근데, 이웃이 많으니까 트레이닝과 테스트가 조화롭고 좋아 보이네요, 다수결 원칙의 좋은점인걸까요? ^^;;;)

과대적합과 과소적합의 이해

 

선형회귀 (Linear regression), OLS (ordinary least square)

 

  • 가장 간단하고 오래된 회귀용 선형 알고리즘입니다.
  • 예측값과 훈련 세트의 타겟 y값 사이의 평균제곱오차로 정확성을 측정합니다.
  • 평균제곱오차 (mean squared error)를 최소화하는 파라미터를 찾는것을 목표로 합니다.

평균제곱오차: 예측값과 타겟값의 차이를 제곱하여 더한 후 샘플의 개수로 나눈 값

 

선형회귀는 중요한 개념으로 아래의 블로그 페이지에 자세히 담았습니다.

https://d-craftshop.tistory.com/10

 

선형회귀(Linear Regression)

선형 회귀는 통계학에서 가장 기본적인 회귀 분석 기법 중 하나로, 하나의 독립 변수와 하나의 종속 변수 간의 선형적인 관계를 모델링하는 것입니다. 선형 회귀 모델은 종속 변수(y)와 독립 변

d-craftshop.tistory.com

 

K-NN 알고리즘 분류와 비교해 보는 시간을 갖도록 하시죠. 아래는 Linear regression결과입니다. 앞의 K-NN과 동일한 데이터셋을 사용하였습니다. 

 

 

 

뭔가 이웃의 개수가 굉장히 많은 K-NN느낌도 납니다. 그렇다면 훈련셋과 테스트셋 데이터 기준 예측력도 확인해 보도록 하겠습니다.

확실히 K-NN에 비해 예측력이 떨어진 느낌입니다. 한개의 선으로 데이터 셋 전체를 구분 지으려 하기에 선형회귀가 효과적인 툴이 되지는 못하였다고 생각합니다.