2장의 데이터셋 종류가 많다. 각 데이터에 따른 각 알고리즘은 어떻게 작동할 것인가?
공부 방향
일단 알고리즘 종류의 차이를 정확히 비교하고,
나중에 데이터 자체를 분석하는 방법(pandas...) 공부
알고리즘 |
|
forge |
wave |
cancer |
boston |
extended boston |
blobs |
ram_prices |
two_moons |
handcrafted |
circles |
iris |
|
X |
26x2 |
40x1 |
569x30 |
506x13 |
506x104 |
100x2 |
333x1 |
100x2 |
26x2 |
100x2 |
150x4 |
|
y |
2 |
연속 |
2 |
연속 |
연속 |
3 |
1 |
2 |
2 |
2 |
3 |
|
|
|
|
|
|
|
|
|
|
|
|
ch1 (44p) |
kNN |
KNeighborsClassifier |
|
|
|
|
|
|
|
|
|
|
ch1 (47p) |
샘플 데이터(데이터 개수, 특징 개수, 클래스 개수)
page | 설명 | 변수명 | X 데이터 개수 | X 특징 개수 | y 클래스 종류 | source code |
58 | 인위 데이터 | forge | 26 | 2 | 2 (0, 1) | X, y = mglearn.datasets.make_forge() |
59 | 인위 데이터 (데이터 개수 조절 가능) | wave | 40 | 1 | 연속성데이터 | X, y = mglearn.datasets.make_wave(n_samples=40) |
60 | 위스콘신 유방암 데이터 | cancer | 569 | 30 | 2 (양성, 악성) | cancer = sklearn.datasets.load_breast_cancer() |
62 | 보스턴 주택가격 데이터(회귀용) | boston | 506 | 13 | 연속성데이터 | boston = sklearn.datasets.load_boston() |
62 | 보스턴 피처 확장 | extended boston | 506 | 104 | 연속성데이터 | X, y = mglearn.datasets.load_extended_boston() |
94 | blobs | 100 | 2 | 3 | X, y = sklearn.datasets.make_blobs(random_state=42) | |
112 | 컴퓨터 메모리 가격 동향 데이터 (로그스케일 필요) (DataFrame) | ram_prices | 333 | 1 (date) | 1 (price) | ram_prices = pd.read_csv(os.path.join(mglearn.datasets.DATA_PATH, "ram_price.csv")) |
117 | two_moons | 100 | 2 | 2 (0, 1) | X, y = sklearn.datasets.make_moons(n_samples=100, noise=0.25, random_state=3) | |
131 | handcrafted | 26 | 2 | 2 (0, 1) | X, y = mglearn.tools.make_handcrafted_dataset() | |
153 | circles | 100 | 2 | 2 (0, 1) | X, y = sklearn..datasets.make_circles(noise=0.25, factor=0.5, random_state=1) | |
160 | numpy(150x4) | iris | 150 | 4 | 3 (0, 1, 2) | iris = sklearn.datasets.load_iris() |
...
2장 알고리즘 정리
|
Class | 매개변수 | 장점 |
단점 |
|
최근접이웃 |
분류 KNeighborsClassifier 회귀 KNeighborsRegressor | 거리재는방법, 이웃수k |
작은 데이터셋일 경우, 기본모델로서 설명하기 쉬움 |
훈련세트가 크면 예측이 느려진다. 수백개이상의 많은 특성을 가진 데이터셋은 잘 동작하지 않음. |
데이터 전처리 중요 |
선형모델 |
| 선형모델: 첫번째로 시도할 알고리즘 대용량 데이터셋, 고차원 데이터 가능 |
|
|
|
분류 LogisticRegression LinearSVC | C, 규제(L1, L2) | 로지스틱회귀는 이진분류만 지원(소프트맥스 함수 사용해서 다중분류 가능) | 기본 L2 규제 | ||
회귀 LinearRegression | |||||
회귀 Lasso | alpha | 릿지 회귀 선호. 단, 일부특성만 사용할 경우 라쏘가 좋을수도 있음. | |||
나이브베이즈 |
MultinomialNB BernoulliNB GaussianNB | alpha | 선형모델보다 빠름. 대용량 데이터셋, 고차원 데이터 가능 비교적 매개변수에 민감하지 않음 |
분류만 가능 선형 모델보다 덜 정확 |
|
트리 | max_depth, | 외삽: 훈련범위 밖의 데이터는 예측 불가 과대적합경향이 있어서 일반화 성능이 안좋음 | |||
결정트리 |
분류 DecisionTreeClassifier 회귀 DecisionTreeRegressor | 매우 빠름 시각화하기 좋고, 설명하기 쉬움 |
|
데이터 스케일 조정 필요 없음 |
|
랜덤포레스트 |
분류 RandomForestClassifier | 결정트리 하나보다 거의 항상 좋은 성능!! 매우 안정적이고 강력함. |
고차원 희소 데이터에는 잘 안 맞음. |
데이터 스케일 조정 필요 없음 |
|
그래디언트 부스팅 결정 트리 |
분류 GradientBoostingClassifier | 랜덤포레스트보다 조금 더 성능이 좋음 예측은 빠르고, 메모리를 조금 사용함 |
랜덤포레스트보다 학습이 느림 랜덤포레스트보다 매개변수 튜닝이 많이 필요함 |
|
|
서포트벡터머신 |
분류 SVC 회귀 SVR | 비슷한 의미의 특성으로 이뤄진 중간 규모 데이터셋에 잘 맞음. |
매개변수에 민감 |
데이터 스케일 조정 필요 |
|
신경망 |
분류 MLPClassifier | 특별히 대용량 데이터셋에서 매우 복잡한 모델을 만들 수 있음. |
매개변수 선택과 데이터스케일에 민감 큰 모델은 학습이 오래 걸림. |
데이터 스케일 조정 필요 |
|
'python 및 머신러닝 > 파이썬 라이브러리를 활용한 머신러닝' 카테고리의 다른 글
scikit-learn vs tensorflow (0) | 2017.09.25 |
---|---|
scikit-learn 책 정리 (0) | 2017.09.18 |
파이썬 라이브러리를 활용한 머신러닝 5장 (0) | 2017.08.28 |
파이썬 라이브러리를 활용한 머신러닝 4장 (0) | 2017.08.25 |
파이썬 라이브러리를 활용한 머신러닝 3장 (0) | 2017.08.18 |