image
image
image

image

setting working directory which has data set (look at the yellow circle)

image

data preprocessing 작업을 보여준다.

위의 작업을 하는 동안 error 가 발생했다. 아래와 같이 해결한다.

ModuleNotFoundError: No module named ‘sklearn.cross_validation’

May be it’s due to the deprecation of sklearn.cross_validation. Please replace sklearn.cross_validation with sklearn.model_selection

https://stackoverflow.com/a/53104241/3151712

LEARNING 과정

image

linear regression obj를 만들고 fit method를 통해 training matrix와 실제 결과값을 넣어준다. 이과정이 learning하는 과정이다. 

예상값 구하기 

image

linear regression obj의 predict method를 이용해서 test feature에 대한 예상값을 구한다. 이미 linear regresion obj에는 전단계에서 learning한 theta값들이 저장되어 있다.

그래프로 결과 나타내기

scatter는 점을 흩어 그리는 method이다. x, y 값을 넣어주고 색을 지정한다. plot은 선그래프를 그린다. x,y, 색을 지정해준다. 제목과 각축의 레이블을 붙여주고 show()를 이용 출력한다.

image
image
image

image

setting working directory which has data set (look at the yellow circle)

image

data preprocessing 작업을 보여준다.

위의 작업을 하는 동안 error 가 발생했다. 아래와 같이 해결한다.

ModuleNotFoundError: No module named ‘sklearn.cross_validation’

May be it’s due to the deprecation of sklearn.cross_validation. Please replace sklearn.cross_validation with sklearn.model_selection

https://stackoverflow.com/a/53104241/3151712

LEARNING 과정

image

linear regression obj를 만들고 fit method를 통해 training matrix와 실제 결과값을 넣어준다. 이과정이 learning하는 과정이다. 

예상값 구하기 

image

linear regression obj의 predict method를 이용해서 test feature에 대한 예상값을 구한다. 이미 linear regresion obj에는 전단계에서 learning한 theta값들이 저장되어 있다.

그래프로 결과 나타내기

scatter는 점을 흩어 그리는 method이다. x, y 값을 넣어주고 색을 지정한다. plot은 선그래프를 그린다. x,y, 색을 지정해준다. 제목과 각축의 레이블을 붙여주고 show()를 이용 출력한다.

https://www.coursera.org/learn/machine-learning/lecture/6Nj1q/multiple-features

image

세타에 superscript t 를 붙인것은 세타 벡터의 transpose vector 를 의미한다. 그 뒤에 x는 두 matrix를 multiplication한다는 의미이다.

https://www.coursera.org/learn/machine-learning/supplement/WKgbA/multiple-features

Multiple Features

image


https://www.coursera.org/learn/machine-learning/lecture/Z9DKX/gradient-descent-for-multiple-variables

image
image

https://www.coursera.org/learn/machine-learning/supplement/aEN5G/gradient-descent-for-multiple-variables

Gradient Descent For Multiple Variables

image


https://www.coursera.org/learn/machine-learning/lecture/xx3Da/gradient-descent-in-practice-i-feature-scaling

image

두 features의 범위차이가 너무 크면 효율성이 떨어진다. 두 features 를 비슷하게 맞춰주는 것이 좋다. 

image

-1 에서 1 사이의 범위를 추천하지만 실제는 -3 에서 3 정도면 괜찮다고 봐야한다. (너무 크거나 작으면 안된다)

image

분모 s는 training set에서 최대값에서 최소값을 뺀값이다. 분모에 있는 u는 training set에서의 평균값이다.

https://www.coursera.org/learn/machine-learning/supplement/CTA0D/gradient-descent-in-practice-i-feature-scaling

image


https://www.coursera.org/learn/machine-learning/lecture/3iawu/gradient-descent-in-practice-ii-learning-rate

image

cost function value는 매번 iteration할때마다 줄어야 한다. 증가한다면 뭔가 잘못된거고 보통 이런경우 learning rate을 낮춰서 설정해 준다.

image
image

10단위로 설정해 보고 중간에 0.3 , 0.03 이런 식으로 가장 적절한 learning rate을 찾아 간다.

https://www.coursera.org/learn/machine-learning/supplement/TnHvV/gradient-descent-in-practice-ii-learning-rate

Gradient Descent in Practice II – Learning Rate

image
image


https://www.coursera.org/learn/machine-learning/lecture/Rqgfz/features-and-polynomial-regression

image

상황에따라서는 다른 공식을 사용해야 하는 경우가 생긴다. 위의 경우는 

image

와 같이 이차방정식를 이용할수 도 있고 근방정식을 이용할수도 있다.  상황에 따라 

Polynomial Regression를 이용할수 있다.

https://www.coursera.org/learn/machine-learning/supplement/ITznZ/features-and-polynomial-regression

Features and Polynomial Regression

