【 알고리즘 】 부분 가중 회귀 (Lowess)
7441 단어 기계 학습
프로필
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
하 는 것 은 매우 의외 의 결과 가 있 을 뿐만 아니 라 교체 가 진행 되면 서 여전히 수렴 되 지 않 는 다 는 것 을 알 수 있다.오른쪽 그린 라인 의 가장 낮은 부분 과 같은 부 드 러 운 결과 가 나 올 수도 있다.
교체 가 진행 되면 서 더욱 심 한 진동 이 일 어 났 다. 따라서 결론 은 신중
statsmodels
의 statsmodels
함수 로 자신 이 더 믿 을 수 있 고 자신 이 조절 할 수 있 는 부분 이 더 많다 는 것 이다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
형태소 분석은 데스크톱을 구성하는 데 도움이?문자×기계 학습에 흥미를 가져와 개인 범위의 용도를 생각해, 폴더 정리에 사용할 수 있을까 생각해 검토를 시작했습니다. 이번 검토에서는 폴더 구성 & text의 읽기 → mecab × wordcloud를 실시하고 있...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.