• 작성일: 2019.01.29
  • 분석 기간 : 2019.01.30 - 2019.02.06

분석 목표

  • 후기가 판매완료에 미치는 영향을 분석
    • 양의 상관관계가 있을 경우후기 관리 및 후기 등록 유도를 통한 선순환 생태계 구축을 목표로 하기 위함

데이터 개요

  1. 대상 및 기간: "2019. 01. 30"에 등록된 판매 상품들 중 일반 상점이 등록한 물품들의
    1. "D+1"의 판매 진행상태
    2. "D+4"의 판매 진행상태
    3. "D+6"의 판매 진행상태
  2. 참조한 데이터
    1. 판매자 부분: 고유아이디, 후기 점수, 등록된 상점후기 개수
    2. 상품 부분: 품목아이디, 상품 판매여부

 


분석 결과 - 후기부분

  • 후기 분포에 대한 overview - 리뷰 점수 부분

  • 후기 점수 분포 그래프(5점 만점, 0점은 후기 미등록)

 

신규상품 등록 상점수

후기 등록된 상점(a)

후기 4점 이상 상점(b)

후기 미등록 상점

19519

11494

10160

8025

58.89%

52.05%

41.11%

(b/a) 

88%

  • , 후기 등록된 상점의 88%가량이 4점 이상의 높은 점수를 보유함
    • 따라서, 후기 점수 분포가 아닌 등록 유무를 가지고 판단해도 괜찮다는 결론을 내림

 

  • 후기 분포에 대한 overview - 후기 개수 부분

  • 후기 개수 분포 그래프(max=476, 0은 후기 등록 없음)

 

신규상품 등록 상점수

후기 등록된 상점

상점후기 등록된 인원중 

19519

11494

후기 3개 이상

후기 5개 이상

후기 10개 이상

후기 100개 이상

58.89%

7804

6022

3731

167

67.90%

52.39%

32.46%

1.45%

  • 후기 등록된 상점중 절반가량은 5개 미만의 후기 보유중
    • 따라서, 누적 점수의 신뢰도가 떨어지기에 등록 유무를 가지고 판단해도 괜찮다는 결론을 내림

 


분석 결과 - 판매부분

  • "2019. 01. 30"에 등록된 판매 상품들 요약

전체 상품 등록

후기 있는 상점들이 등록한 상품

후기 없는 상점들이 등록한 상품

건수

37590

22889

14701

비율

60.8%

39.1%

 

  • "D+1"의 판매 진행상태(a)

전체 상품 등록

판매 완료*

삭제된 상품

예약된 상품

건수

37590

3129

5136

548

비율

8%

13.6%

1.4%

 

  • *판매완료 상품 중 

후기 있는 상점들이 올린 상품

후기 없는 상점들이 올린 상품

건수

2069

1060

비율

66%

34%

 

등록상품당 판매완료

인당 판매상품수

상점후기 있음

9.04%

0.18

상점후기 없음

7.21%

0.13

 

 

  • "D+4"의 판매 진행상태(b)

전체 상품 등록

판매 완료*

삭제된 상품

예약된 상품

건수

37590

4382

7127

690

비율

11.6%

18.9%

1.8%

 

  • *판매완료 상품 중 

후기 있는 상점들이 올린 상품

후기 없는 상점들이 올린 상품

건수

2894

1488

비율

66%

34%

 

등록상품당 판매완료

인당 판매상품수

상점후기 있음

12.64%

0.25

상점후기 없음

10.12%

0.19

 


  • "D+6"의 판매 진행상태(c)

전체 상품 등록

판매 완료*

삭제된 상품

예약된 상품

건수

37590

4925

7762

878

비율

13.1%

20.6%

2.3%

 

  • *판매완료 상품 중 

후기 있는 상점들이 올린 상품

후기 없는 상점들이 올린 상품

건수

3270

1655

비율

66.4%

33.6%

 

등록상품당 판매완료

인당 판매상품수

상점후기 있음

14.29%

0.28

상점후기 없음

11.26%

0.21

 



[추가] 분석결과 - 상점 종류에 따라

  • 후기 4점 이상인 상점들의 판매 진행상테

n = 20570

d+1  상태

비율

d+4  상태

비율

d+6  상태

비율

판매중

15785

76.74%

13924

67.69%

13108

63.72%

예약중

367

1.76%

450

2.19%

605

2.94%

삭제

2492

12.11%

3507

17.05%

3830

18.62%

판매완료

1926

9.36%

2689

13.07%

3027

14.72%

총합

20570

20570

20570

 

  • 삭제 품목에 대한 추적

d+1 상태

비율

d+4 상태

비율

d+6 상태

비율

총합

미판매 삭제

2334

93.6%

831

82%

278

85.4%

3443 (89.8%)

판매후 삭제

158

6.4%

184

18%

45

13.9%

387 (10.1%)

총합

2492

1015

323

3830

 

  • 후기 없는 상점들의 판매 진행상테

n = 14700

d+1  상태

비율

d+4  상태

비율

d+6  상태

비율

판매중

11198

76.18%

9942

67.63%

9501

64.63%

예약중

159

1.08%

200

1.36%

229

1.56%

삭제

2283

15.53%

3070

20.88%

3315

22.55%

판매완료

1060

7.21%

1488

10.12%

1655

11.26%

총합

14700

14700

14700

 

  • 삭제 품목에 대한 추적

d+1 상태

비율

d+4 상태

비율

d+6 상태

비율

총합

미판매 삭제

2156

94.4%

696

88.4%

203

82.9%

3055 (96.8%)

판매후 삭제

127

5.5%

91

11.6%

42

17.1%

260 (8.2%)

총합

2283

787

245

3155

 


결과 해석

  • 후기의 존재는 상품 판매에 긍정적인 영향을 준다
    • 후기가 있는 상점의 경우, 분석 기간인 "D+1", "D+4", "D+6" 모두 "등록상품당 판매완료" "판매자당 판매물품수"가 우위에 있음
    • (후기 4점이상과 후기 없음 비교) 삭제 비율의 경우, 모든 타임라인에서 "후기 없는 상점"이 더 높은 비율 보여줌
    • (후기 4점이상과 후기 없음 비교) 판매 완료 비율의 경우, 모든 타임라인에서 "후기 4점 이상인 상점"이 더 높은 비율 보여줌  
  • 후기는 "점수"보다 "존재 유무"가 관건이다
    • 신규 물품을 등록한 상점들중 88% 4점 이상의 평점 기록중
    • 또한, 절반 가량이 5개 미만의 후기 보유중
    • 따라서, 누적된 후기 점수의 신뢰도가 떨어진다고 판단
  • 상품 판매 완료후 등록기록을 삭제해버리는 건수 일부 발생하는 것으로 추정 
  • 위 정보를 판매자에게 제공하여, 판매자가 구매자에게 후기 작성을 유도하도록 하는 전략 필요?
  • 다만, 전체 상점대비 후기 존재하는 상점의 비율이 높아질 경우, 어떤 영향을 줄지는 미지수 

 

 


  • 해당 분석은 여러 변수를 활용하여 "종류"를 예측하는 이진분류 모델을 voting classifier를 통해 구현해 본 것입니다.

  • 순서는 아래와 같습니다.


Step 1.

전처리


Step 2. 

모델링


Step 3. 

모델 서빙



데이터 import 진행


데이터 split 진행





데이터의 outlier를 잡기 위하여 

min-max가 아닌 robust scaling을 진행 




타겟 변수인 예측을 위한 모델링 진행




이전 실험에서 가장 높은 정확도를 보인 

Random Forest와 XGBoost에 대한 cross validation 진행


SVM / RF / XGB에 대한 grid search와 

"soft" voting classifier 구현 




"soft" voting classifier 구현 - 확률을 예측할 것이기 때문



sql server와 연동하여 model serving

- 예측치(확률)을 결과값으로 받을 수 있게



  • 작성일: 2019, 01. 29
  • 분석 기간 : 2019. 01. 24 - 2019. 01. 29

분석 목표

  • 가입후 첫 상품을 "판매 완료"하고 나서 두번째 상품을 등록하는데 걸리는 시간
    • 두 기간 간격을 바탕으로 물품 등록 부스팅 전략과 연계하여 액션 플랜 이끌어 내기 위함

데이터 개요

  1. 기간: "2018. 07. 01 - 2018. 07. 14"에 가입한 유저중 
    1. "2018. 07. 01 - 2018. 07. 14" 사이에 "첫 판매 완료"를 경험한 집단
    2. "2018. 10. 01 - 2018. 10. 14" 사이에 "첫 판매 완료"를 경험한 집단
    3. "2018. 12. 01 - 2018. 12. 14" 사이에 "첫 판매 완료"를 경험한 집단
      • 가입 후 "첫 판매 완료"까지의 기간에 따라 "추가 물품 등록" 부분에 있어서 다른 행동 패턴을 찾기 위함

분석 결과

  • 가입후 이 주 내로 첫 판매완료 경험한 집단(집단 a - "2018. 07. 01 - 2018. 07. 14")

첫 판매완료 경험한 유저중*

비율

추가 상품 등록유저중

비율

추가 상품 미등록

32.63%

5일 이내 재등록

46.88%

일주일 이내 추가 상품 재등록

36.49%

7일 이내 재등록

54.17%

일주일 이후 추가 상품 재등록

30.88%

 

  • 가입후 2.5-3개월 이내로 첫 판매완료 경험한 집단(집단 b - "2018. 10. 01 - 2018. 10. 14")

첫 판매완료 경험한 유저중

비율

추가 상품 등록유저중

비율

추가 상품 미등록

38.71%

5일 이내 재등록

20.97%

일주일 이내 추가 상품 재등록

