【 알고리즘 】 부분 가중 회귀 (Lowess)

7441 단어 기계 학습
  • 하나, 소개
  • 1.1 예측 문제
  • 1.2 평활 문제
  • 2. 알고리즘 설명
  • 2.1 알고리즘 사상
  • 2.2 매개 변수 설명
  • 2.3 가중치 함수
  • 2.4 복귀 교체
  • 2.5 간격 으로 회귀 하고 중간 삽입 값
  • 2.6 기타 매개 변수
  • 3. 실험 효과
  • 3.1 효과
  • 3.2 효율
  • 3.3 효과 대비


  • 프로필
    1.1 예측 문제
    예측 문제 에 대해 회귀 에서 가장 간단 한 선형 회 귀 는 선형 방법 으로 데 이 터 를 의합 하 는 추세 이다.그러나 주기성, 파동 성 이 있 는 데이터 에 대해 간단하게 선형 방식 으로 의합 할 수 없다. 그렇지 않 으 면 모델 의 편차 가 비교적 크 고 국부 가중 회귀 (lowess) 는 이런 문 제 를 잘 처리 할 수 있다.전체적인 추세 에 부합 되 는 선 을 만들어 예측 할 수 있다.
    1.2 평활 문제
    이 동시에 국부 가중 회귀 (lowess) 도 부 드 러 운 문 제 를 잘 해결 할 수 있다.데이터 가 매 끄 러 울 때 트 렌 드 나 계절 적 인 데 이 터 를 만 날 수 있 습 니 다. 이러한 데이터 에 대해 우 리 는 간단 한 평균치 의 플러스 마이너스 3 배 기준 차 를 제외 하고 이상 치 를 제거 할 수 없 으 며 트 렌 드 등 조건 을 고려 해 야 합 니 다.부분 가중 권 을 사용 하여 회귀 하면 하나의 추세 선 을 만 들 수 있 고 이 선 을 기선 으로 할 수 있 으 며 기선 에서 멀리 떨 어 진 것 은 진정한 이상 치 점 이다.실제로 국부 가중 회귀 (Lowess) 는 주로 부 드 러 운 문 제 를 처리 하 는 것 이 많다. 예측 문제 로 인해 더 많은 모델 이 더욱 정확하게 할 수 있 기 때문이다.하지만 매 끄 러 움 으로 볼 때 Lowess 는 직관 적 이 고 설득력 이 있다.
    알고리즘 설명
    2.1 알고리즘 사상
    부분 가중 회귀 (Lowess) 의 대체적인 사 고 는 하나의 점 x x 를 중심 으로 한 단락 의 길 이 를 frac f r a c 로 하 는 데 이 터 를 앞 뒤로 절단 하고 이 단락 의 데 이 터 를 가중치 함수 w 로 가중 하 는 선형 회귀 로 기록 (x, y ^) (x, y ^) 은 이 회귀 선의 중심 값 이 며 그 중에서 y ^ y ^ 는 의합 후 곡선 대응 값 이다.모든 n 개의 데이터 점 에 대해 n 개의 가중 회귀 선 을 만 들 수 있 고 모든 회귀 선의 중심 값 의 연결선 은 이 데이터 의 Lowess 곡선 이다.
    2.2 매개 변수 설명
    이 사고방식 에서 추출 할 수 있 는 조절 가능 한 매개 변 수 는 다음 과 같다. 1. 길이 frac f r a c 는 얼마나 긴 것 을 국부 적 으로 처리 해 야 하 는 지, frac f r a c 는 원 데이터 양의 비례 이다.2. 가중치 함수 w w, 어떤 가중치 함수 w 를 사용 하 는 것 이 적당 합 니까?3. 교체 횟수 it i t, 국부 회 귀 를 한 번 진행 한 후에 교체 가 필요 한 지, 다시 회 귀 를 해 야 하 는 지;4. dela d e l t a 회귀 간격, 정말 점 마다 가중 회 귀 를 계산 해 야 하 는 지, dela d e l t a 거 리 를 두 고 한 번 계산 할 수 있 는 지, 중간 에 계산 하지 않 은 것 은 삽입 값 으로 교체 하면 됩 니 다.
    알고리즘 알고리즘 의 대체적인 사상 과 조절 가능 한 매개 변 수 를 이해 한 후에 당신 은 즉시 사용 할 수 있 습 니 다 statsmodels.api.nonparametric.lowess.사용 방법 은 다음 과 같다.
    import statsmodels.api as sm
    lowess = sm.nonparametric.lowess
    result = lowess(y, x, frac=0.2, it=3, delta=0.0)

    그러나 statsmodels 에서 당신 은 1. 가중치 w 함수 가 조절 할 수 없다 는 것 을 발견 할 수 있 습 니 다.2. dela d e l t a 를 사용 한 후에 플러그 인 함 수 는 조절 할 수 없습니다.어쨌든 블랙박스, 너 는 조절 할 수 없 는 것 이 많다.그리고 이것 은 매우 심각 한 문제 가 하나 더 있 는데 구체 적 으로 본 고의 3.3 효과 대 비 를 볼 수 있다.다음은 관련 문 서 를 보고 생각 을 이해 한 후에 lowess 를 직접 쓸 수 있 고 속도 가 느 리 지 않 습 니 다.
    관련 문서 statsmodels 는 비교적 권위 있 는 참고 사항 을 제시 했다. (1979) "Robust Locally Weighted Regression and Smoothing Scatterplots". Journal of the American Statistical Association 74 (368): 829 - 836. "글 은 원시 가중 권 을 바탕 으로 교체 하여 노 봉 성 을 증가 시 키 는 것 이다.인터넷 에 또 다른 lowess 설명 이 있 습 니 다. 제 가 봤 습 니 다. 이것 과 달리 선택 적 으로 읽 을 수 있 습 니 다.
    2.3 가중치 함수
    lowess 를 이해 한 후에 알 수 있 듯 이 사실은 가중치 함수 가 고정 적 인 것 이 아니 라 일정한 규칙 조건 만 만족 시 키 면 된다 (물론 강제 적 이지 않 음). 조건 은 다음 과 같다. 1. W (x) > 0for | x | < 1 W (x) > 0 f o r | x | < 1;2. W(−x)=W(x) W ( − x ) = W ( x ) ; 3. W(x)isanonincreasingfunctionforx⩾0 W ( x ) i s a n o n i n c r e a s i n g f u n c t i o n f o r x ⩾ 0 ; 4. W(x)=0for|x|⩾1 W ( x ) = 0 f o r | x | ⩾ 1
    이 함수 의 대체적인 사고방식 을 선택 하 는 것 은 W (x) W (x) 가 0 보다 크 고 작용 역 이 [- 1, 1] 이 며 대칭 함수 이다. 이 함 수 는 중간 (0 곳) 에 대한 값 이 비교적 크 고 양쪽 (- 1 \ \ 1) 에 대한 값 이 비교적 작다.선택 방향 은 중간의 가중치 가 비교적 높 고 가중 회귀 에 대한 영향 이 비교적 크다 는 것 이다.[- 1, 1] 의 이 유 는 임의의 불규칙 한 데이터 세그먼트 에 대해 [- 1, 1] 에 압축 하여 처리 할 수 있 기 때문이다.
    가중치 함수 예 를 들 어 B 함수 (2 차 함수):
    B(x)={(1−x2)2,0,for|x|<1for|x|⩾1 B ( x ) = { ( 1 − x 2 ) 2 , f o r | x | < 1 0 , f o r | x | ⩾ 1
    W 함수 (3 차 함수):
    W(x)={(1−x3)3,0,for|x|<1for|x|⩾1 W ( x ) = { ( 1 − x 3 ) 3 , f o r | x | < 1 0 , f o r | x | ⩾ 1
    2 차 함수 와 3 차 함수 의 차 이 는 3 차 함수 가 주위 의 가중치 하강 속도 가 빠 르 고 부 드 러 울 때 효과 가 좋 으 며 대부분 분포 에 적용 되 지만 잔 차 의 방 차 를 증가 시 켰 다 는 것 이다. 가중치 함수 에 대해 선택 하면 1 차 교체 에 W 함수 (3 차 함수) 를 적용 하고 그 다음 에 B 함수 (2 차 함수) 를 교체 하여 사용한다.. 가중치 함수 의 사용: 1. 가중치 함수 W (x) W (x), 2. 데이터 세그먼트 [d1, d2] [d 1, d 2] 를 사용 하여 [− 1, 1] [− 1, 1] 에 대응 하 는 좌표 로 매 핑 하고 3. 함수 W (x) W (x) 를 가 져 와 각 점 에 대응 하 는 wi w i 를 계산한다.(나의 또 다른 블 로그: 선형 회귀, 가중 회귀, 유도 과정)
    2.4 복귀 교체
    위 에 서 는 가중치 함수 의 선택 과 사용 에 대해 언급 하 였 으 며, 교체 에 대해 언급 하 였 으 며, 여기 서 어떻게 교체 하 는 지 설명 하 였 다. 우선, 원 가 는 y 이 고, 예측 치 는 y ^ y ^ 이 며, 잔 차 는 e = y - y ^ e = y - y ^ 이 며, s s 는 | ei | e | 의 중위 이다. 노 스틱 성의 가중치 조정 부가 가치δk=W(ek6s) δ k = W (e k 6 s), 수 정 된 값 은δkwk δ k w k. 교체 과정 은 1. W 함수 (3 차 함수) 를 가중치 함수 로 사용 하여 wi w i 를 구한다. 2. wi w i 를 가중 회귀 로 계산 하여 y ^ y ^ 3. e = y - y ^ e = y - y ^ e = y - y ^ 와 s 4. B 함 수 를 수정 가중치 함수 로 하여 구하 다.δk=B(ek6s) δ k = B (e k 6 s), 산출δkwk δ k w k 5. 장군δkwk δ k w k 는 수정 가중치 로 2, 3, 4 절 차 를 반복 합 니 다.
    이 교 체 는 명확 한 중지 조건 이 없다. 대량의 실험 을 통 해 알 수 있 듯 이 원문 에서 2 차 교체 라 고 언급 하면 기본적으로 수렴 된다. 내 가 실험 을 할 때 3 번 정도 기본적으로 수렴 되 었 고 근문 에서 묘사 한 것 이 많 지 않다.
    2.5 간격 회귀, 중간 삽입 값
    부분 가중 권 을 사용 하여 회귀 할 때 각 점 에서 가중 권 을 사용 하여 회귀 하면 시간 이 비교적 걸 릴 수 있 기 때문에 일부 점 에 대해 가중 권 을 사용 하여 회귀 하 는 반면 가중 권 을 사용 하지 않 은 점 은 삽 치 법 으로 처리 하면 속도 가 많이 빨 라 지고 큰 효과 에 영향 을 주지 않 습 니 다.사용: 선형 플러그 인, 2 차 플러그 인, 3 차 플러그 인 등 방법 을 추천 합 니 다.
    2.6 기타 매개 변수
    길이 frac f r a c 비율, 글 에서 제시 한 적용 비율 은 0.49, statsmodels 이다.기본 적 인 것 은 0.666 입 니 다. 또한 글 에서 또 하나의 매개 변 수 는 여러 가지 가중 권 회귀 로 적합 하 다 는 것 입 니 다. 가장 높 은 것 은 d 입 니 다. 토론 을 통 해 제 시 된 결론 은 d = 1 d = 1 시, 즉 선형 회귀 로 기본 적 인 대부분의 장면 에 적합 하 다 는 것 입 니 다. 따라서 본 블 로 그 는 처음부터 선형 가중 권 회귀 소 개 를 사용 하여 관심 이 있 는 사람 은 원문 을 볼 수 있 습 니 다.
    실험 효과
    3.1 효과
    위 에서 전체적인 사고 와 상세 한 매개 변수 의미 등 을 말 했 습 니 다. 본 후에 코드 를 쓰 는 것 은 어렵 지 않 을 것 입 니 다. 여기 서 위조 코드 정 리 를 하 겠 습 니 다.
    data_x # x   
    data_y # y   
    map(x in data_x):               #    x
        x_list = getRange(x, data_x, frac)  #  x   ,  frac       
        w = calFuncW(x_list)                #  w        
        y_hat = weightRegression(x_list, data_y[x_list], w)         #   y_hat
        for it in iters:                    #   iters 
            err, s, new_w = calNewWeight(y_hat, data_y[x_list], B)  #   B    ,   new_w
            y_hat = weightRegression(x_list, data_y[x_list], new_w) #   new_w  y_hat
        result = y_hat[x]                   #       

    3.2 효율
    위 에 쓰 인 lowess 는 spark 에서 실 행 됩 니 다. executors 15g * 4cores 는 30W * 8 데 이 터 를 계산 하고 각 데이터 90 의 데이터 바 길 이 를 10 분 이면 완성 할 수 있 습 니 다 (데이터 읽 기와 쓰기 포함). 개인 적 으로 효율 이 매우 높다 고 생각 합 니 다.
    3.3 효과 대비statsmodels 와 비교 하면 오른쪽 그림 은 statsmodels 함 수 를 사용 한 결과 이 고 왼쪽 그림 은 자신 이 글 에 따라 쓴 운행 결과 이 며 모두 같은 데이터 이다.
    일부 특수 데이터 에 대해 직접 사용 statsmodels 하 는 것 은 매우 의외 의 결과 가 있 을 뿐만 아니 라 교체 가 진행 되면 서 여전히 수렴 되 지 않 는 다 는 것 을 알 수 있다.
    오른쪽 그린 라인 의 가장 낮은 부분 과 같은 부 드 러 운 결과 가 나 올 수도 있다.
    교체 가 진행 되면 서 더욱 심 한 진동 이 일 어 났 다. 따라서 결론 은 신중 statsmodelsstatsmodels 함수 로 자신 이 더 믿 을 수 있 고 자신 이 조절 할 수 있 는 부분 이 더 많다 는 것 이다.

    좋은 웹페이지 즐겨찾기