본문 바로가기
  • 조금 느려도, 꾸준히
반응형

분류 전체보기59

Windows 에서 C++ 을 python처럼 사용하기 [jupyter C++ kernel] 필자는 육사에서 일반 대학으로 편입하게 되어 올해부터 수업을 듣게 되었다. 전공필수 이수 조건으로 인해 '자료구조' 수업을 다시 들어야 했는데, 새로운 대학에서는 자료구조 수업을 C++ 을 이용한다는 소식을 듣고 C++ 공부를 시작하게 되었다. 필자는 지금까지 대부분의 프로젝트와 수업을 java 나 python 으로 진행하였고, 육사에서 자료구조 수업을 들을 때도 python으로 진행했었다. python은 분명히 강력하고 좋은 언어이지만 메모리 관리, 비트 연산 , 시스템 프로그래밍 같은 하드웨어적인 부분을 공부하고 기본을 다지기엔 C 언어 계열을 이용하는 것이 더 적합하다는 판단을 했고, 이번 기회에 다른 언어, 특히 C와 같은 비교적 low level 의 고급 언어 (뭔가 역설적인 표현이지만) 를 공.. 2020. 3. 12.
핸즈온 머신러닝(8) - 앙상블 학습 # 앙상블 학습 - 머신러닝의 집단지능. 여러 분류기의 예측을 모아서 하나의 예측을 함 - 모든 분류기가 완벽하게 독립적일 때 최고의 성능을 발휘 -> 각각 다른 알고리즘으로 학습시키는 것이 좋음 - 같은 종류의 분류기가 같은 데이터로 학습하면 같은 종류의 오차를 만들기 쉽다. # 직접투표, 간접투표 직접 투표 분류기: 각 분류기의 예측을 모아서 가장 많이 선택된 클래스를 예측. (voting = 'hard') 간접 투표 분류기: 모든 분류기가 predict_proba() 메서드와 같이 클래스의 확률을 예측할 수 있는 경우 개별 분류기의 예측 확률을 평균하여 가장 높은 확률의 클래스를 예측. (voting = 'soft') # 배깅과 페이스팅 분류기를 같은 알고리즘을 사용하는 경우, 훈련 세트에서 서브셋.. 2020. 1. 29.
핸즈온 머신러닝(7) - 결정 트리 # Decision Tree - 분류와 회귀 작업, 다중 출력 작업 가능 - 매우 복잡한 데이터셋 학습 가능 - 랜덤 포레스트(Random Forest) 의 기본 구성 요소 # 학습과 시각화 사이킷런의 DecisionTreeClassifier 모듈을 통해 결정 트리 모델 학습 가능, Graphviz 를 통해 결정 트리 시각화 가능 예시) iris 데이터셋의 꽃잎 길이와 꽃잎 너비 데이터를 이용하여 클래스 분류하기 from sklearn.datasets import load_iris from sklearn.tree import DecisionTreeClassifier iris = load_iris() X = iris.data[:, 2:] # petal length and width y = iris.targ.. 2020. 1. 28.
SVM - Quadratic Programming(QP) & Kernel Trick # 선형 SVM 분류 모형 가중치 벡터 $\mathrm{w}$ , 편향 $b$ 샘플 $\mathrm{x}$ 에 $\mathrm{w}$ 을 점곱하고 $b$ 를 더해 계산한 결과를 토대로 예측 $\hat{y}$ 를 구함 $$\mathrm{w}^T \cdot \mathrm{x} + b = w_1 x_1 + \cdots + w_n x_n + b $$ $$ \hat{y} = \begin{cases} 0 & \mathrm{w}^T \cdot \mathrm{x} + b = 0 \end{cases} $$ SVM 분류 모형은 제한된 마진 오류 내에서 가장 큰 마진을 갖는 $\mathrm{w}$ 와 $b$ 를 찾아야 한다. 이때 $\math.. 2020. 1. 27.
핸즈온 머신러닝(6) - 서포트 벡터 머신 2 # SVM 회귀 기존 분류에 적용: 일정한 마진 오류 안에서 두 클래스 간의 도로 폭이 가능한 한 최대가 되도록 함 회귀에 적용: 제한된마진 오류 안에서 도로 안에 가능한 한 많은 샘플이 들어가도록 함 -> 도로의 폭은 하이퍼파라미터 $\varepsilon$ 으로 조절 * 허용오차의 하이퍼파라미터와 다름. SVR과 LinearSVR에서 허옹오차는 tol, 도로의 폭은 epsilon 매개변수로 지정 from sklearn.svm import LinearSVR np.random.seed(42) m = 50 X = 2 * np.random.rand(m, 1) y = (4 + 3 * X + np.random.randn(m, 1)).ravel() svm_reg = LinearSVR(epsilon=1.5, rand.. 2020. 1. 27.
핸즈온 머신러닝(6) - 서포트 벡터 머신 1 Suppor Vector Machine - 매우 강력한 다목적 머신러닝 모델 (선형/비선형 분류, 회귀, 이상치 탐색 등) - 머신러닝에서 가장 인기 있는 모델 - 복잡한 분류 문제에 적합 - 소규모, 중간 규모의 데이터셋에 적합 # 선형 SVM 분류 예를 들어 두 가지 클래스를 구분하는 선형 SVM 분류기가 있다고 할 때, SVM 분류기의 결정 경계는 두 개의 클래스를 나누면서 제일 가까운 훈련 샘플로부터 가능한 한 멀리 떨어져 있으려 한다. 이러한 특성을 라지 마진 분류(large margin classification) 라고 함. 라지 마진 분류의 결정 경계는 결정 경계과 가장 가깝게 위치한 샘플에 의해 전적으로 결정된다( 즉 결정 경계와 비교적 먼 샘플은 아무런 영향을 미치지 못함). 이렇게 결정.. 2020. 1. 27.
반응형