23.39%

7일 이내 재등록

38.16%

일주일 이후 추가 상품 재등록

37.90%

 

  • 가입후 4.5-5개월 이내로 첫 판매완료 경험한 집단(집단 c - "2018. 12. 01 - 2018. 12. 14")

첫 판매완료 경험한 유저중

비율

추가 상품 등록유저중

비율

추가 상품 미등록

42.71%

5일 이내 재등록

36.36%

일주일 이내 추가 상품 재등록

29.17%

7일 이내 재등록

50.91%

일주일 이후 추가 상품 재등록

28.13%

 


결과 해석

  1. "가입일" "첫 판매 완료" 사이 기간이 길어질수록 "추가 상품 등록" 비율이 낮아짐
    • 미등록 비율: 32% → 38% → 43%
    • , "가입일" "첫 판매 완료" 경험 사이 기간을 줄일경우 추가 상품 등록을 이끌 수 있음 
  2. 추가 상품 등록 부분시 일주일 이내 재등록이 많다
    • 일주일 내 재등록 비율: 54% → 38% → 50%
    • , 물건이생겨야파는것일 수도 있지만서비스를 경험(=돈을 버는 경험)해보고만족해서 물건을 찾아올리는 것일수도 있다
    • 만약 팔고 싶은 물건이 "생길때"만 다시 물품 등록을 하는 것이라면, 위와 같은 쏠림 현상이 나타나지 않을 것이라고 생각

 


  • *집단 a "판매 완료" 부터 "추가 물품 등록"일 까지의 간격 히스토그램
  • 처음 5, 그리고 그 다음 5(~10)에 집중되어 있는것을 확인할 수 있음

Action Plan

  • 가입 후 1-2주일 내 첫 "판매 완료"(=서비스 이용) 경험을 할 수 있도록 추진
    • 물품 등록 / 등록시 업 사용 유도(제리 진행중) / 등록후 일정 기간 지날시 가격 할인 유도 / 세 부분에서 푸시알람 발행 전략 필요?
  • "첫 판매 완료" 후 일 주일 이내에 상품 등록 촉진관련 액션(푸시)를 진행할 경우 물품 등록률이 높을 것이다?
    • "서비스 이용 경험(판매 경험)에 대한 잔상이 남아있을 때 추가적인 등록 부스팅 전략 실행할 필요 있음

Confusion matrix(혼동 행렬)?

  • 모델링 성과를 평가하는 지표 중 하나
  • (당연하지만) 분류에 한정되어 사용

  • 여기서 Actual은 실제 값을 뜻하며, Predicted는 예측한 결과물을 뜻한다.
  • 즉, TP(True Positive)와 TN(True Negative)가 높을수록 좋은 성능을 보여준다

Precision
  • TP / TP+FP
  • 즉, 내가 예측한 값 중에서 정답이 있을 경우(1에 가까울수록 좋다)

Recall(= sensitivity 민감도)
  • TP / TP+FN
  • 즉, 실제 1인 값 중에서 1이라고 예측한 것이 있을 경우(1에 가까울수록 좋다)


Accuracy 

  • TP + TN / TP+FP + TN + FN
  • 전체 경우의 수 중에서 정답으로 분류한 비율(1에 가까울수록 좋다)

F1 Score?


  • 왜 사용하는가? --> Precisoin 과 Recall의 밸런스를 고려하여 정확도 측정
  • Precison과 Recall이 한쪽만 높게 될 경우 문제가 된다. 
  • 하지만 특별한 상황의 경우 두 지표중 한쪽에 weight 를 두고 평가하게 된다. 아래의 예시 참고


Precision vs Recall?

  • 만약 탐정이 "도둑"을 예측한다고 해보자.
  • 이 때, Precision이 30%(== 탐정이 "도둑"이라고 예측한것 중, 진짜 도둑인 것의 비율)은 용납할 수 있다.
  • 하지만, Recall이 30%라면(진짜 도둑들중에서 탐정이 도둑이라고 예측한 것의 비율), 이 부분은 용납되기 어렵다. 
  • 안타깝게도, precision과 recall은 일종의 trade-off 관계를 가지게 되어, precision이 높으면 recall이 낮고.. 하는 관계를 가진다.


  • 그림에서 볼 수 있는 것처럼, recall은 우하향하게 되면 끊임없이 낮아지고, 상승하게 되면 꾸준히 완만하게 상승한다
  • 하지만, Precision은 꾸준히 상승하지만 "일시적으로" 낮아질 수 있다.


Intro

오늘 포스팅에서 다룰 주제는 Seaborn 라이브리러를 활용한 데이터 시각화 튜토리얼 (2)입니다.

해당 라이브러리에 대한 자료는 아리 링크에서 확인하실수 있습니다.

  • http://seaborn.pydata.org/index.html

참고자료

  • http://seaborn.pydata.org/tutorial.html (공식 홈페이지 튜토리얼)

  • https://datascienceschool.net/view-notebook/4c2d5ff1caab4b21a708cc662137bc65/


Plotting with categorical data

  • 데이터가 2차원이고 실수 값, categorical값이 섞여 있다면 기존의 플롯 이외에도 다음과 같은 분포 플롯들을 이용할 수 있다.


Boxplot

  • Boxplot은 사분위수 Quantile를 함께 표시해준다.
  • Quantile(사분위수)는 지나치게 범주에서 벗어나는 값들을 제외하고 핵심적인 범주의 데이터만 범위로 지정할 수 있는 방법중 하나

  • 사분위수에 대한 자세한 설명은 이곳으로


  • day는 categorical 범주형 data, total_bill은 numeric 실수형 data
  • 1Q - 3Q, 최대값 최소값 표시, 그 외 점들은 outlier 


Barplot

  • 가장 자주 쓰이는 형태중 하나

  • data 확인


  • x와 y축 뿐만 아니라 hue로 categorial 형의 hue에 따른 분포 확인 가능 


Plotting subsets of data with semantic mappings

  • x와 y가 numeric일 때 사용 

  • data 확인


  • line 형태로 time point 에 따른 signal 변화 확인 가능 


  • line 형태로 event별 time point 에 따른 signal 변화 확인 가능 


Visualizing the distribution of a dataset

  • univariate distribution 일변량(종속변수가 한 개인 데이터)의 분포 확인 가능

distplot

  • seaborn의 dist는 matplot의 hist를 (히스토그램)을 기반으로 하고있다.
  • x축은 변수 - 여기서는 랜덤으로 부여한 숫자 / y축은 커널 밀도 추정(Kernel Density Estimation)을 거친 정규화된 수치

  • Kernel Density Estimation이란 히스토그램을 구한 후 구해진 히스토그램을 정규화하여 확률밀도함수로 사용하는 것

  • KDE에 대한 자세한 자료는 해당 링크 참고: http://scikit-learn.org/stable/modules/density.html


  • kdf=False를 해주게 되면 y축에 해당 분포에 대한 절대치가 출력된다
  • rug = True로 해줄시 선분으로 해당 데이터의 위치가 표시된다


jointplot


  • 두 데이터가 모두 연속형의 실수값 numeric 이라면 두 변수간 관계를 jointplot을 통해 표시할 수 있다
  • 상단 부분과 오른쪽 부분에 해당 변수의 히스토그램도 함께 출력하게 된다 

Visualizing linear relationships

  • 선형 관계 확인 

lmplot

  • data 정보 확인 


  • 직선으로 x축과 y축에 선형 관계를 표시할 수 있다 


  • regplot과 lmplot은 단독으로 사용하였을때는 큰 차이가 없다

  • 하지만 lmplot을 주로 사용하는데 그 이유는 아래서 다시 설명하겠다



  • 이런식으로 깔끔하게 표시할 수 있다(outlier를 제외하고 표시해줌)


  • regplot과 달리 lmplot은 hue 파라미터로 categorial 변수를 지정하여 카테고리별로 각각 데이터의 분포와 선형 관계를 표시할 수 있다

  • 위 그래프는 smoker별로 total_bills에 따른 tip의 관계를 표시한 것 


Intro

오늘 포스팅에서 다룰 주제는 Seaborn 라이브리러를 활용한 데이터 시각화 튜토리얼입니다.

해당 라이브러리에 대한 자료는 아리 링크에서 확인하실수 있습니다.

  • http://seaborn.pydata.org/index.html

참고자료

  • http://seaborn.pydata.org/tutorial.html (공식 홈페이지 튜토리얼)

  • https://datascienceschool.net/view-notebook/4c2d5ff1caab4b21a708cc662137bc65/


Scatter plot 산포도

replot()는 아래와 같은 경우에 사용할 수 있습니다

  • 분석하고자 하는 데이터가 모두 numeric 실수 값인 경우데이터가 2차원이고 모두 연속적인 실수값


  • 라이브러리 import 및 데이터셋 확인


  • 기본적인 scatterplot 형태 - x축과 y축을 인자로 지정가능
  • total_bills에 따라 tip이 얼마나 분포되어 있는지 확인가능


  • 카테고리형 데이터가 섞여 있는 경우에는 hue 파라미터에 카테고리 변수 이름을 지정한다
  • 이를 통해 카테고리 값에 따라 색상을 다르게 할 수 있다
  • smoker 여부에 따라 total_bills에 따라 tip이 얼마나 분포되어 있는지 확인가능

  • style 파라미터를 통해 모양을 다르게 줄 수 있다


  • hue에는 numeric data 실수형 데이터도 줄 수 있다 
  • 이 때, 점의 색 혹은 크기로 hue 표시
  • size 크기에 따라 total_bills에 따라 tip이 얼마나 분포되어 있는지 확인가능


  • 점(scatter)의 크기로 hue를 설정할수 있다.


  • 분석하고자 하는 데이터가 categorical 이라면 아래와 같은 함수를 이용할 수 있다 

  • 라이브러리 import 및 데이터셋 확인

  • 기본적인 scatterplot 형태 - x축과 y축을 인자로 지정가능
  • 요일에 따라 total_bills가 어떻게 분포되어 있는지 확인 가능 


  • jitter 파라미터를 활용해 데이터 분포 출력 방법을 조절할 수 있음(위 그림과 비교)

  • scatterplot과 마찬가지로 hue로 categoril 변수를 줄 수 있으며 다른 색으로 구분 가능 


  • kind="swarm" 파라미터를 활용해 데이터 분포 출력 방법을 조절할 수 있음(위 그림과 비교)



  • smoker에 따라 tip을 얼마나 주는지 표시 - smoker은 yes/no 두 개 output으로만 구분되는 변수이다.



