단 4줄의 코드로 만들어보는 선형회귀 모형
원본 : https://towardsdatascience.com/simple-linear-regression-in-four-lines-of-code-d690fe4dba84
선형 회귀 분석에서는 보유한 데이터와 예측하려는 데이터 간의 관계를 살펴 봅니다.
선형 회귀 분석은 기본적이고 일반적으로 사용되는 예측 분석 유형입니다. 그것은 모든 통계 기법 중에서 가장 널리 사용됩니다. 하나 이상의 예측 변수 와 하나의 결과 변수 간의 관계를 수량화합니다 .
선형 회귀 모델 은 두 변수 또는 요인 간의 관계를 보여 주거나 예측하는 데 사용됩니다. 회귀 분석 은 일반적으로 두 변수 간의 상관 관계를 보여주기 위해 사용됩니다.
예를 들어 야구 팀의 선수에 대한 정보를보고 해당 시즌을 얼마나 잘 수행 할 수 있는지 예측할 수 있습니다. 회사에 대한 변수를 검토하고 재고가 잘 될지 예측할 수 있습니다. 사람들이 공부하는 시간과 시험에서 얼마나 잘했는지 조사하고 싶거나, 시험에서 얼마나 잘 할 수 있는지에 대한 전반적인 숙제 점수를 볼 수도 있습니다. 이것은 매우 유용한 기술입니다!
"); background-size: 1px 1px; background-position: 0px calc(1em + 1px);">Pixabay 를 통해 StockSnap의 사진 "); background-size: 1px 1px; background-position: 0px calc(1em + 1px);">
기억하십시오 : 상관 관계는 인과 관계가 아닙니다 ! 두 변수 사이에 관계가 존재한다고해서 한 변수가 다른 변수를 발생시킨 것은 아닙니다. 회귀 분석은 인과 관계를 예측하는 데 사용되지 않습니다. 변수가 서로 어떻게 관련되어 있는지 볼 수 있습니다. 변수가 어느 정도 관련되어 있는지 검사 할 수 있습니다. 이러한 관계에 대해 자세히 살펴 보는 것은 당신에게 달려 있습니다.
선형 회귀 모델의 방정식이 예측 하는 변수를 종속 변수 라고합니다 . 우리는 이것을 하나의 y 라고 부릅니다 . 종속 변수를 예측하는 데 사용되는 변수를 독립 변수 라고합니다 . 우리는 그것들을 X 라고 부릅니다 .
예측 ( y )이 다른 변수 ( X ) 에 의존하는 것처럼 생각할 수 있습니다 . 그것은 y를 종속 변수로 만듭니다 !
에서는 단순한 선형 회귀 분석 , 각 관찰은 두 개의 변수로 구성된다. 이것들은 독립 변수와 종속 변수입니다. 다중 회귀 분석 은 두 개 이상의 독립 변수와 이들 변수가 어떻게 독립 변수와 상관 관계가 있는지 살펴 봅니다. y 가 X 와 어떤 관련이 있는지를 나타내는 방정식을 회귀 모델 이라고합니다 !회귀는 "); background-size: 1px 1px; background-position: 0px calc(1em + 1px);">Francis Galton 경 (Sir Francis Galton)에 의해 깊이 연구되었다 . 그는 자신이 반대하는 가치가있는 많은 신념을 가진 매우 문제가있는 성격 이었지만, 창 부상 치료와 말의 박멸과 같은 것에 대한 멋진 정보가 담긴 책을 저술했습니다. 그는 또한 지문, 청각 검사에 대한 유용한 작업을 수행했으며 첫 번째 기상지도를 고안했습니다. 그는 1909 년 기사 작위를 받았습니다.
그는 동식물에 대한 부모와 자녀의 상대적인 크기에 관한 데이터를 조사하면서 평범한 부모보다 평균 이상인 부모가 평균보다 큰 자녀를 가지지 만 그 자녀는 그들 자신의 상대적인 위치면에서 덜 클 것이라고 관찰했다 세대. 그는 그것을 평범함으로 회귀 라고 불렀다 . 그것은 근대적 인 의미 에서의 회귀 가 될 것 입니다.
(나는 일상 생활로 들어가야한다는 평범함으로의 회귀 ...라는 문구에 반짝임이 있다는 것을 나는 말해야 만한다. 를 통해 분명히하기 위해, 우리는 기대 (예측) 에 대해 말하고 있으며 절대적인 확실성은 아닙니다!
회귀 모델은 실제 가치 (예 : 급여 또는 신장)를 예측하는 데 사용됩니다. 당신의 독립 변수가 시간 이라면, 당신은 미래 가치를 예측하고 있습니다. 그렇지 않으면 모델이 현재 값이지만 알 수없는 값을 예측합니다. 회귀 기술의 예는 다음과 같습니다.
단순 회귀
다중 회귀 분석
다항식 회귀
지원 벡터 회귀
직원의 경력 및 연봉을 포함하는 일부 데이터를 검토한다고 가정 해 보겠습니다. 이 두 그림의 상관 관계를보고 싶습니다. 어쩌면 숫자를 무작위로 설정하는 종류의 새로운 비즈니스 또는 소규모 회사를 운영하고있는 것일 수 있습니다.
그런 두 변수 사이의 상관 관계를 어떻게 찾을 수 있습니까? 이를 이해하기 위해 우리는이 관계에 가장 적합한 피팅 라인이 무엇인지 알려주는 모델을 만들 것입니다.
다음은 간단한 선형 회귀 공식입니다.
(고교 대수학의 기울기 또는 추세선의 방정식이라고 생각할 수 있습니다.)
이 방정식에서, y 는 당신이 설명하려고하는 종속 변수입니다. 이 기사의 나머지 부분에서 y 는 특정 수년의 경험 후에 직원의 급여가됩니다.
위의 독립 변수를 볼 수 있습니다. 그것은 예측 된 값의 변화와 관련된 변수입니다. 독립 변수가 변경을 초래했거나 단순히 변경과 연관되어있을 수 있습니다. 기억하세요, 선형 회귀는 원인을 증명하지 않습니다 !
계수는 독립 변수의 변화가 y의 변화와 완전히 같지 않을 수도 있다고 설명하는 방법입니다.
이제 증거를 살펴보고 싶습니다. 우리는 데이터에 가장 잘 맞는 데이터를 통해 선을 긋기를 원합니다. 회귀선은 양의 선형 관계 (선이 위로 기울어지는 것처럼 보임), 음의 선형 관계 (선이 아래로 기울어 짐) 또는 실제로 전혀 관계가 없음 (평행선)을 나타낼 수 있습니다.
상수는 선이 세로 축과 교차하는 지점입니다. 예를 들어, 아래의 그래프에서 0 년간의 경험을 살펴보면 급여는 약 3 만 달러가 될 것입니다. 따라서 아래 차트의 상수는 약 3 만 달러입니다.
경사가 가파르면, 수년간의 경험으로 얻을 수있는 돈이 많아집니다. 예를 들어, 1 년 이상의 경험으로 연봉 (y)이 추가로 10,000 달러까지 올랐지 만 경사가 가파르면 15,000 달러 이상으로 올 수 있습니다. 부정적인 경사면에서는 경험을 쌓으면서 실제로 돈을 잃을 지 모르지만 오랫동안 그 회사에서 일하지 않기를 바란다.
그래프를 볼 때 선에서 실제 관측치까지 수직선을 그릴 수 있습니다. 실제 관측치를 점으로 볼 수 있으며, 선은 모델 관측치 (예측치)를 표시합니다.
우리가 그린 라인은 직원이 실제로 얻는 것과 그가 모델링 한 것 (예상) 사이의 차이입니다. 우리는 제곱 의 최소 합계 를 찾아 최적의 행을 찾습니다. 이는 모든 제곱 된 차이의 합계를 취하여 최소값을 찾는 것을 의미합니다.
그것은 보통 최소 제곱 법 이라고 불립니다 !
먼저 수입!
npy로 numpy
가져 오기 matplotlib.pyplot plt로
가져 오기 pandas as pd이제 우리의 데이터를 전처리합시다! 데이터 정리 및 사전 처리에 대해 잘 모르는 "); background-size: 1px 1px; background-position: 0px calc(1em + 1px);">경우이 기사를 참조하십시오 . 도서관 가져 오기, 데이터 준비 및 기능 확장을 안내합니다.
데이터 클리닝 및 전처리에 대한 완벽한 초보자 안내서분만에 기계 학습 모델의 데이터를 성공적으로 준비하는 방법
우리는 그 기사의 코드를 복사하여 붙여 넣고 두 가지 작은 변화를 일으킬 것입니다. 물론 데이터 세트의 이름을 변경해야합니다. 그런 다음 데이터를 살펴 보겠습니다. 예를 들어, 종업원에게 수년간의 경험 1 칼럼과 월급 1 칼럼이 있다고 가정 해 봅시다. 우리의 인덱스는 0부터 시작한다는 것을 명심하십시오. 우리가 이미 설정 한 것처럼 종속 변수에 대한 데이터와 마지막 컬럼을 분리 할 것입니다. 그러나 이번에는 독립 변수에 대한 두 번째 칼럼을 잡을 것이므로이를 잡기 위해 사소한 변경을 할 것입니다.
dataset = pd.read_csv ( 'salary.csv')
X = dataset.iloc [:, : -1] .values
y = dataset.iloc [:, 1]. 값
이제 X는 피처 (우리 독립 변수)의 행렬이고 y는 종속 변수의 벡터입니다. 완전한!
데이터를 학습 세트와 테스트 세트로 나눌 시간입니다. 일반적으로 우리는 우리의 훈련 및 테스트 데이터를 위해 80/20 분할을 할 것입니다. 그러나 여기서 우리는 단지 30 개의 관측치로 구성된 작은 데이터 세트로 작업하고 있습니다. 이번에는 20 개의 교육 관찰과 10 개의 테스트 크기를 갖도록 데이터를 분할 할 것입니다.
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split (X, y, test_size = 1/3, random_state = 0)
X_train, X_test, y_train 및 y_test가 있습니다! 이제 갈 준비가되었습니다!
(이 과정의 모든 단계에서 배우고, 변경하고, 향상시키는 데 약 백만 가지가 있음을 잊지 마십시오. 모델의 힘은 당신과 당신이 넣은 모든 것에 달려 있습니다!)
우리는 모두 동일한 결과를 얻을 수 있도록 임의의 상태 0을 설정합니다. (계산에 임의의 요소가있을 수 있으며, 아무도 긴장하지 않도록 우리는 모두 같은 페이지에 있어야합니다.)
우리는 훈련 세트에 대한 모델을 훈련시키고 나중에 우리의 정보를 기반으로 결과를 예측할 것입니다. 우리의 모델이됩니다 배우고 학습 집합의 상관 관계를. 그런 다음 테스트 세트를 사용하여 값을 예측하도록함으로써 학습 한 내용을 테스트합니다. 우리는 우리의 결과를 테스트 세트의 실제 결과와 비교하여 모델이 어떻게 작동 하는지를 볼 수 있습니다!
법이지는 교육 및 테스트 집합으로 데이터를 분할 ! 만약 당신이 그것을 훈련 시키는데 사용했던 것과 같은 데이터로 결과를 테스트한다면, 아마도 당신의 모델은 좋지 않습니다. 알려지지 않은 데이터로 사용할 수있는 모든 것을 배우기보다는 원하는 것을 암기했습니다. 그것은 overfitting이라고 불리며, 그것은 당신 이 좋은 모델을 구축하지 않았다는 것을 의미합니다 !
우리는 실제로 어떤 스케일링을 할 필요가 없습니다!
이제 모델을 교육 세트에 적용 할 수 있습니다!우리는 "); background-size: 1px 1px; background-position: 0px calc(1em + 1px);">Scikit을 사용 하여 이것을 배우게됩니다. 먼저 선형 모델 라이브러리와 선형 회귀 클래스를 가져옵니다. 그런 다음 회귀 객체 인 클래스 객체를 만듭니다. 우리는 생성 한 회귀 객체를 훈련 세트에 맞추기위한 방법 (fit 방법)을 사용할 것입니다. 객체를 만들려면 이름을 지정한 다음 괄호를 사용하여 객체를 호출합니다. 우리는 약 3 줄의 코드에서이 모든 것을 할 수 있습니다!
Scikit-Learn에서 선형 회귀를 가져와 우리가 계속 사용할 수 있도록합시다. 괄호 사이에는 우리가 사용하고자하는 데이터를 지정하여 모델이 우리가 원하는 것을 정확히 알 수 있도록합니다. X_train과 y_train 모두를 얻고 싶습니다. 왜냐하면 우리가 모든 교육 데이터를 다루기 때문입니다.자세한 내용 은 "); background-size: 1px 1px; background-position: 0px calc(1em + 1px);">설명서를 참조하십시오!
이제 회귀 분석기를 작성하여 교육 자료에 적용 할 준비가되었습니다.
sklearn.linear_model에서 가져 오기 LinearRegression regressor
= LinearRegression ()
regressor.fit (X_train, y_train)
거기는! 우리는 데이터에 간단한 선형 회귀 분석을 사용하고 있으며 테스트 세트에서 예측 능력을 시험 할 준비가되었습니다!
이것은 기계 학습입니다! 우리는 회귀 분석기 (regressor)를 만들었고 수년 간의 경험과 훈련 세트에 대한 급여 간의 상관 관계를 배웠습니다.
이제는 가지고있는 정보를 기반으로 미래의 데이터를 예측할 수 있습니다. 우리의 기계는 직원의 경력 연수를 기준으로 신입 사원의 급여를 예측할 준비가되었습니다!
우리의 회귀 분석기를 사용하여 새로운 관측치를 예측해 봅시다. 우리는 새로운 관측으로 기계가 무엇을 하는지를보고 기계가 배운 것을보고 싶습니다.
우리는 예측 된 값의 벡터를 생성 할 것입니다. 이것은 y_pred라고 부르는 종속 변수에 대한 예측 벡터입니다. 이를 위해 우리는 생성하고 훈련 한 회귀 변수를 취하여 예측 방법을 사용할 수 있습니다. 우리는 어떤 예측을해야하는지 지정해야하므로 테스트 세트를 포함시키고 싶습니다. regressor.predict의 입력 매개 변수에 대해 새로운 관측치의 특징 행렬을 지정하고자하므로 X_test를 지정합니다.
y_pred = regressor.predict (X_test)
진지하게. 그게 한 줄의 코드를 필요로합니다!
이제 y_test는 테스트 세트의 10 가지 관측치의 실제 급여이고 y_pred는 우리 모델에 의해 예측 된이 10 명의 직원의 예상 급여입니다.
훌륭해! 4 줄의 코드에서 선형 회귀!
결과를 시각화합시다! 우리는 우리의 예측과 실제 결과의 차이점을 알아야합니다.
결과를 해석하기 위해 그래프를 플롯 할 수 있습니다. 먼저, plt.scatter를 사용하여 실제 관측치를 플롯하여 산점도를 만들 수 있습니다. (matplotlib.pyplot을 일찍 plt로 가져 왔습니다.)
먼저 훈련 세트를 살펴볼 것이므로 X 좌표에 X_train과 y 좌표에 y_train을 표시합니다. 그러면 우리는 아마 약간의 색깔을 원할 것입니다. 우리는 우리의 관측치를 파란색으로, 그리고 회귀선 (예측치)은 빨간색으로 할 것입니다. 회귀선의 경우 X 좌표에 X_train을, X_train 관측치에 대한 예측을 다시 사용합니다.
X 축과 Y 축에 대한 제목과 레이블을 사용하여 조금 더 해보겠습니다.
plt.patter (X_train, y_train, color = 'blue')
plt.plot (X_train, regressor.predict (X_train), color = 'red')
plt.title ( '급여 vs 경험 (트레이닝 세트)')
plt.xlabel ( '경력 년')
plt.ylabel ( '급여')
plt.show ()
이제 우리는 파란 점을 볼 수 있습니다. 파란 점은 우리의 진정한 가치이며, 레드 라인의 예상 값입니다!
테스트 세트에 대해서도 똑같은 작업을 해봅시다! 테스트 세트 제목을 변경하고 코드에서 "train"을 "test"로 변경합니다.
plt.scatter (X_test, y_test, color = 'blue')
plt.plot (X_train, regressor.predict (X_train), color = 'red')
plt.title ( '급여 vs 경험 (테스트 세트)')
plt.xlabel ( '경력 년')
plt.ylabel ( '급여')
plt.show ()
두 번째 줄에서 X_train을 X_test로 변경하지 않는다는 것을 확인하십시오. 우리의 퇴행자는 훈련 세트에 의해 이미 훈련 받았다. 우리가 훈련 할 때, 우리는 하나의 독특한 모델 방정식을 얻었다. 교체 할 경우 동일한 선을 얻게되며 동일한 회귀 선의 새로운 점을 만들게됩니다.
이것은 꽤 좋은 모델입니다!
우리 모델은이 새로운 직원 급여를 예측하는 훌륭한 일을하고 있습니다. 실제 관찰 중 일부는 예측과 동일하며 위대합니다. y 와 X 변수 사이에는 100 % 종속성이 없기 때문에 일부 예측은 완전히 정확하지 않습니다.
훌륭해! 라이브러리를 가져오고 정리되고 사전 처리 된 데이터를 가져 와서 간단한 선형 회귀 분석기를 작성하고 교육하고 예측을 위해 사용하며 결과를 시각화했습니다.
축하합니다 !!!
기계 학습을위한 초보자 가이드 : 4 줄의 코드에서 다중 선형 회귀!다중 선형 회귀 (및 역방향 제거)의 기본 사항을 정복하고 데이터를 사용하여 미래를 예측하십시오!
기계 학습은 통계를 기반으로하며 단순 선형 회귀 분석기와 같은 개념이 없으면 기계 학습을 이해하기 시작할 수 없습니다. 그렇다고해서 통계와 기계 학습이 같은 것을 의미하지는 않습니다! 선형 회귀 분석기 (linear regressor)는 기계 학습의 기본 빌딩 블록의 일부인 것 이외에 통계 (및 데이터 과학)의 도구입니다.
통계와 기계 학습의 차이점에 대해 더 알고 싶다면 PhD 연구원 Matthew Stewart 가이 환상적인 조각을 확인해 보는 것이 좋습니다 ! 그는 이러한 개념을 명확히하는 아름다운 일을하고 있으며 그의 기사를 읽는 데 시간을 할애하는 것이 좋습니다.