Django static file 설정 후 404에러 문제

Django 1.7 에서 가이드에 따라 static resource 를 서빙하도록 설정했는데, 404에러가 난다.
파일 퍼미션도 문제가 없고, admin 리소스는 잘 보이고 있어서 문제를 찾기 위해 한참을 해맸다.

settings.py 에 static file에 대한 설정을 아래와 같이 했었다.

STATIC_ROOT = '/var/www/sujemall/static/'

STATIC_URL = '/static/'

Djando1.3+ 환경에서는 다음과 같이 설정하도록 한다.
STATIC_ROOT 변수는 ” 로 비워두고, STATICFILES_DIRS 에 static resource를 두도록 하는데..
아래와 같이 설정한다.

STATIC_ROOT = ''
STATIC_URL = '/static/'
STATICFILES_DIRS = (
    '/var/www/sujemall/static/',
)

웹안에서 application 단위로(사용자,상품,주문 등..) 나누어서 관리를 하기에 좋은 구조가 될 것 같은데..
작은 어플리케이션 단위로 나누어서 관리될 수 있는 조직이 생기면 고민해 보자.

Sigmoid Function

Logistic Regression 분석은 (예측)결과가 Yes(1) 이냐 No(0)이냐를 예측하기 위한 방법이다.
다시 말하면 결과 y 가 1이 될 확율을 계산하는 것이라고 할 수 있다.
따라서 h_\theta(x) 의 값은 0과 1사이 ( 0 \leq h_\theta(x) \leq 1 )에 있어야 한다.
Linear Regression 에서 사용했던 공식을 사용하면 결과값이 0보다 작을수도, 1보다 커실수도 있으므로, Sigmoid Function(Logistic Function)을 사용해서 결과값의 범위를 제한할 필요가 있다.

Sigmoid Function 을 아래와 같이 정의한다.

h_\theta(x) = \frac{1}{1 + e^{\theta^TX}}

Normal Equation ( 정규 방정식)

선형회귀분석에서 cost function J(\theta) 의 값이 최소가 되는 \theta 를 찾기 위한 방법으로 경사 하강법(Gradient Decent)와 정규 방정식(Normal Equation)이 있다.

정규방정식은 \theta = (X^TX)^{-1}X^Ty 로 표현이 되는데,
Feature 갯수(n)이 많게 되면 (X^TX)^{-1} 를 구하는데 시간이 오래 걸리기 때문에 경사 하강법을 사용하는게 좋다.
하지만 feature 갯수 nn \leq 10^4 정도라면 한번에 계산해 낼 수 있는 정규 방정식이 유리하다.

Feature Scaling

여러개의 변수(Multiple Variables)를 가지고 회귀분석(Linear Regression)을 할 때 변수의 스캐일이 너무 차이가 나면 Cost Function J(\theta) 를 이용한 Gradient Decent과정이 너무 오래걸릴 수 있다.

예를 들면 집의 가격을 예측하는 모델에서 가격을 결정하는 변수들로 크기(1000 ~ 2000), 방의 갯수(1~5), 사용년수(1~20)등을 생각해 볼 수 있는데 각각의 변수들의 스케일의 볌위가 많이 달라서 등고선을 그려보면 매우 좁고 길쭉한 모양이 나타나게 된다.

이럴때는 Mean Normalization 을 사용해서 변수의 범위를 -1 \leq x_i \leq 1 로 조정하는 방법을 사용할 수 있다.

Nomalized된 변수 Z는 아래와 같이 구할 수 있다.
z = \frac{x - \mu_{avg}}{max(x) - min(x)}

집가격을 예측하는 모델을 h_\theta(x) = \theta_0 + \theta_1x_{size} + \theta_2x_{rooms}라고 할 때,
집크기 x_{size}x_{rooms}를 Normalization을 아래와 같이 할 수 있다.

 

  • 수집된 데이터에서 집크기(size) 의 평균은 1000이고 최소값은 200, 최대값은 2000이라고 할 때 집크기가 1200인 집의 Nomalized 된 값은 Z_{size} = \frac{x - \mu_{avg}}{max(x) - min(x)} = \frac{1200 - 1000}{2000 - 200} = 0.1111 이다.
  • 수집된 데이터에서 방의 갯수(rooms)의 평균은 5이고, 최소값은 2, 최대값은 8이라고 할때 방의갯수가 3인 관측값의 Normalized된 값은 Z_{rooms} = \frac{x - \mu_{avg}}{max(x) - min(x)} = \frac{3 - 5}{8 - 2} = -0.3333 이다.