인공지능 개발일지

[머신러닝] AI 공부 방황기 겸 정리 본문

인공지능/머신러닝

[머신러닝] AI 공부 방황기 겸 정리

Prcnsi 2021. 8. 23. 22:04
728x90

머신러닝 공부하는데 두 가지 시도를 해보았으나 일단 아래 두 가지는 아닌 듯하다.

  1. 혼공머 책으로만 공부
  2. 코세라 머신러닝 강의

그래도 한 거니까 일단 후기 겸 정리를 써본다.

1. 혼공머 책 공부

혼자 공부하는 머신러닝+딥러닝 교재를 보고 따라서 하는 중이다.
그런데 세상에.. 별로 안 친절하다. 그냥 그래 하고 끝남!
(참고로 파이썬 머신러닝 완벽 가이드는 친절해서
입문자들에게 추천!)

이게 뭐 하는 거야? 싶은데 부족한 파이썬 문법 개념도 한몫했으리라 생각한다.
내가 뭘 보고 있는 거지 하는 생각도 든다.

험난하다 험난해....


아나콘다 설치 후 주피터 노트북에 먼저 들어감

 

import matplotlib.pyplot as plt bream_length = [25.4, 26.3, 26.5, 29.0, 29.0, 29.7, 29.7, 30.0, 30.0, 30.7, 31.0, 31.0, 31.5, 32.0, 32.0, 32.0, 33.0, 33.0, 33.5, 33.5, 34.0, 34.0, 34.5, 35.0, 35.0, 35.0, 35.0, 36.0, 36.0, 37.0, 38.5, 38.5, 39.5, 41.0, 41.0] bream_weight = [242.0, 290.0, 340.0, 363.0, 430.0, 450.0, 500.0, 390.0, 450.0, 500.0, 475.0, 500.0, 500.0, 340.0, 600.0, 600.0, 700.0, 700.0, 610.0, 650.0, 575.0, 685.0, 620.0, 680.0, 700.0, 725.0, 720.0, 714.0, 850.0, 1000.0, 920.0, 955.0, 925.0, 975.0, 950.0] smelt_length = [9.8, 10.5, 10.6, 11.0, 11.2, 11.3, 11.8, 11.8, 12.0, 12.2, 12.4, 13.0, 14.3, 15.0] smelt_weight = [6.7, 7.5, 7.0, 9.7, 9.8, 8.7, 10.0, 9.9, 9.8, 12.2, 13.4, 12.2, 19.7, 19.9] length=bream_length+smelt_length weight=bream_weight+smelt_weight fish_data=[[l,w] for l, w in zip(length,weight)] print(fish_data) fish_target=[1]*35+[0]*14 print(fish_target) from sklearn.neighbors import KNeighborsClassifier kn=KNeighborsClassifier() kn.fit(fish_data,fish_target) kn.score(fish_data,fish_target) plt.scatter(bream_length, bream_weight) plt.scatter(smelt_length, smelt_weight) plt.scatter(30, 600, marker='^') plt.xlabel('length') plt.ylabel('weight') plt.show() kn = KNeighborsClassifier() kn.fit(fish_data, fish_target) for n in range(5, 50): # 최근접 이웃 개수 설정 kn.n_neighbors = n # 점수 계산 score = kn.score(fish_data, fish_target) # 100% 정확도에 미치지 못하는 이웃 개수 출력 if score < 1: print(n, score) break

 

결과

 

 

 

2. 코세라 머신러닝 강의

1주 차 중간까진 잘 듣다가 코스트 함수 설명에서 직역된 자막의 한계를 느낌
내가 뭘 듣고 있는 거지 하는 생각이 들었다. 그래서 이 강의는 영어공부를 더 하고
들어야 할 듯하다. 이 상태로 들으니 좀 비효율적임을 느꼈다.


머신러닝: 교육받은 프로그램, P(성능), T(작업), E로(경험)에서 프로그램이 E로부터 학습한 것

E ∝ P
P=T를 수행


지도 학습(Unsupervised Learning)
-회귀 문제: 연속된 값 예측
-분류 문제: 불연속 된 결과 값 예측(이산)

비지도 학습(Supervised Learning)
: 지도 X, 클러스터링(비슷한 것끼리 뭉쳐 놈)
ex) [W, s, v]=svd((repmat(sum(x.*x,1), size(x,1),1)

그러니까 지도 학습은 선례(기준점)를 주고 판단하게 하고
비지도 학습은 기준점을 안 주고 구조를 찾게 시키는 것


비용 함수: 데이터에 가장 가까운 일차함수 알아낼 수 있음
θ0(일차함수에서 상수), θ1(일차함수에서 X의 계수) 고르는 법

오차 함수의 제곱=회귀 문제 적용

h(x): 가설 함수
J(x): 비용 함수

+용어 정리

  • (x, y) 하나의 학습 예제
  • h: 가설
  • m: 학습 예제의 수
  • x: feature입력
  • y: 출력
  • h(x) 가설 함수
  • j(x) 비용 함수


선형 회귀: 전후 변화로 규칙 찾음
비용 함수: 얼마나 잘못되었는지 함수로 표현
비용이 크다는 것은 많이 잘못된 것

비용 줄이는 법: 비용 함수의 최솟값을 찾는 것
비용 함수에서 m은 총 개수


문제 1) Welcome to machine learning

->메일을 분류는 작업(T)이므로 1번 선지가 T

+선지 별 EPT
1번 선지: T(직접 분류)
2번 선지: E(관찰)
3번 선지: P(자동 분류)


문제 2) Supervised Learning

문제2

 

->첫 번째는 물건이 팔리는 수량은 이분법으로 나눌 수 없으므로 회귀 문제
두 번째 해킹 여부는 이분법으로 나눌 수 있으니까 분류 문제

문제 3) Unsupervised Learning

-> 2번 선지: 뉴스에서 비슷한 걸 뭉치게 시키는데 선례를 안 줬으므로 비지도
3번 선지: 마찬가지로 데이터 주고 세분화된 시장의 규칙 찾게 시키는 것이라서 비지도

문제 4) Cost Function


y절편이 0.5고 기울기가 1이니까 y=x+0.5로
θ0=0.5, θ1=1



+테스트 풀이
1. 날씨 데이터 주고(a lot of historical weather) 날씨 예측하게 하는 거니까
비지도 학습이고 이때 성능 P는 단연 1번 선지 날씨를 정확하게 맞추는가 이다.

2. 이거는 오늘 날씨라는 기준점을 줬으니까 지도 학습이다.
그리고 How much로 강수량 예측이므로 연속된 값 회귀

3. 지도 학습, 주식이 사고 팔린 수(값)를 예측하니까 회귀

4. 지도 학습 비지도 학습 중 지도 학습이 적합한 걸 찾으라 했으니
-2번 선지: 1000명 데이터의 결과 주고(선례) 판단시키니까 지도
-3번 선지: 웹페이지가 애들한테 익숙한지 아닌지 판단하니까 지도에서 분류 문제

728x90