Upload
haesun-park
View
272
Download
0
Embed Size (px)
Citation preview
Introduction to
Machine Learning with Python
2. Supervised Learning(2)
Honedae Machine Learning Study Epoch #2
1
Contacts
Haesun Park
Email : [email protected]
Meetup: https://www.meetup.com/Hongdae-Machine-Learning-Study/
Facebook : https://facebook.com/haesunrpark
Blog : https://tensorflow.blog
2
Book
파이썬라이브러리를활용한머신러닝, 박해선.
(Introduction to Machine Learning with Python, Andreas
Muller & Sarah Guido의번역서입니다.)
번역서의 1장과 2장은블로그에서무료로읽을수있습니다.
원서에대한프리뷰를온라인에서볼수있습니다.
Github:
https://github.com/rickiepark/introduction_to_ml_with_python/
3
선형모델 - 분류
4
이진분류binary classification
회귀와같은선형방정식을사용
𝑦 = 𝑤 0 × 𝑥 0 + 𝑤 1 × 𝑥 1 + ⋯+ 𝑤 𝑝 × 𝑥 𝑝 + 𝑏 > 0
0보다크면양성클래스(+1), 0보다작으면음성클래스(-1)
predict_proba()는 sigmoid 함수사용, predict()는 decision_function() 사용
𝑦이입력에대한결정경계decision boundary를나타냄
결정경계는직선(특성 1개), 면(특성 2개), 초평면(특성 3개)으로표현됨
선형모델의알고리즘구분
가중치와절편이훈련데이터에얼마나잘맞는지비용함수또는손실함수
사용할수있는규제의방법5
0-1 손실
계단함수라미분불가능최적화에사용하기어려움
6
대리손실함수surrogate loss function
7
LogisticRegression, LinearSVC
대표적인선형분류알고리즘
로지스틱회귀Logistic Regression(sklearn.linear_model.LogisticRegression)
선형서포트벡터머신Linear SVM(sklearn.svm.LinearSVC)
로지스틱(시그모이드sigmoid) 함수
8
𝑦 =1
1 + 𝑒−𝑧𝑧 = 𝑋 ⋅ 𝑤 + 𝑏
predict() : z > 0predict_proba()
: 𝑦 > 0.5
로지스틱회귀의비용함수
multi_class=multinomial
(크로스엔트로피cross-entropy 손실)
multi_class=ovr
(로지스틱logistic 손실)
9
−
𝑖=1
𝑛
𝑦𝑙𝑜𝑔 𝑦 , 𝑦 =𝑒𝑧
𝑒𝑧
−
𝑖=1
𝑛
𝑦𝑙𝑜𝑔 𝑦 + 1 − 𝑦 log 1 − 𝑦 , 𝑦 =1
1 + 𝑒−𝑧, 𝑦 = {1, 0}
−
𝑖=1
𝑛
log 𝑒−𝑦 𝑤×𝑥+𝑏 + 1 , 𝑦 = {1,−1}
𝐶 ⋅ 𝐿 𝑤 + 𝑙2 𝑜𝑟 𝑙1, 𝐶 =1
𝛼
𝛼 ↑ 𝐶 ↓ → 규제 ↑ 𝑤 ↓𝛼 ↓ 𝐶 ↑ → 규제 ↓ 𝑤 ↑
텍스트의공식과구현방식에는종종차이가있음
소프트맥스softmax 함수
규제강도
LinearSVC vs LogisticRegression
10
L2 규제(penalty=’l2’ 기본값)
loss=‘squared_hinge’ (기본값)
결정경계
forge 데이터셋
클래스 1
클래스 0
LinearSVC’s C param
11
과소적합 과대적합
C=1.0 기본값
𝐶 ↓ → 규제 ↑ 𝑤 ↓ (다수의포인트에맞춤)𝐶 ↑ → 규제 ↓ 𝑤 ↑ (개개의포인트에맞춤)
규제강도
LogisticRegression + cancer
12
과소적합(규제가너무큼)
C=1.0
복잡도증가, 성능향상
복잡도를기본값보다더낮추면
30개특성
LogisticRegression.coef_ (L2)
13
규제완화
회귀의 Ridge와비슷
LogisticRegression.coef_ (L1)
14
규제완화
회귀의 Lasso와비슷
다중클래스분류
로지스틱회귀를제외하고대부분선형분류모델은이진분류만을지원
로지스틱회귀는소프트맥스함수를사용하여다중분류지원
LogisticRegression(multi_class=multinomial)
대부분모델들은클래스마다따로이진분류모델을만드는일대다one-vs-rest
방식(또는 one-vs-all)을사용하여이진분류모델중에서가장높은점수의
클래스가선택
클래스마다가중치와절편이만들어짐
15
−
𝑖=1
𝑛
𝑦𝑙𝑜𝑔 𝑦 , 𝑦𝑐 =𝑒𝑧𝑐
𝑘=1𝐾 𝑒𝑧𝑘
𝑧𝑘 = 𝑤𝑘 0 × 𝑥 0 + 𝑤𝑘 1 × 𝑥 1 + ⋯+ 𝑤𝑘 𝑝 × 𝑥 𝑝 + 𝑏𝑘
make_blobs dataset
16
3개의클래스를가진 2차원데이터셋
LinearSVC 다중분류
17
세개의클래스 두개의특성
클래스 0
클래스 1클래스 2
다중분류결정경계
18
장단점과매개변수
규제매개변수: 회귀모델은 alpha, 분류모델은 C
보통규제는로그스케일로조절 (0.1, 1, 10, 100)
일부특성이중요하거나해석을쉽게하려면 L1 규제, 아니면기본값 L2
선형모델의장점
학습속도와예측속도빠름(벡터 곱셈)
비교적예측과정을이해하기쉬움(계수 분석이어려울수있음)
큰데이터셋과희박데이터셋에적합
샘플수(n)보다 특성(m)이 많을때. ex) m = 10,000, n = 1,000
특성이부족할때는선형모델보다는커널 SVM 등이효과적
수십, 수백만개라면 LogisticRegression 에 solver=’sag’ 옵션을사용(L2만가능)
더큰데이터셋에서는 SGDRegressor, SGDClassifier 19
𝛼 ↑ 𝐶 ↓ → 규제 ↑ 𝑤 ↓𝛼 ↓ 𝐶 ↑ → 규제 ↓ 𝑤 ↑
메서드연결method chaining
20
객체(self) 반환logreg = LogisticRegression()
logreg = logreg.fit(X_train, y_train)
예측결과반환
학습한로지스틱회귀모델을다음코드에서사용할수없음
나이브베이즈
21
나이브베이즈Navie Bayes 분류기
선형분류기보다훈련속도가빠르지만일반화성능이조금떨어집니다.
특성마다클래스별통계를취합해파라미터를학습합니다.
GaussianNB : 연속적인데이터
BernoulliNB : 이진데이터, 텍스트데이터
MultinomialNB : 정수카운트데이터, 텍스트데이터
22
BernoulliNB
23
MultinomialNB : 클래스별특성의평균GaussianNB : 클래스별특성의표준편차와평균
장단점과매개변수
alpha 매개변수로모델복잡도조절합니다.
가상의양수데이터를 alpha 개수만큼추가하여통계를완만하게만듦니다.
alpha가크면모델의복잡도가낮아지지만성능의변화는크지않습니다.
GaussianNB는고차원데이터셋에 BernoulliNB, MultinomialNB는텍스트와같은
희소데이터를카운트하는데사용합니다.
MultinomialNB는 0이아닌특성이많은경우 BernoulliNB보다성능이좋습니다.
훈련과예측속도가빠르고과정을이해하기쉽습니다.
희소한고차원데이터셋에잘작동하고매개변수에민감하지않습니다.24
결정트리
25
결정트리decision tree
분류와회귀에널리사용됩니다.
결정에다다르기위해예/아니오질문을이어나가면서학습하는이진트리입니다.
26
특성(i.e. 얼마나많이먹나요?)
노드node
리프leaf 노드
엣지edge
루트root 노드
결정트리만들기
sklearn.datasets.make_moons(): two_moons 데이터셋
정답에가장빨리도달하는 yes/no 질문(테스트)을학습합니다.
연속적인데이터셋에서는 “특성 i 가 a 보다큰가?”와같은형태가됩니다.
27
결정트리훈련
28
x[1]
x[0]
클래스 0
클래스 1
* 분할기준- 회귀문제:
criterion=‘mse’
- 분류문제:
criterion=‘gini’ or ‘entropy’
결정트리예측
하나의특성을사용하여데이터를둘로나누므로항상축에평행하게분리됩니다.
학습은순수노드만남을때까지분할이반복되고새로운데이터포인트가속한
분할영역이예측(다수의타깃혹은노드의평균값)이됩니다.
29순수노드: 하나의타깃만가짐
복잡도제어
모든리프가순수노드가될때까지진행하면복잡해지고과대적합됩니다.
순수노드로만이루어진트리는훈련데이터를 100% 정확히맞추므로일반화
성능이낮습니다.
사전가지치기pre-prunning: 트리생성을미리중단
트리의최대깊이제한, 리프의최대개수제한
분할가능한포인트의최소개수지정
사후가지치기post-prunning: 트리를만든후노드를삭제하거나병합합니다.
DecisionTreeRegressor, DecisionTreeClassifier는사전가지치기만지원합니다.
30
복잡도제어효과
31
결정트리생성및훈련
과대적합트리의최대깊이 4로제한
모든리프노드가순수노드
결정트리분석
32
알고리즘이해쉽고비전문가에게설명하기좋습니다. 하지만깊이가조금만깊어도매우장황해집니다.
많은데이터가흐르는경로를집중해서확인하는것이좋습니다.
특성중요도feature importance
0(예측에사용되지않음)과 1(완벽하게예측) 사이의값으로전체합은 1입니다.
33
트리그래프의첫번째노드로활용(악성또는양성의의미인지알수없음)
다른특성과동일한정보를가지고있을수있음
특성과클래스사이의관계
34
X[1]의값과출력과의관계가단순히비례/반비례하지않습니다.
결정트리 - 회귀
sklearn.tree.DecisionTreeRegressor
훈련데이터범위밖을예측하는외삽extrapolation이불가능합니다.
스케일에영향받지않습니다.
e.g. 컴퓨터메모리가격데이터셋
35훈련데이터
테스트데이터
선형회귀와비교하기위해로그스케일로바꾸었습니다.
LinearRegression vs DecisionTreeRegressor
36
트리복잡도에제한이없으므로훈련데이터를완벽히예측(가지치기없음)
데이터범위밖에서는마지막훈련데이터포인트를이용하여예측
장단점과매개변수
모델복잡도제어(사전가지치기) 매개변수
max_depth : 트리의최대깊이
max_leaf_nodes : 리프노드의최대개수
min_samples_leaf : 리프노드가되기위한최소샘플개수
min_samples_split : 노드가분할하기위한최소샘플개수
작은트리일때시각화가좋아설명하기쉽습니다.
특성이각각처리되므로데이터스케일에구애받지않습니다.
정규화나표준화같은전처리과정이필요없습니다.
이진특성이나연속적인특성이혼합되어있어도가능합니다.
단점: 과대적합가능성높아일반화성능이좋지않습니다.
37
랜덤포레스트
38
랜덤포레스트random forest
여러결정트리를묶어과대적합을회피할수있는앙상블방법중하나입니다.
예측을잘하는(과대적합된) 트리들를평균내어과대적합을줄입니다.
랜덤포레스트는트리생성시무작위성을주입합니다.
트리생성시데이터중일부를무작위로선택합니다.
노드분할시무작위로후보특성을선택합니다.
sklearn.ensemble.RandomForestClassifier, RandomForestRegressor의
n_estimators 매개변수로트리의개수를지정(기본값 10)합니다.
모든트리의예측을만든후, 회귀는각예측값의평균, 분류는예측
확률의평균(약한투표전략)을합니다.
39
무작위성
부트스트랩샘플boostrap sample
n 개의훈련데이터에서무작위로추출해 n 개의데이터셋을만듦
중복추출이가능하며하나의부트스트랩샘플엔대략 1/3 정도샘플이누락됨
(100개샘플중하나가선택되지않을확률을 100번반복 =99
100
100= 0.366)
[‘a’, ‘b’, ‘c’, ‘d’] [’b’, ‘d’, ‘d’, ‘c’], [‘d’, ‘a’, ‘d’, ‘a’]
노드분할에사용할후보특성을랜덤하게선택(max_features 매개변수)합니다.
max_features n_features : 모든특성을사용. 비슷한트리들이생성.
max_features 1 : 노드분할을무작위로수행. 서로많이다르고깊은트리생성.
랜덤포레스트의트리가모두다르게생성됨
40
랜덤포레스트분석
41
forest.estimators_각결정트리는서로많이다릅니다
앙상블된결정경계
cancer 데이터셋에적용
42
단일결정트리훈련세트: 1.0
테스트세트: 0.937 특별히매개변수튜닝을하지않아도좋은성능을냅니다.
0 이상인특성이많음.
가장중요한특성이바뀌었음
장단점과매개변수
장점회귀와분류에서가장널리사용되는알고리즘입니다.(설명하기는어렵습니다)
뛰어난성능을내며매개변수튜닝부담이적고데이터스케일불필요합니다.
큰데이터셋적용가능, 여러 CPU 코어에병렬화가능(n_jobs: 기본값 1, 최대 -1)
단점많은트리가생성되므로자세한분석이어렵고트리가깊어지는경향이있습니다.
차원이크고희소한데이터에성능안좋습니다(e.g. 텍스트데이터) 선형모델
선형모델보다메모리사용량이많고훈련과예측이느립니다.
매개변수n_estimators(트리개수, 메모리와훈련시간고려), max_features(후보특성의개수)
max_features 기본값, 회귀일때는 n_features, 분류일때는 sqrt(n_features)
n_estimators가클수록, max_features가작을수록과대적합을줄여줍니다.
사전가지치기: max_depth, max_leaf_nodes, min_samples_leaf, min_samples_split 43
그래디언트부스팅
44
그래디언트부스팅Gradient Boosting 회귀
결정트리(DecisionTreeRegressor)를기반으로하는또다른앙상블알고리즘
회귀와분류에모두사용가능합니다.
랜덤포레스트와는달리무작위성대신사전가지치기를강하게적용합니다.
다섯이하의얕은트리(약한학습기)를사용하여이전트리의오차를보완하도록
다음트리생성합니다.
회귀 : 최소제곱오차 손실함수, 분류 : 로지스틱손실함수
경사하강법gradient descent 사용(learning_rate 매개변수중요, 기본값 0.1)
머신러닝경연대회(e.g. 캐글Kaggle)에서많이사용됩니다.
랜덤포레스트보다매개변수에조금더민감하지만조금더높은성능을냅니다.45
GradientBoostingClassifier
46
n_estimators=100, max_depth=3
learning_rate=0.1
과대적합트리깊이제한
학습률감소
그래디언트부스팅의특성중요도
47
랜덤포레스트와는달리일부특성이 0이되었습니다.
장단점과매개변수
장점
랜덤포레스트보다예측속도가빨라야하거나 성능을더쥐어짜야할때사용합니다.
특성스케일조정필요없고이진, 연속적인특성에도사용가능합니다.
아주대규모일경우분산처리가가능한 xgboost가빠르고튜닝하기도쉽습니다.
단점
희소한고차원데이터에잘작동하지않습니다.
매개변수에민감, 훈련시간이더걸립니다.
매개변수
n_estimators, learning_rate, max_depth(<=5)
learning_rate을낮추면복잡도가낮아져성능을올리려면더많은트리가필요합니다.
랜덤포레스트와는달리 n_estimators를 크게하면과대적합가능성높아집니다.
가용메모리와시간안에서 n_estimators를맞추고 learning_rate으로조절합니다. 48