{
"cells": [
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"collapsed": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The watermark extension is already loaded. To reload it, use:\n",
" %reload_ext watermark\n",
"CPython 3.5.4\n",
"IPython 6.2.1\n",
"\n",
"numpy 1.14.0\n",
"scipy 1.0.0\n",
"sklearn 0.20.0\n",
"pandas 0.22.0\n",
"matplotlib 2.1.2\n"
]
}
],
"source": [
"%load_ext watermark\n",
"%watermark -v -p numpy,scipy,sklearn,pandas,matplotlib\n",
"\n",
"# 파이썬 2와 파이썬 3 지원\n",
"from __future__ import division, print_function, unicode_literals\n",
"\n",
"# 공통\n",
"import numpy as np\n",
"import os\n",
"\n",
"# 일관된 출력을 위해 유사난수 초기화\n",
"np.random.seed(42)\n",
"\n",
"# 맷플롯립 설정\n",
"%matplotlib inline\n",
"import matplotlib\n",
"import matplotlib.pyplot as plt\n",
"plt.rcParams['axes.labelsize'] = 14\n",
"plt.rcParams['xtick.labelsize'] = 12\n",
"plt.rcParams['ytick.labelsize'] = 12\n",
"\n",
"# 한글출력\n",
"matplotlib.rc('font', family='AppleGothic')\n",
"plt.rcParams['axes.unicode_minus'] = False"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Chapter 4. 모델 훈련"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"- 이번 장에서 배울 내용\n",
" - 가장 간단한 모델 중 하나인 선형 회귀\n",
" - 비선형 데이터셋에 훈련시킬 수 있는 조금 더 복잡한 모델인 다항 회귀\n",
" - 학습 곡선learning curve을 사용해 모델이 과대적합되는지 감지하는 방법\n",
" - 훈련 세트의 과대적합을 감소시킬 수 있는 규제 기법"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"---\n",
"## 4.1 선형 회귀"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"다음은 1장에서 본 삶의 만족도에 대한 간단한 선형 회귀 모델"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" 삶의 만족도 = $\\theta$0 + $\\theta$1 * 1인당_GDP"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"- 이 모델은 입력 특성인 1인당_GDP에 대한 선형 함수
\n",
"- θ0과 θ1이 모델 파라미터"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"일반적으로 선형 모델은 [식 4-1]에서처럼 입력 특성의 가중치 합과 **편향**bias(또는 **절편**intercept)이라는 상수를 더해 예측을 만듦"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"![equation4-1](./images/equation4-1.png)\n",
"
\n",
"