본문 바로가기

전체 글

(19)
SQL 튜닝 Case 2SELECT /* leading(c) use_nl(s) */ COUNT(*)FROM sales s, customers cWHERE s.cust_id = c.cust_idAND c.county_id = 52790AND s.time_id BETWEEN TO_DATE('1999/01/01', 'YYYY/MM/DD')AND TO_DATE('1999/12/31', 'YYYY/MM/DD'); -----------------------------------------------------| Id |Operation| Name|Starts|E-Rows|A-Rows|A-Time|Buffers||0|SELECT STATEMENT||1||1|00:00:00.86|457K||1|SORT AGGREGATE||1|1|..
[Andrew Ng Machine Learning 강의] Handling Skewed Class & Using Large Data Sets 이 글은 Coursera에서 Andrew Ng 교수님의 머신러닝 강의를 듣고 읽기 자료를 읽으면서 복습차원에서 개인적으로 요약한 글입니다. Handling Skewed Class & Using Large Data Sets 편향된 클래스에 대한 에러 분석 강의에서 암 분류 문제를 예시로 들고 있다. 암이면 1, 아니면 0으로 분류하는 로지스틱 회귀 모델이다. 테스트를 해보니 테스트 셋에 대하여 에러율이 1%의 낮은 결과가 나왔다고 해보자. 에러율만 보았을 때는 매우 좋은 분류기 같지만 문제는 전체 데이터에서 0.5%의 환자만이 실제로 암이었다는 점이다. 이 경우 단순히 모든 환자를 0으로 판단하는 분류기도 에러율 0.5%라는 매우 낮은 값을 얻게 된다. 즉 에러율만으로 모델이 좋은 예측 성능을 가지는지 알..
[Andrew Ng Machine Learning 강의] Building a Spam Classifier 이 글은 Coursera에서 Andrew Ng 교수님의 머신러닝 강의를 듣고 읽기 자료를 읽으면서 복습차원에서 개인적으로 요약한 글입니다. Building a Spam Classifier 우선순위 정하기: 스팸 분류기 예시 이제까지 배운 머신 러닝 알고리즘을 이용하면 간단한 스팸 메일 분류기를 구상할 수 있다. 입력 데이터 $x$는 이메일의 피쳐로 구성을 할 것이며 이는 이메일을 구분할 수 있는 키워드 단어의 포함 여부로 사용할 수 있다. $x_j=\begin{cases}1 &(if\ word\ j\ appears\ in \ email)\\ 0 &(otherwise)\end{cases}$ 이를 테면 andrew 단어가 이메일에 있으면 해당 피쳐는 1이다. 이런 식으로 피쳐 100개를 선정하여 100차원짜..
[Andrew Ng Machine Learning 강의] 편향 (Bias)과 분산 (Variance) 진단하기 이 글은 Coursera에서 Andrew Ng 교수님의 머신러닝 강의를 듣고 읽기 자료를 읽으면서 복습차원에서 개인적으로 요약한 글입니다. Bias vs. Variance 편향 (Bias)과 분산 (Variance) 진단하기 머신 러닝 모델의 가설의 다항식 차수와 과적합/과소적합 간의 관계 파악을 위해 편향과 분산을 분석할 수 있다. 다음 슬라이드는 다항식 회귀를 공부할 때 과적합, 과소적합의 예를 보여주고 있다. 슬라이드에서 볼 수 있듯이 1차식에서는 과소적합이 발생하고 4차식에서는 과적합이 발생하는 것을 알 수 있다. 그렇다면 과적합/과소적합이 발생하지 않는 차수의 모델을 찾아야 할 것이다. 과적합/과소적합을 체크하기 가장 좋은 방법은 이전 강의에서 배운 데이터 셋 스플릿이다. 훈련 셋의 에러율과 검..
[Andrew Ng Machine Learning 강의] Evaluating a Learning Algorithm 이 글은 Coursera에서 Andrew Ng 교수님의 머신러닝 강의를 듣고 읽기 자료를 읽으면서 복습차원에서 개인적으로 요약한 글입니다. Evaluating a Learning Algorithm 가설의 평가 머신 러닝 알고리즘의 가설을 설정하고 이를 훈련시킨 후 그 가설이 적합한지 확인을 해야 한다. 피쳐의 수가 적어서 가설을 3차원 이하의 그래프로 표현할 수 있다면 데이터에 대한 가설의 모습을 시각적으로 확인할 수 있지만 실제 머신 러닝 문제에서는 수백 ~ 수만 개의 피쳐가 있기 때문에 이를 시각적으로 표현할 수가 없다. 따라서 과적합이나 과소적합 등의 문제를 시각적으로 평가할 수 없기 때문에 이를 평가할 다른 방법이 필요하게 된다. 이러한 평가를 통해 현재 모델에서 regularization의 정도..
[Andrew Ng Machine Learning 강의] 인공신경망 - Backpropagation in Practice 이 글은 Coursera에서 Andrew Ng 교수님의 머신러닝 강의를 듣고 읽기 자료를 읽으면서 복습차원에서 개인적으로 요약한 글입니다. 인공신경망 - Backpropagation in Practice 이번 강의에서는 강의에서 사용하는 프로그래밍 언어인 OCTAVE로 신경망을 구현하기 위한 몇 가지 팁을 소개하고 있다. 이는 비단 OCTAVE 뿐만 아니라 Python 등 다른 프로그래밍 언어로 신경망을 구현할 때에도 도움이 될 것이라고 생각된다. 파라미터 행렬 펼치기 OCTAVE로 비용 함수 최적화를 하려면 fminunc() 등의 내장 함수를 사용한다. 이 함수는 비용 함수 식, 파라미터 벡터, 옵션을 입력 인자로 받는다. 즉 최적화 함수 사용을 위해서 신경망의 파라미터들을 벡터로 길게 펼칠 필요가 있..
[Andrew Ng Machine Learning 강의] 인공신경망 - Cost Function and Backpropagation 이 글은 Coursera에서 Andrew Ng 교수님의 머신러닝 강의를 듣고 읽기 자료를 읽으면서 복습차원에서 개인적으로 요약한 글입니다. 인공신경망 - Cost Function and Backpropagation 신경망의 비용함수 신경망의 비용함수는 기본적으로 로지스틱 회귀의 비용함수와 유사하다. 이진 분류의 경우 클래스가 2개뿐이므로 0, 1 사이의 값으로 분류를 진행한다. 따라서 출력 레이어의 유닛이 하나만 있어도 된다. 이 경우 기존의 로지스틱 회귀와 비용함수가 유사할 것이다. 다중 클래스 분류의 경우 클래스가 여러 개이므로 기존에 로지스틱 회귀로 다중 클래스 문제를 해결하던 것처럼 one-vs-all을 기반으로 분류를 진행한다. 따라서 출력 레이어의 유닛이 클래스 수와 같으므로 포워딩의 결과는 ..
[Andrew Ng Machine Learning 강의] 인공신경망 - Applications 이 글은 Coursera에서 Andrew Ng 교수님의 머신러닝 강의를 듣고 읽기 자료를 읽으면서 복습차원에서 개인적으로 요약한 글입니다. 인공신경망 - Applications XNOR 문제의 해결 강의에서는 간단한 신경망의 예시로 비트(0, 1)의 NOT, AND, OR, XOR, XNOR을 소개하고 있다. 먼저 NOT 문제는 입력 데이터 $x_1$에 대하여 NOT 연산의 결과값을 예측하는 모델을 인경신경망으로 만든다. 강의자료를 보면 NOT을 퍼셉트론 하나를 이용하여 입력 데이터 $x_1$를 받아 bias 항을 추가하여 포워딩을 한다. 포워딩 식은 다음과 같다. $h_\theta(x)=g(10-20x_1)$ 가능한 $x_1$은 0, 1이므로 이 두 입력 데이터로 포워딩을 하면 그림의 표처럼 원하는 대..