728x90
Ai
7

Gradient Descent(경사하강법)

경사하강법으로는 크게 Gradient Descent와 Stochastic Gradient Descent로 나눌 수 있을 것 같다. 지금은 Gradient Descent에 대한 설명을 시작해보려고 한다. 경사하강법이란? 경사하강법은 반복적인 실행을 통해 에러를 최소화 시킬 수 있는 값을 구하는 방법이다. 여기서 에러라는 것은 실제값과의 다른 정도라고 이해하자. 자, 조금 더 파보자. 아래와 같은 그래프가 있다고 하자. 이 그래프에서 에러가 최소인 지점이 어디일까? 바로 아래 그림처럼 빨간 점으로 표시된 지점일 것이다. 이처럼 육안으로는 최소인 지점을 한 눈에 알아볼 수 있었다. 하지만 컴퓨터에게는 눈이 없기때문에 한 눈에 알아볼 수가 없다. 일단 저 빨간 점을 지나는 접선을 그려보자. 그러면 위 그림처럼 ..

주성분 분석(Principal Component Analysis, PCA)

주성분 분석(Principal Component Analysis)이란 고차원의 데이터를 저차원의 데이터로 차원 축소하는 알고리즘이다. 주로 고차원의 데이터를 3차원 이하의 데이터로 바꿔서 시각화하는데 많이 사용되며, 유용한 정보만 살려서 적은 메모리에 저장하거나 데이터의 노이즈를 줄이고 싶을 때도 사용하는 알고리즘이다. 이해하기 쉽게 시각화 가능한 2차원 데이터를 1차원 데이터로 축소하는 과정을 알아보겠다. 위와 같은 2차원 공간의 데이터들을 직선상의 데이터로 변환하면 다음과 같다. 보다시피 x1과 x2 선상에 옮기면 중첩되는 데이터가 많이 생긴다. 하지만 1차원 직선 상에 옮겨진 데이터들은 하나도 중첩되지 않고 육안으로 7개의 점을 확인할 수 있다.이를 정보이론 측면에서 해석해본다면 고차원 데이터를 저..

[실습] 단일, 다중 입력 로지스틱 회귀와 소프트맥스(다중 분류 로지스틱 회귀)

단일 입력 로지스틱 회귀 1. Import from keras.models import Sequential from keras.layers import Dense, Activation import numpy as np 2. 모델 생성 #sigmoid(wx+b)의 형태를 갖는 간단한 로지스틱 회귀 구현 model = Sequential() model.add(Dense(input_dim=1, units=1)) # 입력 1개, 출력 1개 model.add(Activation('sigmoid')) # 출력값을 시그모이드에 연결 model.compile(loss='binary_crossentropy', optimizer='sgd', metrics=['binary_accuracy']) 3. 데이터 생성 X = np..

로지스틱 회귀(Logistic Regression)

로지스틱 회귀에 대해 설명하기 전 일단 시그모이드 함수에 대해서 알아보자. 시그모이드 함수는 입력값이 크면 클수록 1이라는 값으로 수렴하고, 입력값이 작을수록 0이라는 값으로 수렴하는 함수이다. 또한 0부터 1까지의 값을 가지는 특성 때문에 시그모이드의 출력값은 확률로도 사용될 수 있고, 출력값이 0.5 이상일 경우에는 참, 0.5 이하일 경우에는 거짓이라고 분류하는 분류 모델로도 사용될 수 있다. 선형 회귀의 입력값(x), 출력값 및 로지스틱 회귀의 출력값에 따른 이진 분류 결과를 표로 정리하면 다음과 같다. [표] 선형 회귀 입력값(x) 선형 회귀 출력값(wx) 로지스틱 회귀 입력값(z) 로지스틱 회귀 출력값(y) 이진 분류 0.5 이상: O, 0.5 이하: X -2 -2 0.12 X -1.5 -1...

의사결정 트리(decision tree)

의사결정 트리는 데이터 분류 및 회귀에 사용되는 지도학습 알고리즘이다. 간단하게 의사결정 트리가 무엇인지 비유하자면 스무고개 놀이와 비슷하다고 말할 수 있다. 즉, 여러 질문을 하여 답을 도출해내는 방법이라고도 할 수 있다. 다음과 같은 데이터를 예시로 설명을 이어가겠다. 이름 군대를 다녀왔는가 긴 생머리인가 성별 김덕수 네 아니요 남자 이쁜이 아니요 아니요 여자 박장군 네 아니요 남자 최빛나 아니요 네 여자 최강민 네 아니요 남자 지화자 아니요 아니요 여자 위 데이터를 바탕으로 각 사람이 남자인지 여자인지를 구별하는 질문을 만든다고 해보자. 먼저 군대를 다녀왔는지를 먼저 물어보면 한 번에 남자와 여자가 분류된다. 하지만 긴 생머리인지 먼저 물어보게되면 정확하게 남자와 여자를 구분할 수 없으므로 이후 군..

[실습]SVM(Support Vector Machine)

먼저 csv파일을 불러오고 train 데이터와 test 데이터를 나눠주겠다. 데이터 불러오기 import pandas as pd df = pd.read_csv("./drive/MyDrive/basketball_stat.csv") #구글 드라이브 내에 있는 파일을 불러옴 df.head() 데이터 분리 from sklearn.model_selection import train_test_split #80%는 학습 데이터, 20%는 테스트 데이터로 분리 train, test = train_test_split(df, test_size=0.2) #학습 데이터, 테스트 데이터 개수 확인 print(train.shape[0]) print(test.shape[0]) 최적의 SVM 파라미터 찾기 이제 불러온 데이터를 RB..

SVM(Support Vector Machine)

우선 SVM에 대해서 간략하게 설명하자면 SVM은 '마진'이라는 값을 최대로 하는 결정 경계선을 찾는 것을 목표로하는 분류 알고리즘이다. 결정 경계선이라는 것은 예를 들어서 한강을 기준으로 강북과 강남으로 나뉘어진다고 했을 때 한강이 결정 경계선이 되는 것이다. 이제 다음과 같은 용어들의 개념을 하나씩 알아보겠다. 서포트 벡터(support vector) 마진(margin) 비용(cost) 커널 트릭(kernel trick) 서포트 벡터 서포트 벡터는 결정 경계선과 가장 가까이 맞닿은 데이터 포인트를 의미한다. 결정 경계선하고 가장 가까운 데이터의 위치라고도 할 수 있겠다. 마진 서포트 벡터와 결정 경계 사이의 거리를 마진이라고 한다. 위에서도 언급했듯이 이 '마진'을 최대로..

728x90