Intro

오늘 포스팅에서 다룰 주제는 Facebook에서 공개한 FBprophet 라이브러리를 활용한 시계열 데이터 예측입니다.

해당 라이브러리에 대한 자료는 아리 링크에서 확인하실수 있습니다.

  • https://facebook.github.io/prophet/docs/quick_start.html

해당 데이터는 캐글에 공개된 아보카도의 가격 관련 데이터입니다.

  • https://www.kaggle.com/neuromusic/avocado-prices

오늘 사용할 데이터 셋의 구성과 설명은 아래와 같습니다. 




예측 진행 과정 

FBprophet 라이브러리는 학습을 위해서 

  1. 시간(Timeline)
  2. 예측값

데이터를 필요로 합니다.

따라서 아래와 같이 Date 칼럼과 오늘의 예측값인 AveragePrice를 준비해 줍니다.



  • region을 grouping하여 해당 그룹들을 기준으로 Data에 따른 AveragePrice를 가지고 옴
  • 여기선 TotalUS(즉 모든 그룹들)의 자료를 가지고 옴

결과 해석 


  • 모델을 불러온 후 위에서 처리한 data_price를 파라미터로 줌
  • make_future_dataframe를 통해 기간 설정하며 predict를 통해 예측 진행 - periods=365는 향후 365일을 예측하겠다는 뜻


  • 위 그래프를 통해 가격에 대한 향휴 365일의 예측값을 확인할 수 있음. 
  • 중간 그래프를 통해 큰 틀에서의 트랜드를, 아래 그래프를 통해 최근 1년동안의 트랜드를 파악할수 있음 


머신러닝에서 말하는 Batch의 정의

  • 모델을 학습할 때 한 Iteration당(반복 1회당) 사용되는 example의 set 모임
  • 여기서 iteration은 정해진 batch size를 이용하여 학습(forward - backward)를 반복하는 횟수를 말한다
  • 한 번의 epoch를 위해 여러번의 iteration이 필요하다 
  • training error와 validation error가 동일하게 감소하다가 validation error가 증가하기 시작하는 직전 점의 epoch를 선택해야 함 (이는 overfitting을 방지하기 위함이다)

Batch size의 정의 및 Batch Size를 선택하는 방법
  • Batch 하나에 포함되는 example set의 갯수
  • Batch / Mini-Batch /Stochastic  세 가지로 나눌 수 있다.(아래 그림 참고)


  • SGD(Stochastic Gradient Descent) 은 배치 크기가 1, Mini-Batch는 10~1,000 사이지만 보통 2의 지수승 (32 64 128..)으로 구성

Batch별 특징 및 장단점
Batch
  • 여러 개 샘플들이 한거번에 영향을 주어 합의된 방향으로 smooth하게 수렴, 그러나 샘플 갯수를 전부 계산해야 하므로 시간이 많이 소요된다(한 step을 처리하는데 많은 수의 데이터를 계산해야 한다). 즉 모든 Training data set 사용함.
Stochastic Gradient Descent
  • 데이터를 한 개씩 추출해서(한 개 씩 뽑아서) 처리해보고 이를 모든 데이터에 반복하는 것. 오차율이 크다(수렴 속도는 빠르지만 global minimum을 찾지 못할 가능성이 있다 - 위 그림 참고) . 또한 하나씩 처리하기 때문에 GPU 성능을 제대로 활용하지 못하기 때문에 비효율적이다.
Mini-Batch
  • 전체 학습 데이터를 배치 사이즈로 등분하여(나눠) 각 배치 셋을 순차적으로 수행, 배치보다 빠르고 SGD보다 낮은 오차율 
정리
  • Mini-Batch의 사이즈가 전체 Training data 사이즈와 같으면 Batch Gradient Descent, Mini-Batch의 사이즈가 1이면 Stochastic Gradient Descent)
  • 실제로는 Batch Gradient를 잘 쓸 수 없다. 왜나하면 메모리에 모든 데이터를 한번에 올릴수 없기 때문이다.

Python 코드 예시 


  • Training data set이 5528이라고 가정 


  • 학습 셋이 5528개인데 샘플 코드에서는 Batch Size를 32로 설정
  • 즉 epoch가 173번 돌게 된다(5528/32 = 172.75 --> 반올림해서 173)
  • 마지막 epoch을 돌리지 않으면 172*32 = 5504 --> 24개가 버려짐(배치32로 포함 안되니깐)
  • 이를 방지하기 위해 math.ceil을 이용해 반올림 (172.75 반올림하면 173)하게 되면 모든 데이터 처리 가능(32개씩 172번, 마지막 epoch는 24개) 



Voting Classifiers


Voting Classifiers는 "다수결 분류"를 뜻하는 것으로, 두 가지 방법으로 분류할 수 있습니다.


1. Hard Voting Classifier

여러 모델을 생성하고 그 성과(결과)를 비교합니다. 이 때 classifier의 결과들을 집계하여 가장 많은 표를 얻는 클래스를 

최종 예측값으로 정하는 것을 Hard Voting Classifier라고 합니다.



위와 같이 최종 결과를 1로 예측한 모델이 3개, 2로 예측한 모델이 한 개이므로 Hard Voting Classifier의 최종 결과(예측)은 1이 됩니다.


2. Soft Voting Classifier

앙상블에 사용되는 모든 분류기가 클래스의 확률을 예측할 수 있을 때 사용합니다.

각 분류기의 예측을 평균 내어 확률이 가장 높은 클래스로 예측하게 됩니다 (가중치 투표)



위와 같이 예측 확률에 대한 평균이 높게 나오는 클래스를 최종 예측 클래스로 정하게 됩니다. 


3. 사이킷 런 Sklearn을 통한 구현 

해당 데이터는 캐글의 타이타닉 데이터를 이용하였습니다.

*전체 코드 확인 및 copy가 필요하신 분들은 제 커널 페이지에 가시면 됩니다.


1
2
3
4
5
from sklearn.ensemble import VotingClassifier
from sklearn.model_selection import GridSearchCV, StratifiedKFold
 
# Cross validate model with Kfold stratified cross val
k_fold = KFold(n_splits=10, shuffle=True, random_state=0)
cs

검증엔 10 fold cross validation을 사용합니다. 


오늘 만들 Voting Classifier는 총 네 가지 모델을 사용합니다.

1. Random Forest Classifier

2. Gradient Boosting Classifier

3. XGBoost Classifier

4. Support Vector Machine(SVC) 


Random Forest Classifier에 대한 Grid Search 및 모델 학습, 예측 진행 


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
RFC = RandomForestClassifier()
 
 
## Search grid for optimal parameters
rf_param_grid = {"max_depth": [None],
              "max_features": [388],
              "min_samples_split": [238],
              "min_samples_leaf": [138],
              "bootstrap": [False],
              "n_estimators" :[100,300],
              "criterion": ["gini"]}
 
 
gsRFC = GridSearchCV(RFC, rf_param_grid, cv=k_fold, scoring="accuracy",  verbose = 1)
#print(score)
 
gsRFC.fit(train_data,target)
 
RFC_best = gsRFC.best_estimator_
 
# Best score
gsRFC.best_score_
cs


OUT:



Gradient Boosting Classifier에 대한 Grid Search 및 모델 학습, 예측 진행 


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
GBC = GradientBoostingClassifier()
gb_param_grid = {'loss' : ["deviance"],
              'n_estimators' : [100,200,300],
              'learning_rate': [0.10.050.01],
              'max_depth': [48],
              'min_samples_leaf': [100,150],
              'max_features': [0.30.1
              }
 
gsGBC = GridSearchCV(GBC,param_grid = gb_param_grid, cv=k_fold, scoring="accuracy", n_jobs= 4, verbose = 1)
 
gsGBC.fit(train_data,target)
 
GBC_best = gsGBC.best_estimator_
 
# Best score
gsGBC.best_score_
cs


OUT:



Support Vector Classifier에 대한 Grid Search 및 모델 학습, 예측 진행 


1
2
3
4
5
6
7
8
9
10
11
12
13
14
### SVC classifier
SVMC = SVC(probability=True)
svc_param_grid = {'kernel': ['rbf'], 
                  'gamma': [ 0.0010.010.11],
                  'C': [11050100,200,3001000]}
 
gsSVMC = GridSearchCV(SVMC,param_grid = svc_param_grid, cv=k_fold, scoring="accuracy", n_jobs= 4, verbose = 1)
 
gsSVMC.fit(train_data,target)
 
SVMC_best = gsSVMC.best_estimator_
 
# Best score
gsSVMC.best_score_
cs


OUT:



XGBoost Classifier에 대한 Grid Search 및 모델 학습, 예측 진행 


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
XGBC = XGBClassifier()
xgb_param_grid = {'max_depth':[3,5,7],
                  'min_child_weight':[3,5,6],
                  'gamma': [ 00.0010.010.11],
                  'learning_rate':[0.10.050.01]}
 
gsXGBC = GridSearchCV(XGBC,param_grid = xgb_param_grid, cv=k_fold, scoring="accuracy", n_jobs= 4, verbose = 1)
 
gsXGBC.fit(train_data,target)
 
XGBC_best = gsXGBC.best_estimator_
 
# Best score
gsXGBC.best_score_
 
cs


OUT:



Voting Classifier를 통한 최종 클래스 결정 


1
2
3
4
5
6
7
8
9
#Voting Classifier - voting 파라미터로 hard/soft 선택가능
votingC = VotingClassifier(estimators=[('rfc', RFC_best), 
('svc', SVMC_best),('gbc',GBC_best), ('xgb', XGBC_best)], voting='hard', n_jobs=4)
 
votingC = votingC.fit(train_data, target)
 
#예측 진행
prediction = votingC.predict(test_data) 
 
cs


Prediction으로 최종 예측값을 받아옵니다.


CSV파일 저장 및 확인


1
2
3
4
5
#케글에 제출할 csv파일 저장
submission = pd.DataFrame({
        "PassengerId": test["PassengerId"],
        "Survived": prediction
    })
cs



해당 대회는 캐글의 워싱턴 공공 자전거 데이터를 바탕으로 수요를 예측하는 모델을 만든 것입니다

대회 링크: https://www.kaggle.com/c/bike-sharing-demand


*코드 복붙이 필요하신 분들은 제 커널 페이지에 가시면 됩니다 


순서는 아래와 같습니다.


Step 1.

Data Explore


Step 2. 

Feature Engineering


Step 3. 

Modeling


















해당 대회는 캐글의 워싱턴 공공 자전거 데이터를 바탕으로 수요를 예측하는 모델을 만든 것입니다

대회 링크: https://www.kaggle.com/c/bike-sharing-demand


*코드 복붙이 필요하신 분들은 제 커널 페이지에 가시면 됩니다 


순서는 아래와 같습니다.


Step 1.

Data Explore


Step 2. 

Feature Engineering


Step 3. 

Modeling














해당 대회는 캐글의 워싱턴 공공 자전거 데이터를 바탕으로 수요를 예측하는 모델을 만든 것입니다

대회 링크: https://www.kaggle.com/c/bike-sharing-demand


*코드 복붙이 필요하신 분들은 제 커널 페이지에 가시면 됩니다 


순서는 아래와 같습니다.


Step 1.

Data Explore


Step 2. 

Feature Engineering


Step 3. 

Modeling








''' 생략 '''


''' 생략 '''





해당 대회는 캐글의 워싱턴 공공 자전거 데이터를 바탕으로 수요를 예측하는 모델을 만든 것입니다

대회 링크: https://www.kaggle.com/c/bike-sharing-demand


*코드 복붙이 필요하신 분들은 제 커널 페이지에 가시면 됩니다 


순서는 아래와 같습니다.


Step 1.

Data Explore


Step 2. 

Feature Engineering


Step 3. 

Modeling







.


순서 

- ANN 개념 / 퍼셉트론 / 활성화 함수 / 역전파 - (1)

- 텐서플로우를 활용한 MLP / DNN 구현 - (2)


인공지능 수업시간에 발표했던 PPT




순서 

- ANN 개념 / 퍼셉트론 / 활성화 함수 / 역전파 - (1)

- 텐서플로우를 활용한 MLP / DNN 구현 - (2)


인공지능 수업시간에 발표했던 PPT


해당 데이터는 1990년 캘리포니아 주택 가격 데이터입니다.

Hands-on Machine Learning Chapter 2를 참고하였습니다.


*전체 코드 확인 및 copy가 필요하신 분들은 제 커널 페이지에 가시면 됩니다


전체적인 데이터 정보는 위와 같습니다



우선 P-value부터 확인해 보겠습니다.

필요한 라이브러리 및 모듈을 임포트 해줍니다.

features에는 housing data에 있는 칼럼명들을 + 구분자로 저장합니다.



위와 같이 result 변수에 해당 값을 저장한 후, print해 줍니다.





위 설명에 나와있는 것처럼, multicollinearity가 의심된다고 합니다.

P-value가 0.5가 넘을 경우, 다중공산성을 의심해봐야 하기때문에 total_bedrooms 칼럼을 드랍하였습니다.



VIF를 확인해 보겠습니다. 과정은 위와 흡사합니다.




VIF값이 10이 넘을 경우 다중공산성을 의심해볼 필요가 있습니다.

다만 무조건적으로 feature를 drop하는 것이 아닌, drop 전 후 RMSE값의 변화를 체크해보셔야 합니다.





해당 대회는 캐글의 Iowa 부동산 데이터를 바탕으로 집값을 예측하는 모델을 만든 것입니다

대회 링크: https://www.kaggle.com/c/house-prices-advanced-regression-techniques


*코드 복붙이 필요하신 분들은 제 커널 페이지에 가시면 됩니다


순서는 아래와 같습니다.


Step 1.

Data Explore


Step 2. 

Feature Engineering


Step 3. 

Modeling


*Grid search를 통한 hyper parameter 찾는 방법은 추후 포스팅에서 자세히 진행하도록 하겠습니다

** Gradient Boosting Regression, XGBoost, LightGBM 을 사용하였습니다.







해당 대회는 캐글의 Iowa 부동산 데이터를 바탕으로 집값을 예측하는 모델을 만든 것입니다

대회 링크: https://www.kaggle.com/c/house-prices-advanced-regression-techniques


*코드 복붙이 필요하신 분들은 제 커널 페이지에 가시면 됩니다


순서는 아래와 같습니다.


Step 1.

Data Explore


Step 2. 

Feature Engineering


Step 3. 

Modeling







해당 대회는 캐글의 Iowa 부동산 데이터를 바탕으로 집값을 예측하는 모델을 만든 것입니다

대회 링크: https://www.kaggle.com/c/house-prices-advanced-regression-techniques


*코드 복붙이 필요하신 분들은 제 커널 페이지에 가시면 됩니다


순서는 아래와 같습니다.


Step 1.

Data Explore


Step 2. 

Feature Engineering


Step 3. 

Modeling




















해당 대회는 캐글의 Iowa 부동산 데이터를 바탕으로 집값을 예측하는 모델을 만든 것입니다

대회 링크: https://www.kaggle.com/c/house-prices-advanced-regression-techniques


*코드 복붙이 필요하신 분들은 제 커널 페이지에 가시면 됩니다


순서는 아래와 같습니다.


Step 1.

Data Explore


Step 2. 

Feature Engineering


Step 3. 

Modeling






K-means Clustering에 대한 설명은 위 영상을 참고하면 된다.

간단히 설명하면 K개의 센트로이드를 기준으로 클러스터링을 진행하여 K개의 집단을 만든다는 것이다.

Clustering은 비지도 학습중 하나로 데이터에 대한 라벨링이 없을 때  대략적인 패턴 및 클래스를 파악하기 위하여 진행한다. 

(만약 라벨링이 되어 있으면 SVM등의 classification을 사용한다)


오늘도 사이키 런 라이브러리를 사용한다.

데이터를 임의로 부여한다



이차원 공간에 시각화한 결과 그래프



클러스터링을 진행한다.

kmeans.labels_ 는 각 데이터가 어떤 클러스터에 속하는지 그 결과를 표현한다

이를 cluster_id라는 칼럼에 표시하여 추가해준다.


결과물을 시각화한 결과.



Reference:

https://www.youtube.com/channel/UCxP77kNgVfiiG6CXZ5WMuAQ

지금까지 데이터 전처리를 진행하였다.


이제 K-fold cross validation을 써서 가장 좋은 정확도를 보이는 모델을 찾고, 


해당 모델로 test set의 survived를 예측해 보겠다.



사이키 런 라이브러리를 통해 구현한다

교차검증 코드는 다음과 같다.

K-fold cross validation에 대한 설명은 이곳에.



kNN 구현 코드는 다음과 같다. 

교차검증 결과 평균 정확도 82.6



의사결정나무 구현 코드는 다음과 같다

교차검증 결과 평균 정확도 79.58


랜덤포레스트 구현 코드는 다음과 같다

교차검증 결과 평균 정확도 80.81


나이브베이즈 구현 코드는 다음과 같다

교차검증 결과 평균 정확도 78.78


SVM 구현 코드는 다음과 같다

교차검증 결과 평균 정확도 83.5


*즉 SVM이 제일 정확도가 높기 때문에, Test Set을 SVM으로 예측한다.




Test set을 SVM으로 예측하고, 해당 결과물을 다시 csv로 저장한다 (to_csv 명령어)

SVM에 대한 설명은 여기 참고.

해당 결과물을 캐글에 제출하면 모델의 정확도를 측정해 주는데, 오늘 우리가 만든 모델의 정확도는..


'




정확도는 0.789고 이는 전체 제출 모델의 상위 31퍼.에 해당하는 성적이다.



Reference:

https://www.youtube.com/channel/UCxP77kNgVfiiG6CXZ5WMuAQ

http://scikit-learn.org/stable/index.html


*코드 복붙이 필요하신분은 제 캐글 커널페이지에서 하실 수 있습니다.



지난 포스팅에 이어서 전처리를 마무리해 보겠다.


Embarked 칼럼부터 시작한다.







Cabin에 대해서 좀 더 보충해서 설명하자면, Cabin은 객실을 뜻하는 것인데 알파뱃과 숫자의 조합으로 이루어진다.

여기서 숫자까지 분류를 하기에는 조금 무리가 있기 때문에, 우리는 제일 앞에 있는 알파벳만 추출하여 연관성을 보기 위해

시각화를 진행한 것이다.




기존에 SibSP 랑 Parch 두 개로 나누어져있던 칼럼을 Familysize 하나로 합친다

그리고 해당 두 칼럼을 drop한다.


이제 전처리를 마무리하였고, 모델 학습을 진행해 보겠다.


*코드 복붙이 필요하신분은 제 캐글 커널페이지에서 하실 수 있습니다.



저번 포스팅에 이어 데이터 전처리를 진행해보도록 하겠다.

본문에도 써놨지만 이렇게 전처리를 하는 가장 큰 이유들은


1. 머신러닝 알고리즘은 텍스트를 읽을수 없는 경우가 많음

2. Scale이 클경우 제대로 된 모델 학습이 힘듬


이 두 가지로 요약할 수 있다.


사진을 클릭하면 더 큰 원본 사이즈로 볼 수 있다.

아래 데이터들과 코드를 함께 보자.




화면에 첨부한 웹사이트 주소는 https://regexr.com/ 이며, 해당 홈페이지에서 정규표현식의 시각화를 해주니

쉽게 이해할 수 있다.



Name에 대한 전처리를 끝냈다. 이제 성별로 넘어가보자.



성별도 매핑작업을 해준다



Age는 Nan값을 해당 그룹이 속하는 Median값으로 대체해준다. 

중앙부분 코드 참고 


Age를 Binning하는 코드이다. 설명은 중앙에 있으며 그냥 C언어나 Java시간에 한 점수대별 학점 부여하는

Switch문이나 if else문 생각하면 편하다.



bar chart를 그리면 다음과 같으며, 마지막 그룹에 속하는 사람들은 거의 생존하지 못한 상황을 보여주고 있다.


다음 포스팅에 이어서 전처리를 마무리 하겠다


*코드 복붙이 필요하신분은 제 캐글 커널페이지에서 하실 수 있습니다.



머신러닝을 공부한다면 한번쯤은 들어봤을만한 케글. 

케글에서는 튜토리얼용 대회로 타이타닉 생존자 예측 모형 만드는 대회를 제공하고 있다.


데이터 셋만 보면 만만해 보이지만 의외로 까다로워 적당한 난이도지만, 

유명하기 때문에 이미 100퍼에 가까운 정확도를 가진 모형들의 커널이 공개되어 있기 떄문에,

그만큼 보면서 공부하기 좋다고 생각한다. 


사진을 클릭하면 더 큰 원본 사이즈로 볼 수 있다.



이번 포스팅에서는 데이터 탐색 및 전처리에 대해 다루어보도록 하겠다.

판다스 라이브러리를 이용해 csv를 불러오고, 확인한다



참고로 Data Dictionary는 이렇다.






이제 데이터 시각화를 진행하여 데이터 셋에 대해 대략적인 이해를 해보겠다.





다음 포스팅에서 데이터 전처리를 이어서 해보도록 하겠다.


*코드 복붙이 필요하신분은 제 캐글 커널페이지에서 하실 수 있습니다.






1. What is the approximate depth of a Decision Tree trained (without restrictions) on a training set with 1 million instances?

The depth of a well-balanced binary tree containing m leaves is equal to log2(m)3, rounded up. A binary Decision Tree (one that makes only binary decisions, as is the case of all trees in Scikit-Learn) will end up more or less well balanced at the end of training, with one leaf per training instance if it is trained without restrictions. Thus, if the training set contains one million instances, the Decision Tree will have a depth of log2(106) 20 (actually a bit more since the tree will generally not be perfectly well balanced).

 

m 개의 잎을 포함하는 균형 잡힌 이진 트리의 깊이는 log2 (m)과 같으며 반올림됩니다. 바이너리 결정 트리 (Scikit-Learn의 모든 트리의 경우와 같이 바이너리 결정 만하는 바이너리 결정 트리)는 교육 종료시 다소 균형이 잘 잡히게됩니다. 제한없이 교육을받는 경우 트레이닝 인스턴스 당 하나의 리프가됩니다. . 따라서 훈련 세트에 백만 인스턴스가 포함되어있는 경우 의사 결정 트리의 깊이는 log2 (106) 20입니다 (실제로 트리가 일반적으로 완벽하게 균형을 이루지 못하기 때문에 실제로는 조금 더 많음). (그냥 로그 2 해주면 되는듯)

*여기서 log2는 밑이 2라는 것을 뜻함. 어떻게 쓰는지 모르겠다 컴퓨터로..


 

2. Is a nodes Gini impurity generally lower or greater than its parents? Is it generally lower/greater, or always lower/greater?

일반적으로 노드의 Gini 불순도가 부모도다 높나 낮나? 일반적으로 낮/높은지 항상 낮/높은지


노드의 지니 불순물은 일반적으로 부모보다 낮습니다. 이것은 CART 교육 알고리즘의 비용으로 보장됩니다. 함수는 각 노드를 자식 Gini 불순물의 가중치 합을 최소화하는 방식으로 분할합니다.

그러나 한 자식이 다른 자식(의 지니 불순도)보다 작으면, 그 부모보다 지니 불순도가 높을 수 있다 만약 이 증가분이 다른 자식의 지니 불순물 감소보다 크다면)

 

