0. 머신러닝의 학습방법 : 학습데이터의 전달 및 습득 방식의 종류에 따라 지도/비지도/강화 학습으로 나뉜다.
* 머신러닝은 데이터를 가지고 스스로 학습
1. 지도학습 - 분류(Classification), 회귀(Regression) 문제에 사용.
지도학습에서 사용된 데이터에는 정답과 오답 데이터가 있으며 데이터를 스스로 학습하는데 크게 분류(이진분류, 다중분류)와 회귀 방법이 존재한다. * 지도학습은 정답 데이터가 있는 데이터셋으로 학습을 진행
분류 | 회귀 |
이진분류와 다중분류로 나뉨 1. 이진분류(Binary Classificatioon) : 암 판별 문제, 스팸 판별 문제 등 - 결과의 이진 도출 케이스에 사용 2. 다중분류(Multiclass Classification) : 이진 판별이 아닌 다양한 종이나 결과를 판별해야 하는 케이스에 사용 |
연속적인 값을 예측하는 케이스에 사용 주식예측, 성적 예측, 합격률 예측, 집값 예측 등 분류에 비해 더 많고 다양한 값을 예측하는데 사용 |
# 지도학습 이진분류 사례 : 암 환자의 암 판별 여부 확인하기
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
import numpy as np
!git clone https://github.com/taehojo/data.git
Data_set = np.loadtxt("./data/ThoraricSurgery3.csv", delimiter=",")
X = Data_set[:,0:16]
y = Data_set[:,16]
model = Sequential()
model.add(Dense(30, input_dim=16, activation='relu'))
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
history=model.fit(X, y, epochs=5, batch_size=16)
# 실험결과 : Epoch 수가 늘어날수록 암 판별 확률 또한 정확해지는 결과
# 지도학습 다중분류 사례 : 아이리스 꽃 품종 예측
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
!git clone https://github.com/taehojo/data.git
df = pd.read_csv('./data/iris3.csv')
X = df.iloc[:,0:4]
y = df.iloc[:,4]
y = pd.get_dummies(y)
# 모델설정, 각각의 다중 층 add() 함수로 생성. 출력층에서의 활성화 함수는 소프트맥스를 사용
model = Sequential()
model.add(Dense(12, input_dim=4, activation='relu'))
model.add(Dense(8, activation='relu'))
model.add(Dense(3, activation='softmax'))
model.summary()
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy']) # 컴파일. 다항 분류문제의 최적화 손실함수 설정, 최적화 아담 설정
history = model.fit(X, y, epochs=50, batch_size=5) # 결과 출력. 50회 반복, 배치 사이즈는 5개씩 끊어서 입력
# 지도학습 회귀 사례 - 공부한 시간별 합격률 예측하기
# 필요한 기본 라이브러리 세팅
import numpy as np
import matplotlib.pyplot as plt
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
x = np.array([2, 4, 6, 8, 10, 12, 14]) # 앞서 설명한 공부시간 X 배열 생성
y = np.array([0, 0, 0, 1, 1, 1, 1]) # 앞서 설명한 공부시간 X에 따른 합불여부 배열 생성
# 시그모이드 함수 사용을 위해 활성화 함수부분 'sigmoid' 설정
model = Sequential()
model.add(Dense(1, input_dim=1, activation='sigmoid'))
# 교차 엔트로피 오차 함수를 이용을 위해 'binary_crossentropy'로 설정
model.compile(optimizer='sgd', loss='binary_crossentropy')
model.fit(x, y, epochs=5000)
# 결과 시각화
plt.scatter(x, y)
plt.plot(x, model.predict(x), 'r')
plt.show()
# 임의의 학습 시간을 집어넣어 합불 여부 출력
hour = 5
prediction = model.predict([hour])
print("%.f시간을 공부할 경우, 합격 여부는 %.01f%%입니다." % (hour, prediction * 100))
2. 비지도학습 - 지도학습과 다르게 정답이 존재하지 않는 다양한 데이터를 통해 학습하는 과정. 군집화(Clustering), 차원축소(Dimensionality Redution)가 있으며 데이터의 다양한 개수를 통해 판별함으로서 정확도가 높아지는 특징을 가짐. -> 비지도 학습을 통해 머신러닝의 지도학습 단점을 보완할 수 있음. * 비지도학습은 정답 데이터가 없는 데이터셋으로 학습을 진행
* 다양한 플랫폼의 추천시스템(다양한 사람들의 취향을 위해 개인별 추천 알고리즘을 사용)
군집화 | 차원축소 |
사람들의 사용 특성에 따른 대부분의 추천 알고리즘 등 정답이 없는 수많은 데이터를 가지고 군집별로 나누는 케이스에 사용 | 학습하는데 사용되는 데이터의 차원을 축소하는데 쓰임 -> 컴퓨터가 처리할 수 있는 데이터의 양을 줄임으로써 부담 최소화 |
3. 강화학습 - 인공지능을 강화하는데 사용하는 학습방법이며 강화의 목적, 목표치를 설정하고 진행.
강화학습( |
강화의 목적, 최소한의 목표치만 주고 여러번의 수행과 시행착오를 거쳐 목표치에 달성하는 방법 ex. 아타리 게임, 알파고의 딥마인드 등 |
'통계데이터과학과 및 컴퓨터과학 독서' 카테고리의 다른 글
04. 인공지능 및 파이썬 5장 (0) | 2024.03.11 |
---|---|
03. 인공지능 및 파이썬 4장 (0) | 2024.03.04 |
01. 인공지능 및 파이썬 1장 (0) | 2024.02.19 |
10. 딥러닝 19-21장 (0) | 2023.12.25 |
09. 딥러닝 16-18장 (1) | 2023.12.18 |