1
00:00:00,000 --> 00:00:13,400
안녕하세요 코리아이티 아카데미 강남정 김영선 강사입니다.
2
00:00:13,400 --> 00:00:21,080
11강 분류 알고리즘 두 번째 시간으로 하이퍼 파라미터 튜닝과 같이 한번 보도록 하겠습니다.
3
00:00:21,080 --> 00:00:26,760
이번 강의 목표입니다. 랜덤 포레스트와 SVM의 작동 원리를 이해할 수 있다.
4
00:00:26,760 --> 00:00:35,400
두 번째로 그리드 서치 CVE와 랜덤 마이즈드 서치 CVE를 통해서 하이퍼 파라미터 튜닝을 수행할 수 있다.
5
00:00:35,400 --> 00:00:40,080
이 두 가지 목표를 가지고 수업 진행하도록 하겠습니다.
6
00:00:40,080 --> 00:00:45,279
먼저 저희 지도 알고리즘에 대해서 간단히 보고 넘어갈게요.
7
00:00:45,279 --> 00:00:54,160
지도 알고리즘은 입력 데이터 X라는 입력 데이터와 출력 레이블 Y라는 것을 기반으로 학습하게 되고요.
8
00:00:54,160 --> 00:00:59,119
새로운 데이터에 대한 예측을 수행하는 알고리즘을 의미하게 돼요.
9
00:00:59,119 --> 00:01:06,360
입력 데이터, 입력되는 각들에 따라서 출력 레이블 Y가 정해진다 라고 생각을 해주시면 됩니다.
10
00:01:06,360 --> 00:01:12,279
지도 학습 알고리즘의 종류에는 분류와 획이 크게 두 가지로 나뉘어지고요.
11
00:01:12,279 --> 00:01:16,040
분류는 범주형 데이터를 예측할 때 사용해요.
12
00:01:16,040 --> 00:01:23,199
질병을 진단한다거나 이메일의 스팸 여부를 확인한다 이럴 때 주로 사용하게 되고요.
13
00:01:23,199 --> 00:01:27,839
획이의 알고리즘은 연속적인 값을 예측할 때 사용하게 됩니다.
14
00:01:27,839 --> 00:01:34,480
주택 가격을 예측한다거나 또는 주식 시장을 예측할 때 획이의 알고리즘이 사용이 돼요.
15
00:01:34,480 --> 00:01:38,839
그럼 알고리즘 종류들은 어떤 것들이 있는지 한번 보도록 할게요.
16
00:01:38,839 --> 00:01:42,760
분류 알고리즘에서는 이렇게 다양한 알고리즘이 있는데,
17
00:01:42,760 --> 00:01:47,400
첫 번째로 로지스틱 획이, 로지스틱 획이의 알고리즘이 있고요.
18
00:01:47,400 --> 00:01:52,279
획이가 들어가서 획이의 알고리즘이 아닐까 싶을 때도 있겠지만,
19
00:01:52,320 --> 00:01:55,639
로지스틱 획이는 분류에 해당하게 됩니다.
20
00:01:55,639 --> 00:02:00,440
두 번째로 서프트 벡터 머신, SVM이라고 하는 알고리즘도 있고요.
21
00:02:00,440 --> 00:02:05,040
세 번째로 결정트리, 디시전트리 라는 알고리즘이 있습니다.
22
00:02:05,040 --> 00:02:11,479
네 번째로는 디시전트리를 여러 개 묶어서 사용할 수 있는 랜덤 포레스트가 있고요.
23
00:02:11,479 --> 00:02:20,800
또 K-최근적 KNN 알고리즘, 이거 말고도 굉장히 다양한 알고리즘들이 있다고 보시면 됩니다.
24
00:02:20,800 --> 00:02:27,160
획이 알고리즘에는 선형 획이, 다항 획이, 릿지, 라소 획이가 포함되어 있는데,
25
00:02:27,160 --> 00:02:30,679
이번 시간에는 분류 알고리즘에 대해서 배워볼 거고요.
26
00:02:30,679 --> 00:02:34,000
다음 시간에 획이에 대해서 보도록 하겠습니다.
27
00:02:34,000 --> 00:02:39,119
오늘 배울 부분은 다양한 알고리즘들이 있는데,
28
00:02:39,119 --> 00:02:46,199
이번 수업 때는 서프트 벡터 머신과 랜덤 포레스트에 대해서 배워보도록 할게요.
29
00:02:46,199 --> 00:02:49,119
먼저 랜덤 포레스트부터 보도록 하겠습니다.
30
00:02:49,119 --> 00:02:52,960
랜덤 포레스트는 여러 개의 결정트리를 학습하고,
31
00:02:52,960 --> 00:02:57,759
앙상블 방식을 통해서 최종 예측을 수행하는 알고리즘이에요.
32
00:02:57,759 --> 00:03:03,479
작동 원리는 여러 결정트리를 먼저 독립적으로 학습을 하게 되고요.
33
00:03:03,479 --> 00:03:11,119
이 각 트리의 예측 결과를 기반으로 다수결 투표, 분류하거나 또는 평균값을 계산합니다.
34
00:03:11,119 --> 00:03:14,559
이런 형태로 해서 작동이 진행이 되고,
35
00:03:14,559 --> 00:03:18,759
이 랜덤 포레스트의 장점과 단점 같이 보도록 하겠습니다.
36
00:03:18,759 --> 00:03:23,679
장점은 첫 번째, 과적합을 방지할 수 있다는 장점이 있습니다.
37
00:03:23,679 --> 00:03:30,240
이렇게 딱 맞게 맞아 떨어지는 것, 이것을 과적합됐다, 딱 맞게 떨어진다,
38
00:03:30,240 --> 00:03:34,240
완전히 맞다는 의미에서 과적합이라고 표현을 하는데,
39
00:03:34,240 --> 00:03:36,559
오버피팅이라고 표현을 하게 됩니다.
40
00:03:36,559 --> 00:03:44,880
과적합이 되면 기존 있는 데이터에서는 정확한 높은 결과를 볼 수가 있지만,
41
00:03:44,880 --> 00:03:50,639
새로운 데이터셋이 들어왔을 때는 예측 결과의 정확도가 떨어질 수가 있어요.
42
00:03:50,639 --> 00:03:54,559
과적합을 방지할 수 있다는 장점을 가지고 있고요.
43
00:03:54,559 --> 00:03:57,880
두 번째로는 높은 정확도를 가지고 있습니다.
44
00:03:57,880 --> 00:04:01,759
이에 비해 단점으로는 예측 속도가 조금 느려요.
45
00:04:01,759 --> 00:04:06,199
여러 개의 결정트리를 독립적으로 여러 번 학습을 시키죠.
46
00:04:06,199 --> 00:04:10,520
그렇기 때문에 느린 예측 속도를 가지고 있고요.
47
00:04:10,520 --> 00:04:14,960
또 해석이 어렵다는 단점을 가지고 있습니다.
48
00:04:14,960 --> 00:04:20,040
랜덤 포레스트는 앙상블 방식을 통해서 수행이 된다고 했었죠.
49
00:04:20,040 --> 00:04:24,160
앙상블이라는 게 어떤 것을 의미하는지 한번 보도록 할게요.
50
00:04:24,160 --> 00:04:31,440
머신러닝에서 여러 모델을 결합해서 예측 성능을 향상시키는 방법론을 의미합니다.
51
00:04:31,440 --> 00:04:34,559
이 앙상블에는 크게 세 가지가 있는데,
52
00:04:34,559 --> 00:04:39,720
백잉, 부스팅, 스티킹이라는 앙상블 기법이 있고요.
53
00:04:39,720 --> 00:04:41,559
백잉부터 보도록 할게요.
54
00:04:41,559 --> 00:04:46,679
백잉은 결정트리 같은 것들을 독립적으로 학습시킨 후에
55
00:04:46,679 --> 00:04:52,279
그 결과를 평균 내거나 투표를 통해서 최종 결과를 도출하게 됩니다.
56
00:04:52,279 --> 00:04:59,040
저희가 볼 랜덤 포레스트는 백잉 방법론이 사용되었다고 봐주시면 되고요.
57
00:04:59,040 --> 00:05:04,000
부스팅은 이전 학습기에서 오차를 점점 보완하는 방식으로
58
00:05:04,000 --> 00:05:06,720
순차적으로 학습을 시키게 돼요.
59
00:05:06,720 --> 00:05:16,000
부스팅의 방식에는 그래디언트 부스팅, XG 부스팅, 라이트 GBM 이런 것들이 포함되어 있습니다.
60
00:05:16,000 --> 00:05:21,519
스티킹은 서로 다른 종류의 모델들을 여러 가지 모델들을 결합해서
61
00:05:21,519 --> 00:05:24,519
최적의 조합을 찾는 것을 의미해요.
62
00:05:24,519 --> 00:05:31,600
상위 메타모델이 하위 모델들의 출력을 학습하면서 진행이 됩니다.
63
00:05:31,600 --> 00:05:36,480
이렇게 여러 모델을 결합해서 예측 성능을 향상시키는 방법론,
64
00:05:36,480 --> 00:05:40,920
이것을 앙상블이라고 한다는 것까지 기억해 주시고요.
65
00:05:40,920 --> 00:05:44,079
조금 이따가 코드로 확인해 보도록 하겠습니다.
66
00:05:44,079 --> 00:05:47,920
두 번째 알고리즘, SVM에 대해서 보도록 할게요.
67
00:05:47,920 --> 00:05:51,399
Support Vector Machine이라고 하고요.
68
00:05:51,399 --> 00:05:56,920
초평면을 사용해서 데이터를 분류하는 분류 알고리즘에 해당하게 됩니다.
69
00:05:56,920 --> 00:06:04,519
SVM의 작동 원리는 먼저 데이터를 가장 잘 분류할 수 있는 최적의 초평면을 찾게 돼요.
70
00:06:04,519 --> 00:06:12,920
초평면에서 가장 가까운 데이터인 Support Vector를 기준으로 최적화를 수행하면서 분류를 진행하게 됩니다.
71
00:06:12,920 --> 00:06:22,200
SVM의 장단점도 확인해 보도록 하겠습니다.
72
00:06:22,200 --> 00:06:26,959
장점에는 고차원 데이터에 적합하다는 장점을 가지고 있고요.
73
00:06:26,959 --> 00:06:31,839
두 번째로는 과적합 방지 효과를 나타내고 있어요.
74
00:06:31,839 --> 00:06:37,279
이에 비해 단점으로는 대규모 데이터 에세스에서는 느릴 수가 있고요.
75
00:06:37,279 --> 00:06:42,279
또 적절한 커널과 하이퍼 파라미터 설정이 굉장히 중요합니다.
76
00:06:42,279 --> 00:06:50,480
그러면 여기서 초평면을 사용해서 데이터를 분류한다고 했는데 초평면이 뭔지 한번 보도록 하겠습니다.
77
00:06:50,480 --> 00:06:53,920
SVM이 사용하는 핵심 개념 중에 하나예요.
78
00:06:53,920 --> 00:07:01,079
데이터를 분류하거나 회기 분석을 수행할 때 사용되는 결정 경계를 의미하게 됩니다.
79
00:07:01,079 --> 00:07:06,959
2차원에서는 직선을 나타내고요. 3차원에서는 평면을 나타내요.
80
00:07:06,959 --> 00:07:13,160
그리고 n차원에서는 n-1차원의 서브 스페이스를 나타내게 됩니다.
81
00:07:13,160 --> 00:07:22,239
이 초평면은 SVM의 목표와 일치하게 되는데 이 초평면에 SVM에서 사용한다고 했죠?
82
00:07:22,239 --> 00:07:29,720
SVM의 목표는 데이터를 가장 잘 분류할 수 있는 최적의 초평면을 찾는 것이 있습니다.
83
00:07:29,720 --> 00:07:40,519
여기서 가장 잘 분리라는 것은 초평면과 각 클래스의 가장 가까운 데이터 포인트, 이것을 서포트 베터라고 할 수가 있고요.
84
00:07:40,519 --> 00:07:42,959
이것을 서포트 베터라고 하고요.
85
00:07:42,959 --> 00:07:51,320
이 가장 가까운 데이터 포인트 사이에 거리가 최대가 되는 것을 의미한다라고 보시면 돼요.
86
00:07:51,359 --> 00:08:05,119
즉, 가장 잘 분리됐다는 것은 초평면과 가장 가까운 데이터 포인트의 거리가 최대가 되는 것을 의미한다라는 것으로 정리해 주시면 됩니다.
87
00:08:05,119 --> 00:08:07,640
자, 그 다음으로 보도록 하겠습니다.
88
00:08:07,640 --> 00:08:11,040
하이퍼 파라미터 튜닝에 대해서 보도록 할게요.
89
00:08:11,040 --> 00:08:19,559
하이퍼 파라미터 튜닝이라는 것은 모델 학습에 영향을 미치는 사용자가 설정하는 매개 변수를 의미합니다.
90
00:08:19,559 --> 00:08:26,880
결정 프리에서 맥스텝스나 또는 민 샘플 스플릿, 이런 것들이 포함되어 있어요.
91
00:08:26,880 --> 00:08:38,440
하이퍼 파라미터 튜닝이 중요한 이유는 잘못된 하이퍼 파라미터를 선택하게 된다며 모델 성능을 저하시킬 수 있다는 문제가 발생하게 되고
92
00:08:38,440 --> 00:08:46,479
또 적절한 값을 설정했을 때 과적합과 과소적합을 방지하고 성능을 향상시킬 수가 있습니다.
93
00:08:46,479 --> 00:08:50,440
그럼 최적화 방법은 어떤 것들이 있는지 보도록 할게요.
94
00:08:50,440 --> 00:08:58,280
최적화 방법은 두 가지가 있습니다. 그리드 서치 CV와 랜덤 마이즈드 서치 CV 두 가지가 있고요.
95
00:08:58,280 --> 00:09:05,840
그리드 서치 CV는 모든 하이퍼 파라미터 조합을 탐색해서 최적의 조합을 선택하게 돼요.
96
00:09:05,840 --> 00:09:12,559
장점으로는 완전 탐색을 통해서 최적의 결과를 보장할 수 있다라는 장점이 있지만
97
00:09:12,559 --> 00:09:17,880
이에 비해 단점으로는 계산 비용이 높다는 단점을 가지고 있습니다.
98
00:09:17,880 --> 00:09:23,719
두 번째는 랜덤 샘플링을 통해서 하이퍼 파라미터를 탐색할 수가 있고요.
99
00:09:23,719 --> 00:09:28,960
장점으로는 계산 비용이 절감된다는 장점을 가지고 있어요.
100
00:09:28,960 --> 00:09:34,880
랜덤으로 샘플링 하기 때문에 계산 비용이 절감 효과를 나타내고 있고요.
101
00:09:34,880 --> 00:09:39,039
단점으로는 최적 결과를 보장하지는 않습니다.
102
00:09:39,039 --> 00:09:44,039
랜덤으로 샘플링 된 결과가 이 조합이 잘못되어 있다면
103
00:09:44,039 --> 00:09:49,280
랜덤 샘플링이 잘못되어 있다면 최적의 결과를 당연히 보장하지 않겠죠.
104
00:09:49,280 --> 00:09:55,640
그래서 단점으로는 최적의 결과를 항상 보장하지 않는다는 단점을 가지고 있습니다.
105
00:09:55,640 --> 00:10:01,119
그러면 이 내용을 기반으로 실습 바로 보도록 하겠습니다.
106
00:10:01,159 --> 00:10:10,479
첫 번째로 Iris 데이터셋을 시각화해서 어떻게 분류가 나타나는지 확인해 보도록 할 거고요.
107
00:10:10,479 --> 00:10:14,679
특징 두 가지를 선택해서 확인해 보도록 하겠습니다.
108
00:10:14,679 --> 00:10:23,159
두 번째로는 Iris 데이터셋으로 배깅을 진행해서 랜덤 포레스트 확인해 보도록 하겠습니다.
109
00:10:23,159 --> 00:10:28,599
예측 성능 평가까지 진행해서 어떻게 결과가 나오는지 확인해 볼 거고요.
110
00:10:28,599 --> 00:10:40,320
또 배깅을 진행했을 때 예측 성능 평가가 Iris 데이터셋은 정확히 50으로 나온다는 것을 알고 있죠.
111
00:10:40,320 --> 00:10:49,479
분류가 잘 되어 있는 좋은 데이터셋이기 때문에 결과가 1.0 형태로 나오게 될 거에요.
112
00:10:49,479 --> 00:10:55,520
그렇기 때문에 조금 더 복잡한 데이터를 시각화해서 확인해 볼 거고
113
00:10:55,520 --> 00:11:02,599
그리고 이 복잡한 데이터를 토대로 배깅까지 진행해 보도록 하겠습니다.
114
00:11:02,599 --> 00:11:12,359
배깅 뿐만 아니라 그래디언티 부스팅, 스티킹까지 확인해서 결과가 어떻게 차이가 있는지 확인해 보도록 하겠습니다.
115
00:11:12,359 --> 00:11:19,000
두 번째로는 SVM 실습을 진행할 건데요. 이번에도 Iris 데이터셋을 사용할 거에요.
116
00:11:19,000 --> 00:11:25,000
SVM 모델로 학습을 시켰을 때 결과가 어떻게 출력되는지 확인해 볼 거고
117
00:11:25,000 --> 00:11:31,799
두 번째로는 이번에도 복잡한 데이터 하나를 불러다가 사용해 보도록 하겠습니다.
118
00:11:31,799 --> 00:11:41,840
복잡한 데이터를 실습할 때는 Cycle1 데이터셋 안에 있는 다양한 데이터셋을 활용해서 시각화까지 진행해 보도록 하겠습니다.
119
00:11:41,840 --> 00:11:48,000
그러면 코렙에서 코드 먼저 작성해 주시고요. 저희 같이 한번 보도록 하겠습니다.
120
00:11:48,000 --> 00:11:52,799
먼저 Iris 데이터셋 시각화부터 진행해 보도록 할게요.
121
00:11:52,799 --> 00:12:04,159
Iris 데이터셋이 Sibon이라는 라이브러리 안에도 있지만 Iris 데이터셋은 Cycle1 안에도 포함되어 있습니다.
122
00:12:04,159 --> 00:12:10,559
그래서 이번에는 Cycle1 안에 있는 데이터셋을 활용해서 진행을 할 거고요.
123
00:12:10,559 --> 00:12:18,320
실행해 보시면 Iris 데이터 시각화되는 결과 확인하실 수가 있죠.
124
00:12:18,320 --> 00:12:26,960
결과를 확인해 보면 이 데이터셋들이 잘 나뉘어져 있고 섞여 있는 부분이 많지 않음을 확인할 수가 있습니다.
125
00:12:26,960 --> 00:12:35,599
세토사, 버지컬러, 버지니카 이렇게 품종 3가지가 있죠.
126
00:12:35,599 --> 00:12:42,239
세토사, 버지컬러, 버지니카 3개의 품종으로 잘 나와 있는 걸 확인할 수가 있고요.
127
00:12:42,239 --> 00:12:51,640
이 데이터를 토대로 이 Iris 데이터셋을 토대로 먼저 X와 Y로 데이터를 분리해서
128
00:12:51,640 --> 00:12:59,919
학습 데이터와 테스트 데이터를 분리하고 랜덤 포레스트 모델을 생성해서 확인해 보도록 하겠습니다.
129
00:12:59,919 --> 00:13:08,159
랜덤 포레스트 모델을 생성할 때 랜덤 포레스트 클래스피어라는 클래스를 이용해 주시면 되고요.
130
00:13:08,159 --> 00:13:13,760
여기서 매개 변수를 추가해 줬죠. 이 부분이 뭘까요?
131
00:13:13,760 --> 00:13:21,400
이 부분이 하이퍼 파라미터 튜닝하는 부분이죠. 저희가 값을 넣어준 부분입니다.
132
00:13:21,400 --> 00:13:27,679
이렇게 100이라고 넣어줬고요. 피팅 시키고 예측 성능 평가해 보도록 할게요.
133
00:13:27,679 --> 00:13:34,200
그랬더니 랜덤 포레스트 정확도가 1.0으로 나오는 걸 볼 수가 있죠.
134
00:13:34,200 --> 00:13:40,400
이 말은 학습과 테스트 데이터셋의 결과가 정확히 일치한다.
135
00:13:40,400 --> 00:13:45,520
예측했을 때 결과도 일치한다는 것을 확인할 수가 있습니다.
136
00:13:45,520 --> 00:13:50,520
아큐리스 코어 안에 Y 테스트와 Y 프리드 두 개를 넣어줬죠.
137
00:13:50,520 --> 00:13:53,640
이거를 각각 출력까지 한번 해 볼게요.
138
00:13:53,640 --> 00:14:10,200
프린트 Y 테스트와 프린트 Y 프리드 확인해 보면 이렇게 결과가 나오는데 모두 두 개가 동일한 결과를 갖고 있습니다.
139
00:14:10,200 --> 00:14:17,799
정확히 일치해서 정확도가 1.0 100%로 나왔다는 것을 확인할 수가 있고요.
140
00:14:17,799 --> 00:14:26,400
분류가 너무 잘 되어 있는 데이터셋이기 때문에 조금 더 복잡한 데이터를 사용해서 확인해 보도록 할게요.
141
00:14:26,400 --> 00:14:31,599
총 샘플 수는 1000개로 넣어서 확인하도록 하겠습니다.
142
00:14:31,599 --> 00:14:40,679
데이터 시각화도 두 개의 주요 층만 확인해 줄 거고요. 실행해서 확인해 보시면 이렇게 나오는 것을 볼 수가 있죠.
143
00:14:40,679 --> 00:14:50,359
컴플렉스 데이터셋의 예측품종을 이렇게 다양하게 넣어 주었습니다.
144
00:14:50,359 --> 00:14:59,359
이렇게 다양하게 섞여서 화면에 나타날 수 있도록 시각화를 진행했고요.
145
00:14:59,359 --> 00:15:02,159
이제 모델별 차이를 확인할게요.
146
00:15:02,239 --> 00:15:06,200
먼저 랜덤 포레스트 사용을 해 줄 거고요.
147
00:15:06,200 --> 00:15:16,679
그래디언트 부스팅 클래스피어 그리고 스티킹 클래스피어 세 가지 확인해 보도록 하겠습니다.
148
00:15:16,679 --> 00:15:25,280
로지스틱 회기로 모델을 학습시켜서 결과까지 출력해 보도록 할게요.
149
00:15:25,280 --> 00:15:40,479
실행해서 결과를 확인했더니 랜덤 포레스트 정확도, 그래디언트 부스팅 정확도, 그리고 스티킹 정확도가 모두 다 다르게 나오는 것을 볼 수가 있죠.
150
00:15:40,479 --> 00:15:53,479
여기서 정확도는 0.95에서 0.98 정도의 정확도가 나오면 정확하게 모델이 잘 만들어졌다고 볼 수가 있는데
151
00:15:53,479 --> 00:15:57,679
지금은 0.76 이에요.
152
00:15:57,679 --> 00:16:03,640
랜덤 포레스트의 정확도는 0.763 정도로 나왔죠.
153
00:16:03,640 --> 00:16:11,799
이 말 뜻은 0.76 이라는 것은 76%의 정확도를 갖고 있다 라고 봐주시면 됩니다.
154
00:16:11,799 --> 00:16:21,760
이 3개의 랜덤 포레스트, 그래디언트 부스팅, 스티킹 3개에서는 랜덤 포레스트의 정확도가 가장 높게 나왔지만
155
00:16:21,760 --> 00:16:30,960
그래도 기준을 놓고 봤을 때, 전체적인 기준으로 봤을 때는 낮은 정확도를 갖고 있다고 파악을 해 줄 수가 있습니다.
156
00:16:30,960 --> 00:16:35,280
두번째로 svm 으로도 확인해 보도록 할게요.
157
00:16:35,280 --> 00:16:41,559
svm 모델도 셀킬런 안에 모듈로 들어가 있고요.
158
00:16:41,559 --> 00:16:47,520
인풋트를 받아 줄 때는 svc 대문자로 인풋트를 받아 주셔야 됩니다.
159
00:16:47,520 --> 00:16:52,119
정확도와 전체 레포트까지 확인해 보도록 할 거고요.
160
00:16:52,119 --> 00:16:56,919
첫 번째로 iris 데이터셋을 이용해서 확인해 보도록 할게요.
161
00:16:56,919 --> 00:17:09,359
실행해서 확인해 보시면 svm의 rbf 커너를 사용해서 결과가 1.0 으로 나온 거 확인할 수가 있습니다.
162
00:17:09,359 --> 00:17:13,680
아래쪽에 리포트로 나온 것까지 볼 수가 있고요.
163
00:17:13,680 --> 00:17:24,040
이렇게 봤을 때 f1 스코어, 리셀, 프레시전 모두 다 1.00 으로 나온 거 확인할 수가 있죠.
164
00:17:24,040 --> 00:17:28,400
이렇게 결과가 나온 것을 확인해 줄 수가 있고요.
165
00:17:28,400 --> 00:17:36,560
결과는 모두 다 1.0 으로 나왔기 때문에 정확하지만 과적합 되었을 수도 있다고 파악을 할 수가 있죠.
166
00:17:36,560 --> 00:17:41,280
조금 더 복잡한 데이터로 확인해 보도록 하겠습니다.
167
00:17:41,280 --> 00:17:46,359
조금 더 복잡한 데이터로 svm 확인해 보도록 할게요.
168
00:17:46,359 --> 00:17:54,119
이번에 makemoons라는 데이터셋을 활용해서 300개의 데이터 포인트를 만들어 주도록 할게요.
169
00:17:54,119 --> 00:18:01,680
실행해서 확인해 보시면 300개의 데이터 포인트가 만들어진 것을 확인할 수가 있고요.
170
00:18:01,680 --> 00:18:10,079
바로 svm 알고리즘을 이용해서 결과 출력해 보도록 할게요.
171
00:18:10,079 --> 00:18:17,520
데이터를 분리해 줘야 되죠. x-train과 x-test 그리고 y-train과 y-test로 넣어 줬고요.
172
00:18:17,520 --> 00:18:21,800
train-test-split 으로 나눠서 확인해 줄 거예요.
173
00:18:21,800 --> 00:18:30,920
0.3 으로 테스트 사이즈를 넣어 줬다는 것은 학습 데이터는 0.7 즉 70%
174
00:18:30,920 --> 00:18:36,680
그리고 테스트 데이터셋을 30% 로 넣었다 라고 봐주시면 됩니다.
175
00:18:36,680 --> 00:18:42,760
svm 모델을 생성했고요. 이번에도 rbf커널을 사용해 줬어요.
176
00:18:42,760 --> 00:18:50,119
그리고 fitting으로 x-train과 y-train 값을 넣어주고 예측 바로 가보도록 하겠습니다.
177
00:18:50,119 --> 00:18:56,719
실행해서 확인해 봤더니 0.92 정도로 결과가 나온 것을 확인할 수가 있죠.
178
00:18:56,719 --> 00:19:03,280
이 말은 92% 정도의 정확도를 가질 수가 있다고 봐주시면 됩니다.
179
00:19:03,280 --> 00:19:10,599
이런 형태로 다양하게 코드를 작성해 볼 수 있는 것 또 다양한 모델들이 있다는 것
180
00:19:10,599 --> 00:19:14,760
알고리즘 모델들이 있다는 걸 생각을 해 주시면 되겠습니다.
181
00:19:14,760 --> 00:19:21,439
그러면 지금까지 했던 내용을 간단히 복습해 보도록 하겠습니다.
182
00:19:21,439 --> 00:19:27,760
먼저 저희 지도학습에 대해서 배웠습니다. 지도학습 알고리즘 다양한 것들이 있었는데
183
00:19:27,760 --> 00:19:36,760
랜덤 포레스트 svm을 사용해 봤고요. 지도학습은 입력 데이터 x와 출력 레이블 y를 기반으로 학습해서
184
00:19:36,760 --> 00:19:42,400
새로운 데이터에 대한 예측을 수행하는 알고리즘이다 라고 했죠.
185
00:19:42,400 --> 00:19:52,400
랜덤 포레스트는 여러 개의 결정트리를 학습하고 앙상블 방식을 통해서 최종 예측을 수행하는 알고리즘이었고요.
186
00:19:52,400 --> 00:19:58,439
svm은 초평면을 사용해서 데이터를 분리하는 분류 알고리즘이죠.
187
00:19:58,439 --> 00:20:06,400
이렇게 해서 저희 오늘 배웠던 내용 간단히 복습해 보았고요. 여기까지 복습 진행했고요.
188
00:20:06,400 --> 00:20:13,680
제가 추가적으로 제공하는 자료 꼭 공부해 주시고 다음 시간에 수업 진행하도록 하겠습니다.
189
00:20:13,680 --> 00:20:17,760
오늘 수업도 수고 많으셨습니다.
05_파이썬으로 배우는 데이터 분석 심화 AI & 머신러닝
강의 개요와 학습 목표
주제: 분류 알고리즘(2) – 랜덤 포레스트, SVM, 하이퍼파라미터 튜닝
목표 1: 랜덤 포레스트와 SVM의 작동 원리 이해
목표 2: GridSearchCV, RandomizedSearchCV를 이용한 하이퍼파라미터 튜닝 수행
실습 데이터: Iris, scikit-learn 제공 복잡 데이터, make_moons 등
지도학습 개요
지도학습: 입력 데이터 \(X\)와 레이블 \(Y\)로 학습 후 새로운 데이터의 \(Y\)를 예측하는 알고리즘
분류: 범주형 레이블 예측 (예: 질병 진단, 스팸 메일 분류)
회귀: 연속형 값 예측 (예: 주택 가격, 주가 예측)
분류 알고리즘 예: 로지스틱 회귀, SVM, 결정트리, 랜덤 포레스트, KNN 등
회귀 알고리즘 예: 선형 회귀, 다항 회귀, 릿지, 라쏘 등
랜덤 포레스트 개념과 특징
정의: 여러 개의 결정트리를 독립적으로 학습하고, 그 예측을 앙상블(다수결/평균)하여 최종 예측하는 모델
작동 원리
여러 결정트리 개별 학습
분류: 다수결 투표로 최종 클래스 결정
회귀: 각 트리 예측값의 평균 사용
장점
여러 트리의 결합으로 과적합(오버피팅) 방지 효과
대체로 높은 예측 정확도
단점
여러 트리를 학습·예측하므로 속도가 느릴 수 있음
개별 트리 조합이라 전체 모델 해석이 어렵다
앙상블 학습과 세 가지 기법
앙상블: 여러 모델을 결합해 단일 모델보다 예측 성능을 향상시키는 방법론
배깅(Bagging)
동일 유형 모델(주로 결정트리)을 독립적으로 학습
결과를 평균 또는 투표로 결합
랜덤 포레스트가 대표적 예
부스팅(Boosting)
이전 모델의 오차를 보완하도록 다음 모델을 순차적으로 학습
대표: Gradient Boosting, XGBoost, LightGBM 등
스태킹(Stacking)
서로 다른 종류의 여러 모델 출력값을 상위 메타모델이 다시 학습
하위 모델들의 조합을 통해 최적 성능을 노림
SVM과 초평면의 개념
SVM(Support Vector Machine): 초평면을 사용해 데이터를 분류하는 분류 알고리즘
작동 원리
두 클래스를 가장 잘 나누는 ‘최적의 초평면’을 탐색
초평면에 가장 가까운 데이터 포인트들을 서포트 벡터라 함
서포트 벡터와 초평면 사이의 거리(마진)를 최대화하는 방향으로 최적화
초평면
결정 경계 역할
2차원: 직선, 3차원: 평면, \(n\)차원: \(n-1\)차원 부분공간
가장 잘 분리: 초평면과 각 클래스의 가장 가까운 점 사이 거리(마진)가 최대
장점
고차원 데이터에 적합
마진 최대화로 과적합 방지 효과
단점
대규모 데이터셋에서 학습·예측이 느릴 수 있음
커널과 하이퍼파라미터(C, gamma 등) 설정에 성능이 크게 의존
하이퍼파라미터 튜닝의 의미와 필요성
하이퍼파라미터: 학습 과정 전에 사용자가 설정하는 매개변수 (예: 결정트리의 max_depth, min_samples_split 등)
튜닝 필요 이유
부적절한 값 선택 시 모델 성능 저하
적절한 값 선택 시 과적합·과소적합을 줄이고 일반화 성능 향상
하이퍼파라미터 최적화 방법
GridSearchCV
사전 정의한 모든 하이퍼파라미터 조합을 전수 탐색
장점: 완전 탐색으로 최적 조합을 찾을 가능성이 높음
단점: 조합 수가 많으면 계산 비용·시간이 매우 큼
RandomizedSearchCV
하이퍼파라미터 공간에서 랜덤 샘플링하여 일부 조합만 탐색
장점: 계산 비용 절감, 큰 공간에서 빠르게 괜찮은 해를 찾기 용이
단점: 샘플링 운에 따라 최적 조합을 놓칠 수 있어 최적 결과를 보장하지 못함
실습 구성과 모델 성능 비교
Iris 데이터 시각화
scikit-learn Iris 사용, 두 특성만 선택해 시각화
세 품종(Setosa, Versicolor, Virginica)이 비교적 잘 분리되어 있음
Iris + 랜덤 포레스트
RandomForestClassifier 사용, 예: n_estimators=100 등 설정
훈련/테스트 분할 후 정확도 1.0, y_test와 y_pred가 완전 일치
데이터가 단순·잘 분리되어 있어 과적합 가능성도 함께 고려
복잡 데이터셋 + 앙상블 비교
샘플 수 1000개 수준의 복잡한 분포 생성 및 시각화
랜덤 포레스트, Gradient Boosting, StackingClassifier를 동일 데이터에 적용
정확도 예: 랜덤 포레스트 약 0.76 수준으로 세 모델 간 성능 차이 존재
일반적으로 0.95~0.98면 매우 우수, 0.76은 상대적으로 낮은 편으로 해석
Iris + SVM
SVC + RBF 커널 사용
정확도 1.0, classification report에서 precision/recall/F1 모두 1.00
성능은 매우 높으나 과적합 가능성 염두
make_moons + SVM
샘플 300개 생성, train:test = 7:3 분할
RBF 커널 SVM 적용, 정확도 약 0.92 (92%)
복잡한 비선형 구조에도 비교적 우수한 성능
핵심 내용 정리
지도학습: \(X, Y\)로 학습해 새로운 \(X\)의 \(Y\)를 예측하는 알고리즘군
랜덤 포레스트: 여러 결정트리를 배깅 방식으로 결합해 과적합을 줄이고 정확도를 높이는 앙상블 모델