8 가지 Python 으로 선형 회 귀 를 실현 하 는 방법 비교 상세 설명

머리말
파 이 썬 으로 선형 회 귀 를 수행 하 는 방법 에 대해 서 는 대부분의 사람들 이 sklearn 의 linearmodel,그러나 사실은 Python 은 적어도 8 가지 선형 회귀 방법 이 있 고 sklearn 이 가장 효율 적 이지 않다 는 것 이다.
오늘 은 선형 회귀 에 대해 이야기 합 시다.맞 아,데이터 과학계 원로 모델 로 서 선형 회 귀 는 거의 모든 데이터 과학자 의 입문 필수 과목 이 야.대량의 수 통 과 관련 된 모델 분석 과 검 사 를 떠 나 서 당신 은 정말 선형 회 귀 를 능숙 하 게 응용 할 수 있 습 니까?반드시!
이 글 에서 발췌 균 은 Python 으로 선형 회 귀 를 실현 하 는 8 가지 방법 을 소개 한다.이 8 가지 방법 을 이해 하면 서로 다른 수요 에 따라 가장 효율 적 인 방법 을 유연 하 게 선택 하여 선형 회 귀 를 실현 할 수 있다.
'보도 불 로'의 선형 회귀
지금까지 심도 있 는 학습 은 데이터 과학 의 새로운 인기 가 된 지 오래다.앞으로 10 년 을 미 루 더 라 도 SVM,boosting 등 알고리즘 은 정확도 에서 완전 폭발 선형 으로 돌아 갈 수 있다.
왜 우 리 는 선형 회귀 가 필요 합 니까?
한편,선형 회귀 가 모 의 할 수 있 는 관 계 는 선형 관계 에 그 치지 않 는 다.선형 회귀 중의'선형'은 계수 의 선형 을 말 하 는데 특징 에 대한 비 선형 변환 과 광의 선형 모델 의 홍 보 를 통 해 수출 과 특징 간 의 함수 관 계 는 고도 비 선형 일 수 있다.다른 한편,더욱 중요 한 점 이다.선형 모델 의 해석 성 으로 인해 물리학,경제학,상업 학 등 분야 에서 대체 하기 어 려 운 위 치 를 차지 했다.
그렇다면 어떻게 파 이 썬 으로 선형 회 귀 를 실현 합 니까?
기계 학습 라 이브 러 리 scikit-learn 이 광범 위 하 게 유행 하기 때문에 자주 사용 하 는 방법 은 이 라 이브 러 리 에서 linear 를 호출 하 는 것 입 니 다.model 에서 데 이 터 를 맞 춥 니 다.이것 은 기계 학습 의 다른 흐름 선 특징(예 를 들 어 데이터 귀 일 화,모델 계수 정규 화,선형 모델 을 다른 하류 모델 에 전달)의 다른 장점 을 제공 할 수 있 지만 데이터 분석가 가 빠 르 고 간편 하 게 회귀 계수(일부 기본 적 인 관련 통 계량)를 확정 해 야 할 때 이것 은 가장 빠 르 고 간편 한 방법 이 아니다.
다음은 더 빠 르 고 간결 한 방법 을 소개 하 겠 지만 그들 이 제공 하 는 정 보 량 과 모델 링 의 유연성 이 다르다.
각종 선형 회귀 방법의 전체 소스 코드 는 글 끝의 GitHub 링크 에서 찾 을 수 있다.그들 대부분 은 Scipy 가방 에 의존한다.
Scipy 는 Python 의 Numpy 확장 을 기반 으로 구 축 된 수학 알고리즘 과 함수 의 집합 입 니 다.사용자 에 게 조작 과 시각 화 된 데 이 터 를 제공 하 는 고급 명령 과 클래스 를 통 해 대화 식 Python 세 션 에 강력 한 기능 을 추가 합 니 다.
8 가지 방법 으로 선형 회 귀 를 실현 하 다
방법 1:Scipy.polyfit()or numpy.polyfit()

