Skip to content

Commit 9bdb7c0

Browse files
committed
up
1 parent 8e97de3 commit 9bdb7c0

3 files changed

Lines changed: 9179 additions & 1886 deletions

File tree

end2end_ml_project.ipynb

Lines changed: 46 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1184,10 +1184,22 @@
11841184
"cell_type": "markdown",
11851185
"metadata": {},
11861186
"source": [
1187-
"원-핫 인코딩은 수치화된 범주들 사이의 크기 비교를 피하기 위해 더미dummy 특성을 활용한다.\n",
1187+
"원-핫 인코딩은 수치화된 범주들 사이의 크기 비교를 피하기 위해 **더미**<font size='2'>dummy</font> 특성을 활용한다.\n",
11881188
"예를 들어 `INLAND` 특성값을 길이가 5인 어레이로 만들기 위해\n",
11891189
"원래는 불필요한 네 개의 0을 추가로 활용하였다.\n",
1190-
"이처럼 의미상 필요는 없지만 계산을 위해 어쩔 수 없이 추가된 특성이 더미 특성이다."
1190+
"\n",
1191+
"새롭게 생성된 5개의 특성은 다음과 같다.\n",
1192+
"\n",
1193+
"```python\n",
1194+
"['ocean_proximity_<1H OCEAN',\n",
1195+
"'ocean_proximity_INLAND',\n",
1196+
"'ocean_proximity_ISLAND',\n",
1197+
"'ocean_proximity_NEAR BAY',\n",
1198+
"'ocean_proximity_NEAR OCEAN']\n",
1199+
"```\n",
1200+
"\n",
1201+
"5개 특성은 기존에 주어진 특성 대신 사용되는 특성이라는 의미에서 더미 특성으로 불린다.\n",
1202+
"여기서는 해안 근접도 특성에 사용된 실제 값을 대변하는 특성으로 사용된다."
11911203
]
11921204
},
11931205
{
@@ -1207,7 +1219,9 @@
12071219
"cell_type": "markdown",
12081220
"metadata": {},
12091221
"source": [
1210-
"<p><div align=\"center\"><img src=\"https://github.com/codingalzi/code-workout-ml/blob/master/images/ch02/one_hot01.png?raw=true\" width=\"600\"></div></p>"
1222+
"<div align=\"center\">\n",
1223+
" <img src=\"https://github.com/codingalzi/code-workout-ml/blob/master/images/ch02/one_hot01.png?raw=true\" width=\"700\">\n",
1224+
"</div>"
12111225
]
12121226
},
12131227
{
@@ -1329,7 +1343,8 @@
13291343
"데이터셋이 두터운 꼬리 분포를 따르는 경우, \n",
13301344
"즉 히스토그램이 지나치게 한쪽으로 편향된 경우\n",
13311345
"스케일링을 적용하기 전에 먼저\n",
1332-
"로그 함수를 적용하여 어느 정도 좌우 균형이 잡힌 분포로 변환할 것을 권장한다. \n",
1346+
"로그 함수를 적용하여 어느 정도 좌우 균형이 잡힌 분포로 변환할 것을 권장한다.\n",
1347+
"좌우 균형이 잘 잡힌 특성들을 활용하면 머신러닝 모델의 훈련이 보다 잘된다.\n",
13331348
"\n",
13341349
"$$\n",
13351350
"\\log(x)\n",
@@ -1979,20 +1994,20 @@
19791994
},
19801995
{
19811996
"cell_type": "markdown",
1982-
"id": "aab2b2b0-2d36-4dc7-9452-93ecebae9816",
1983-
"metadata": {
1984-
"slideshow": {
1985-
"slide_type": ""
1986-
}
1987-
},
1997+
"metadata": {},
19881998
"source": [
1989-
"훈련셋 준비가 완료된 상황에서 모델을 선택하고 훈련시키는 일이 남아 있다.\n",
1999+
"`preprocessing`에 의해 변환되는 데이터프레임은 예측기 모델의 훈련에\n",
2000+
"바로 사용될 수 있다.\n",
2001+
"즉, 이제 머신러닝 예측기 모델의 훈련셋으로 바로 사용할 수 있다.\n",
19902002
"\n",
1991-
"사이킷런이 제공하는 예측기 모델을 사용하면 훈련은 기본적으로 간단하게 진행된다.\n",
1992-
"여기서는 사이킷런이 제공하는 세 종류의 회귀 모델의 사용법과 결과의 차이를 간단하게 살펴본다.\n",
1993-
"각 모델의 자세한 특징과 상세 설명은 이어지는 장에서 하나씩 다룬다.\n",
2003+
"하지만 여기서는 데이터 변환과 모델 훈련을 분리해서 진행하는 대신\n",
2004+
"변환기와 예측기를 하나의 파이프라인으로 묶어\n",
2005+
"데이터 변환과 모델 훈련을 동시에 진행하는 방법을 선택해서 소개한다.\n",
19942006
"\n",
1995-
"여기서 소개되는 모든 예측기는 앞서 설명한 전처리 과정과 함께 하나의 파이프라인으로 묶여서 활용된다."
2007+
"`preprocessing`이 가리키는 변환기와 함께 묶여 하나의 파이프라인으로 구성될 예측기로\n",
2008+
"사이킷런의 회귀 모델 세 개를 활용한다.\n",
2009+
"각 모델의 자세한 특징과 상세 설명은 이어지는 장에서 하나씩 소개할 예정이며,\n",
2010+
"여기서는 모델 선택에 따른 성능과 보다 좋은 모델을 훈련시키는 방법을 자세히 소개한다."
19962011
]
19972012
},
19982013
{
@@ -2092,7 +2107,17 @@
20922107
"\n",
20932108
"`cross_val_score()` 함수는 지정된 모델을 k-겹 교차 검증을 활용하여 훈련과 평가를 동시에 진행한다.\n",
20942109
"교차검증은 다만 모델 평가용도로만 폴드를 구분하여 훈련할 뿐 훈련된 모델 객체 자체를 반환하지는 않는다.\n",
2095-
"예를 들어 아래 코드는 결정트리 모델에 대해 교차 검증을 실행한다."
2110+
"예를 들어 아래 코드는 결정트리 모델에 대해 교차 검증을 실행한다.\n",
2111+
"\n",
2112+
"`cross_val_score()` 함수 호출에 사용된 키워드 인자는 다음과 같다.\n",
2113+
"\n",
2114+
"- `scoring=\"neg_mean_squared_error\"` 옵션\n",
2115+
" - 훈련중인 모델의 성능을 측정하는 **효용함수** 지정\n",
2116+
" - 모델의 성능 측정값은 높을 수록 좋은 성능으로 평가되기에 회귀 모델의 경우 일반적으로 RMSE의 음숫값을 사용함.\n",
2117+
"- `cv=10`: 10-겹 교차 검증 진행\n",
2118+
"\n",
2119+
"`cross_val_score()` 함수의 반환값은 `scoring=\"neg_mean_squared_error\"` 옵션으로 인해 음수값이다.\n",
2120+
"따라서 다시 양수로 만들어서 `tree_rmses` 변수에 할당하였다."
20962121
]
20972122
},
20982123
{
@@ -2108,18 +2133,6 @@
21082133
"```"
21092134
]
21102135
},
2111-
{
2112-
"cell_type": "markdown",
2113-
"metadata": {},
2114-
"source": [
2115-
"`cross_val_score()` 함수 호출에 사용된 키워드 인자는 다음과 같다.\n",
2116-
"\n",
2117-
"- `scoring=\"neg_mean_squared_error\"` 옵션\n",
2118-
" - 훈련중인 모델의 성능을 측정하는 **효용함수** 지정\n",
2119-
" - 모델의 성능 측정값은 높을 수록 좋은 성능으로 평가되기에 회귀 모델의 경우 일반적으로 RMSE의 음숫값을 사용함.\n",
2120-
"- `cv=10`: 10-겹 교차 검증 진행"
2121-
]
2122-
},
21232136
{
21242137
"cell_type": "markdown",
21252138
"metadata": {},
@@ -2141,9 +2154,9 @@
21412154
"\n",
21422155
"| 모델명 | 교차 검증 평균 RMSE | 성능 평가 요약 |\n",
21432156
"| :--- | :--- | :--- |\n",
2144-
"| **선형 회귀 모델** | 약 69,858 | 세 모델 중 가장 높은(나쁜) 오차를 보임 |\n",
2145-
"| **결정트리 회귀 모델** | 약 66,868 | 선형 회귀 모델보다 약간 낫지만 여전히 꽤 높은 오차를 보임 |\n",
2146-
"| **랜덤 포레스트 회귀 모델** | 약 47,019 | 훈련이 다소 오래 걸리지만 세 모델 중 성능이 가장 뛰어남 |"
2157+
"| **선형 회귀 모델** | 약 7만 | 세 모델 중 가장 높은(나쁜) 오차를 보임 |\n",
2158+
"| **결정트리 회귀 모델** | 약 6만7천 | 선형 회귀 모델보다 약간 낫지만 여전히 꽤 높은 오차를 보임 |\n",
2159+
"| **랜덤 포레스트 회귀 모델** | 약 4만7천 | 훈련이 다소 오래 걸리지만 세 모델 중 성능이 가장 뛰어남 |"
21472160
]
21482161
},
21492162
{
@@ -2245,6 +2258,8 @@
22452258
"랜덤 포레스트 회귀 모델의 하이퍼파라미터 각각의 기능은\n",
22462259
"[scikit-learn: RandomForestRegressor](https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.RandomForestRegressor.html)에서\n",
22472260
"확인할 수 있다.\n",
2261+
"하지만 각 기능을 이해하기 쉽지 않다.\n",
2262+
"하이퍼파라미터의 기능과 중요도는 앞으로 하나씩 알아나갈 것이다.\n",
22482263
":::"
22492264
]
22502265
},
18.4 KB
Loading

0 commit comments

Comments
 (0)