본문 바로가기

전체 글71

Softmax Regression 기본 개념 Linear regression은 실수의 값이 100, 200, -10이라고 했을 때, 직선의 회귀식으로 0이나 1의 binary 분류를 하기에는 적합하지 않은 모형이었다. 그래서 Logistic regression 개념의 sigmoid함수를 사용하여 문제를 해결했었다. X에 가중치를 부여해서 나온 z값을 sigmoid함수에 통과시켜서 1이나 0에 수렴하도록 만든다. Logistic regression이 하는 일을 생각해보면, train데이터로 두 가지로 구분되도록 학습시키는 이진 분류였다. 그럼 이제 A, B, C 세 개를 분류하는 문제가 있다고 생각해보자. Logistic classification으로는 1) A인지 아닌지, 2) B인지 아닌지, 3) C인지 아닌지 3개의 선으로 구분이 가능하다. 이.. 2020. 2. 14.
TensorFlow로 Logistic Classification의 구현 및 당뇨병 예측 실습 import tensorflow as tf # 선형 회귀를 위해서 텐서 플로우 1의 코드 실행을 위한 임포트 # 현재는 텐서 플로우 2로 선형 회귀를 훨씬 간단하게 구현할 수 있다. import tensorflow.compat.v1 as tf tf.disable_v2_behavior() x_data = [[1,2],[2,3],[3,1],[4,3],[5,3],[6,2]] y_data = [[0],[0],[0],[1],[1],[1]] # 0은 fail, 1은 pass X = tf.placeholder(tf.float32, shape=[None, 2]) Y = tf.placeholder(tf.float32, shape=[None, 1]) W = tf.Variable(tf.random_normal([2,1]),.. 2020. 2. 13.
Logistic Regression의 cost 함수 설명 sigmoid 함수로 Cost 함수를 만들어보면, Logistic regression은 구불구불한 밥그릇 형태다. 새로운 H(X)는 더이상 linear하지 않기 때문에 시작점이 어디냐에 따라 평평한 곳을 만나면 해당 지점을 최저점이라고 잘못 인식하게 된다. 이 지점을 Local minimum이라 한다. 그러나 우리는 global minimum을 찾는 것이 우리의 목표이다. 그래서 선형회귀에서 사용하던 Gradient descent algorithm을 로지스틱 회귀에서는 사용할 수가 없다. 이제 Cost 함수 자체를 바꿔서 구불구불한 밥그릇을 매끄럽게 펴줘야 한다. 새로운 Cost 함수 Cost는 어떤 것의 합의 평균이다. 하나의 엘리먼트에 Cost를 구해 평균 내는 것이다. 이것을 c라고 하자. c에 (.. 2020. 2. 13.
Logistic Classification의 가설 함수 정의 * 머신러닝의 Cost Function을 사용하는 이유 복습 * 세상에 있는 수많은 현상들을 완벽히는 안되지만 대략적으로 유추할수 있는 공식(혹은 그래프)를 알기 위해, 표본 데이터로부터 가장 차이가 적은 지점들을 찾기 위한 "제일 가까운 위치 찾기 함수" 정도로 풀이 할 수 있겠다. Logistic Classification은 뉴럴 네트워크와 딥러닝의 중요한 기초 알고리즘이다. Regression은 어떤 숫자를 예측하는 것이었다면 Classification은 (0과 1) 중에 하나를 골라주는 것이다. ex. Spam Detection: Spam(1) or Ham(0) Facebook feed: show(1) or hide(0) (내가 눌렀던 좋아요를 학습해서, 이와 유사한 타임라인만 보여준다.) 임상연.. 2020. 2. 13.
TensorFlow로 파일에서 데이터 읽어오기 실습 파일 자료 https://github.com/hunkim/DeepLearningZeroToAll 데이터가 많아지면, 소스 코드에 일일이 써놓기가 힘들어진다. 그래서 이제는 콤마로 나눠진 텍스트 파일을 읽어와서 실습을 해볼 것이다. 간단하게 numpy의 loadtxt를 이용해보자. import numpy as np xy = np.loadtxt('data-01-test-score.csv', delimiter=',', dtype=np.float32) x_data = xy[:, 0:-1] y_data = xy[:, [-1]] # Make sure the shape and data are OK print(x_data.shape, x_data, len(x_data)) print(y_data.shape, y_d.. 2020. 2. 11.
TensorFlow로 Multi-variable Linear Regression 실습 import tensorflow as tf import matplotlib.pyplot as plt # 선형 회귀를 위해서 텐서 플로우 1의 코드 실행을 위한 임포트 # 현재는 텐서 플로우 2로 선형 회귀를 훨씬 간단하게 구현할 수 있다. import tensorflow.compat.v1 as tf tf.disable_v2_behavior() # H(x1, x2, x3) = x1w1 + x2w2 + x3w3 #x1, x2, x3은 feature들 x1_data = [73, 93, 89, 96, 73] x2_data = [80, 88, 91, 98, 66] x3_data = [75, 93, 90, 100, 70] y_data = [152, 185, 180, 196, 142] x1 = tf.placehold.. 2020. 2. 11.
Multi-variable Linear Regression 기초 이론 * 김성훈 교수님의 유튜브강의를 공부 목적으로 정리하여 작성하였습니다. [ multi-variable linear regression ] 이제 하나의 input variable이 아닌, multi-variable로 Y를 예측해보자. 어떻게 해야 될까? 1) Hypothesis: 그냥 x1, x2, x3에 각각의 w1, w2, w3을 곱해주면 된다. 2) Cost function ● 근데 x1, x2, x3, x4, ... 값들이 많아질수록 수식이 더 길어지는데 간편하게 계산할 수 없을까? -> Matrix(내적 dot product)를 이용하는 것이다. 근데 XW의 순서가 바껴져 있다. 매트릭스에서는 보통 X를 앞부분에 쓰고, 뒷부분에 W를 써서 나타낸다. 위의 그림처럼 x1, x2, x3는 많은 ins.. 2020. 2. 7.
TensorFlow로 Linear Regression 실습 * 김성훈 교수님의 유튜브강의를 공부 목적으로 정리하여 작성하였습니다. 실제 주어진 y값과 H(x)인 예측값을 얼마나 잘 예측했느냐의 cost 함수를 구할 것이다. 학습을 한다는 이야기는 W, b를 조정해서 가장 작은 cost값을 찾아나간다는 말이다. # TensonFlow Mechanics step-1) 그래프를 build 한다. step-2) sess를 통해 실행을 한다. step-3) 변수들을 반복적으로 조정하여 가장 작은 cost를 찾는다. step-1) X, Y에 대한 데이터가 주어졌다고 가정하고, 이제 W과 b를 정의해야 되는데 Variable이라는 노드로 정의할 수 있다. 여기서 Variable 개념은 프로그래밍에서의 변수의 의미와는 조금 다르다. Tensorflow가 사용하는 Variabl.. 2020. 2. 6.
선형 회귀(Linear Regression)란? * 김성훈 교수님의 유튜브강의를 토대로 작성되었습니다. Linear regression 선형 분석은 영국의 유전학자 Francis Galton이 유전의 법칙을 연구하다 나온 것에 기인하게 된다. 연구의 내용은 부모와 자녀의 키 사이의 관계였는데 아버지와 어머니의 키의 평균을 조사하여 표로 나타낸 결과 부모의 키가 작든 크든 자녀들의 키는 그 세대의 평균으로 돌아가려는 경향(회귀)이 있다는 것을 발견하였다. 이후 다른 통계학자들에 의해 독립변수와 종속변수가 선형적인 관련성이 있다는 전제하에, 주어진 데이터들을 대표하는 하나의 적합한 선을 찾는 것이 회귀분석의 목적이 되었다. 이 선형 회귀 분석을 머신러닝에서는 어떻게 사용할까? ex. 다른 학생들의 공부시간과 시험 점수를 학습시키고 나서, 과연 7시간 공부.. 2020. 1. 30.
머신 러닝과 딥러닝 기초 머신러닝 정의 (인공지능 ⊃ 머신러닝 ⊃ 인공신경망 ⊃ 딥러닝) 1959년에 아서 사무엘은 머신러닝(기계 학습)을 “기계가 일일이 코드로 명시하지 않은 동작을 데이터로부터 학습하여 실행할 수 있도록 하는 알고리즘을 개발하는 연구 분야”라고 정의하였다. 쉽게 말해 머신러닝은 데이터를 기반으로 패턴을 학습하고 결과를 예측하는 알고리즘 기법이다. 머신러닝의 분류 머신러닝은 학습하려는 문제의 유형에 따라 크게 다음과 같은 세 가지로 분류할 수 있습니다. 머신러닝 - 데이터의 특징들을 사람이 먼저 추출한 뒤, 컴퓨터에 전달 1. 지도 학습(Supervised Learning): 분류, 회귀, 추천 시스템, 시각/음성 감지/인지, 텍스트 분석, NLP 딥러닝 - 데이터를 있는 그대로 컴퓨터에 전달 2. 비지도 학습.. 2020. 1. 30.
장르 유사도 기반 영화 추천 시스템 / Scikit-Learn의 문제점 * 코사인 유사도 개념을 이용하여, 장르가 유사한 영화를 추천해주는 시스템을 만들어보았습니다. [ 데이터 전처리와 벡터화 ] 1) 영화 데이터셋은 https://www.kaggle.com/tmdb/tmdb-movie-metadata 사용 2) 각 장르를 feature 벡터화 한 후, 형렬로 만든 다음 행렬 데이터로 코사인 유사도로 계산 -> 코사인 유사도가 1에 가까울수록 두 영화 간의 장르가 비슷하다고 할 수 있습니다. 3) 데이터 전처리 과정 중 Scikit-Learn의 문서 전처리용 클래스인 CountVectorizer 문제점 발견 -> 이를 순수 파이썬 코드를 작성하여 비교해보았습니다. import pandas as pd import numpy as np from sklearn.metrics.pa.. 2020. 1. 28.