이것 은 가장 기본 적 인 최소 2 곱 하기 다항식 의합 함수(least squares poly nomial fit function)로 데이터 세트 와 그 어떠한 차원 의 다항식 함수(사용자 가 지정)를 받 아들 이 고 제곱 오 차 를 최소 화 하 는 계 수 를 되 돌려 줍 니 다.함수 에 대한 상세 한 설명 을 드 립 니 다.간단 한 선형 회귀 에 있어 서 1 차원 함 수 를 선택 할 수 있다.그러나 더 높 은 차원 의 모델 을 만 들 고 싶다 면 선형 특징 데이터 에서 여러 가지 특징 을 구축 하고 모델 을 만 들 수 있다.
방법 2:Stats.linregress()

이것 은 고도 로 전문 화 된 선형 회귀 함수 로 Scipy 의 통계 모듈 에서 찾 을 수 있다.그러나 이 는 두 조 의 측정 데이터 의 최소 2 곱 하기 회 귀 를 최적화 하 는 데 만 사용 되 기 때문에 유연성 이 상당히 제한 된다.따라서 이 를 이용 해 광의 선형 모델 과 다 원 회귀 적합 을 할 수 없다.그러나 그 특수성 때문에 단순 선형 회귀 에서 가장 빠 른 방법 중 하나 이다.적합 한 계수 와 거리 항목 을 제외 하고 R2 계수 와 표준 차 등 기본 통 계량 도 되 돌려 준다.
방법 3:Optimize.curvefit( )

이것 은 Polyfit 방법 과 일치 하지만 본질 적 으로 더욱 일반적이다.이 강력 한 함 수 는 scipy.optimize 모듈 에서 왔 습 니 다.최소 2 곱 하기 최소 화 를 통 해 임의의 사용자 정의 함 수 를 데이터 세트 에 맞 출 수 있 습 니 다.
간단 한 선형 회귀 에 있어 서 선형 mx+c 함수 만 쓰 고 이 평가 함 수 를 호출 할 수 있 습 니 다.다 원 회귀 에 도 적용 되 고 최소 2 곱 하기 도량 이 가장 작은 함수 매개 변수 배열 과 협 방 차 행렬 로 돌아 가 는 것 은 자명 하 다.
방법 4:numpy.linalg.lstsq

이것 은 행렬 분 해 를 통 해 선형 방정식 그룹의 최소 2 승 해 를 계산 하 는 기본 적 인 방법 이다.numpy 패키지 에서 온 간편 선형 대수 모듈.이 방법 에서 유클리드 2-범 수|b-ax|||2 최소 화 된 벡터 x 를 계산 하여 등식 ax=b 를 구한다.
그 방정식 은 무수 한 해,유일한 해 또는 무 해 가 있 을 수 있다.만약 에 a 가 방진 이 고 만 순위 라면 x(반올림)는 방정식 의'정확'해 이다.
너 는 이 방법 을 사용 하여 일원 또는 다원적 선형 회 귀 를 해서 계 산 된 계수 와 잔 차 를 얻 을 수 있다.작은 비결 은 함 수 를 호출 하기 전에 x 데이터 뒤에 1 열 1 을 더 해서 절 거 리 를 계산 해 야 한 다 는 것 이다.이것 은 선형 회귀 문 제 를 더욱 신속하게 해결 하 는 방법 중의 하나 로 증명 되 었 다.
방법 5:Statsmodels.OLS()
Statsmodels 는 작은 Python 패키지 로 다양한 통계 모델 에 클래스 와 함 수 를 제공 하고 통계 테스트 와 통계 데이터 탐색 에 사용 되 는 클래스 와 함 수 를 제공 합 니 다.모든 추정 은 하나의 범 결과 목록 에 대응 합 니 다.기 존의 통계 팩 에 따라 테스트 를 하여 통계 결과 의 정확성 을 확보 할 수 있다.
선형 회귀 에 대해 서 는 이 가방 의 OLS 나 일반 최소 2 곱 하기 함 수 를 사용 하여 평가 과정 에서 완전한 통계 정 보 를 얻 을 수 있 습 니 다.
기억 해 야 할 작은 기술 은 데이터 x 에 상수 하 나 를 수 동 으로 추가 하여 거 리 를 계산 해 야 한 다 는 것 이다.그렇지 않 으 면 기본 적 인 상황 에서 계수 만 얻 을 수 있다.다음은 OLS 모델 의 전체 결 과 를 캡 처 한 것 입 니 다.그 결과 R 이나 줄 리 아 등 통계 언어 와 마찬가지 로 풍부 한 내용 을 담 았 다.

