머신러닝 개요
1. 머신러닝(Machin Learning)
- 인간의 학습 능력과 같은 기능을 컴퓨터가 하게 만드는 기술
- 인공지능(AI) 연구분야의 하나이다.
- 인공지능이란 인간이 원래 가지고 있는 지적 능력을 컴퓨터가 하게 만드는 기술
- 소프트웨어
- 분류(classification) : 주어진 데이터를 분류
- 예측 : 과거의 수치를 기반으로 미래의 수치 예측(회귀)
- 군집(ciustering) : 데이터를 비슷한 집합으로 분류
2. 지도학습(Supervised Learning)
- 레이블이 달려 있고 정해져 있는 데이터를 가지고 학습
- 이미지(개, 고양이), 스팸/햄 메일, 시험 성적 예측
- regression : 예측
- binary classification : 합격/불합격, 개/고양이, 암/양성
- multi classification : 학점
3. 비지도학습(Unsupervised Learning)
- 레이블이 없는 데이터를 학습을 통해서 군집한다.
- 유사한 뉴스를 그룹으로 모은다.
- 비슷한 단어들을 모은다.
kNN(k - Nearest Neighbors)
- 사회적인 관계를 관찰해서 보면
- 대략적으로 비슷한 사람끼리 모이는 성질이 있다.
- 비슷한 취향의 사람끼리 모여서 동호회를 만든다.
- 비슷한 부류의 계층의 사람끼리 친분을 맺기도 한다. - 공간적인 관계를 관찰해서 보면
- 지역별 상권 - 거리유사도 측정
- 유클리드 거리 (Euclidean distance)를 사용(두 점 사이의 거리)
- 다수결에 의해 뽑아내는것 (k값을 짝수보다는 홀수값으로 주는게 좋다)
kNN 예시
종류 | 친화력 | 귀여움 | 종류(레이블) | 거리계산 |
이구아나 | 3 | 7 | 파충류 | np.sqrt((6-8)**2 + (4-5)**2) = 3.6 |
강아지 | 8 | 10 | 포유류 | np.sqrt((6-8)**2 + (4-5)**2) = 2.2 |
독수리 | 1 | 4 | 조류 | np.sqrt((6-8)**2 + (4-5)**2) = 7.0 |
고양이 | 7 | 8 | 포유류 | np.sqrt((6-8)**2 + (4-5)**2) = 1.4 |
Q. 토끼(친화력 : 6, 귀여움 : 9)의 종류는 무엇인가?
k = 1 일때,
토끼는 고양이(포유류)와 거리가 1.4로 가까운 이웃하여 '포유류'로 분류한다.
k = 3 일때,
토끼는 고양이(포유류), 강아지(포유류), 이구아나(파충류) 세가지 사이에 다수결에 의해 '포유류'로 분류한다.
코드로 짜보기
Q. 햄스터(친화력:6, 귀여움:8)의 종류는 무엇인가?
파이썬 | R |
# 라이브러리 임포트 import pandas as pd import numpy as np from collections import Counter from sklearn.neighbors import KNeighborsClassifier # 데이터 불러오기 animal = pd.read_csv("C:/data/animal.csv") # 거리계산을 위해 배열로 만들기 x_train = np.array(animal.iloc[:,1:3]) y = np.array([[6,8]]) x_train.shape y.shape # 거리계산값 저장 animal["dist"] = np.sqrt(np.sum(pow(x_train - y,2),axis=1)) # 순위 매기기 animal['rank'] = animal["dist"].rank(ascending=True,method="dense") # 5등까지 클래스 뽑아내기 animal[animal['rank'] <= 5]['종류'] # 빈도수 체크 후 가장 빈도수가 높은것 뽑기 Counter(animal[animal['rank'] <= 5]['종류']).most_common(1)[0][0] ------------------------------------------------------------ x_train = np.array(animal.iloc[:,1:3]) label = animal['종류'] # 인스턴스 만들기 # n_neighbors : k값 clf = KNeighborsClassifier(n_neighbors=5) # 학습시키기 clf.fit(x_train,label) # 예측하기 clf.predict(np.array([[6,8]]))[0] |
# 데이터 불러오기
-------------------------------------------------------------- #test 데이터 만들기 hamster <- data.frame(ingredient="hamster", sweetness=6, crunchiness=8) test <- hamster[,2:3]
#train 데이터 만들기 train <- animal[,2:3]
# 레이블 지정 train_level <- animal[,4]
# kNN 사용하여 예측 library(class) knn(train,test,train_level,k=5) |
'인공지능 > 머신러닝' 카테고리의 다른 글
나이브베이즈(Naive Bayes) 분류 (0) | 2020.05.12 |
---|---|
사건과 확률 (0) | 2020.05.12 |
혼동행렬 / 정확도 / 정밀도 / 재현율 / F1 점수 (0) | 2020.05.11 |
유방암 데이터 분석하기 (1) | 2020.05.11 |
머신러닝 - feature scaling (0) | 2020.05.09 |