인공지능_머신러닝 강의노트
Week 1. 머신러닝은 인공지능의 핵심 기술이다.
머신러닝이란?
프로그래머가 직접 규칙을 만드는 것이 아닌, 컴퓨터가 데이터를 보고 학습하게 만드는 것.
딥러닝이란?
뇌의 신경망을 100% 동일하게 복사한 방법
생성형 AI란?
데이터 분석을 떠나서 새로운 콘텐츠를 생성
Week 2.
1) 프로그래밍 개념 (선행학습)
영어를 새로 배울 때처럼 새로운 언어를 배우는 것은 어렵다. (다 외울 필요 없다.)
요리를 하듯이 (재료-> 볶기 -> 물 추가 -> 끓이기) 논리적 사고가 중요하다.
<컴퓨터의 장점>
1. 계산이 매우 빠르고 정확하다.
2. 엄청난 양의 데이터를 저장할 수 있다.
3. 네트워크를 통해 빠르게 정보를 주고받을 수 있다.
<문제해결 프로세스>
1. 문제 정의
2. 문제 해결 방법 도출
3. 문제 해결 수행
4. 결과 검증
<문제 해결 예제>
2) 머신러닝의 개념
사람은 어떻게 생각하고 판단하는가?
키워드 : 경험
Remember (지난주에 비가 매일 왔네) -> Formulate (요즘 매일 비가 오는 듯 해) -> Predict (아마 오늘도 비가 내릴 거야)
그럼, 컴퓨터는 어떻게 생각하고 판단하는가?
키워드 : 사람과 비슷하게
Remember (데이터셋 수집) -> Formulate (데이터셋과 가장 잘 맞는 모델 찾기) -> Predict (예측)
Label : 데이터로부터 예측하고자 하는 특징(Feature)
머신러닝의 분류
1) 지도학습(supervised learning) - 데이터에 Label이 있을 때
1-1) 회귀(regression) - 지도학습의 한 형태로 주어진 데이터셋과 최대한 가깝게 직선(continuous 하게)을 그리는 것
1-2) 분류(classification) - 지도학습의 한 형태로 주어진 데이터셋을 둘로 잘 나누는 직선(discrete 하게)을 찾는 것
2) 비지도학습 - 데이터에 Label이 없을 때
머신러닝을 통해 비슷한 것끼리 그룹화(군집화 clustering) 할 수 있음 (예시-비슷한 기사끼리 묶어서 보여주는 네이버 첫 화면)
3) 강화학습
3) 실습 - 파이썬의 기초
1. import - 다양한 사람들이 만들어 놓은 module을 사용할 때 쓸 수 있음
모듈 이름을 간소화할 수도 있음
유명한 모듈은 줄임말이 대략 있음
모듈 안에 여러 기능들이 있는데 그중 하나만 쓰고 싶을 때,
from ~ import ~ 이렇게 씀
간단한 연산 기호들
파이썬에서 x=1 이렇게 적으면 x안에 1이 저장되는 개념
<다양한 함수들>
len() : string의 길이를 알려줌
Week 8 (2024.10.22. 경사하강법 Gradient Descent)
등산을 하다가 내려오는 중에 안개가 자욱해서 앞이 안 보인다.
가장 빠르게 내려오는 방법은?
1) 가장 많이 내려갈 수 있는 방법으로 한 발을 내딛음
2) 무수히 반복
Gradient Descent는 어떻게 동작할까?
(아래 그래프에서 y축이 cost이다. cost가 최소화되는 지점을 찾는 것이 목표이다.)
학습률이란?
위 식에서 얼마큼 θ를 업데이트할 건가
다시 말해, 학습률이 엄청 크면 업데이트 횟수가 작아서 그래픽 파워는 덜 들지만, 띄엄띄엄 건너뛰면서 업데이트하기 때문에 수렴하지 않고 진동할 수 있다.
만약 학습률이 엄청 작으면 업데이트 횟수가 엄청 커져서 그래픽 파워는 많이 들지만, 더 정교하게 작동할 수 있다.
그러면 적합한 학습률을 어떻게 찾아줄까?
대충 몇 번의 숫자를 넣어봐서 적합한 숫자를 찾는다.
8주차 실습 (특강)
매일 2시간씩 시간을 보내는 지하철.. 지하철에서 시간을 보내는 최고의 방법은?
일단 앉아라! (앉으면 책도 볼 수 있고 노트북도 할 수 있다)
오늘의 목표 : 등교 길에 판교정자역에서 내릴 사람 예측하기
실제로 데이터를 모았다고 하자, 아래처럼..
이후 데이터를 분리한다 (판교정자역에서 내리는지 안 내리는지 안 내리는지)
이후, 다양한 모델 사용 가능
결론 1) 아침에 6시 30분에 출근해서 스트레스 받지 말자 ㅋㅋ
결론 2)
1. 데이터 수집
2. 데이터 정제
3. 데이터 탐색
4. 데이터 모델링
과 같은 과정을 거친다. (실무 개발자 처럼)
Week 10 (2024.11.05. 검증과 과적합 Overfitting)
실제로 미래에 애플에 취업을 해서 머신러닝을 돌려보면 안될 때가 많을 것이다.
아마 과적합 문제일 것이다.
일단은, 데이터를 가장 많이 모으는 것이 중요하다.
테스트용 데이터는 레이블을 뗀다.
본고사(test)를 보기 전에 모의고사(validation)를 보는 것으로 비유할 수 있다.
위에서부터 하나씩 test를 정해서 진행하는 것
과적합(overfitting)이란?
훈련용 데이터에만 최적화 되어 일반성을 지니지 못하는 것
<회귀 모델에서 과적합 예시>
여기서 어떻게 과적합을 확인할 수 있을까????
데이터셋을 나눈다
Week 11 (2024.11.12)
Decision Tree (결정나무)란?
이런식으로 인간과 같이 사고하는 방식이 Decision Tree이다.
App Store 처럼 App 추천 서비스를 만들자
다음과 같은 데이터가 있다고 하자 :
그러면 다음과 같은 것을 유추할 수 있다.
인간은 대충 보고 결론을 내릴 수 있다.
그러면 컴퓨터가 위와 같은 결론을 내려고 한다면?
성별? 나이? 둘 중 어떤게 더 좋은 질문일까?
"나이"를 기준으로 추천하는 것이 더 정확한 결과를 가져다 줌.
따라서 다음과 같이 Decision Tree를 설계할 수 있다.
실제로는 정말 단순한 것 아니면 decision tree를 쓸 일은 없을 것이다. deep learning 또는 생성형 ai를 사용할 것이다.
실습 수업
데이터 사이언스 - 시각화
각 전공에서 사용되는 데이터를 시각화 해보자!
예를 들어서, 나이팅게일이 정부에 위생 개선과 보급물자 부족을 호소하기 위해서 데이터를 시각화 해서 보여주었다.
오늘 수업시간에 다룰 데이터는.. "정말 강남 3구가 안전할까?"
1. 공공데이터 포털로 접속
딱 원하는 데이터를 찾기는 어렵기 때문에 "데이터 재가공"을 해야 함
2. read_csv()로 데이터를 읽기
그러면 다음과 같이 데이터가 불러와짐
3. Pivot Table
"우리의 관심사는 강남이 안전한가 이기 때문에 표의 축을 정리를 함"
4. 데이터 2차 정리 (dictionary 함수)
현재 데이터는 경찰서 이름으로 되어 있어서 구 단위로 정리가 필요하다..!
다음과 같이 정리함
5. 데이터 시각화를 위해서 데이터 정리 (컬럼 간 연산)
이후 Heatmap 제작으로 시각화 하면 완료!
Week 12 (2024.11.19. 앙상블 학습 Ensemble Learning)
앙상블 학습이란?
다양한 classifier(분류 모델에서 잘 나누는 직선)을 생성하고 그 예측을 결합함으로써, 단일 clasifier보다 정확성 및 신뢰성이 높은 예측 값을 얻을 수 있다.
왜 앙상블 학습의 성능이 좋을까?
5개의 classifier(오류율 5%)를 독립적으로 사용할 경우, 성능이 대폭 올라간다. (오류율 0.01%)
예시)
Solution 1) Bagging
중첩을 허용해서 샘플링한다 이후 Decision Tree 후 Voting 후 최종 결정
Decision Tree + Bagging Random Forest
딥러닝이 나오기 전에는 성능이 굉장히 좋은 알고리즘이었다.
예시 ) 이메일 스팸 필터링
이후 -> 영역별로 다수결 voting 한다.
Solution 2) Boosting (딥러닝 이전에는 computer vision 등에 많이 쓰임)
예시)
맞춘거는 크기를 절반으로 하고, 틀린 것은 크기를 두배로 크게한다.
이후 영역별로 다수결 voting을 한다.
질문을 3번하는 것 vs 앙상블 기법 뭐가 다른가?
오버피팅 방지에는 앙상블 기법이 더 좋다.