We can improve our features and the form of our hypothesis function in a couple different ways.

Polynomial Regression

Our hypothesis function need not be linear (a straight line) if that does not fit the data well.

We can change the behavior or curve of our hypothesis function by making it a quadratic, cubic or square root function (or any other form).

One important thing to keep in mind is, if you choose your features this way then feature scaling becomes very important.


https://www.coursera.org/learn/machine-learning/lecture/2DKxQ/normal-equation

Normal Equation

image

위 그림은 training set을 normal equation을 이용해서 loss를 최소화하는 경우 data를 어떻게 matrix, vector로 바꾸는지 보여준다. 그림하단에는 normal equation이 있다. 이 공식을 이용하는데는 matrix inverse가 필요하다. 이 개념을 이해하기 위해서는 아래 참조 링크를 확인한다.

참고사항) matrix inverses 에 대한 설명

I 를 identity matrix라고 했을때

어떤 matrix에 곱해져서 identity matrix를 만들수 있는 matrix를 matrix inverse라고 한다.

https://www.khanacademy.org/math/precalculus/precalc-matrices/intro-to-matrix-inverses/v/inverse-matrix-part-1

image

matrix inverse를 수행하는 octave함수는 pinv()이다. 우측 하단은 normal equation은  feature scaling이 필요치 않다는 내용이다.

image

우측하단은 feature의 수가 10000이상일때 gradient descent를 이용하라고 추천한다. 그러나 이는 컴퓨터 성능에 따라 달라질수 있다.

normal equation을 사용할수 없을 때도 있다. classification algorithm, logical regression 에 사용할수 없다. 이와는 다르게 gradient descent는 거의 모든 곳에 사용가능하다.

https://www.coursera.org/learn/machine-learning/supplement/bjjZW/normal-equation

image

https://www.coursera.org/learn/machine-learning/lecture/zSiE6/normal-equation-noninvertibility

Normal Equation Noninvertibility


image

normal equation을 사용하는 중에 inverse가 불가능한 경우가 있다.

이런때 octave를 사용하는 작업이라면 pinv를 사용하면 문제가 없다.

image

inverse가 불가능하게 만드는 대부분의 이유와 해결책은 위와 같다. 

https://www.coursera.org/learn/machine-learning/supplement/66bi5/normal-equation-noninvertibility

Normal Equation Noninvertibility

image


octave programming language기본 사용법 설명

https://www.coursera.org/learn/machine-learning/lecture/9fHfl/basic-operations

https://www.coursera.org/learn/machine-learning/lecture/SZJIc/moving-data-around

https://www.coursera.org/learn/machine-learning/lecture/Y6uuC/computing-on-data

그래프 사용 방법 https://www.coursera.org/learn/machine-learning/lecture/I7gx3/plotting-data

제어구문 사용 방법 https://www.coursera.org/learn/machine-learning/lecture/LRQnl/control-statements-for-while-if-statement

https://www.coursera.org/learn/machine-learning/lecture/WnQWH/vectorization

Vectorization

machine learning에서는 matrix와 vector사용이 성능에 중요한 부분을 차지 한다. 반복루프로 같은 기능을 구현할수는 있으나 성능에 문제가 생긴다. 그러므로 각 프로그래밍 언어에서 제공하는 matrix, vector library를 이용하는것을 추천한다. 반복루프작업을 vector를 이용해 간단하게 만드는 작업을 vectorization이라고 한다.

image

위의 예시는 예상값을 구하는 작업을 vectorize 한 예

아래는 gradient descent를 vectorize 한 예이다.

image

https://www.coursera.org/learn/machine-learning/lecture/6Nj1q/multiple-features

image

세타에 superscript t 를 붙인것은 세타 벡터의 transpose vector 를 의미한다. 그 뒤에 x는 두 matrix를 multiplication한다는 의미이다.

https://www.coursera.org/learn/machine-learning/supplement/WKgbA/multiple-features

Multiple Features

image


https://www.coursera.org/learn/machine-learning/lecture/Z9DKX/gradient-descent-for-multiple-variables

image
image

https://www.coursera.org/learn/machine-learning/supplement/aEN5G/gradient-descent-for-multiple-variables

Gradient Descent For Multiple Variables

image


https://www.coursera.org/learn/machine-learning/lecture/xx3Da/gradient-descent-in-practice-i-feature-scaling

image

두 features의 범위차이가 너무 크면 효율성이 떨어진다. 두 features 를 비슷하게 맞춰주는 것이 좋다. 

image

-1 에서 1 사이의 범위를 추천하지만 실제는 -3 에서 3 정도면 괜찮다고 봐야한다. (너무 크거나 작으면 안된다)

image

분모 s는 training set에서 최대값에서 최소값을 뺀값이다. 분모에 있는 u는 training set에서의 평균값이다.

