실습 · 연습문제 2개
반공간으로의 투영과 KKT 승수 halfspace-projection
점 에서 가장 가까운 반공간 의 점을 찾는 문제
를 KKT 조건으로 푼다. 함수 project_halfspace(p, a, c)를 완성해 최적해 x(shape (n,))와 승수 mu(스칼라)를 반환한다.
KKT 조건은 다음 네 가지다.
- stationarity:
- primal feasibility:
- dual feasibility:
- 상보적 여유:
테스트는 반환값이 네 조건을 모두 만족하는지, 그리고 반공간 안의 무작위 점들보다 에 더 가까운지 확인한다.
힌트: 두 경우로 나눈다. 가 이미 반공간 안에 있으면 제약이 비활성이다. 그렇지 않으면 제약이 활성()이고, stationarity 식에서 를 로 나타낸 뒤 활성 조건에 넣어 를 구한다.
Soft thresholding과 proximal gradient로 Lasso 풀기 soft-threshold-ista
Lasso 문제
는 L1 항이 미분 불가능해서 경사하강을 그대로 쓸 수 없다. 매끄러운 부분은 gradient step으로, L1 부분은 근위 연산(proximal operator)으로 처리하는 proximal gradient(ISTA)로 푼다. 두 함수를 완성한다.
-
soft_threshold(v, t): 의 근위 연산. 성분마다 . -
ista(A, y, lam, steps=2000): 에서 시작해를
steps번 반복한 를 반환한다. 는 가장 큰 특잇값(np.linalg.norm(A, 2))이다.
테스트는 결과가 Lasso의 최적성 조건을 만족하는지 확인한다. 잔차의 상관 에 대해
- 이면
- 이면
이다. 두 번째 조건 때문에 정확히 0인 좌표가 생긴다. 이면 해가 이라는 것도 확인한다.