그러나 한 자식의 불순이 다른 자식보다 작으면, 다른 아이의 불순물 감소로 인해 지니 불순물이 부모보다 더 클수도 있다.

 

예를 들어, 클래스 A에 네 개의 인스턴스가 있고, 클래스 B에는 한 개의 인스턴스가 있다고 가정해 보자. 지니 불순도는 1-(1/5)^2 – (4/5)^2 = 0.32 이다. 이 때 데이터 셋은 일차원이고 모든 인스턴스들이 A B A A A 순서라고 해보자. 너는 알고리즘이 두번째 인스턴스 이후 이 노드를 분리할 것임을 알 수 있(그냥 클래스 나누는것) – 자식 노드 A, B를 만들면서.  그리고 다른 자식 노드의 인스턴스는 A, A, A이다.

첫번째 자식의 불순도는 1 – (1/2)^2 – (1/2)^2 = 0.5이다 = 부모보다 높음.

 

이 것은 다른 노두가 순수하다는 것에 대한 보상이므로, 전체 지니 불순도는 2/5 * 0.5 + 3/5 * 0 = 0.2이다. (두번째 노드는 모두가 A이므로 순수 = 불순도는 0) à 이 때 부모의 지니 불순도보다 낮다 


*즉 보통 자식노드가 부모노드보다 지니불순도가 낮지만 항상 낮은건 아니다.


 

3. If a Decision Tree is overfitting the training set, is it a good idea to try decreasing max_depth?

If a Decision Tree is overfitting the training set, it may be a good idea to decrease max_depth, since this will constrain the model, regularizing it. // 모델의 깊이가 낮아질수록 모델을 제약하고 regularizing 하는 것.

 

 

4. If a Decision Tree is underfitting the training set, is it a good idea to try scaling the input features? 만약 underfit하다면 scaling 해주는 것이 좋냐?

Decision Trees dont care whether or not the training data is scaled or centered; thats one of the nice things about them. So if a Decision Tree underfits the training set, scaling the input features will just be a waste of time.

해봤자 소용없음 

 


5. If it takes one hour to train a Decision Tree on a training set containing 1 million instances, roughly how much time will it take to train another Decision Tree on a training set containing 10 million instances?

1 백만 개의 인스턴스가 포함 된 교육 세트에서 의사 결정 트리를 교육하는 데 1 시간이 소요되는 경우 1 천만 개의 인스턴스가 포함 된 교육 세트에서 다른 의사 결정 트리를 교육하는 데 대략 어느 정도의 시간이 걸립니까?

 

The computational complexity of training a Decision Tree is O(n × m log(m)). So if you multiply the training set size by 10, the training time will be multiplied by K = (n × 10m × log(10m)) / (n × m × log(m)) = 10 × log(10m) / log(m). If m = 106, then K 11.7, so you can expect the training time to be roughly 11.7 hours.

 

의사 결정 트리 트레이닝의 계산 복잡도는 O (n × m log (m))입니다. 따라서 훈련 세트 크기에 10을 곱하면 훈련 시간에 K = (n × 10m × log (10m)) / (n × m × log (m)) = 10 × log (10m) / log (m). m = 10^6이면 K ≈ 11.7이므로 약 11.7 시간의 교육 시간을 기대할 수 있습니다.

 


6. If your training set contains 100,000 instances, will setting presort=True speed up training?

너의 교육 세트에 100,000 개의 인스턴스가 포함되어 있다면 presort = True로 설정하여 교육을 가속화해야 하는가?

 

Presorting the training set speeds up training only if the dataset is smaller than a few thousand instances. If it contains 100,000 instances, setting presort=True will considerably slow down training.

교육 세트를 미리 할당하면 데이터 세트가 수천 개보다 작은 경우에만 교육이 가속화됩니다. 인스턴스가 100,000 개 포함되어 있으면 presort = True로 설정하면 교육 속도가 상당히 느려집니다.




1. What is the fundamental idea behind Support Vector Machines?

The fundamental idea behind Support Vector Machines is to fit the widest possible street between the classes. In other words, the goal is to have the largest possible margin between the decision boundary that separates the two classes and the training instances. When performing soft margin classification, the SVM searches for a compromise between perfectly separating the two classes and having the widest possible street (i.e., a few instances may end up on the street). Another key idea is to use kernels when training on nonlinear datasets.

 

