본문 바로가기
728x90
반응형

Programming_Collective Intelligence18

교차검증 교차검증(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.
decision tree 의사결정나무(decision tree)는 간단한 기계학습 방법의 한 형태로 예측, 의사결정 과정 모델링에 유용하다. 다른 대다수 분류기와 달리 해석이 쉽다. 예를들어 베이지안 분류기는 각 특징들의 중요도를 알 수 있지만 마지막 산출물을 알기 위해 최종 계산을 해야하고, 신경망은 두 개 뉴런 간의 연결의 가중치 그자체로는 의미를 부여하기가 어렵기 때문에 해석이 힘들다. 반면에 의사결정나무는 추론과정이 가시적으로 이해할 수 있다. 심지어 if-then 문장의 단순 연속으로도 쉽게 바꿀 수 있다. 예제들을 통해서 자세히 알아보는 시간을 가져본다. 1.가입유형추정 특정 사이트에는 무료 계정과 가입 계정을 제공하는데, 대다수 사용자는 눈팅만 하고 적당히 필요한 정보만 얻고 나간다던지 하는 경우이다. 그러므로 이때.. 2020. 1. 7.
스팸 필터링 스팸 필터링 초창기에는 규칙 기반 분류기들이 시도되었다. 여기서는 메시지가 스팸이었는지 아니었는지를 가리키는 규칙들을 사람이 설계했다. 일반적으로 규칙에는 과도한 대문자 남용, 제약 제품과 관련된 단어들, 특별히 번쩍이는 HTML 색깔과 같은 것들을 포함하고 있다. 규칙 기반 분류기의 문제는 명확하다. 스패머가 규칙들을 배우고 이를 피하기만 하면 모두 걸리지 않게 된다. 또 다른 문제는 게시판 장소나 작성한 사람에 따라 스팸 판단 기준이 달라진다는 것이다. 이 장에서는 처음이나 메시지를 받았을 때 사용자가 알려준 정보를 학습하는 프로그램에 대해 살펴본다. 이작업을 통해 개인, 그룹, 사이트들이 무엇을 스팸이라고하고, 무엇을 스팸이 아니라고 하는지를 구해 데이터 셋이나 한 데이터가 스팸인지를 구분한다. 항.. 2020. 1. 5.
728x90
반응형