https://www.coursera.org/learn/machine-learning/supplement/CTA0D/gradient-descent-in-practice-i-feature-scaling

image


https://www.coursera.org/learn/machine-learning/lecture/3iawu/gradient-descent-in-practice-ii-learning-rate

image

cost function value는 매번 iteration할때마다 줄어야 한다. 증가한다면 뭔가 잘못된거고 보통 이런경우 learning rate을 낮춰서 설정해 준다.

image
image

10단위로 설정해 보고 중간에 0.3 , 0.03 이런 식으로 가장 적절한 learning rate을 찾아 간다.

https://www.coursera.org/learn/machine-learning/supplement/TnHvV/gradient-descent-in-practice-ii-learning-rate

Gradient Descent in Practice II – Learning Rate

image
image


https://www.coursera.org/learn/machine-learning/lecture/Rqgfz/features-and-polynomial-regression

image

상황에따라서는 다른 공식을 사용해야 하는 경우가 생긴다. 위의 경우는 

image

와 같이 이차방정식를 이용할수 도 있고 근방정식을 이용할수도 있다.  상황에 따라 

Polynomial Regression를 이용할수 있다.

https://www.coursera.org/learn/machine-learning/supplement/ITznZ/features-and-polynomial-regression

Features and Polynomial Regression

We can improve our features and the form of our hypothesis function in a couple different ways.

Polynomial Regression

Our hypothesis function need not be linear (a straight line) if that does not fit the data well.

We can change the behavior or curve of our hypothesis function by making it a quadratic, cubic or square root function (or any other form).

One important thing to keep in mind is, if you choose your features this way then feature scaling becomes very important.


https://www.coursera.org/learn/machine-learning/lecture/2DKxQ/normal-equation

Normal Equation

image

위 그림은 training set을 normal equation을 이용해서 loss를 최소화하는 경우 data를 어떻게 matrix, vector로 바꾸는지 보여준다. 그림하단에는 normal equation이 있다. 이 공식을 이용하는데는 matrix inverse가 필요하다. 이 개념을 이해하기 위해서는 아래 참조 링크를 확인한다.

참고사항) matrix inverses 에 대한 설명

I 를 identity matrix라고 했을때

어떤 matrix에 곱해져서 identity matrix를 만들수 있는 matrix를 matrix inverse라고 한다.

https://www.khanacademy.org/math/precalculus/precalc-matrices/intro-to-matrix-inverses/v/inverse-matrix-part-1

image

matrix inverse를 수행하는 octave함수는 pinv()이다. 우측 하단은 normal equation은  feature scaling이 필요치 않다는 내용이다.

image

우측하단은 feature의 수가 10000이상일때 gradient descent를 이용하라고 추천한다. 그러나 이는 컴퓨터 성능에 따라 달라질수 있다.

normal equation을 사용할수 없을 때도 있다. classification algorithm, logical regression 에 사용할수 없다. 이와는 다르게 gradient descent는 거의 모든 곳에 사용가능하다.

https://www.coursera.org/learn/machine-learning/supplement/bjjZW/normal-equation

image

https://www.coursera.org/learn/machine-learning/lecture/zSiE6/normal-equation-noninvertibility

Normal Equation Noninvertibility


image

normal equation을 사용하는 중에 inverse가 불가능한 경우가 있다.

이런때 octave를 사용하는 작업이라면 pinv를 사용하면 문제가 없다.

image

inverse가 불가능하게 만드는 대부분의 이유와 해결책은 위와 같다. 

https://www.coursera.org/learn/machine-learning/supplement/66bi5/normal-equation-noninvertibility

Normal Equation Noninvertibility

image


octave programming language기본 사용법 설명

https://www.coursera.org/learn/machine-learning/lecture/9fHfl/basic-operations

https://www.coursera.org/learn/machine-learning/lecture/SZJIc/moving-data-around

https://www.coursera.org/learn/machine-learning/lecture/Y6uuC/computing-on-data

그래프 사용 방법 https://www.coursera.org/learn/machine-learning/lecture/I7gx3/plotting-data

제어구문 사용 방법 https://www.coursera.org/learn/machine-learning/lecture/LRQnl/control-statements-for-while-if-statement

https://www.coursera.org/learn/machine-learning/lecture/WnQWH/vectorization

Vectorization

machine learning에서는 matrix와 vector사용이 성능에 중요한 부분을 차지 한다. 반복루프로 같은 기능을 구현할수는 있으나 성능에 문제가 생긴다. 그러므로 각 프로그래밍 언어에서 제공하는 matrix, vector library를 이용하는것을 추천한다. 반복루프작업을 vector를 이용해 간단하게 만드는 작업을 vectorization이라고 한다.

image

위의 예시는 예상값을 구하는 작업을 vectorize 한 예

아래는 gradient descent를 vectorize 한 예이다.

image