#scikit-learn 다항식 회귀

할 일

  • ElasticNet을 사용한 다항식 회귀
  • 다항식 회귀 모델의 예측(그림 포함)
    # 학습 데이터
  • 데이터 생성에 사용되는 공식으로
    y = 2x^2 + 3x + 1
    
    
    고스 소음을 넣은 물건을 사용했다.
    학습 데이터는 100이다.
    예측에 사용된 데이터는 동일한 공식으로 재생성되며,
    50개를 준비했다
    xb2 =  10 * np.random.rand(100, 1)
    yb2 =  xb2**2 + 3.05*xb2 + 1.1 + np.random.randn(100,1) 
    
    plt.scatter(xb2,yb2,c = "b")
    
    

    다항식 회귀 준비


    데이터 X(설명 변수)의 차원은 1이지만 데이터만 보면
    이차 다항식에서 나온 것 같습니다.
    sklearn의 PolinomialFeatures 기능 사용
    원 데이터의 제곱 후의 데이터를 새로운 특징량으로 첨가하다.
    from sklearn.preprocessing import PolynomialFeatures as PF
    
    pf = PF(degree=2, include_bias = False)
    xb2_poly = pf.fit_transform(xb2)
    
    
    

    Elastic-Net을 통한 학습


    이번에 사용한 기종은 능선 회귀, 라소 회귀 등을 포함한다.
    기본적으로 학습에서 최소화해야 할 원가 함수의 정규화항(제약)
    하면, 과도한 학습을 방지할 수 있다.
    Elastic Net은 척추 회귀와 Lasso 회귀에 사용 가능
    이번에는 단순한 데이터이기 때문에 2차 다항식으로 회귀해야 한다고 판단하기 쉽다
    실제로 특징량이 더 많기 때문에 이것은 매우 유용하다.
    
    J(\theta) = MSE(θ) + r\alpha \sum_i^n|\theta_i| + \frac{1- r}{2} \alpha \sum_i^n \theta^2_i
    \\
    
    *MSE(\theta):最小二乗法誤差。
    \\
    制約を加えない場合によく用いられるコスト関数。
    
    
    이 Elastic Net에서 구속조건의 정도를 매개변수로 나타냅니다.α및
    산등성이로 돌아가기로 결정하고,lasso로 돌아가려면 어느 r를 중시해야 하는가
    정할 필요가 있다.이것은 격자 검색 등을 사용합니다
    실제로 어떤 파라미터를 사용할 때 예측 성능이 좋은지 탐색할 필요가 있다.
    이번에는 Elastic Net을 사용했지만 아래 블러셔 등을 사용했습니다.
    어떤 모델을 사용해야 하는지에 대한 판단을 하다.
    
    from sklearn.linear_model import ElasticNet
    
    
    e_net = ElasticNet(alpha = 0.1, l1_ratio = 0.5)
    e_net.fit(xb2_poly, yb2)
    
    
    

    예측


    그리고 상술한 예측을 데이터로 예측한다.
    이때 numby의 정렬 등을 사용하여 설명 변수의 순서를 승차순으로 설정해야 한다.
    xb2_t = 10* np.random.rand(50, 1)
    print("xb2_t\n",xb2_t.shape)
    #np.sortの使い方注意
    xb2_t = np.array([np.sort(xb2_t[:,0])]).reshape(50,1)
    print("xb2_t after\n", xb2_t.shape)
    xb2t_poly = pf.fit_transform(xb2_t)
    yb2_pred = e_net.predict(xb2t_poly)
    
    plt.scatter(xb2,yb2,color = "blue")
    plt.plot(xb2_t,yb2_pred,"red")
    plt.show()
    
    

    참고 자료


    scikit-learn과 TensorFolow 기반의 실천 기계 학습
    저자: 오르 론, 하전륜 대감역, 장미 고홍역
    https://www.oreilly.co.jp/books/9784873118345/

    좋은 웹페이지 즐겨찾기