방법 6 과 7:행렬 의 역 구 해석 을 사용한다.
조건 이 좋 은 선형 회귀 문제(그 중에서 적어도 데이터 점 개수>특징 수량 을 만족 시 키 고 계수 구 해 는 간단 한 폐 식 행렬 해 가 존재 하 는 것 과 같 아서 최소 2 곱 하기 최소 화 된다.다음 식 으로 보 여 줍 니 다.

여기에 두 가지 선택 이 있다.
(a)간단 한 곱셈 으로 행렬 의 역 을 구한다.
(b)먼저 x 의 Moore-Penrose 광의 위 역 행렬 을 계산 한 다음 에 y 와 점 적 을 취한 다.두 번 째 과정 은 기이 한 값 분해(SVD)와 관련 되 기 때문에 느 리 지만 좋 은 조건 이 없 는 데이터 세트 에 잘 적용 된다.
방법 8:sklearn.linearmodel.LinearRegression( )
이것 은 대부분의 기계 학습 엔지니어 와 데이터 과학자 들 이 사용 하 는 전형 적 인 방법 이다.물론 현실 세계 의 문제 에 대해 서 는 Lasso 회귀 와 Ridge 회귀 등 교차 검증 과 정규 화 된 알고리즘 으로 대 체 될 수 있 지만 이런 고급 함수 의 핵심 은 바로 이 모델 자체 입 니 다.
8 가지 방법 효율 비교
데이터 과학자 로 서 정확 하고 빠 른 방법 이나 함 수 를 찾 아 데이터 모델 링 작업 을 완성 해 야 한다.모델 이 워낙 느 리 면 빅 데이터 세트 에 병목 이 생 길 수 있다.
확장 성 을 확인 할 수 있 는 좋 은 방법 은 데이터 세트 의 크기 를 계속 늘 리 고 모델 을 실행 하 며 모든 운행 시간 을 트 렌 드 맵 으로 그 리 는 것 이다.
다음은 소스 코드 및 실행 결과 입 니 다.
https://github.com/tirthajyoti/PythonMachineLearning/blob/master/Linear_Regression_Methods.ipynb )。
간단 하기 때문에 1000 만 개의 데이터 점 에 이 르 더 라 도 stats.linregress 와 간단 한 행렬 의 역 효 과 는 가장 빠 른 방법 이다.
8 가지 Python 으로 선형 회 귀 를 실현 하 는 방법 중 어떤 방법 이 가장 효율 적 입 니까?
간단 한 매트릭스 역 구 해 방안 이 빠르다.
데이터 과학자 로 서 우 리 는 똑 같은 임 무 를 분석 하고 모델 링 을 하 며 특정한 문 제 를 위해 최선 의 방안 을 선택해 야 한다.
본 논문 에서 우 리 는 8 가지 간단 한 선형 회귀 방법 을 토론 했다.대부분 일반 화 된 다 원화 와 다항식 회귀 모델 로 확장 할 수 있다.
본 논문 의 목 표 는 주로 이런 방법의 상대 적 인 운행 속도 와 복잡 도 를 토론 하 는 것 이다.우 리 는 데이터 양 이 지속 적 으로 증가 하 는 합성 데이터 세트(최대 1000 만 개의 견본)에서 테스트 를 하고 각 방법의 연산 시간 을 제시한다.
놀랍게도 널리 사용 되 는 scikit-learnlinear모델 에 비해 간단 한 행렬 의 역 구 해 방안 이 오히려 빠르다.
우 리 는 또한 프로젝트 코드 를 수 집 했 습 니 다.여러분 은 이곳 에서 코드 를 다운로드 하고 글 에서 언급 한 8 가지 방법 을 직접 실행 할 수 있 습 니 다.
https://github.com/tirthajyoti/PythonMachineLearning/blob/master/Linear_Regression_Methods.ipynb
영문 원문 주소:https://medium.freecodecamp.org/data-science-with-python-8-ways-to-do-linear-regression-and-measure-their-speed-b5577d75f8b
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기