Support Vector Machines의 근본적인 아이디어는 클래스 사이에 가능한 가장 넓은 "거리 = Street"를 맞추는 것입니다. , 두 클래스와 교육(Train) 인스턴스를 구분하는 결정 경계 사이에 최대한 큰 여백을 두는 것이 목표입니다 = 가장 넓은 마진을 확보하는 것이 목표입니다. 소프트 마진 분류를 수행 할 때 SVM은 두 클래스를 완벽하게 분리하고 가능한 가장 넓은 거리 (, 몇 개의 인스턴스가 거리에서 끝날 수 있음) 사이의 절충안을 검색합니다. 또 다른 주요 아이디어는 비선형 데이터 세트를 훈련 할 때 커널을 사용하는 것입니다.

 


2. What is a support vector?

After training an SVM, a support vector is any instance located on the street (see the previous answer), including its border. The decision boundary is entirely determined by the support vectors. Any instance that is not a support vector (i.e., off the street) has no influence whatsoever; you could remove them, add more instances, or move them around, and as long as they stay off the street they wont affect the decision boundary. Computing the predictions only involves the support vectors, not the whole training set

 

SVM을 학습 후, Support vectors는 경계를 포함하여 "거리"에있는 모든 인스턴스입니다. 의사 결정 경계(Decision boundry)는 전적으로 Support Vectors에 의해 결정됩니다. Support Vectors가 아닌 (, 거리에서 벗어난) 인스턴스는 아무런 영향을 미치지 않습니다. 당신은 그것들을 제거하거나, 더 많은 인스턴스를 추가하거나, 움직일 수 있으며, 거리에서 벗어나 있다면 결정 경계에 영향을주지 않을 것입니다. 예측은 전체 교육 세트가 아닌 Support vectors만 포함됩니다.

 


3. Why is it important to scale the inputs when using SVMs?

SVM을 사용할 때 입력을 스케일 하는 것이 중요한 이유는 무엇인가?

SVMs try to fit the largest possible street between the classes (see the first answer), so if the training set is not scaled, the SVM will tend to neglect small features (see Figure 5-2).

SVM은 클래스 사이에 가능한 가장 큰 "Street"를 채우려고합니다) = Maximum Margin 을 찾는것이 목표다. 따라서 Training 세트의 크기가 조정되지 않으면(scale이 조정되지 않으면) SVM은 작은 피쳐를 무시하는 경향이 있습니다 

 

 

5. Should you use the primal or the dual form of the SVM problem to train a model on a training set with millions of instances and hundreds of features?

수백만 개의 인스턴스와 수백 개의 기능이있는 교육 세트에서 모델을 교육하기 위해 SVM 문제의 기본형 또는 이중형을 사용해야합니까?

 

This question applies only to linear SVMs since kernelized can only use the dual form. The computational complexity of the primal form of the SVM problem is proportional to the number of training instances m, while the computational complexity of the dual form is proportional to a number between m2 and m3. So if there are millions of instances, you should definitely use the primal form, because the dual form will be much too slow.

이 질문은 커널화dual form에만 사용할 수 있기 때문에 선형 SVM에만 적용됩니다. SVM 문제의 초기 형태의 계산 복잡도는 훈련 인스턴스의 수 m에 비례하는 반면, dual form의 계산 복잡도는 m^2 m^3 사이의 수에 비례한다. 따라서 수백만 개의 인스턴스가 있다면 이중 폼이 너무 느리기 때문에 primal form을 사용해야합니다.

 

 


6. Say you trained an SVM classifier with an RBF kernel. It seems to underfit the training set: should you increase or decrease γ (gamma)? What about C?

만약 RBF커널로 모델을 학습시켰을 때 오버피팅이 되었다면 감마와 C를 어떻게 조절해야 하는가?

 

If an SVM classifier trained with an RBF kernel underfits the training set, there might be too much regularization. To decrease it, you need to increase gamma or C (or both).
RBF
커널로 트레이닝 된 SVM 분류기가 트레이닝 세트에 부적합하다면 너무 많은 정규화 때문일수 있다.. 줄이려면 감마 또는 C (또는 둘 다)를 늘려야합니다.



1. What Linear Regression training algorithm can you use if you have a training set with millions of features? 

수많은 feature를 가지고 있다면 어떤 Linear Regression 알고리즘을 사용할 것인가?


If you have a training set with millions of features you can use Stochastic Gradient Descent or Mini-batch Gradient Descent, and perhaps Batch Gradient Descent if the training set fits in memory. But you cannot use the Normal Equation because the computational complexity grows quickly (more than quadratically) with the number of features.

당신이 수많은 feature를 가졌다면 스토캐스틱 그라디언트 하강 또는 미니 배치 그라디언트 하강을 사용할 수 있으며, 트레이닝 세트가 메모리에 맞으면(감당할 수 있으면) Batch 그라데이션 디센트를 사용할 수 있습니다. 그러나 일반 방정식을 사용할 수는 없으므로 계산 복잡도가 피쳐의 수와 함께 빠르게 증가합니다 (2 차 이상). 



2. Suppose the features in your training set have very different scales. What algorithms might suffer from this, and how? What can you do about it?

훈련 세트의 기능이 매우 다른 척도를 가지고 있다고 가정합니다. 어떤 알고리즘이 이것으로 어려움을 겪으며 있으며, 어떻게 되는가? 해결책은?

If the features in your training set have very different scales, the cost function will have the shape of an elongated bowl, so the Gradient Descent algorithms will take a long time to converge. To solve this you should scale the data before training the model. Note that the Normal Equation will work just fine without scaling.


트레이닝 세트의 피쳐의 스케일이 매우 다른 경우 cost function 긴 보울 모양이므로 Gradient Descent 알고리즘에 수렴하는 데 시간이 오래 걸릴 수 있습니다. 이 문제를 해결하려면 모델을 교육하기 전에 데이터의 scale을 조정해야 합니다. Normal Equation은 크기 조정 없이 정상적으로 작동합니다. = 경사하강법은 정규화가 필요하다

 


3. Can Gradient Descent get stuck in a local minimum when training a Logistic Regression model?

Logistic Regression 모델을 훈련 할 때 Gradient Descent가 로컬 미니멈에 가둬질수있나?

 

Gradient Descent cannot get stuck in a local minimum when training a Logistic Regression model because the cost function is convex.1

Gradient Descent는 로컬 미니멈에 갖칠수 없다. 왜냐하면 Logistic Regression 모델 학습시 비용 함수는 covex 모형이기 때문이다.

// covex à If you draw a straight line between any two points on the curve, the line never crosses the curve.

 

 

4. Do all Gradient Descent algorithms lead to the same model provided you let them run long enough? 

만약 충분히 오래 실행된다면 모든 Gradient Descent algo는 같은 모델이 될 것인가?


If the optimization problem is convex (such as Linear Regression or Logistic Regression), and assuming the learning rate is not too high, then all Gradient Descent algorithms will approach the global optimum and end up producing fairly similar models. However, unless you gradually reduce the learning rate, Stochastic GD and Mini-batch GD will never truly converge; instead, they will keep jumping back and forth around the global optimum. This means that even if you let them run for a very long time, these Gradient Descent algorithms will produce slightly different models. 

최적화 문제가 볼록 Covex ( : 선형 회귀 또는 로지스틱 회귀) 인 경우 learning rate가 너무 높지 않다고 가정하면 모든 그래디언트 하강 알고리즘이 전체 최적 값에 도달하여 상당히 유사한 모델을 생성하게 됩니다. 그러나 learning rate를 점진적으로 낮추지 않으면 Stochastic GD Mini-batch GD는 절대로 수렴하지 않습니다. 대신, 그들은 전 지구 적 최적으로 앞뒤로 계속 뛰어 오를 것입니다. , 매우 오랜 시간 동안 작동 시키더라도 이러한 Gradient Descent 알고리즘은 약간 다른 모델을 생성합니다.

 

 

5. Suppose you use Batch Gradient Descent and you plot the validation error at every epoch. If you notice that the validation error consistently goes up, what is likely going on? How can you fix this?

당산이 Batch Gradient Descent를 사용하고 당신이 모든 에포크마다 validation error를 그래프로 표시한다고 가정하자. 만약 당신이 벨리데이션 에러가 지속적으로 올라간다는 것을 알았으면, 이게 왜 올라가는 것인가? 어떻게 해결할 것인가?

 

If the validation error consistently goes up after every epoch, then one possibility is that the learning rate is too high and the algorithm is diverging. If the training error also goes up, then this is clearly the problem and you should reduce the learning rate. However, if the training error is not going up, then your model is overfitting the training set and you should stop training.

만약 모든 모든 에포크 이후에 validation error가 올라가면, learning rate가 너무 높거나, 알고리즘이 지나치게 다양해졌을 가능성이 있다. 만약 training error역시 올라간다면, 이는 당신이 learning rate를 감소시켜야 한다는 것을 뜻한다. 만약 training error가 올라가지 않는다면, 당신의 모델은 오버피팅 된 것이고 당신은 학습을 중단해야 한다.

 

 

6. Is it a good idea to stop Mini-batch Gradient Descent immediately when the validation error goes up?

만약 Validation error가 올라가면 Mini-batch Gradient 를 즉각 중지하는 것이 맞는가?

Due to their random nature, neither Stochastic Gradient Descent nor Mini-batch Gradient Descent is guaranteed to make progress at every single training iteration. So if you immediately stop training when the validation error goes up, you may stop much too early, before the optimum is reached. A better option is to save the model at regular intervals, and when it has not improved for a long time (meaning it will probably never beat the record), you can revert to the best saved model.

 

무작위적인 특성으로 인해 스토캐스틱 그라디언트 하강 또는 미니 배치 그라디언트 하강은 매 반복 교육마다 진전을 보장하지 않습니다. 따라서 검증 오류가 발생했을 때 즉시 교육을 중단하면 최적에 도달하기 전에 너무 일찍 중지 할 수 있습니다. 더 나은 옵션은 일정한 간격으로 모델을 저장하는 것입니다. 그리고 오랜 시간 동안 개선되지 않은 경우, 가장 저장된 모델로 되돌릴 수 있습니다.

 

 

