[머신러닝] 기본 알고리즘

XIXI·2022년 9월 2일
0

KT 에이블

목록 보기
6/10
post-thumbnail

🌱 Linear Regression

✏️ 회귀

회귀의 원래 의미는 옛날 상태로 돌아가는 것
평균으로 돌아가려는 경향이 있음.

✏️ 절편과 기울기

y = ax + b

a: 기울기 (x가 1 증가할 때 증가하는 y값)
b: 절편

✏️ 선형 회귀 이해

데이터에 최선의 직선을 긋는 것 = 데이터의 규칙 식
y = ax + b 에서 최선의 기울기 a와 y 절편 b를 정하는 방법이 필요함
이걸 선형 회귀라 하고 직선을 회귀선이라고 부른다.

✏️ 최적의 회귀모델

최적의 회귀모델은 전체 데이터 오차 합이 최소가 되는 것을 말함.
오차합이 최소가 되는 가중치 w1과 편향 w0을 찾는 것을 의미.

y^ = w0 + wx1

독립변수 개수로 회귀분석을 두가지로 나눔.
단순 회귀, 다중 회귀

✏️ 단순 회귀(Simple Regression)

  • 독립변수 하나와 종속변수 하나가 일대일 대응 관계를 갖는 선형 회귀

  • x 값 하나로 y값을 설명할 수 있는 경우
    ex) 행복지수가 연수입만! 으로 결정 됨.

  • 반복 학습을 통해 최선의 가중치와(w1)와 편향(W0)을 찾음

단순 회귀의 회귀 계수

print(model.coef_) 가중치
print(model.intercept_) 편향

모델학습이란 오차가 최소가 되는 가중치와 편향을 구하는 과정

✏️ 다중 회귀(Multiple Regression)

  • 여러 독립변수가 종속변수에 영향을 미치는 선형 회귀

  • y 값을 설명하기 위해 여러 개의 x 값이 필요한 경우
    ex) 여러 요인들에 의해 보스턴 집 값이 결정됨

  • 회귀식: y^ = w0 + w1x1 + w2x2 +w3x3 + ... + wnwn

  • 각 독립변수의 최선의 가중치와 편향을 찾음

다중 회귀의 회귀 계수

print(list(x_train[feature]))
print(model.coef_) # 가중치
print(model.intercept_) # 편향

왜 이걸 하냐?

y 결과값에 영향을 미치는 가장 큰 독립변수 x를 설명하기 위해서.
가중치의 절대값이 가장 큰 독립변수가
y 결과값에 영향을 미치는 가장 큰 독립변수

✏️ K-Nearest Neighbor

최근접 이웃 = 유유상종
회귀와 분류에 사용되는 지도학습 알고리즘
회귀와 분류 둘 다 사용한다!!!
이해하기 쉽지만 연산이 느린 단점

✏️ K 값

k(탐색하는 이웃 개수)에 따라 데이터를 다르게 예측
적절한 k 값을 찾는게 가장 중요함. 기본값 5
k를 1로 설정할 경우 편향된 정보
k를 홀수로 설정 -> 짝수인 경우 과반수 이상 이웃이 안 나올 수 있음
검증 데이터로 가장 높은 k를 찾아 KNN 알고리즘 사용

✏️ 거리 구하기

✏️ 정규화 작업

KNN 모델 성능을 위해 정규화(Normalization) 작업 필요
모든 데이터가 같은 범위 데이터를 가질 때 좋은 성능
정규화 여부에 따라 KNN 모델 성능이 달라질 수 있음

✏️ 정규화 공식

x = (x - x.min()) / (x.max() - x.min())

KNN 장단점

장점

  • 다른 알고리즘보다 이해가 쉬움
  • 거리, 횟수, 점수와 같은 숫자로 구분된 속성에 우수
  • 예측 시점에 기존 데이터와 거리를 계산, 별도 모델 학습이 필요 없음
  • 모델을 별도로 구축하지 않아 Lazy Model 이라 부름

단점

  • 데이터 하나를 예측할 때 마다 전체 데이터와 거리 계산으로 속도가 느림
  • 예측 값이 지역 정보에 많이 편향될 수 있음
  • k 개수가 적거나 예외적인 데이터가 이웃으로 존재할 경우 예측 값이 틀릴 가능성이 높다

💐 느낌점

머신러닝 파트는 코딩이 어렵다기 보다는 원리와 개념을 이해하는게 어렵게 느껴진다. 원리와 개념 숙지만 된다면 데이터를 훨씬 더 잘 이해하고 결과를 해석하는 능력을 기를 수 있을 것 같다. 코딩 연습과 함께 개념을 잘 이해해야겠다.

profile
Life is experience:)

0개의 댓글