Python Machine Learning/회귀
-
회귀 - 주택 가격Python Machine Learning/회귀 2020. 8. 24. 17:28
이번에는 주택 가격 데이터 세트를 이용해 회귀 분석을 더 심층적으로 학습 해보겠습니다. 데이터 사전 처리 - target 값은 맨 마지막 칼럼인 SalePrice 코드설명 - 데이터 세트의 전체 크기와 칼럼의 타입, 그리고 Null이 있는 칼럼과 그 건수를 내림차순으로 출력한 결과 ==> 데이터세트트 총 1460개의 레코드와 81개의 피처로 구성돼 있으며, target을 제외한 80개의 피처중 43개는 문자형 나머지는 숫자형입니다. 전체 데이터중 null 데이터가 있는 피처도 있으며 너무 많은 피처는 드롭하겠습니다. 이전 실습에서 했던 것처럼 회귀 모델을 적용하기 전에 타깃 값의 분포도가 정규 분포인지 확인 해보겠습니다. 코드설명 -> target값의 분포도가 정규분포에서 벗어나 왼쪽으로 치우친 형태. ..
-
회귀 - 실습 자전거 대여 수요 예측Python Machine Learning/회귀 2020. 8. 24. 15:44
자전거 대여 수요 학습 데이터 세트를 이용해 선형 회귀와 트리 기반 회귀를 비교해 보겠습니다. 해당 데이터는 캐글의 자전거 대여 수요 예측 경연에서 사용된 학습 데이터 세트이며 해당 데이터 세트에서는 2011년 1월부터 2012년 12월까지 날짜/시간, 기온, 습도, 풍속 등의 정보를 기반으로 1시간 간격 동안의 자전거 대여 횟수가 기재돼 있습니다. 데이터 세트의 주요 칼럼은 다음과 같습니다. 데이터 클렌징 및 가공 먼저 가장 기본적으로 데이터 세트를 이용해 모델을 학습한 후 대여 횟수를 예측해 보겠습니다. -> 해당 데이터 세트는 10886개의 레코드와 12개의 칼럼으로 구성. 칼럼들 중 datatime은 int, float 형이 아닌 object 형이며 년-월-일 시:분:초 문자 형식으로 되어있으므로..
-
회귀- 회귀 트리Python Machine Learning/회귀 2020. 8. 22. 17:36
선형 회귀의 경우 회귀 계수의 관계를 모두 선형으로 가정하는 방식입니다. 일반적으로 선형 회귀는 회귀 계수를 선형으 로 결합하는 회귀 함수를 구해, 여기에 독립변수를 입력해 결과값을 예측하는 방식이며, 비선형 회귀 역시 비선형 회귀 함수를 통해 결과값을 예측합니다. 다만 비선형 회귀는 회귀 계수의 결합이 비선형일 뿐. 머신러닝 기반의 회귀는 회귀 계수를 기반으로 하는 최적 회귀 함수를 도출하는 것이 주요 목표입니다. 반면에 회귀 트리는 회귀 함수를 기반으로 하지 않고 결정 트리와 같이 트리기반으로 합니다. 즉, 회귀를 위한 트리를 생 성하고 이를 기반으로 회귀 예측을 하는 것으로, 회귀 트리의 경우 분류 트리와 크게 다르지 않습니다. 다만 리프 노드에 서 예측 결정값을 만드는 과정에 차이가 있으며 분류 ..
-
회귀 - 로지스틱 회귀Python Machine Learning/회귀 2020. 8. 22. 16:53
로지스틱 회귀는 선형 회귀 방식을 분류에 적용한 알고리즘입니다. 즉, 로지스틱 회귀는 분류에 사용됩니다. 로지스틱 회귀 역시 선형 회귀 계열이며 (회귀가 선형인가 비선형인가는 독립변수가 아닌 가중치 변수가 선형인지 아닌지를 따름) 로지스틱 회귀가 선형 회귀와 다른 점은 학습을 통해 선형 함수의 회귀 최적선을 찾는 것이 아니라 시그모이드(Sigmoid) 함수 최적선을 찾고 이 시그모이드 함수의 반환 값을 확률로 간주해 확률에 따라 분류를 결정한다는 것입니다. 많은 자연, 사회 현상에서 특정 변수의 확률 값은 선형이 아니라 위의 시그모이드 함수와 같이 S자 커브 형태를 가진다. 시그모이드 함수의 정의는 y= 1/ 1+e^-x이며 위의 그림과 식에서 알 수 있듯이 시그모이드 함수는 x 값이 +, -로 아무리 ..
-
회귀 - 선형 회귀 모델을 위한 데이터 변환Python Machine Learning/회귀 2020. 8. 22. 16:10
선형 회귀 모델과 같은 선형 모델은 일반적으로 피처와 타겟 간에 선형의 관계가 있다 가정하고, 이러한 최적의 선형함수를 찾아내 결과를 예측합니다. 또한 선형 회귀 모델은 피처값과 타겟값의 분포가 정규 분포(즉 평균을 중심으로 종 모양으로 데이터 값이 분포된 형태) 형태를 매우 선호하며, 타겟값의 경우 정규 분포 형태가 아니라 특정값의 분포가 치우친 왜곡된 형태의 분포도일 경우 예측 성능에 부정적인 영향을 미칠 가능성이 높으며 피처값 역시 결정값보다는 덜하지만 왜곡된 분포도로 인해 예측 성능에 부정적인 영향을 미칠 수 있습니다. 따라서 선형 회귀 모델을 적용하기전에 먼저 데이터에 대한 스케일링/정규화 작업을 수행합니다. 하지만 이러한 스케일링/정규화 작업을 선행한다고 해서 무조건 예측 성능이 향상되는 것은..
-
회귀 - 규제 선형 모델 ( 릿지, 라쏘, 엘라스틱넷 )Python Machine Learning/회귀 2020. 8. 17. 19:22
규제 선형 모델 - 릿지, 라쏘, 엘라스틱넷 이전까지 선형 모델의 비용함수는 RSS를 최소화하는, 즉 실제 값과 예측값의 차이를 최소화하는 것만 고려하다보니 학습데이터에 지나치게 맞추게 되고, 회귀 계수가 쉽게 커지는 현상이 발생했습니다. 이럴 경우에는 오히려 테스트 데이터 세트에서는 예측 성능이 저하되기 쉽습니다. 즉 RSS 최소화 방법과 회귀계수가 커지지 않도록 균형을 이뤄야 합니다. 회귀 계수의 크기를 제어해 과적합을 개선하려면 비용(Cost) 함수의 목표가 다음과 같이 alpha는 학습 데이터 적합 정도와 회귀 계수 값을 크기 제어를 수행하는 튜닝 파라미터입니다. 위 비용 함수 목표가 해당 식의 값을 최소화하는 W 벡터를 찾는 것일 때 alpha가 0 또는 매우 작은 값이라면 비용 함수 식은 기존..
-
회귀 - 2Python Machine Learning/회귀 2020. 8. 17. 19:21
지금까지 설명했던 회귀는 독립변수와 종속변수의 관계가 일차 방정식 형태로 표현된 회귀였으며, 회귀가 독립변수의 2차, 3차 방정식과 같은 다항식으로 표현되는 것을 다항 회귀라고 합니다. 다항 회귀는 비선형 회귀로 혼동하기 쉽지만, 선형 회귀라는 점을 주의 해야하며 회귀에서 선형 회귀/비선형 회귀를 나누는 기준은 회귀 계수가 선형/비선형인지에 따른 것이지 독립 변수의 선형/비선형 여부와는 무관합니다. 또한 사이킷런은 다항 회귀를 위한 클래스를 제공하지 않지만 다항 회귀 역시 선형 회귀이기 때문에 비선형 함수를 선형 모델에 적용시키는 방법을 사용해 구현합니다. 다항회귀 - 사이킷런은 PolynomicalFeatures 클래스를 통해 피처를 Polynomical( 다항식 )피처로 변환합니다 - 해당 클래스는 ..
-
회귀 - 2Python Machine Learning/회귀 2020. 8. 15. 20:12
지금까지 설명했던 단순 선형 회귀를 사이킷런에서 구현한 클래스인 LinearRegression을 이용해 보스턴 주택 가격 예측 회귀를 구현해보겠습니다. 그 전에 LinearRegression 클래스에 대해 살펴보겠습니다. LinearRegression - LinearRegression 클래스는 예측값과 실제 값의 RSS를 최소화해 OLS( ordinary least squares ) 추정 방식으로 구현한 클래스이며, fit( )메서드로 x, y배열을 입력 받으면 회귀 계수인 W를 coef_ 속성에 저장합니다. - 입력 파라미터 1. fit_intercept : 불린 값으로 디폴트는 True. intercept( 절편 )값을 계산할 것인지 말지를 결정 2. normalize : 불린 값으로 디폴트는 Fal..