7. Which Gradient Descent algorithm (among those we discussed) will reach the vicinity of the optimal solution the fastest? Which will actually converge? How can you make the others converge as well?
어떤 그라디언트 디센트 알고리즘이 최적의 솔루션 근처에 가장 빨리 도달 할 것입니까? 실제로 수렴 할 것인가? 어떻게 수렴시킬것인가?

 

Stochastic Gradient Descent has the fastest training iteration since it considers only one training instance at a time, so it is generally the first to reach the vicinity of the global optimum (or Mini-batch GD with a very small mini-batch size). However, only Batch Gradient Descent will actually converge, given enough training time. As mentioned, Stochastic GD and Mini-batch GD will bounce around the optimum, unless you gradually reduce the learning rate.
Stochastic Gradient Descent 번에 하나의 교육 인스턴스만을 고려하기 때문에 가장 빠른 교육 반복을 수행하므로 일반적으로 전역 최적 (또는 미니 배치 크기가 매우 작은 Mini-batch GD) 부근에 처음으로 도달합니다. 러나 충분한 Training 시간이 주어지면 Batch Gradient Descent 실제로 수렴됩니다. 언급 바와 같이, 점차적으로 학습 속도=learning rate을 줄이지 않으면 Stochastic GD Mini-batch GD optimum 근처에서 튀어다니는 것을 반복합니다.

 

 

8. Suppose you are using Polynomial Regression. You plot the learning curves and you notice that there is a large gap between the training error and the validation error. What is happening? What are three ways to solve this?

다항 회귀 (Polynomial Regression)를 사용한다고 가정하십시오. 학습 곡선을 플롯하면 training error validation error 사이에 큰 차이가 있다는 것을 알게됩니다. 무슨 일 이니? 이것을 해결할 수있는 세 가지 방법은 무엇입니까?

 

If the validation error is much higher than the training error, this is likely because your model is overfitting the training set. One way to try to fix this is to reduce the polynomial degree: a model with fewer degrees of freedom is less likely to overfit. Another thing you can try is to regularize the model for example, by adding an 2 penalty (Ridge) or an 1 penalty (Lasso) to the cost function. This will also reduce the degrees of freedom of the model. Lastly, you can try to increase the size of the training set.

Validation error Training error보다 훨씬 높으면 모델이 Training set overfitting 되었을 수 있습니다. 이 문제를 해결하기 위한 한 가지 방법은 다항식 차수를 줄이는 것입니다. 차수가 낮으면 그만큼 overfit할 가능성이 줄어듭니다. 시도 할 수있는 또 다른 방법은 비용 함수에 ℓ2 패널티 (릿지) 또는 ℓ1 페널티 (라소)를 추가하는 등 모델을 정규화하는 것입니다. 이는 또한 모델의 자유도를 감소시킵니다. 마지막으로 Training 세트의 크기를 늘리려고 할 수 있습니다.

 

 

9. Suppose you are using Ridge Regression and you notice that the training error and the validation error are almost equal and fairly high. Would you say that the model suffers from high bias or high variance? Should you increase the regularization hyperparameter α or reduce it?

Ridge Regression을 사용한다고 가정하고 Training error validation error가 거의 동일하고 상당히 높다는 것을 알게됩니다. 이 모델이 높은 바이어스(편차가 큰지) 또는 높은 분산을 겪고 있다고 말할 수 있습니까? 정규화 하이퍼 파라미터 α를 높이거나 줄여야합니까?

 

If both the training error and the validation error are almost equal and fairly high, the model is likely underfitting the training set, which means it has a high bias. You should try reducing the regularization hyperparameter α.

학습 오차와 검증 오차가 거의 같고 상당히 높다면 모델은 Training set underfit 가능성이 높다. 정규화 하이퍼 파라미터인 α를 줄여야합니다.

 

 

10. Why would you want to use: Ridge Regression instead of Linear Regression? Lasso instead of Ridge Regression? Elastic Net instead of Lasso? /// Linear Reg 대신 Ridge Reg 사용 이유? Rig 대신 Lasso Reg 사용이유? Lasso 대신 Elastic Net 사용이유?


Lets see:

A model with some regularization typically performs better than a model without any regularization, so you should generally prefer Ridge Regression over plain Linear Regression.

일부 정규화 모델은 일반적으로 정규화가없는 모델보다 성능이 우수하므로 일반적으로 일반 선형 회귀보다 릿지 회귀를 선호해야합니다.

 

 

Lasso Regression uses an 1 penalty, which tends to push the weights down to exactly zero. This leads to sparse models, where all weights are zero except for the most important weights. This is a way to perform feature selection automatically, which is good if you suspect that only a few features actually matter. When you are not sure, you should prefer Ridge Regression.

Lasso Regression은 ℓ1 패널티를 사용합니다.이 패널티는 가중치를 정확히 제로로 낮추는 경향이 있습니다. 이로 인해 가장 중요한 가중치를 제외하고 모든 가중치가 0 인 희소 모델이 생성됩니다. 이것은 자동으로 기능 선택을 수행하는 방법입니다. 실제로 몇 가지 기능 만 중요하다고 생각되면 좋습니다. 확실하지 않으면 릿지 회귀를 선호해야합니다.

 

 

Elastic Net is generally preferred over Lasso since Lasso may behave erratically in some cases (when several features are strongly correlated or when there are more features than training instances). However, it does add an extra hyperparameter to tune. If you just want Lasso without the erratic behavior, you can just use lastic Net with an l1_ratio close to 1.

Lasso는 일부 경우 (여러 기능이 강하게 상관되거나 교육 인스턴스보다 많은 기능이있는 경우)에 비정상적으로 동작 할 수 있기 때문에 Lasso보다 일반적으로 선호됩니다. 그러나 튜닝을 위해 추가 하이퍼 매개 변수를 추가합니다. 이상한 행동을하지 않고 올가미를 원한다면 lastic_ratio 1에 가까운 lastic net을 사용할 수 있습니다.

 


 

11. Suppose you want to classify pictures as outdoor/indoor and daytime/nighttime. Should you implement two Logistic Regression classifiers or one Softmax Regression classifier?

야외 / 실내 및 주간 / 야간으로 사진을 분류하려고한다고 가정합니다. 당신은 두 가지 로지스틱 회귀 분류기 또는 Softmax 회귀 분류기를 구현해야합니까?

 

If you want to classify pictures as outdoor/indoor and daytime/nighttime, since these are not exclusive classes (i.e., all four combinations are possible) you should train two Logistic Regression classifiers.

실외 / 실내 및 주간 / 야간으로 사진을 분류하려면 독점적인 클래스가 아니므로 ( 4 가지 조합 모두 가능) 두 개의 로지스틱 회귀 분류기를 교육해야합니다.





Exercises Chapter 1 /w Hands on machine learning with scikit-learn and tensorflow

In this chapter we have covered some of the most important concepts in Machine Learning. In the next chapters we will dive deeper and write more code, but before we do, make sure you know how to answer the following questions:


 1. How would you define Machine Learning? 머신 러닝을 어떻게 정의할 것인지?

Machine Learning is about building systems that can learn from data. Learning means getting better at some task, given some performance measure.

머신 러닝은 데이터로부터 학습할 수 있는 시스템의 구축을 뜻한다. 학습의 의미는 성과 평가 척도를 고려할 때 점차 나아지고 있다는 뜻이다.

 

 

2. Can you name four types of problems where it shines?

Machine Learning is great for complex problems for which we have no algorithmic solution, to replace long lists of hand-tuned rules, to build systems that adapt to fluctuating environments, and finally to help humans learn (e.g., data mining).

기계 학습은

1.     알고리즘 솔루션이없는 복잡한 문제,

2.     수동으로 튜닝된 규칙들,

3.     변동하는 환경에 적응하는 시스템을 구축하고,

4.     마지막으로 인간이 학습 ( : 데이터 마이닝)을 돕도록 도와줍니다.

 

 


3. What is a labeled training set? 라벨링 데이터란 무엇인가?

A labeled training set is a training set that contains the desired solution (a.k.a. a label) for each instance.

각 인스턴스마다 이상적인 솔루션이 라벨링된(라벨이 포함된) training set을 말한다.

 

4. What are the two most common supervised tasks? 지도 학습의 대표적인 예 두 가지

The two most common supervised tasks are regression and classification.

Classification Regression (분류 / 회귀)

 

5. Can you name four common unsupervised tasks? 비지도 학습 예시 두 가지?

Common unsupervised tasks include clustering, visualization, dimensionality reduction, and association rule learning.

클러스터링 / 시각화 / 차원 축소 / 연관 규칙 학습



6. What type of Machine Learning algorithm would you use to allow a robot to walk in various unknown terrains? 

로봇이 알려지지 않은 지형을 걷게 하려면 어떤 학습?


Reinforcement Learning is likely to perform best if we want a robot to learn to walk in various unknown terrains since this is typically the type of problem that Reinforcement Learning tackles. It might be possible to express the problem as a supervised or semisupervised learning problem, but it would be less natural.

강화 학습은 일반적으로 보강 학습이 다루는 유형의 문제이기 때문에 다양한 알 수없는 지형에서 로봇이 걷는 법을 배우기를 원한다면 가장 잘 수행 될 것이다. 지도 or 비지도 학습 문제로 문제를 표현하는 것이 가능할 수도 있지만 자연스럽지는 않을 것이다.

 

*참고

Supervised learning – teacher 있음 (레이블(라벨)을 달아줌)

