카테고리

지금까지 꽤 많은 모델들을 설계해봤고 저번 글에서는 테스트 세트를 사용하지 않고 모델의 성능을 평가하고 하이퍼 파라미터 튜닝까지 해봤다. 이들 중에서 어떤 알고리즘이 가장 좋은 알고리즘인지 평가할 수 있을까? 문제마다 성능이 다르다 하더라도 대체로 성능이 좋은 알고리즘이 무엇일지 생각해보자. 정형 데이터와 비정형 데이터 앞에서 생선의 길이, 높이, 무게 등을 데이터로 사용하였다. 또한 이 데이터들은 CSV파일에 정리되어있었다. 쉽게 말해 어떤 구조로 되어있다는 뜻이다. 이를 정형 데이터(Structured Data)라고 한다. 이런 데이터들은 CSV나 데이터베이스, 엑셀에 저장하기 쉽다. 정형 데이터의 반대가 비정형 데이터(Unstructured Data)이다. 비정형 데이터는 데이터베이스나 엑셀로 표현..
이전 글에서 결정 트리를 이용하여 와인을 분류해보았다. 결정 트리는 어떤 식으로 분류가 진행되었는지 쉽게 알 수 있었다. 지금까지는 훈련 세트를 이용하여 테스트 세트의 점수를 확인했다. 하지만 테스트 세트를 사용하여 성능을 확인하다 보면 모델을 테스트 세트에 맞추게 되는 셈이다. 가능한 한 테스트 세트를 사용하지 말고 모델을 설계한 뒤에 한 번만 사용하는 것이 좋다. 이번 글에서는 결정 트리의 매개 변수들을 테스트해보자. 검증 세트(Validation Set) 테스트 세트를 사용하지 않고 과소/과대 적합을 판단하는 방법이 무엇일까? 훈련 세트를 조금 떼서 사용해보면 되지않을까? 너무 단순하지만 실제로 많이 사용하는 방법이라고 한다. 그리고 이렇게 훈련 세트에서 20~30% 정도 떼어 놓은 세트를 검증 세..
이전까지는 생선들의 종류를 분류하는 모델, 길이를 이용해 무게를 예측하는 모델, 특정 생선일 확률을 예측하는 모델 등을 설계했었다. 이번엔 캔 와인을 예시로 들어 캔에 인쇄되어있는 도수, 당도, pH 값으로 화이트 와인인지 레드 와인인지를 분류해보자. 분류를 시작하기 전에 생각해보면 길이와 무게 등의 데이터로 빙어인지 도미인지 구분하는 모델을 설계했었기 때문에 와인을 분류하는 것 또한 쉽게 해결할 수 있을 것 같다. 로지스틱 회귀를 이용한 와인 분류 일단 데이터셋을 불러와서 head() 메서드로 처음 5개의 샘플을 확인해보자. import pandas as pd wine = pd.read_csv('https://bit.ly/wine_csv_data') wine.head() 데이터셋에는 알코올 도수, 당도..
두 번째 LIS 문제이다. 이전에 풀었던 문제와 같지만 범위가 1000에서 1000000으로 늘어났기 때문에 O(N²) 풀이법인 dp로 풀면 시간 초과가 나올게 분명하다. O(NlogN) 풀이의 핵심은 LIS를 구하는 것이 아니라 LIS의 길이만 구하는 것이다. 단지 길이만 구하는 것이기 때문에, 순회하면서 저장해둔 배열의 마지막 원소보다 크면 append해주고 작으면 덮어주는(?) 식으로 풀면 된다. ##함수 선언 부분 import sys input = sys.stdin.readline ##변수 선언 부분 A = [] dp = [0] mid = 0 ##메인 함수 부분 if __name__ == "__main__": N = int(input()) A = [int(x) for x in input().spl..
이전 글에서 어떤 생선이 7개의 생선들 중에서 어떤 생선 일지에 대한 확률을 구하는 방식으로 로지스틱 회귀를 이용하여 모델을 설계해봤다. 이번에는 데이터가 한 번에 준비되는 것이 아닌 점진적으로 준비되는 데이터로 모델을 훈련하는 법을 공부해보자. 점진적인 학습 7개의 생선에 대해 데이터가 한번에 주어지는 것이 아니라 조금씩 전달된다면 어떤 방식으로 훈련을 해야 할까? 기존의 훈련 데이터에 새로운 데이터를 추가하여 모델을 매일 훈련시키는 방법을 떠올릴 수 있을 것이다. 하지만 이 방법은 시간이 지날수록 데이터가 늘어난다는 것이다. 미래를 생각하면 좋지 않은 방법이다. 그렇다면 새로운 데이터를 추가할 때 이전 데이터를 버리면서 훈련 데이터 크기를 일정하게 유지하는 방법은 어떨까? 이 방법에도 문제가 있다. ..
이전 글에서 다중 회귀 모델을 설계하고 특성을 조합하여 새로운 특성을 만들고 alpha 값을 이용한 규제까지 해보았다. 이번 글에서는 어떤 생선에 대해서 이 생선이 얼마의 확률로 7개의 생선들 중 어떤 종류의 생선 일지 추측하는 모델을 설계해보자. K - 최근접 이웃 알고리즘 이전부터 매번 등장해주시는 알고리즘이다. 확률을 구한다는 것은 분류 문제일까 회귀 문제일까? 7개의 생선들 중에서 종류를 추측하는 것이니까 분류 문제일까 아니면 확률이라는 수치를 구하는 것이니까 회귀 문제일까? k-최근접 이웃 알고리즘은 가장 가까운 이웃 샘플로 추측을 해주니까 10개의 샘플을 조사해서 개수에 따라 확률을 매기면 될 것 같다. 판다스의 read_csv() 함수로 CSV 파일을 데이터 프레임(Dataframe)으로 변..
이전 글에서 농어의 길이를 이용하여 무게를 예측하기 위해 다항 회귀를 사용했다. 하지만 훈련 세트의 점수보다 테스트 세트의 점수가 약간 높게 나왔다. 이 과소 적합 문제를 해결하기 위해서는 고차항이 필요하다. 하지만 얼마만큼의 고차항을 더 넣어야 할 지 모르고 수동으로 넣어주는 것도 한계가 있다. 추가로 농어의 높이와 두께 데이터가 주어졌다고 할 때 농어의 무게에 대한 더 정확한 예측을 해보자. 다중 회귀(Multiple Regression) 1개의 특성(농어의 무게)을 사용했을 때 선형 회귀 모델이 학습하는 것은 직선이다. 그렇다면 특성이 1개가 아닌 2개라면 어떤 것을 학습할까? 바로 평면이다. 특성이 2개면 타깃값과 함께 3차원 공간을 형성하고 y = a * x1 + b * x2 + c 형태의 방정..
이전 글에서 농어의 길이 데이터를 이용하여 농어의 무게를 예측하는 K-최근접 이웃 회귀 모델을 구현했다. 앞서 만든 모델을 사용해서 길이가 50cm인 농어의 무게를 예측해보자. K - 최근접 이웃 회귀 모델의 예측 이전에 사용했던 데이터와 모델을 준비한다. import numpy as np perch_length = np.array([8.4, 13.7, 15.0, 16.2, 17.4, 18.0, 18.7, 19.0, 19.6, 20.0, 21.0, 21.0, 21.0, 21.3, 22.0, 22.0, 22.0, 22.0, 22.0, 22.5, 22.5, 22.7, 23.0, 23.5, 24.0, 24.0, 24.6, 25.0, 25.6, 26.5, 27.3, 27.5, 27.5, 27.5, 28.0, 2..
aodtns
'분류 전체보기' 카테고리의 글 목록 (9 Page)