SlideShare a Scribd company logo
Linear Regression
Logistic Regression
Outlook
• Part 1: 파이썬과 텐서플로우 소개
• Part 2: 회귀 분석과 로지스틱 회귀
• Part 3: 뉴럴 네트워크 알고리즘
• Part 4: 콘볼루션 뉴럴 네트워크
2
지난 시간에...
3
리스트
• 대괄호로 초기화
a = [0, 1]
• 리스트에 원소 추가
a.append(2)
• 리스트의 길이
len(a)
• 리스트 슬라이스
a[0:2]
딕셔너리
• 순서가 없는 인덱스를 가짐(문자열
가능)
• 중괄호로 초기화
b = {‘sun’: 0}
• 키를 지정해 원소 추가
b[‘mon’] = 1
• 딕셔너리 참조는 리스트와 동일
b[’mon’]
Python-data type
4
if i == 10:
print(10)
elif i < 10:
print(0)
else:
print(100)
for a in lst:
print(a)
for k in dct:
print(dct[k])
for k, v in dct.items():
print(k, v)
Python-if, for
5
TensorFlow Graph 와 Session
• 텐서플로우의 연산자를 사용하여 계산 구조를 정의합니다.
a = tf.constant(2)
b = tf.constant(3)
x = tf.add(a, b)
• 세션 객체를 만들어 만들어진 계산 그래프를 실행합니다.
x
<tf.Tensor 'Add:0' shape=() dtype=int32>
tf.Session().run(x)
5
6
zeros(), ones()
• 0으로 채워진 텐서를 만듭니다.
e = tf.zeros([2, 3])
tf.Session().run(e)
array([[ 0., 0., 0.], [ 0., 0., 0.]], dtype=float32)
• 1로 채워진 텐서를 만듭니다.
f = tf.ones([2, 3], dtype=tf.int32)
tf.Session().run(f)
array([[1, 1, 1], [1, 1, 1]], dtype=int32)
7
tf.Variable()
• 상수가 아니라 계산 그래프에서 변하는 값을 담는 도구입니다.
• 변수는 초깃값이 주어져야 하고 사용하기 전에 초기화 되어야 합니다.
a = tf.Variable(tf.constant(2))
a
<tensorflow.python.ops.variables.Variable at ...>
init = tf.global_variables_initializer()
sess = tf.Session()
sess.run(init)
sess.run(a)
2
8
행렬(matrix)
• 2×3 행렬
1 −2 2
3 −1 1
a = tf.Variable([[1, -2, 2], [3, -1, 1]])
sess = tf.Session()
sess.run(tf.global_variables_initializer())
sess.run(a)
[[1 -2 2], [3 -1 1]]
9
행
(row)
열(column)
행렬 내적
• 행렬의 덧셈
• 2×3 + 2×3 = [2×3]
1 −2 2
3 −1 1
+
−1 3 2
2 4 1
=
0 1 4
5 3 2
• 행렬의 곱셈:	내적, 점곱(dot	product)
• 2×3 ⋅ 3×2 = [2×2]
1 −2 2
3 −1 1
2 −1
4 3
1 2
=
−4 −3
3 −4
10
행
(row)
열(column)
tf.matmul()
• 두개의 텐서를 입력 받아 행렬 내적을 계산합니다.
a = tf.Variable([[1, -2, 2], [3, -1, 1]])
b = tf.Variable([[2, -1], [4, 3], [1, 2]])
dot = tf.matmul(a, b)
sess = tf.Session()
sess.run(tf.global_variables_initializer())
sess.run(dot)
array([[-4, -3],
[ 3, -4]], dtype=int32)
11
1 −2 2
3 −1 1
2 −1
4 3
1 2
−4 −3
3 −4
선형 회귀 분석
12
회귀 분석
• 숫자 결과를 예측합니다.
• 출력 값은 연속적인 속성을 가집니다.
• Regression Analysis
ex)
• 환자의 당뇨병 데이터를 이용하여 1년뒤 악화 정도를 측정
• 과거 주식시장의 데이터를 이용하여 내일 주가를 예측
• 지역, 방 개수, 평수 등의 데이터를 이용하여 주택 가격 예측
13
1차 선형 함수
𝑦; = 𝑤	×	𝑥 + 𝑏
가중치 편향
14
Hyperplane
TV
Radio
Sales 𝑆𝑎𝑙𝑒𝑠 = 𝑎D	×	𝑅𝑎𝑑𝑖𝑜 + 𝑎I×𝑇𝑉 + 𝑏
• 기본 베이스 모델
• 대량의 데이터셋
• 특성이 비교적 많을 때
15
일반화
• n 개의 특성이 있을 때 선형 회귀의 일반 방정식
𝑦; = 𝛽D 𝑥D + 𝛽I 𝑥I + ⋯ + 𝛽N 𝑥N + 𝛽O
• 𝑥O = 1	인	항을	추가
𝑦;D = 𝛽D 𝑥D + 𝛽I 𝑥I + ⋯ + 𝛽N 𝑥N + 𝛽O 𝑥O
⋮
𝑦;Q = 𝛽D 𝑥QD + 𝛽I 𝑥QI + ⋯ + 𝛽N 𝑥QN + 𝛽O 𝑥QO
𝑦; =
𝑥DD ⋯ 𝑥DO
⋮ ⋱ ⋮
𝑥QD ⋯ 𝑥QO
𝛽D
⋮
𝛽O
, 𝑚 = 데이터개수	 →		 𝒚V = 𝑿𝜷Y
16
솔루션
• 최소제곱법(Ordinary Least Squares)를 사용하여 평균제곱오차(Mean
Squared Error)를 최소화하는 파라미터를 찾음.
• 평균제곱오차
1
𝑚
Z 𝑦 − 𝑦; I								, 𝑦; = 𝑋𝛽
Q
]D
• 최소제곱법
𝛽^ = 𝑋_ 𝑋 `D 𝑋_ 𝑦
오차의 제곱
모든 훈련 데이터의
오차 제곱을 더함
훈련 데이터
갯수로 나눔
• 데이터가 아주 많은 경우 문제
• 역행렬을 구할 수 없는 경우 문제
17
경사하강법(Gradient Descent)
• 오차함수의 낮은 지점을 찾아가는 최적화 방법
• 낮은 쪽의 방향을 찾기 위해 오차함수를 현재 위치에서 미분함
𝐽 =
1
2𝑚
Z 𝑦 − 𝑦; I								, 	 ∇𝐽 =
1
𝑚
(𝑦 − 𝑦;)
Q
]D
18
복잡한 오차함수(신경망)
𝑱
19
뉴런
20
뉴런처럼 보이게
Neuron
𝑦;
𝑤
𝑦; = 𝑤	×	𝑥 + 𝑏
𝑥
𝑏
×
+
𝒚
21
낮은 곳으로
Neuron
𝑦;
𝑤
𝑥
𝑏
×
+
𝒚
𝜕𝐽
𝜕𝑤
=
1
𝑚
𝑦 − 𝑦;
𝜕𝑦;
𝜕𝑤
=
1
𝑚
(𝑦 − 𝑦;)𝑥
𝜕𝐽
𝜕𝑏
=
1
𝑚
𝑦 − 𝑦;
𝜕𝑦;
𝜕𝑏
=
1
𝑚
(𝑦 − 𝑦;)
𝐽 =
1
2𝑚
Z 𝑦 − 𝑦; I
Q
]D
22
파라미터 업데이트
Neuron
𝑦;
𝑤 = 𝑤 + ∆𝑤 = 𝑤 +
1
𝑚
(𝑦 − 𝑦;)𝑥
𝑥 ×
+
𝒚
𝑏 = 𝑏 + ∆𝑏 = 𝑏 +
1
𝑚
(𝑦 − 𝑦;)
(𝑦 − 𝑦;)
23
적당한 속도
• 파라미터 w, b 의 업데이트가 클 경우 최저점(local minima)을 지나칠 수
있습니다.
• 학습 속도(learning rate)로 그래디언트 업데이트를 조절합니다.
𝑤 = 𝑤 + 𝜶
1
𝑚
(𝑦 − 𝑦;)𝑥 𝑏 = 𝑏 + 𝜶
1
𝑚
(𝑦 − 𝑦;)
24
하이퍼파라미터
• 하이퍼파라미터(Hyperparameter)는 알고리즘이 데이터로부터 학습할 수
없는 파라미터입니다.
• 모델 파라미터는 알고리즘이 데이터로 부터 학습하는 파라미터입니다. 예
를 들면, w, b 입니다.
• 학습속도(learning rate)은 하이퍼파라미터입니다.
• 이 외외에도 신경망의 레이어수나 유닛수, k-NN 알고리즘의 k 값 등 알고
리즘마다 여러가지의 모델 파라미터를 가지고 있습니다.
• 최적의 하이퍼파라미터를 찾기위해서 반복적인 학습, 검증 과정을 거쳐야
합니다.
25
텐서플로우
선형 회귀 구현
26
데이터 생성
세션 객체 생성
평균 0, 표준편차 0.55 인 x 샘플 1000개 생성
0.1*x + 0.3 방정식을 만족하는 y 데이터를 생성하되,
평균 0, 표준편차 0.03을 가지도록 함.
27
샘플 데이터 시각화
28
계산 그래프 생성
가중치 W, b 변수를 0으로 초기화
y_hat 계산
손실 함수인 MSE 계산
경사하강법 객체 생성손실함수 노드를 최적화
하는 학습노드 생성
𝐽 =
1
2𝑚
Z 𝑦 − 𝑦; I
Q
]D
train
loss
y_hat
W x b
29
계산 그래프 실행
변수 초기화
학습 노드 실행
학습된 파라미터와 손실
함수 값 출력
30
결과 그래프
w = 0.099, b = 0.298 31
선형 회귀 정리
• 선형 회귀 분석은 선형 함수를 사용하여 연속적인 결과를 예측합니다.
• 선형 회귀의 대표적인 비용함수는 MSE(mean square error) 함수입니다.
• 최소제곱법 대신 경사하강법을 사용하여 점진적으로 최적의 파라미터를
찾았습니다.
• 특성이 많을 경우 높은 성능을 낼 수 있습니다. 이럴 경우 오히려 성능을
제한해야 할 때가 많습니다.
• 비교적 대량의 데이터셋에서도 잘 작동합니다.
• 데이터 분석을 할 때 처음 시도할 모델로서 좋습니다.
32
로지스틱 회귀
33
분류(Classification)
• 클래스 레이블을 예측합니다.
• 출력 결과는 이산적입니다.
• Binary Classification(이진 분류), Multiclass Classification(다중 분류)
ex)
• 스팸 분류
• 암 진단
• 붓꽃의 품종 판별
• 손글씨 숫자 분류
34
로지스틱 회귀 (이진 분류)
• 이진 분류는 샘플을 True(1), 또는 False(0)으로 분류합니다.
• 회귀의 선형 함수를 그대로 이용합니다.
• 선형 함수의 결과를 0~1 사이의 확률로 변환합니다.
• 0.5 이상일 경우 True, 아니면 False 로 분류합니다.
𝑦; = 𝑤	×	𝑥 + 𝑏
35
로지스틱 함수
• 로지스틱(logistic) 또는 시그모이드(sigmoid) 함수는 -∞~+∞입력에 대해
0~1 사이의 값을 출력합니다.
𝑦; =	
1
1 +	 𝑒`(g	×	h	i	j)
=	
1
1 +	 𝑒`k	
𝑧 = 𝑤	×	𝑥 + 𝑏
36
뉴런처럼 보이게
Neuron Sigmoid
0 ~ 1
𝑤
𝑦; = 𝜎(𝑧)
𝑥
𝑏
×
+
𝒚
𝑧 = 𝑤	×	𝑥 + 𝑏
-∞~+∞
𝜎(𝑧) =	
1
1 +	 𝑒`k
37
분류에서의 손실 함수는
• 분류는 크로스 엔트로피(cross-entropy) 손실 함수를 사용합니다.
• 크로스 엔트로피 손실함수를 미분하면
• 선형회귀의 MSE 손실함수의 미분 결과와 동일합니다.
𝐽 = −	
1
𝑚
Z 𝑦𝑙𝑜𝑔 𝑦;
Q
]D
= −	
1
𝑚
Z[𝑦𝑙𝑜𝑔 𝑦; + 1 − 𝑦 log	(1 − 𝑦;)]
Q
]D
𝜕𝐽
𝜕𝑤
= −
1
𝑚
	Z 𝑦 − 𝑦; 𝑥