Unsupervised learning – teach 없음 (자연스럽게 알아서 패턴 학습)

Semi supervised learning지도 비지도 섞어서

**강화학습 - 어떤 환경 안에서 정의된 에이전트가 현재의 상태를 인식하여, 선택 가능한 행동들 중 보상을 최대화하는 행동 혹은 행동 순서를 선택하는 방법 / 강화는 실패와 성공을 반복해가며 학습

 

 

7. What type of algorithm would you use to segment your customers into multiple groups?
고객을 여러 그룹으로 분류하는 사용할 알고리즘 유형은 무엇입니까?


If you dont know how to define the groups, then you can use a clustering algorithm (unsupervised learning) to segment your customers into clusters of similar customers. However, if you know what groups you would like to have, then you can feed many examples of each group to a classification algorithm (supervised learning), and it will classify all your customers into these groups.

그룹을 정의하는 방법을 모르는 경우 클러스터링 알고리즘 (비지도 학습)을 사용하여 고객을 유사한 고객의 클러스터로 분류 할 수 있습니다. 그러나 어떤 그룹을 갖고 싶은지 알면 분류 알고리즘 (감독 학습)에 각 그룹의 많은 예를 제공하고 모든 고객을이 그룹으로 분류 할 수 있습니다.

 

8. Would you frame the problem of spam detection as a supervised learning problem or an unsupervised learning problem?  

지도 비지도 중 스팸탐지에 어떤 것을 사용할 것인가?


Spam detection is a typical supervised learning problem: the algorithm is fed many emails along with their label (spam or not spam).

스팸 탐지는 일반적인 감독 학습 문제입니다.이 알고리즘은 많은 이메일을 라벨 (스팸 또는 스팸이 아닌)과 함께 제공받습니다.

 

 

9. What is an online learning system? 온라인 러닝이란?

An online learning system can learn incrementally, as opposed to a batch learning system. This makes it capable of adapting rapidly to both changing data and autonomous systems, and of training on very large quantities of data.

온라인 학습 시스템은 일괄 학습 시스템과 달리 점진적으로 학습 할 수 있습니다. 이를 통해 변화하는 데이터와 자율 시스템 모두에 빠르게 적응할 수 있으며 대량의 데이터를 학습 할 수 있습니다.

 

10. What is out-of-core learning? Out of core 학습이란?

Out-of-core algorithms can handle vast quantities of data that cannot fit in a computers main memory. An out-of-core learning algorithm chops the data into mini-batches and uses online learning techniques to learn from these minibatches.

 

Out-of-core 알고리즘은 컴퓨터의 메인 메모리에 들어갈 수 없는 방대한 양의 데이터를 처리 할 수 ​​있습니다. Out-of-core 학습 알고리즘은 데이터를 잘라서 미니 배치 형태로 나눠 온라인 학습을 통해 이러한 미니 배치들을 학습시킨다.

 

 

11. What type of learning algorithm relies on a similarity measure to make predictions? 예측을 위해 유사성 측정에 의존하는 학습 알고리즘은?

An instance-based learning system learns the training data by heart; then, when given a new instance, it uses a similarity measure to find the most similar learned instances and uses them to make predictions.

인스턴스 기반 학습 시스템은 교육 데이터를 마음으로 학습합니다. 그런 다음 새 인스턴스가 주어지면 유사성 측정을 사용하여 가장 유사한 학습 인스턴스를 찾아 예측을 수행하는 데 사용합니다.

 

 

12. What is the difference between a model parameter and a learning algorithms hyperparameter?

모델 매개 변수와 학습 알고리즘의 하이퍼 매개 변수의 차이점은 무엇입니까?

A model has one or more model parameters that determine what it will predict given a new instance (e.g., the slope of a linear model). A learning algorithm tries to find optimal values for these parameters such that the model generalizes well to new instances. A hyperparameter is a parameter of the learning algorithm itself, not of the model (e.g., the amount of regularization to apply).


모델에는 새로운 인스턴스 ( : 선형 모델의 기울기) 주어질 예측할 것을 결정(무엇을 예측할지에 대해 결정)하는 하나 이상의 모델 매개 변수가 있습니다. 학습 알고리즘은 모델이 새로운 인스턴스로 일반화되도록 이러한 매개 변수에 대한 최적 값을 찾으려고합니다. 하이퍼 파라미터는 모델이 아닌 학습 알고리즘 자체의 파라미터 (예를 들어, 적용 정규화의 )이다.

 


13. What do model-based learning algorithms search for? What is the most common strategy they use to succeed? How do they make predictions?

모델 기반 학습 알고리즘은 무엇을 검색합니까? 그들이 성공하는데 사용하는 가장 일반적인 전략은 무엇입니까? 그들은 어떻게 예측을합니까?

Model-based learning algorithms search for an optimal value for the model parameters such that the model will generalize well to new instances. We usually train such systems by minimizing a cost function that measures how bad the system is at making predictions on the training data, plus a penalty for model complexity if the model is regularized. To make predictions, we feed the new instances features into the models prediction function, using the parameter values found by the learning algorithm.

 

모델 기반 학습 알고리즘은 모델이 새로운 인스턴스에 대해 잘 일반화 될 수 있도록 모델 매개 변수에 대한 최적 값을 검색합니다. 우리는 일반적으로 시스템이 학습 데이터에 대한 예측이 얼마나 나쁜지를 측정하는 비용 함수를 최소화하고 모델이 정규화 된 경우 모델 복잡성에 대한 불이익을 최소화함으로써 그러한 시스템을 교육합니다. 예측을 하기 위해 학습 알고리즘에서 찾은 매개 변수 값을 사용하여 모델의 예측 함수에 새 인스턴스의 피쳐를 공급합니다.

 


14. Can you name four of the main challenges in Machine Learning?

Some of the main challenges in Machine Learning are the lack of data, poor data quality, nonrepresentative data, uninformative features, excessively simple models that underfit the training data, and excessively complex models that overfit the data.

 

1.     데이터 부족

2.     데이터 품질 저하

3.     비 대표성 데이터 (모집단을 대표하지 못하는 Data)

4.     정보가없는 기능

5.     학습 데이터에 부합하지 않는 지나치게 단순한 모델 및 데이터를 초과 구현하는 지나치게 복잡한 모델입니다. / underfit or overfit

 

 

15. If your model performs great on the training data but generalizes poorly to new instances, what is happening? Can you name three possible solutions?

모델이 교육 데이터에서 뛰어난 성능을 보였으나 모델이 새로운 인스턴스로 잘 변형되지 않는다면 어떤 일이 벌어지고 있습니까? 가능한 세 가지 해결책을 제시해주세요.

 

If a model performs great on the training data but generalizes poorly to new instances, the model is likely overfitting the training data (or we got extremely lucky on the training data). Possible solutions to overfitting are getting more data, simplifying the model (selecting a simpler algorithm, reducing the number of parameters or features used, or regularizing the model), or reducing the noise in the training data.
모델이 학습 데이터에 대해 우수한 실적을 보였지만 인스턴스에 좋지 않은 경우 일반적으로 모델이 교육 데이터에 지나치게 적합합니다 (또는 교육 데이터에 대해 매우 운이 좋음). 오버 피팅에 대한 가능한 솔루션은 많은 데이터를 얻고, 모델을 단순화하고 (간단한 알고리즘 선택, 사용되는 매개 변수 또는 기능 감소, 모델 정규화) 또는 학습 데이터의 노이즈 감소입니다.


 

 16. What is a test set and why would you want to use it? 테스트 세트 란 무엇이며 사용하려는 이유는 무엇입니까?

A test set is used to estimate the generalization error that a model will make on new instances, before the model is launched in production.

테스트 세트는 모델이 프로덕션 환경에서 시작되기 전에 모델이 새 인스턴스에서 수행하게 될 일반화 오류를 평가하는 데 사용됩니다.

 

 

17. What is the purpose of a validation set?

A validation set is used to compare models. It makes it possible to select the best model and tune the hyperparameters.
유효성 검사 집합의 목적은 무엇입니까? 검증 세트는 모델을 비교하는 사용됩니다. 최고의 모델을 선택하고 하이퍼 파라미터를 튜닝 있습니다.

 

 

18. What can go wrong if you tune hyperparameters using the test set?

If you tune hyperparameters using the test set, you risk overfitting the test set, and the generalization error you measure will be optimistic (you may launch a model that performs worse than you expect).

학습 데이터 셋에 오버피팅될 위험이 있으며, 일반화 되는 (일반적인) 에러가 좋게 표시될수도 있음, 그래서 성과가 좋지 않은 모델을 얻을 수 있다.

 

 

19. What is cross-validation and why would you prefer it to a validation set?

교차 유효성 검사 란 무엇이며 유효성 검사 집합을 선호하는 이유는 무엇입니까?

Cross-validation is a technique that makes it possible to compare models (for model selection and hyperparameter tuning) without the need for a separate validation set. This saves precious training data.

교차 유효성 검증은 별도의 분류된 validation 세트 없이( train / test로만 분류해도 괜찮음) 모델 비교 (모델 선택 및 하이퍼 파라미터 튜닝 변수 조정)를 가능하게 하는 기술입니다. 이렇게 하면 validation set을 따로 뺴지 않아도 되기 때문에 train data를 아낄 수 있다(데이터가 적은 상황에서 좋은 효율)






순서 - 선형 SVM / 비선형 SVM / (1)

비선형SVM / 커널트릭 / SVR (2)

인공지능 수업시간에 발표했던 PPT.

서포트 백터들과 하이퍼 플래인의 마진 계산 관련 공식은 중간에 텍스트로만 이루어진 슬라이드를 참고하면 된다.



+ Recent posts