기계 학습 - 선형 회귀 - 경사도 하강 법 목표 함수 풀이

7109 단어 기계 학습

y = a + bx 의 목표 함수
지난 글 에서 우 리 는 선형 을 설명 했다. 본 고 는 선형 회귀 목표 함수 에 대한 문제 로 돌아 갔다.앞에서 알 았 듯 이 선형 회귀 의 목표 함 수 는:
J(a,b)=12m∑mi=1(a+bx(i)−y(i))2
J (a, b) 는 이원 함수 이다.우리 가 요구 하 는 것 은 두 개의 매개 변수 a 와 b 의 값 이다.만족 할 조건 은 a 와 b 가 이 값 을 취 할 때 J (a, b) 의 값 이 가장 작다 는 것 이다.우 리 는 지금 전에 말 한 알고리즘 인 경사도 하강 법 으로 그것 에 대해 구 해 를 할 것 이다.
경사 율, 도체 와 편 미분
경사도 하강 법 은 우리 앞에서 도 절 차 를 말 한 적 이 있다. 정리 해 보면 임 의 점 에서 시작 하여 이 점 에서 목표 함수 에 대해 도 도 를 구하 고 도체 방향 (경사도) 을 따라 '간다' (하강) 의 주어진 걸음 길 이 를 따라 이렇게 순환 하여 교체 하 며 '간다' 에서 도체 가 0 인 위치 까지 가면 극소 치 에 이른다.
왜 구 도 를 해 야 합 니까?아래 그림 에서 볼 수 있 듯 이 곡선 은 하나의 함 수 를 나타 내 는데 한 점 에서 의 가이드 수 치 는 바로 이 점 을 거 친 함수 곡선 접선 의 기울 임 률 이다.
 
