대학공부/기계학습 12

실습 6차시: kNN, 랜덤포레스트, 앙상블, feature selection

1. K-Nearest Neighbor Classifier (KNN) 1-1. 데이터 포인트 간의 거리 - 2D 이번 실습에서는 KNN 모델로 영화 평가 분류기를 구현해볼 것입니다. 먼저 데이터 포인트들 간의 거리 개념부터 알아봅니다. 두 점이 서로 가깝거나 멀리 떨어져 있는 정도를 측정하기 위해 거리 공식을 사용할 것입니다. 이 예제의 경우 데이터의 차원은 다음과 같습니다. 영화의 러닝타임 영화 개봉 연도 스타워즈와 인디아나 존스를 예로 들겠습니다. 스타워즈는 125분이며 1977년에 개봉했습니다. 인디아나 존스는 115분이며 1981년에 개봉했습니다. 이 두 영화를 의미하는 두 데이터 포인트들의 거리는 아래와 같이 계산됩니다. Practice 1 1. movie1과 movie2라는 두 리스트을 매개 ..

실습 5차시: 성능 평가, cross validation

1. Accuracy(정확도) Confusion matrix: True Positive(TP): 참양성 False Positive(FP): 위양성 True Negative(TN): 참음성 False Negative(FN): 위음성 분류 모델을 만든 후 다음 단계는 모델의 예측 능력을 평가해야합니다. 모델의 성능을 평가하는 가장 간단한 방법은 모델의 정확도를 계산하는 것입니다. (True Positives + True Negatives) / (True Positives + True Negatives + False Positives + False Negatives) labels_A = [0, 0, 0, 0, 0, 0, 0, 1, 1, 1] guesses_A =[0, 0, 0, 0, 0, 0, 0, 1, 0,..

실습 4차시: 퍼셉트론, MLP

퍼셉트론이란? 퍼셉트론은 신경망의 가장 기초가 되는 기본 단위입니다. 생물학적 뉴런의 작업을 시뮬레이션하는 인공 뉴런이라고 할 수 있습니다. 퍼셉트론은 3가지 구성요소로 이루어져 있습니다. 입력(Inputs) 가중치(Weights) 출력(Output) Perceptron Class Perceptron 클래스 작성하기 lines = [] class Perceptron: def __init__(self, num_inputs = 3, weights = [1,1,1]): self.num_inputs = num_inputs self.weights = weights def weighted_sum(self, inputs): weighted_sum = 0 for i in range(self.num_inputs): we..

실습 3차시: Linear/Logistic Regression

Simple Linear Regression 가장 간단하고 직관적인 기계학습 모델은 데이터의 경향에 맞게 선을 그어주는 것입니다. 이때 데이터에 대해 가장 잘 맞는 선을 찾아가는 과정을 "Linear Regression"이라고 합니다. import matplotlib.pyplot as plt months = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] revenue = [52, 74, 79, 95, 115, 110, 129, 126, 147, 146, 156, 184] plt.plot(months, revenue, "o") plt.title("Sandra's Lemonade") plt.xlabel("months") plt.ylabel("revenue") plt.show() Po..

실습 2차시: DT

*Colab 이용 !pip install mglearn 지니 불순도 (Gini Impurity) 지니 불순도는 결정 트리의 분할기준 중 하나입니다. 아래 두개의 트리를 살펴봅시다. 둘 중 어느 트리가 학생이 성적을 더 높게 받을 수 있을지 예측하는데 유용할까요? 이 질문은 한 세트의 instance 들에 대해 지니 불순도 를 계산함으로써 답할 수 있습니다. 지니 불순도를 찾기 위해서는 1에서 시작해서 세트의 각 class 비율의 제곱을 빼면 됩니다. Gini Impurity=1−Gini Index=1−∑pi^2 (i=1 ~ K) 위 식에서 K은 class label의 개수이며, pi은 i번째 class label의 비율입니다. 예를 들어, A class인 instance가 3개 있고 B class인 in..

실습 1차시: ZeroR, OneR, Naive Bayes Classifier

*Colab 이용 import numpy as np import pandas as pd import sklearn print(sklearn.__version__) #1.2.2 # 데이터 받기 url = "https://raw.githubusercontent.com/inikoreaackr/ml_datasets/main/playgolf.csv" df = pd.read_csv(url) # 데이터 첫 다섯 instance 확인 df.head() OUTLOOK TEMPERATURE HUMIDITY WINDY PLAY GOLF Rainy Hot High False No Rainy Hot High True No Overcast Hot High False Yes Sunny Mild High False Yes Sunny..

Deep NN

MLP (=shallow NN): hidden layer 1~2개 -> 모든 non-linear 형태의 모델을 생성 가능 feature가 알려진 모든 정형 데이터는 MLP에서 더 성능이 뛰어남 이미지, 소리, 텍스트 데이터는 다루지 못함 해결 idea: hidden layer를 더 늘리기 -> Deep Neural Network: hidden layer가 10개 정도 문제: hidden layer의 depth를 늘리자 학습이 안됨 - 이유: Vanishing Gradient 문제 Vanishing Gradient 문제: 미분할 수록 gradient의 값이 점점 작아지면서 사라짐 - sigmoid 함수때문에 발생 Backpropagation에서 y(sigmoid)가 계속 미분되면서 적용됨 gradient는..

Feature selection, SVM, 앙상블

Feature selection: 기존 features의 subset을 선택 feature의 수가 많을 때 상대적으로 sample의 수가 적으면 모델이 overfit됨 필요한 feature를 골라 사용하여 성능 향상 제거해야 하는 feature: irrelevant, redundant features 어떻게 판단? filter methods: 하나씩 제거해서 만든 모델의 성능을 각각 평가하여 feature의 순위를 매김. feature를 개별적으로 평가. wrapper methods: 모든 가능한 조합에 대하여 test하여 최적의 조합을 선택. feature가 서로 독립적이지 않으므로 사용. complexity가 높음. embedded methods: 여러 머신러닝 모델로 training 시킨 후 그 모..

Evaluation

available data가 전체 domain은 잘 표현하는지, 모델의 성능을 어떻게 평가? 그 외의 신뢰성, 공정성, 윤리성, 안전성의 문제가 존재 원인은 데이터 or 최적화 알고리즘에서 초래됨 test data set을 가지고 평가하고자 하는 성능을 "Generalization(일반화)"하는 방법 다양한 모델 사용, 특정 모델의 parameter 값에 따라, feature에 따라... 모델의 정확성을 위한 training / test / validation set의 적절한 비율 dig data set: 60% / 20% / 20% middle size data set(충분한 양): training 60%, test 40% dataset의 크기가 작을 경우? training set으로 test: gen..

Classification(2)

NN(Neural Network) 장점: 가장 강력한 분류 도구, noisy에 매우 강함. 임의의 non-linear discrimination(판별식) 제공 단점: 적절한 구조(hidden layer, unit 개수 등)을 모름(->overfit 정도를 바탕으로 판단) NN이 학습한 것을 통역 불가능(->통역 가능한 DT보다 성능 좋음) MLP(Multi-Layer Perceptron, shallow NN) perceptron의 x1, x2 -> hidden layer h1, h2 -> y 1~2개의 hidden layer 추가: hidden layer의 에러값을 알 수 없음. layer마다 우리가 알지 못하는 새로운 feature(hidden unit), 임의의 decision boundary를 스스..