티스토리 뷰

Linear regression에서 사용하게 되는 gradient descent 알고리즘은 feature 별로 각각 partial derivative를 계산하며 그 수 별로 iteration이 필요하다. 따라서 iteration을 최소화 하면서 빠르게 모델을 찾는 것이 computer scientist의 입장에서는 issue일 것이다. 실제로 알고리즘을 돌릴 때 유의할 점 들이다.


1. feature scaling

각각의 feature들은 그 scale이 천차만별이 될 수 있다. 즉, 나이와 같은 값은 0~100언저리 쯤 될 것이고, 재산의 경우는 그 범위가 훨씬 클 것이다. 이 feature들의 range에 따라서 알고리즘이 잘 동작하지 않을 수 있다. 따라서 그 scale을 비슷하게 만들어 주는 것이 필요한데, mean normalization 방법을 많이 사용한다. 모든 training set에 대하여 각 feature의 mean 값을 빼고, 그 scale이나 standard deviation으로 나누어 주는 것이다.


2. learning rate

learning rate alpha는 알고리즘이 동작하는 속도를 결정한다. 추상적으로 생각하면 어느 방향으로 가야 optimum이 있다는 것을 알았을 때 얼마나 움직이냐는 것인데, 클 수록 값을 빨리 찾을 수 있겟지만 값이 너무 커버리면 optimum을 뛰어 넘어 저 멀리 가버릴 수도 있을 것이다. 하지만 너무 작은 alpha를 설정한다면 iteration을 많이 해야 하니까, 엄청 많은 시간이 걸릴 것이다.. 따라서 적절한 alpha를 설정하는 것이 중요하며 -1 ~ 1 정도로 feature scaling한 이후에 0.001, 0.003, 0.01, 0.03, ... 이런식으로 alpha를 늘려가면서 해보면 된다.



참조

[1] Machine Learning by Andrew Ng, Coursera. http://coursera.org

댓글