선형 회귀 알고리즘 이해하기
선형 회귀(Linear Regression)는 머신 러닝에서 가장 기초적인 알고리즘이라고 할 수 있는데요, 관련해서 잘 정리되어 있는 기사가 있어 공유합니다. (출처: Medium) 선형 회귀의 고전적인 대표적인 예를 든다면, 키와 몸무게의 그래프를 그리는 것입니다. 그러면 키와 몸무게가 증가함에 따라 대략적으로 표시되는 선을 볼 수 있습니다. 선형 회귀를 수학적으로 말하면, 데이터에 가장 적합한 직선을 찾는 것입니다. 키와 몸무게의 그래프를 통한 선형 회귀 이해하기 1. 데이터 탐색 * Gender, height, weight라는 세 개의 컬럼이 있는 테이블을 생각해 보세요. Python의 df.info()을 통해서 대략적인 데이터 분포 등의 탐색이 가능합니다. * Height와 weight의 데이터 분포가 대칭을 이루는 두 개의 종 모양 곡선이라고 가정하겠습니다. (Normal distribution) 2. 가장 적합한 선 찾기 가장 적합한 선을 찾는 다양한 접근 방식이 있는데 보통은 scikit-learn을 활용하고 pre-build된 선형 회귀 알고리즘을 적용합니다. #1: OLS(Ordinary Least Square) * OLS의 목적은 제곱 예측 오류의 집계를 최소화(MSE, minimizing the aggregate of squared prediction errors)하여 최적의 계수 A와 B를 결정하는 것입니다. 그리고 이것은 선형 회귀의 비용 함수(cost function)입니다. * 미적분학(calculus)을 활용하여 부분 도함수(derivatives)의 속성을 활용하여 이 도함수가 0인 비용 함수의 최소값을 찾습니다. 이를 통해 A와 B 모두에 대해 가장 정확한 선형 모델에 대한 직접적인 경로를 찾을 수 있습니다. #2: 경사하강법(Gradient Descent) * 경사하강법은 비용 함수를 최소화하는 데 사용되는 최적화 알고리즘으로, 예측 모델에 대한 가장 정확한 가중치 값(weight value)을 찾는 데 도움이 됩니다. * 언덕 꼭대기에 서 있는 모습을 상상해 보면, 목표는 아래 계곡이고, 이는 비용 함수의 최소 지점을 나타냅니다. 이에 도달하기 위해 가중치 A와 B에 대한 초기 추측부터 시작하고 이러한 추측을 반복적으로 개선합니다. 이러한 과정은 언덕을 내려가는 것과 유사한데요, 각 단계마다 주변 환경을 평가하고 궤적을 조정하여 다음 단계에서 계곡 바닥에 더 가까워지도록 합니다. * 각 단계는 방정식에서 lr로 표시되는 필수 하이퍼 파라미터인 학습률(learning rate)에 따라 진행됩니다. 이 학습률은 단계 크기 또는 매개변수 A와 B에 대한 조정을 제어하여 최소값을 초과하지 않도록 합니다. #3: 사이킷런(SciKit Learn) * 파이썬(Python)을 좋아하는 사람들을 위한 사이킷런은 기계 학습을 위한 스위스 아미 나이프입니다.😃 회귀, 분류, 클러스터링 등을 위한 도구들이 많이 있습니다. * 선형 회귀 라이브러리를 가져와 object를 만들고 데이터로 train하기만 하면 됩니다. 이것은 몇 줄의 코드로 구현 가능합니다. 3. 선형 회귀의 가정 * 선형성(Linearity): 데이터는 그림을 그릴 때 선을 형성해야 합니다. 간단한 산점도(scatter plot)를 사용하여 이 선형 패턴을 확인할 수 있습니다. * 독립성(Independence): 우리의 입력 변수는 독립적이어야 합니다. * 잔차(residuals)의 정규 분포: 관측값(observed)과 예측값(predicted) 사이의 차이는 그림을 그릴 때 종곡선을 형성해야 합니다. * 잔차의 등분산: 오차의 확산은 독립 변수의 모든 값에서 일관되어야 합니다. 선형 회귀는 말도 안 될 정도로 간단해 보이지만, 데이터 분석의 장점은 단순함에 있습니다.👍 원본 기사는 아래와 같습니다. 원본 기사를 통해 차트, 그래프, 코드 소스 등을 확인하실 수 있습니다. 감사합니다.🙏 [Source Link] https://medium.com/forcodesake/simplifying-linear-regression-beginners-guide-real-world-example-machine-learning-algorithm-4f73ee72f60-24f73ee72f60