도 수 는 함수 f (x) 가 x 축 에 있 는 한 점 x0 곳 에서 x 축 정방 향 의 변화 율 / 변화 추 세 를 따라 f ′ (x0) 로 기록 하 는 것 을 나타 낸다.
x 축의 어느 한 점 에서 f ′ (x0) > 0 이 라면 f (x) 의 함수 값 이 x0 시 에 x 축의 정방 향 을 따라 증가 하 는 것 을 설명 한다.좋 을 것 같 아.
일원 함 수 는 특정한 점 에서 x 축의 정방 향 변화 율 을 도수 라 고 한다.그러나 이원 또는 더 다 원 화 된 함수 (독립 변수 차원 > = 2) 라면 특정한 점 에서 특정한 차원 좌표 축 의 정방 향 변화 율 을 편도선 이 라 고 한다.
도체 / 편도선 은 변화 율 을 나타 내 고 변화 자 체 는 다른 개념 으로 나타 내 는데 이 개념 은 바로 미분 (대응 편도선, 이원 및 이상 함수 에 편 미분) 이다.
(편향) 도 수 는 함수 상의 한 점 에 대한 것 으로 하나의 값 이다.한편, 미분 은 하나의 함수 로 그 중의 모든 점 은 원 함수 에서 각 점 이 (편) 도체 방향 을 따라 변화 하 는 것 을 나타 낸다.
직관 적 이 고 엄격 하지 않 은 것 으로 볼 때 미분 은 (편) 도체 의 방향 을 따라 무한 한 증 가 를 하 는 것 이다.
우리 의 경사도 하강 알고리즘 을 생각해 보 자. 우리 가 해 야 할 일 은 하나의 점 에서 (도체 방향 을 따라) 한 걸음 앞으로 가 는 것 이 아니 냐?
우리 가 함수 의 (편) 미분 함 수 를 구 한 후에 특정한 변 수 를 그 안에 가 져 와 서 얻 은 (편) 미분 함수 에 대응 하 는 함수 값 은 바로 원 함수 가 이 점 에서 이 독립 변수 에 대한 유도 수치 이다.
그래서 우리 가 목표 함수 의 (편) 미분 함 수 를 구하 면 목표 함수 의 독립 변수 값 영역 에서 모든 가이드 수 치 를 구 할 수 있 습 니 다.
어떻게 함수 의 미분 함 수 를 구 합 니까?이것 은 우리 가 가장 기본 적 인 가이드 규칙 만 기억 하면 된다. 함수 (전체, 한 점 이 아 닌) 가이드 의 결 과 는 바로 미분 함수 이다.
본 고 에서 사용 할 수 있 는 것 은 상용 규칙 중에서 가장 자주 사용 하 는 몇 가지 일 뿐이다.
  • 상수 의 도 수 는 0: (c) '= 0 이다.
  • x 의 n 차 멱 의 도 수 는 n 배의 x 의 n - 1 차 멱: (xn) ′ = nxn − 1 이다.
  • 상수 곱 하기 함수 에 대한 구 도 는 이 상수 곱 하기 함수 의 도체 와 같다. (cf) '= cf';
  • 두 함수 f 와 g 의 합 도 수 는: (f + g) '= f' + g '이다.
  • 두 함수 f 와 g 의 적 도 수 는: (fg) '= f' g + fg '이다.

  • 경사도 하강 구 해 목표 함수
    J (a, b) 의 경우 두 개의 매개 변수 a 와 b 가 있 고 함수 J 는 각각 독립 변수 a 와 b 에 대해 미분 을 취한 결 과 는 다음 과 같다.
    ∂J(a,b)∂a=1(m)∑mi=1((a+bx(i))−y(i))
    ∂J(a,b)∂b=1(m)∑mi=1x(i)((a+bx(i))−y(i))
    그래서 우리 가 해 야 할 일 은:
    Step 1: a 와 b 의 초기 값 을 임의로 지정 합 니 다.
    a = 0; b = 0;
    Step 2: 경사도 하강 법 으로 a 와 b 를 풀 고 의사 코드 는 다음 과 같 습 니 다.
    repeat until convergence{
    a=a−α∂J(a,b)∂a
    b=b−α∂J(a,b)∂b }
    떨 어 지 는 높이 가 지정 한 한도 값 보다 작 으 면 떨 어 지 는 것 을 멈춘다.
    위 에서 펼 친 식 을 위 코드 에 가 져 오 는 것 은:
    repeatuntilconvergence{ sumA=0
    sumB=0
    fori=1tom{
    sumA=sumA+(a+bx(i)−y(i)) sumB=sumB+x(i)(a+bx(i)−y(i)) }
    a=a−αsumAm
    b=b−αsumBm
    }
    유 니 버 설 선형 회귀 모델 의 목표 함수 풀이
    y = a + bx 는 선형 회귀 모델 로 문제 가 없습니다.그러나 반대로 선형 회귀 모델 은 y = a + bx 의 형식 일 수 밖 에 없 습 니까?아니 지.
    y = a + bx = > f (x) = a + bx 는 실제 적 으로 선형 회귀 모델 의 특례 이다. 독립 변 수 는 하나의 차원 만 있 는 특례 이다. 이 모델 에서 독립 변수 x 는 1 차원 벡터 로 [x] 를 쓸 수 있다.
    통용 되 는 선형 회귀 모델 은 n 차원 독립 변 수 를 받 아들 이 는 것 이다. 즉, 독립 변 수 는 [x1, x2,..., xn] 형식 을 쓸 수 있다.그래서 해당 하 는 모델 함수 가 이렇게 쓰 여 있 습 니 다. f (x1, x2,..., xn) = a + b1x1 + b2x 2 +... + bnxn
    이렇게 쓰 면 매개 변수 가 좀 혼 란 스 러 워 요.θa 대신θ도착 하 다θn. b1 에서 bn 까지 대신 쓰 면 다음 과 같 습 니 다.
    f(1,x1,x2,...,xn)=θ0+θ1x1+θ2x2+...+θnxn
    우 리 는 x0 = 1 을 설정 합 니 다. 따라서 f (x0, x1, x2,..., xn) =θ0x0+θ1x1+θ2x2+...+θnxn
    그러면 대응 하 는 n 차원 독립 변수의 선형 회귀 모델 에 대응 하 는 목표 함 수 는 다음 과 같다.
    J(θ0,θ1,...,θn)=1(2m)∑mi=1(y′(i)−y(i))2=1(2m)∑mi=1(θ0+θ1x(i)1+θ2x(i)2+...+θnx(i)n−y(i))2
    재 설정: X = [x0, x1, x2,..., xn],Θ=[θ0,θ1,θ2,...,θn]
    그리고 모형 함 수 를 f (X) = 로 간략하게 씁 니 다.ΘTX
    습관 에 따라 우 리 는 여기에서 f (X) 를 h (X) 로 쓰기 때문에 모델 함 수 는 h (X) = 가 된다.ΘTX
    해당 목표 함수: J (Θ)=1(2m)∑mi=1(hθ(X(i))−y(i))2
    마찬가지 로 경사도 가 떨 어 지고 실현 하 는 과정 은:
    repeatuntilconvergence{
    Θ=Θ−α∂J(Θ)∂Θ }
    theta j 를 겨냥 한 형식 으로 세분 화 하 는 것 은:
    repeatuntilconvergence{
    forj=1ton{
    sumj=0
    fori=1tom{
    sumj=sumj+(θ0+θ1x(i)1+θ2x(i)2+...+θnx(i)n−y(i))x(i)j
    }
    θj=θj−αsumjm
    }
    }
    이것 이 바로 경사도 가 떨 어 지 는 통용 형식 이다.
    선형 회귀 의 초 매개 변수
    선형 회귀 모델 로 서 그 자체 의 매개 변 수 는?Θ,훈련 을 시작 하기 전에,Θ(몇 차원 이 든) 구체 적 인 수 치 는 모 르 지만 훈련 과정 은 바로 풀이 이다.Θ
    중 각 차원 의 수 치 를 계산 하 는 과정 입 니 다. 우리 가 경사도 하강 구 해 를 사용 할 때 경사도 하강 알고리즘 중의 보폭 매개 변 수 는:α,훈련 선형 회귀 모델 의 초 매개 변수 다. 훈련 프로그램 은 경사도 가 떨 어 지 는 계산 을 통 해 자동 으로 구 해 냈 다.Θ값어치α 해결 할 방법 이 없 으 니 손 으로 지정 해 야 합 니 다. 반대로 지정 되 지 않 았 다 면.α,경사도 하강 연산 은 전혀 진행 할 수 없다.
  • 선형 회귀 에 있어 경사도 가 떨 어 지면 걸음 길이 파라미터 인 알파 라 는 초 매개 변수 가 있 습 니 다.
  • 만약 에 훈련 결과 의 편차 가 비교적 크 면 걸음 길 이 를 줄 이 는 것 을 시도 할 수 있다. 만약 에 모델 의 질 이 좋 지만 훈련 효율 이 너무 낮 으 면 걸음 길 이 를 적당 하 게 확대 할 수 있다. 또한 동태 적 인 걸음 길 이 를 사용 하여 시작 하 는 길이 가 비교적 크 고 경사 가 줄 어 들 면서 걸음 길이 도 똑 같이 줄어든다.
  • 훈련 절차 가 인공 적 으로 교체 횟수 를 지정 하여 탈퇴 조건 을 확정 하 는 것 이 라면 교체 횟수 도 하나의 초 매개 변수 이다.
  • 훈련 프로그램 이 모델 결과 와 실제 결과 의 전체 차이 가 특정한 한도 값 보다 작 으 면 이 한도 값 은 초 매개 변수 이다.
  • 모델 유형 과 훈련 데이터 가 확 정 된 상황 에서 초 매개 변수 설정 은 모델 의 최종 품질 에 영향 을 주 는 관건 이 된다.
    한편, 한 모델 은 여러 개의 초 매개 변수 와 관련 되 는데 전략 을 어떻게 제정 하 는 지 최소 시 도 를 한 상황 에서 모든 초 매개 변수 설정 결 과 를 최 적 으로 만 드 는 것 은 실천 에서 매우 중요 하고 통일 적 인 방법 으로 해결 할 수 있 는 문제 이다.
    실제 응용 에서 조 참 방면 에 장 법 이 있 을 수 있 는 것 은 함부로 시도 하 는 것 이 아니 라 모두 가 모델 원리 와 데이터 에 대한 파악 에 달 려 있다.
    선형 회귀 훈련 / 예측 프로그램 작성
    만약 우리 가 코드 로 선형 회귀 프로그램 을 실현 하려 면 어떻게 해 야 합 니까? 물론, 당신 은 위의 설명 에 따라 처음부터 코드 로 한 번 실현 할 수 있 습 니 다.
    하지만 그 럴 필 요 는 없습니다. 이미 만들어 진 방법 창고 가 많 기 때문에 직접 사용 할 수 있 습 니 다.
    가장 흔히 볼 수 있 는 것 은 sklearn 라 이브 러 리 입 니 다. 아래 의 예 는 최초의 경험 과 임금 문제 에 대응 합 니 다. 우 리 는 앞의 7 개의 데 이 터 를 훈련 집 으로 하고, 뒤의 4 개 를 테스트 집 으로 삼 아 결 과 를 살 펴 보 겠 습 니 다.
        import matplotlib.pyplot as plt
        import numpy as np
        from sklearn import datasets, linear_model
        from sklearn.metrics import mean_squared_error, r2_score
    
        experiences = np.array([0,1,2,3,4,5,6,7,8,9,10])
        salaries = np.array([103100, 104900, 106800, 108700, 110400, 112300, 114200, 116100, 117800, 119700, 121600])
    
        #                ,     4        ,       
        X_train = experiences[:7]
        X_train = X_train.reshape(-1,1)
        X_test = experiences[7:]
        X_test = X_test.reshape(-1,1)
    
        #      (        )          
        y_train = salaries[:7]
        y_test = salaries[7:]
    
        #         
        regr = linear_model.LinearRegression()
    
        #         ——      ,        
        regr.fit(X_train, y_train)
    
        #             
        diabetes_y_pred = regr.predict(X_test)
    
        #                
        plt.scatter(X_test, y_test,  color='black')
        plt.plot(X_test, diabetes_y_pred, color='blue', linewidth=3)
    
        plt.xticks(())
        plt.yticks(())
    
        plt.show()
    

    최종 결 과 는 이렇다.
     
    요약:
     
    선형 회귀 란 직선 배열 에 가 까 운 견본 (점, 데이터) 이다.과학적 인 계산 을 통 해 이 견본 현상 을 가장 잘 묘사 할 수 있 는 선형 함 수 를 찾 습 니 다. 어떻게 이 선형 함 수 를 찾 습 니까? 이런 점 들 은 엄격 한 직선 정렬 이 아 닙 니 다. 우 리 는 비슷 한 결 과 를 얻 을 수 밖 에 없습니다. 즉, 모든 견본 점 을 가지 고 들 어가 서 얻 은 결과 와 직선 상의 결과 의 차이 가 가장 적 으 면 그 선 이 견본 의 선형 행 위 를 가장 잘 묘사 하고 차 이 를 어떻게 계산 하 는 지 하 는 것 입 니 다.? 상기 거리 함수 에 대해 2 차 함수 입 니 다. 이 함수 의 극치 가 바로 최소 값 입 니 다. 어떻게 극치 를 구하 고 경사도 하강 법 을 사용 합 니까?

    좋은 웹페이지 즐겨찾기