Q
]D
𝜕𝐽
𝜕𝑏
= −
1
𝑚
	Z 𝑦 − 𝑦;
Q
]D
38
낮은 곳으로
Neuron Sigmoid
𝑤
𝑥
𝑏
×
+
𝒚
𝑦; = 𝜎(𝑧) =	
1
1 +	 𝑒`k
𝜕𝐽
𝜕𝑤
=
1
𝑚
𝑦 − 𝑦;
𝜕𝑦;
𝜕𝑤
=
1
𝑚
(𝑦 − 𝑦;)𝑥
𝜕𝐽
𝜕𝑏
=
1
𝑚
𝑦 − 𝑦;
𝜕𝑦;
𝜕𝑏
=
1
𝑚
(𝑦 − 𝑦;)
𝐽 = −	
1
𝑚
Z[𝑦𝑙𝑜𝑔 𝑦; + 1 − 𝑦 log	(1 − 𝑦;)]
Q
]D
𝑦;𝑧
39
그래디언트 업데이트
Neuron Sigmoid
𝑥 ×
+
𝒚𝑦;
𝑤 = 𝑤 + ∆𝑤 = 𝑤 +
1
𝑚
(𝑦 − 𝑦;)𝑥
𝑏 = 𝑏 + ∆𝑏 = 𝑏 +
1
𝑚
(𝑦 − 𝑦;)
(𝑦 − 𝑦;)
40
로지스틱 정리
• 분류에 사용하는 모델입니다.
• 선형 함수 결과를 시그모이드 함수를 사용하여 0~1 사이로 압축합니다.
• 이진 분류는 0.5 보다 높을 때는 True 로하고 그 이하는 False 로 하여 모델
을 학습시킵니다.
• 시그모이드 함수를 사용한 크로스 엔트로피 비용함수의 미분 결과는 선형
함수를 사용한 MSE 비용함수의 미분과 동일합니다.
• 로지스틱 회귀는 다중 분류도 지원합니다.
41
텐서플로우
로지스틱 회귀 구현
42
위스콘신 유방암 데이터
사이킷런의 데이터셋 이용
넘파이
위스콘신 유방암 데이터 로드
샘플 데이터를 가지고 있는
scikit-learn의 Bunch 오브젝트
43
넘파이(NumPy)
• 데이터 과학을 위한 다차원 배열 패키지로 많은 배열 연산을 제공합니다.
• 넘파이는 파이썬 리스트와는 달리 다른 종류의 데이터 타입을 담을 수 없
습니다.
• scikit-learn, tensorflow 등 많은 머신 러닝 패키지들이 입력 값으로 넘파이
배열을 받을 수 있습니다.
44
cancer 특성
30개의 특성
특성의 이름
𝑦; = 𝑤D 𝑥D + 𝑤I 𝑥I + ⋯ + 𝑤qO 𝑥qO + 𝑏
45
cancer 데이터
y
X
569개의
데이터
행벡터
열벡터
특별한 경우가 아니
면 float32형 권장
46
선형 함수 계산
0.2
0.6
⋯
0.1
0.2
⋮ ⋱ ⋮
0.5 ⋯ 0.4
⋅
0.1
⋮
0.3
=
1.5
5.9
⋮
0.7
										+ 0.1 =
1.6
6.0
⋮
0.8
30개 가중치:
569개 샘플에
모두 적용
569개 샘플
𝑥							×		𝑊																				 + 𝑏 = 𝑦;
[569, 30] x [30, 1] = [569, 1] + [1] = [569, 1]
1개 편향(bias):
569개 샘플에
모두 적용
(브로드캐스팅)
30개 특성
569개 결과
(logits)
47
손실 함수와 최적화
로지스틱(시그모이드) 크
로스 엔트로피 손실함수
학습속도 매우 낮게
변수 초기화
48
학습
• 여기서는 예를 간단히 하기위해 학습 데이터로 모델의 성능을
평가했습니다만 실전에서는 이렇게 해서는 안됩니다
prediction 의 모든 원
소에 적용, 0.5보다 크
면 True, 작으면 False[569, 1] 크기
5000번 학습하면서
손실함수 값 기록
92% 정확도
49
정리
• 선형 모델을 이용해 회귀와 분류 학습을 했습니다.
• 분류는 로지스틱 함수를 이용해 확률로 변환하여 레이블을 예측합니다.
• 회귀에서는 임의의 샘플 데이터 1000개, 특성 1개를 사용했고 분류에서는
샘플 데이터 569개, 특성 30개를 사용했습니다.
• 회귀에서 학습한 모델 파라미터는 가중치 w 1개, 편향 b 1개 입니다.
• 분류에서 학습한 모델 파라미터는 가중치 w 30개, 편향 b 1개 입니다.
• 선형 함수를 표현하는 계산 그래프를 만들고 텐서플로우에서 제공하는 손
실함수를 사용했습니다.
• 경사하강법 최적화 알고리즘을 적용하여 최적값을 찾았습니다.
50
Materials
• Github :
https://github.com/rickiepark/tfk-notebooks/tree/master/tensorflow_for_beginners
• Slideshare :
https://www.slideshare.net/RickyPark3/
51
감사합니다.
52

More Related Content

PPTX
Graph Neural Network - Introduction
PPTX
Graph R-CNN for Scene Graph Generation
PPTX
Introduction For seq2seq(sequence to sequence) and RNN
PDF
Deep Learning for Chatbot (2/4)
PDF
1.Introduction to Python and TensorFlow
PDF
Attention is All You Need (Transformer)
PPTX
Artificial neural network
PDF
Graph Neural Network in practice
Graph Neural Network - Introduction
Graph R-CNN for Scene Graph Generation
Introduction For seq2seq(sequence to sequence) and RNN
Deep Learning for Chatbot (2/4)
1.Introduction to Python and TensorFlow
Attention is All You Need (Transformer)
Artificial neural network
Graph Neural Network in practice

What's hot (20)

PDF
データ解析13 線形判別分析
PDF
1시간만에 GAN(Generative Adversarial Network) 완전 정복하기
PPTX
Deep neural networks
PDF
Introduction to Tree-LSTMs
PDF
Applied Deep Learning for Text Classification - Examples from the HR Industry
PPTX
Simple perceptron by TJO
PDF
クラシックな機械学習の入門 3. 線形回帰および識別
PPTX
Introduction to Graph Neural Networks: Basics and Applications - Katsuhiko Is...
PPTX
Deep Learning With Neural Networks
PPTX
Classifying and understanding financial data using graph neural network
PDF
PRML輪読#6
PDF
Steffen Rendle, Research Scientist, Google at MLconf SF
PPTX
Neural network
PDF
PR-132: SSD: Single Shot MultiBox Detector
PDF
Attention mechanism 소개 자료
PPTX
Attention in Deep Learning
PPTX
Convolutional Neural Networks
PPTX
Genetic Algorithm
PDF
Prml 4.1.1
PDF
Introduction to Deep Learning, Keras, and TensorFlow
データ解析13 線形判別分析
1시간만에 GAN(Generative Adversarial Network) 완전 정복하기
Deep neural networks
Introduction to Tree-LSTMs
Applied Deep Learning for Text Classification - Examples from the HR Industry
Simple perceptron by TJO
クラシックな機械学習の入門 3. 線形回帰および識別
Introduction to Graph Neural Networks: Basics and Applications - Katsuhiko Is...
Deep Learning With Neural Networks
Classifying and understanding financial data using graph neural network
PRML輪読#6
Steffen Rendle, Research Scientist, Google at MLconf SF
Neural network
PR-132: SSD: Single Shot MultiBox Detector
Attention mechanism 소개 자료
Attention in Deep Learning
Convolutional Neural Networks
Genetic Algorithm
Prml 4.1.1
Introduction to Deep Learning, Keras, and TensorFlow
Ad

Viewers also liked (14)

PDF
2.supervised learning
PDF
1.introduction
PDF
​『골빈해커의 3분 딥러닝』 맛보기
PDF
Tensorflow로 플로이드 클라우드에서 합성곱 신경망 (CNN) 구현해보기
PDF
Tensorflow regression 텐서플로우 회귀
PDF
Re: 제로부터시작하는텐서플로우
PDF
차원축소 훑어보기 (PCA, SVD, NMF)
PPTX
텐서플로우 기초 이해하기
PDF
2016결산보고서 미디어이슈 1216
PPTX
1.introduction(epoch#2)
PPTX
머신러닝으로 얼굴 인식 모델 개발 삽질기
PPTX
2.supervised learning(epoch#2)-1
PPTX
2.supervised learning(epoch#2)-2
PDF
3.unsupervised learing
2.supervised learning
1.introduction
​『골빈해커의 3분 딥러닝』 맛보기
Tensorflow로 플로이드 클라우드에서 합성곱 신경망 (CNN) 구현해보기
Tensorflow regression 텐서플로우 회귀
Re: 제로부터시작하는텐서플로우
차원축소 훑어보기 (PCA, SVD, NMF)
텐서플로우 기초 이해하기
2016결산보고서 미디어이슈 1216
1.introduction(epoch#2)
머신러닝으로 얼굴 인식 모델 개발 삽질기
2.supervised learning(epoch#2)-1
2.supervised learning(epoch#2)-2
3.unsupervised learing
Ad

Similar to 2.linear regression and logistic regression (20)

PDF
3.neural networks
PPTX
2.supervised learning(epoch#2)-3
PPTX
해커에게 전해들은 머신러닝 #1
PDF
[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 4장. 모델 훈련
PDF
신경망 첫걸음 - 한빛미디어 요약
PDF
발표자료 11장
PPTX
Neural network (perceptron)
PPTX
해커에게 전해들은 머신러닝 #2
PDF
PDF
지도 학습, 함수 근사와 최적화 문제: 데이터는 우악하니 데이터 사이언스라도 우아하게
PPTX
Howto_Tensorflow+Linear Regression
PDF
[GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기
PPTX
4.representing data and engineering features(epoch#2)
PDF
개발자를 위한 공감세미나 tensor-flow
PDF
04. logistic regression ( 로지스틱 회귀 )
PDF
Coursera Machine Learning (by Andrew Ng)_강의정리
PPTX
해커에게 전해들은 머신러닝 #3
PDF
밑바닥부터 시작하는 딥러닝_신경망학습
PDF
From maching learning to deep learning
PDF
Deep Learning from scratch 5장 : backpropagation
3.neural networks
2.supervised learning(epoch#2)-3
해커에게 전해들은 머신러닝 #1
[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 4장. 모델 훈련
신경망 첫걸음 - 한빛미디어 요약
발표자료 11장
Neural network (perceptron)
해커에게 전해들은 머신러닝 #2
지도 학습, 함수 근사와 최적화 문제: 데이터는 우악하니 데이터 사이언스라도 우아하게
Howto_Tensorflow+Linear Regression
[GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기
4.representing data and engineering features(epoch#2)
개발자를 위한 공감세미나 tensor-flow
04. logistic regression ( 로지스틱 회귀 )
Coursera Machine Learning (by Andrew Ng)_강의정리
해커에게 전해들은 머신러닝 #3
밑바닥부터 시작하는 딥러닝_신경망학습
From maching learning to deep learning
Deep Learning from scratch 5장 : backpropagation

More from Haesun Park (20)

PDF
사이킷런 최신 변경 사항 스터디
PDF
[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 9장 텐서플로 시작하기
PDF
(Handson ml)ch.8-dimensionality reduction
PDF
(Handson ml)ch.7-ensemble learning and random forest
PDF
[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 6장 결정 트리
PDF
[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 5장. 서포트 벡터 머신
PDF
[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 3장. 분류
PDF
[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 2장. 머신러닝 프로젝트 처음부터 끝까지
PDF
[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 1장. 한눈에 보는 머신러닝
PDF
7.woring with text data(epoch#2)
PDF
6.algorithm chains and piplines(epoch#2)
PDF
5.model evaluation and improvement(epoch#2) 2
PDF
5.model evaluation and improvement(epoch#2) 1
PDF
3.unsupervised learing(epoch#2)
PDF
7.woring with text data
PDF
6.algorithm chains and piplines
PDF
5.model evaluation and improvement
PDF
4.representing data and engineering features
PDF
기계도 학교에 가나요?
PDF
4.convolutional neural networks
사이킷런 최신 변경 사항 스터디
[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 9장 텐서플로 시작하기
(Handson ml)ch.8-dimensionality reduction
(Handson ml)ch.7-ensemble learning and random forest
[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 6장 결정 트리
[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 5장. 서포트 벡터 머신
[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 3장. 분류
[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 2장. 머신러닝 프로젝트 처음부터 끝까지
[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 1장. 한눈에 보는 머신러닝
7.woring with text data(epoch#2)
6.algorithm chains and piplines(epoch#2)
5.model evaluation and improvement(epoch#2) 2
5.model evaluation and improvement(epoch#2) 1
3.unsupervised learing(epoch#2)
7.woring with text data
6.algorithm chains and piplines
5.model evaluation and improvement
4.representing data and engineering features
기계도 학교에 가나요?
4.convolutional neural networks

2.linear regression and logistic regression

  • 2. Outlook • Part 1: 파이썬과 텐서플로우 소개 • Part 2: 회귀 분석과 로지스틱 회귀 • Part 3: 뉴럴 네트워크 알고리즘 • Part 4: 콘볼루션 뉴럴 네트워크 2
  • 4. 리스트 • 대괄호로 초기화 a = [0, 1] • 리스트에 원소 추가 a.append(2) • 리스트의 길이 len(a) • 리스트 슬라이스 a[0:2] 딕셔너리 • 순서가 없는 인덱스를 가짐(문자열 가능) • 중괄호로 초기화 b = {‘sun’: 0} • 키를 지정해 원소 추가 b[‘mon’] = 1 • 딕셔너리 참조는 리스트와 동일 b[’mon’] Python-data type 4
  • 5. if i == 10: print(10) elif i < 10: print(0) else: print(100) for a in lst: print(a) for k in dct: print(dct[k]) for k, v in dct.items(): print(k, v) Python-if, for 5
  • 6. TensorFlow Graph 와 Session • 텐서플로우의 연산자를 사용하여 계산 구조를 정의합니다. a = tf.constant(2) b = tf.constant(3) x = tf.add(a, b) • 세션 객체를 만들어 만들어진 계산 그래프를 실행합니다. x <tf.Tensor 'Add:0' shape=() dtype=int32> tf.Session().run(x) 5 6
  • 7. zeros(), ones() • 0으로 채워진 텐서를 만듭니다. e = tf.zeros([2, 3]) tf.Session().run(e) array([[ 0., 0., 0.], [ 0., 0., 0.]], dtype=float32) • 1로 채워진 텐서를 만듭니다. f = tf.ones([2, 3], dtype=tf.int32) tf.Session().run(f) array([[1, 1, 1], [1, 1, 1]], dtype=int32) 7
  • 8. tf.Variable() • 상수가 아니라 계산 그래프에서 변하는 값을 담는 도구입니다. • 변수는 초깃값이 주어져야 하고 사용하기 전에 초기화 되어야 합니다. a = tf.Variable(tf.constant(2)) a <tensorflow.python.ops.variables.Variable at ...> init = tf.global_variables_initializer() sess = tf.Session() sess.run(init) sess.run(a) 2 8
  • 9. 행렬(matrix) • 2×3 행렬 1 −2 2 3 −1 1 a = tf.Variable([[1, -2, 2], [3, -1, 1]]) sess = tf.Session() sess.run(tf.global_variables_initializer()) sess.run(a) [[1 -2 2], [3 -1 1]] 9 행 (row) 열(column)
  • 10. 행렬 내적 • 행렬의 덧셈 • 2×3 + 2×3 = [2×3] 1 −2 2 3 −1 1 + −1 3 2 2 4 1 = 0 1 4 5 3 2 • 행렬의 곱셈: 내적, 점곱(dot product) • 2×3 ⋅ 3×2 = [2×2] 1 −2 2 3 −1 1 2 −1 4 3 1 2 = −4 −3 3 −4 10 행 (row) 열(column)
  • 11. tf.matmul() • 두개의 텐서를 입력 받아 행렬 내적을 계산합니다. a = tf.Variable([[1, -2, 2], [3, -1, 1]]) b = tf.Variable([[2, -1], [4, 3], [1, 2]]) dot = tf.matmul(a, b) sess = tf.Session() sess.run(tf.global_variables_initializer()) sess.run(dot) array([[-4, -3], [ 3, -4]], dtype=int32) 11 1 −2 2 3 −1 1 2 −1 4 3 1 2 −4 −3 3 −4
  • 13. 회귀 분석 • 숫자 결과를 예측합니다. • 출력 값은 연속적인 속성을 가집니다. • Regression Analysis ex) • 환자의 당뇨병 데이터를 이용하여 1년뒤 악화 정도를 측정 • 과거 주식시장의 데이터를 이용하여 내일 주가를 예측 • 지역, 방 개수, 평수 등의 데이터를 이용하여 주택 가격 예측 13
  • 14. 1차 선형 함수 𝑦; = 𝑤 × 𝑥 + 𝑏 가중치 편향 14
  • 15. Hyperplane TV Radio Sales 𝑆𝑎𝑙𝑒𝑠 = 𝑎D × 𝑅𝑎𝑑𝑖𝑜 + 𝑎I×𝑇𝑉 + 𝑏 • 기본 베이스 모델 • 대량의 데이터셋 • 특성이 비교적 많을 때 15
  • 16. 일반화 • n 개의 특성이 있을 때 선형 회귀의 일반 방정식 𝑦; = 𝛽D 𝑥D + 𝛽I 𝑥I + ⋯ + 𝛽N 𝑥N + 𝛽O • 𝑥O = 1 인 항을 추가 𝑦;D = 𝛽D 𝑥D + 𝛽I 𝑥I + ⋯ + 𝛽N 𝑥N + 𝛽O 𝑥O ⋮ 𝑦;Q = 𝛽D 𝑥QD + 𝛽I 𝑥QI + ⋯ + 𝛽N 𝑥QN + 𝛽O 𝑥QO 𝑦; = 𝑥DD ⋯ 𝑥DO ⋮ ⋱ ⋮ 𝑥QD ⋯ 𝑥QO 𝛽D ⋮ 𝛽O , 𝑚 = 데이터개수 → 𝒚V = 𝑿𝜷Y 16
  • 17. 솔루션 • 최소제곱법(Ordinary Least Squares)를 사용하여 평균제곱오차(Mean Squared Error)를 최소화하는 파라미터를 찾음. • 평균제곱오차 1 𝑚 Z 𝑦 − 𝑦; I , 𝑦; = 𝑋𝛽 Q ]D • 최소제곱법 𝛽^ = 𝑋_ 𝑋 `D 𝑋_ 𝑦 오차의 제곱 모든 훈련 데이터의 오차 제곱을 더함 훈련 데이터 갯수로 나눔 • 데이터가 아주 많은 경우 문제 • 역행렬을 구할 수 없는 경우 문제 17
  • 18. 경사하강법(Gradient Descent) • 오차함수의 낮은 지점을 찾아가는 최적화 방법 • 낮은 쪽의 방향을 찾기 위해 오차함수를 현재 위치에서 미분함 𝐽 = 1 2𝑚 Z 𝑦 − 𝑦; I , ∇𝐽 = 1 𝑚 (𝑦 − 𝑦;) Q ]D 18
  • 21. 뉴런처럼 보이게 Neuron 𝑦; 𝑤 𝑦; = 𝑤 × 𝑥 + 𝑏 𝑥 𝑏 × + 𝒚 21
  • 22. 낮은 곳으로 Neuron 𝑦; 𝑤 𝑥 𝑏 × + 𝒚 𝜕𝐽 𝜕𝑤 = 1 𝑚 𝑦 − 𝑦; 𝜕𝑦; 𝜕𝑤 = 1 𝑚 (𝑦 − 𝑦;)𝑥 𝜕𝐽 𝜕𝑏 = 1 𝑚 𝑦 − 𝑦; 𝜕𝑦; 𝜕𝑏 = 1 𝑚 (𝑦 − 𝑦;) 𝐽 = 1 2𝑚 Z 𝑦 − 𝑦; I Q ]D 22
  • 23. 파라미터 업데이트 Neuron 𝑦; 𝑤 = 𝑤 + ∆𝑤 = 𝑤 + 1 𝑚 (𝑦 − 𝑦;)𝑥 𝑥 × + 𝒚 𝑏 = 𝑏 + ∆𝑏 = 𝑏 + 1 𝑚 (𝑦 − 𝑦;) (𝑦 − 𝑦;) 23
  • 24. 적당한 속도 • 파라미터 w, b 의 업데이트가 클 경우 최저점(local minima)을 지나칠 수 있습니다. • 학습 속도(learning rate)로 그래디언트 업데이트를 조절합니다. 𝑤 = 𝑤 + 𝜶 1 𝑚 (𝑦 − 𝑦;)𝑥 𝑏 = 𝑏 + 𝜶 1 𝑚 (𝑦 − 𝑦;) 24
  • 25. 하이퍼파라미터 • 하이퍼파라미터(Hyperparameter)는 알고리즘이 데이터로부터 학습할 수 없는 파라미터입니다. • 모델 파라미터는 알고리즘이 데이터로 부터 학습하는 파라미터입니다. 예 를 들면, w, b 입니다. • 학습속도(learning rate)은 하이퍼파라미터입니다. • 이 외외에도 신경망의 레이어수나 유닛수, k-NN 알고리즘의 k 값 등 알고 리즘마다 여러가지의 모델 파라미터를 가지고 있습니다. • 최적의 하이퍼파라미터를 찾기위해서 반복적인 학습, 검증 과정을 거쳐야 합니다. 25
  • 27. 데이터 생성 세션 객체 생성 평균 0, 표준편차 0.55 인 x 샘플 1000개 생성 0.1*x + 0.3 방정식을 만족하는 y 데이터를 생성하되, 평균 0, 표준편차 0.03을 가지도록 함. 27
  • 29. 계산 그래프 생성 가중치 W, b 변수를 0으로 초기화 y_hat 계산 손실 함수인 MSE 계산 경사하강법 객체 생성손실함수 노드를 최적화 하는 학습노드 생성 𝐽 = 1 2𝑚 Z 𝑦 − 𝑦; I Q ]D train loss y_hat W x b 29
  • 30. 계산 그래프 실행 변수 초기화 학습 노드 실행 학습된 파라미터와 손실 함수 값 출력 30
  • 31. 결과 그래프 w = 0.099, b = 0.298 31
  • 32. 선형 회귀 정리 • 선형 회귀 분석은 선형 함수를 사용하여 연속적인 결과를 예측합니다. • 선형 회귀의 대표적인 비용함수는 MSE(mean square error) 함수입니다. • 최소제곱법 대신 경사하강법을 사용하여 점진적으로 최적의 파라미터를 찾았습니다. • 특성이 많을 경우 높은 성능을 낼 수 있습니다. 이럴 경우 오히려 성능을 제한해야 할 때가 많습니다. • 비교적 대량의 데이터셋에서도 잘 작동합니다. • 데이터 분석을 할 때 처음 시도할 모델로서 좋습니다. 32
  • 34. 분류(Classification) • 클래스 레이블을 예측합니다. • 출력 결과는 이산적입니다. • Binary Classification(이진 분류), Multiclass Classification(다중 분류) ex) • 스팸 분류 • 암 진단 • 붓꽃의 품종 판별 • 손글씨 숫자 분류 34
  • 35. 로지스틱 회귀 (이진 분류) • 이진 분류는 샘플을 True(1), 또는 False(0)으로 분류합니다. • 회귀의 선형 함수를 그대로 이용합니다. • 선형 함수의 결과를 0~1 사이의 확률로 변환합니다. • 0.5 이상일 경우 True, 아니면 False 로 분류합니다. 𝑦; = 𝑤 × 𝑥 + 𝑏 35
  • 36. 로지스틱 함수 • 로지스틱(logistic) 또는 시그모이드(sigmoid) 함수는 -∞~+∞입력에 대해 0~1 사이의 값을 출력합니다. 𝑦; = 1 1 + 𝑒`(g × h i j) = 1 1 + 𝑒`k 𝑧 = 𝑤 × 𝑥 + 𝑏 36
  • 37. 뉴런처럼 보이게 Neuron Sigmoid 0 ~ 1 𝑤 𝑦; = 𝜎(𝑧) 𝑥 𝑏 × + 𝒚 𝑧 = 𝑤 × 𝑥 + 𝑏 -∞~+∞ 𝜎(𝑧) = 1 1 + 𝑒`k 37
  • 38. 분류에서의 손실 함수는 • 분류는 크로스 엔트로피(cross-entropy) 손실 함수를 사용합니다. • 크로스 엔트로피 손실함수를 미분하면 • 선형회귀의 MSE 손실함수의 미분 결과와 동일합니다. 𝐽 = − 1 𝑚 Z 𝑦𝑙𝑜𝑔 𝑦; Q ]D = − 1 𝑚 Z[𝑦𝑙𝑜𝑔 𝑦; + 1 − 𝑦 log (1 − 𝑦;)] Q ]D 𝜕𝐽 𝜕𝑤 = − 1 𝑚 Z 𝑦 − 𝑦; 𝑥 Q ]D 𝜕𝐽 𝜕𝑏 = − 1 𝑚 Z 𝑦 − 𝑦; Q ]D 38
  • 39. 낮은 곳으로 Neuron Sigmoid 𝑤 𝑥 𝑏 × + 𝒚 𝑦; = 𝜎(𝑧) = 1 1 + 𝑒`k 𝜕𝐽 𝜕𝑤 = 1 𝑚 𝑦 − 𝑦; 𝜕𝑦; 𝜕𝑤 = 1 𝑚 (𝑦 − 𝑦;)𝑥 𝜕𝐽 𝜕𝑏 = 1 𝑚 𝑦 − 𝑦; 𝜕𝑦; 𝜕𝑏 = 1 𝑚 (𝑦 − 𝑦;) 𝐽 = − 1 𝑚 Z[𝑦𝑙𝑜𝑔 𝑦; + 1 − 𝑦 log (1 − 𝑦;)] Q ]D 𝑦;𝑧 39
  • 40. 그래디언트 업데이트 Neuron Sigmoid 𝑥 × + 𝒚𝑦; 𝑤 = 𝑤 + ∆𝑤 = 𝑤 + 1 𝑚 (𝑦 − 𝑦;)𝑥 𝑏 = 𝑏 + ∆𝑏 = 𝑏 + 1 𝑚 (𝑦 − 𝑦;) (𝑦 − 𝑦;) 40
  • 41. 로지스틱 정리 • 분류에 사용하는 모델입니다. • 선형 함수 결과를 시그모이드 함수를 사용하여 0~1 사이로 압축합니다. • 이진 분류는 0.5 보다 높을 때는 True 로하고 그 이하는 False 로 하여 모델 을 학습시킵니다. • 시그모이드 함수를 사용한 크로스 엔트로피 비용함수의 미분 결과는 선형 함수를 사용한 MSE 비용함수의 미분과 동일합니다. • 로지스틱 회귀는 다중 분류도 지원합니다. 41
  • 43. 위스콘신 유방암 데이터 사이킷런의 데이터셋 이용 넘파이 위스콘신 유방암 데이터 로드 샘플 데이터를 가지고 있는 scikit-learn의 Bunch 오브젝트 43
  • 44. 넘파이(NumPy) • 데이터 과학을 위한 다차원 배열 패키지로 많은 배열 연산을 제공합니다. • 넘파이는 파이썬 리스트와는 달리 다른 종류의 데이터 타입을 담을 수 없 습니다. • scikit-learn, tensorflow 등 많은 머신 러닝 패키지들이 입력 값으로 넘파이 배열을 받을 수 있습니다. 44
  • 45. cancer 특성 30개의 특성 특성의 이름 𝑦; = 𝑤D 𝑥D + 𝑤I 𝑥I + ⋯ + 𝑤qO 𝑥qO + 𝑏 45
  • 47. 선형 함수 계산 0.2 0.6 ⋯ 0.1 0.2 ⋮ ⋱ ⋮ 0.5 ⋯ 0.4 ⋅ 0.1 ⋮ 0.3 = 1.5 5.9 ⋮ 0.7 + 0.1 = 1.6 6.0 ⋮ 0.8 30개 가중치: 569개 샘플에 모두 적용 569개 샘플 𝑥 × 𝑊 + 𝑏 = 𝑦; [569, 30] x [30, 1] = [569, 1] + [1] = [569, 1] 1개 편향(bias): 569개 샘플에 모두 적용 (브로드캐스팅) 30개 특성 569개 결과 (logits) 47
  • 48. 손실 함수와 최적화 로지스틱(시그모이드) 크 로스 엔트로피 손실함수 학습속도 매우 낮게 변수 초기화 48
  • 49. 학습 • 여기서는 예를 간단히 하기위해 학습 데이터로 모델의 성능을 평가했습니다만 실전에서는 이렇게 해서는 안됩니다 prediction 의 모든 원 소에 적용, 0.5보다 크 면 True, 작으면 False[569, 1] 크기 5000번 학습하면서 손실함수 값 기록 92% 정확도 49
  • 50. 정리 • 선형 모델을 이용해 회귀와 분류 학습을 했습니다. • 분류는 로지스틱 함수를 이용해 확률로 변환하여 레이블을 예측합니다. • 회귀에서는 임의의 샘플 데이터 1000개, 특성 1개를 사용했고 분류에서는 샘플 데이터 569개, 특성 30개를 사용했습니다. • 회귀에서 학습한 모델 파라미터는 가중치 w 1개, 편향 b 1개 입니다. • 분류에서 학습한 모델 파라미터는 가중치 w 30개, 편향 b 1개 입니다. • 선형 함수를 표현하는 계산 그래프를 만들고 텐서플로우에서 제공하는 손 실함수를 사용했습니다. • 경사하강법 최적화 알고리즘을 적용하여 최적값을 찾았습니다. 50