문제 정의 훈련 세트와 테스트 세트로만 구분하여 모델을 평가하면, 결국 테스트 세트에만 맞추려고 하는 모델이 된다. 검증 세트 테스트 세트를 사용하지 않으면 모델이 과소, 과대적합인지 판단하기 어렵다. 그래서 훈련 세트에 있는 데이터를 또 나누는 방법이 있느데 이 데이터를 검증 세트라고 부른다. => 과대적합 교차 검증 검증 세트 문제 정의 검증 세트를 만드느라 훈련 세트가 감소하였다. 보통 많은 데이터를 훈련에 사용할수록 좋은 모델이 만들어지는데, 그렇다고 검증 세트를 조금 떼어 놓으면 검증 점수가 들쭉날쭉하고 불안정할 것이다. 해결 방안 이럴 때 교차 검증을 이용하면 안정적인 검증 점수를 얻으며 훈련에 더 많은 데이터를 사용할 수 있다. 보통 5, 10 폴드 교차 검증을 많이 사용한다. 이렇게 하면 ..
과대적합! Gini는 지니 불순도를 의미한다. 다음은 지니 불순도의 계산법이다. 지니 불순도 = 1 - (음성 클래스^2 + 양성 클래스^2) 지니 불순도의 경우 1,0은 순수노드라 하며, 0.5면 최악이다. 이유는 1, 0같은 경우 양성 또는 음성 클래스로 완전히 분류되었다는 소리이기 때문에 0.5는 완전 분류가 되지 않았다는 소리기 때문이다. 부무와 자식 노드 사이의 불순도 차이를 정보 이득라고 한다. 사이킷런에는 또 다른 불순도 기준이 있는데 DecisionTreeClassifier 클래스에서 criterion='entropy'를 지정하여 엔트로피 불순도를 사용할 수 있다. 차이점은 지니 불순도 처럼 제곱의 형태가 아닌 밑이 2인 log를 사용하여 곱한다.(차이는 조금 남..) 가지치기 무한정 뻗어..
이전의 데이터를 가지고 새로운 데이터를 추가하면서 모델을 매일 훈련한다면 어떨까. 초기에는 괜찮겠지만 점차 데이터가 많아지고 많아지면 용량 오버가 일어날 수 있다. 그렇다고 이전 데이터를 버린다고 생각해보면 중요한 데이터를 잃어버릴 수 있다. 그래서 훈련한 모델을 버리지 않고 새로운 데이터에 대해서만 조금씩 훈련하는 방법을 고안했는데 이를 점진적 학습 또는 온라인 학습이라고 하며 이런 점진적 학습 알고리즘의 대표격이 확률적 경사 하강법 알고리즘이다. 확률적 경사 하강법 확률적 경사 하강법에서 확률적이라는 말은 무작위,랜덤하게의 기술적 표현이다. 확률적 경사 하강법에서 경사라는 말은 기울기를 나타내며 하강법은 내려가는 방법이다. 하지만 내려갈 때 너무 경사를 크게 잡고 가면 오히려 내려가기는 커녕 내려갈 ..
타깃 데이터에서 3개 이상의 클래스가 포함된 문제를 다중 분류라고 한다. kn.classes_를 통해 정렬된 클래스 타깃 값을 볼 수 있다. 3개의 최근접 이웃만 사용하기 때문에 확률이 1, 0.6666, 0.3333, 0 밖에 나오지 않아 확률이라고 말하기 애매하다. 로지스틱 회귀는이름은 회귀지만 분류 모델이다. 이 알고리즘은 선형 회귀와 동일하게 선형방정식을 학습한다. z = a x weight + b x length + c x Diagonal + d x height + e x width + f 여기에서 a, b, c, d, e는 가중치 혹은 계수이다. 특성은 늘어났지만, 다중회귀를 위한 선형방정식과 같다. z는 어떤 값도 가능하지만, 확률이 되려면 0~1 사이 값이 되어야 하는데 이를 해결할 함수가..
다항 회귀로 모델을 훈련시켰지만 과소적합 문제가 일어나는 경우가 있다. 다중 회귀 : 여러 개의 특성을 사용한 선형 회귀. 선형 회귀는 특성이 많을수록 좋은 효과를 내기에 여러 개의 특성을 사용한 다중 회귀가 유용하다. 1개의 특성을 사용한 선형 회귀 모델은 직선이나 곡선(다항 회귀)이며, 2개 이상의 특성을 사용한 선형 회귀 모델은 3차원 공간, 평면(타깃 = a x 특성1 + b x 특성2 + ... + 절편)이 된다. 중요한 점은 선형 회귀가 복잡하거나 단순하다고 성능이 무조건 낮은 것이 아니다. 특성이 많은 고차원에선 선형 회귀가 매우 복잡한 모델을 표현할 수 있다. 기존의 특성을 가지고 연산을 통해 새로운 특성을 뽑는 작업을 특성 공학이라고 한다. 특성 공학은 데이터가 많기 때문에 복사 붙여넣기..
문제, 기존 훈련보다 훨씬 큰 값을 예측하면 어떻게 될까..? 생선 50의 길이는 약 1500의 무게 값이 나간다고 한다. 여기서 50의 길이 데이터를 예측하면 무게는 어떻게 될까? [1033 ???] 그런데 조금 이상하다!? 길이를 50, 100을 넣든 항상 1033이고 길이가 커져도 변함 없는 무게를 나타내는 것을 볼 수 있다. 좌하단에서 우상단 그래프에 크게 어긋나니 모델을 수정 할 필요가 있다. ==> 선형회귀는 비교적 간단하고 성능이 뛰어나며 특성이 하나인 경우 어떤 직선을 학습하는 알고리즘이다. 전 보다 큰 무게 예측 값을 볼 수 있다. 그리고 선형 회귀에서 가중치와 절편을 구할 수 있으므로 최적의 직선도 구할 수 있다. coef_, intercept_를 머신러닝 알고리즘이 찾은 값이라는 의미..
지도학습은 분류와 회귀로 나뉘는데 분류는 여러 클래스 중 하나의 결과로 결정하는 것인데, 회귀는 하나의 결과로 결정하는 것이 아닌 어떠한 값을 예측하는 것이다. 간단하게 최근접 이웃 분류 알고리즘에서 예측값의 이웃이 rect 2개 circle 1개라면 사각형으로 예측하는 것이고, 최근접 이웃 회귀 알고리즘에서 예측값의 이웃이 100 80 60 이라면 평균값을 통해 80으로 결과를 나타낸다. 데이터가 길이에 따른 무게가 올라가는 것을 볼 수 있으니 길이에 따른 무게를 회귀할 수 있다고 예상 가능하다. 길이를 입력으로, 무게를 타깃으로 잡고 훈련/테스트 세트를 나눈다. 여기서 중요한 것이 knr.score에서 나온 점수, 0.99... 이것이 의미하는 것이 결정계수(R^2)이다. 회귀에서는 예측 하는 값이나..
상대적으로 봐도, [[25, 150]] 데이터는 도미와 가깝다. 그러나 예측결과는 0, 빙어이다. 왜 이렇게 되는 걸까? [[25, 150]] 데이터 이웃 5개(디폴트)를 보도록 한다. 그린 동그라미가 데이터의 이웃이고 빙어가 3 도미가 2로 해당 [[25, 150]] 데이터가 빙어로 예측되도록 한다. 그뿐만 아니라 각 데이터 이웃의 거리를 측정해보니 92, 130, 138, 140, 140으로 데이터가 비슷한 것을 볼 수 있다. 자세히보면 [[25, 150]] 데이터는 빙어와의 거리가 확연히 멀지만 도미와의 거리는 가까운데도 저렇게 표시되는데.. 왜그럴까? pyplot xlim메서드로 무게의 데이터 측정 비교기준(스케일)을 길이에 맞췄다. 이렇게 보니 무게와의 거리로 대부분 도미/빙어를 판단하게 된 것..
- Total
- Today
- Yesterday
- https://react.vlpt.us/
- https://react.vlpt.us/basic/11-render-array.html
- https://velog.io/@juno7803/React%EA%B0%80-%ED%83%9C%EC%96%B4%EB%82%9C-%EB%B0%B0%EA%B2%BD
- Co
- ㄴ
- https://subicura.com/2017/01/19/docker-guide-for-beginners-1.html
- https://jwprogramming.tistory.com/52
- https://wikidocs.net/68
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |