본문 바로가기
728x90
반응형

Programming_Collective Intelligence/8.가격모델링4

교차검증 교차검증(cross-validation)은 데이터를 학습 데이터셋과 테스트 데이터셋으로 나누는 기법들을 총칭하는 이름이다. 학습셋은 검증용 알고리즘에 올바른 답으로 주어지는 것이고, 예측을 하는데 사용된다. 그런다음 테스트 셋에 있는 각 물품들에 대해 예측하고 정답과 비교해서 이 알고리즘이 얼마나 잘 동작했는지를 나타내는 전체 점수를 계산한다. 대체도 95대 5정도로 하는데, 아래의 함수도 95%를 학습데이터로 사용하고, 5%를 검증용데이터로 사용하기위해 데이터를 나누는 함수를 작성한다. def dividedata(data, test=0.05): trainset=[] testset=[] for row in data: if random() < test: testset.append(row) else: tra.. 2020. 1. 8.
kNN + 가중치 물품 가중치: 알고리즘이 다소 멀리 떨어진 이웃 물품들을 사용하는 경우를 보상하는 한 가지 방법은 거리에 따라 가중치를 두는 것이다. 추천시스템 장에서 선호도에 따라서 가중치를 주어 유사도를 구했던 것과 유사하다. 물품들이 더 비슷할수록 그들 간의 거리가 더 가까워지므로, 거리를 가중치로 변경할 방법이 있어야 한다. 몇 가지 방법이 있지만 각각 장단점이 있다. 1. 역 함수 거리를 가중치로 바꿀 때 역함수를 사용한다. 그냥 역함수를 써버리면 아주 가깝거나 아주 먼 경우에 그 값이 너무 높거나 무한대 가중치를 낼 수 있지 때문에 작은 수를 (여기선 0.1) 살짝 더해서 역수를 취해준다. def inverseweight(dist, num=1.0, const=0.1): return num/(dist+const.. 2020. 1. 7.
kNN을 활용한 가격 추정 이전에 만든 예제 데이터를 토대로하여 와인의 적당한 가격을 추정해보도록 한다. kNN(k-nearest-neighbor) 방법을 사용해보자. 우선 해당 물품과 가장 비슷한 것 k 개를 찾아 가격이 같다고 가정을 한다. 그 다음 관심있는 물품과 유사한 물품들을 고르고, 알고리즘이 그들의 평균 가격을 계산한 후 이 물품의 적당한 가격을 추정한다. k 는 마지막 결과를 얻기 위해 평균을 낼 물품의 개수(비슷한거)를 말한다. k가 1이다? 그럼 가장 비슷한거 1개를 뽑아서 그 가격과 완벽히 일치한다고 할 것이다. 2개 이상되야 평균내어서 적당하게 가격을 산정할 수 있을 것이다. 바가지를 좀 덜 쓸 수 있다고 할 수 있다. plt.plot(숙성기간,가격, 'o', color='b') plt.xlabel('age'.. 2020. 1. 7.
예제 데이터 셋 생성 예제 데이터 만들기 와인 가격 데이터 세트. 가격은 rating(등급)과 age(숙성기간)를 조합하여 만들게 된다. 이 모델에서는 와인이 최적 연도를 가지고 있어, 훌륭한 와인은 최적연도가 길고, 나쁜 와인은 거의 현재가 최적 연도라고 가정한다. 높은 등급의 와인은 높은 가격에서 시작해서 최적연도까지 계속 가치가 증가하지만, 낮은 등급의 와인은 싸게 시작해서 점점 더 저렴해진다. 아래에는 등급과 숙성기간을 넣으면 가격을 출력해주는 함수이다. 등급에서 50을 빼는 것은 최적연도가 지났는지를 판별하기 위한 것. from random import random,randint import math def wineprice(rating, age): peak_age=rating-50 # 등급에서 50을 뺌 #등급에 .. 2020. 1. 7.
728x90
반응형