[DAY23] 멋쟁이사자처럼부트캠프 그로스마케팅_Today I Learned
오늘의 학습 내용
- 머신러닝의 기본 개념 이해
오늘은 개인 사정으로 머신러닝 기본 개념에 대해서만 간략히 정리하고 넘어가려고 합니다..!
머신러닝의 기본 개념 이해
머신러닝(Machine Learning)은 데이터를 기반으로 패턴을 학습하고,
이를 바탕으로 예측 및 의사 결정을 수행하는 인공지능(AI)의 한 분야
명시적인 규칙을 프로그래머가 지정하는 것이 아니라, 알고리즘이 데이터를 분석하여 스스로 규칙을 찾아내는 방식으로 동작
1. 머신러닝 정의
데이터에서 패턴을 찾아 학습하고, 새로운 데이터에 대해 예측을 수행하는 시스템
일반적으로 사람이 정의하기 어려운 복잡한 패턴을 데이터에서 자동으로 학습하여 적용하는 것이 머신러닝의 핵심 목표
2. 머신러닝의 주요 학습
2.1 지도 학습(Supervised Learning)
- 정의: 입력 데이터(특징, Feature)와 이에 대응하는 정답(레이블, Label)이 주어진 상태에서 학습하는 방식
- 목표: 주어진 데이터를 기반으로 입력과 출력 간의 관계를 학습하여, 새로운 입력값에 대해 올바른 출력을 예측하는
- 대표 알고리즘
- 선형 회귀(Linear Regression)
- 로지스틱 회귀(Logistic Regression)
- 의사결정나무(Decision Tree)
- 랜덤 포레스트(Random Forest)
- 서포트 벡터 머신(SVM)
- 신경망(Neural Networks)
2.2 비지도 학습(Unsupervised Learning)
- 정의: 정답(레이블)이 없는 데이터에서 패턴을 찾는 방식
- 목표: 데이터의 구조를 이해하고 그룹을 발견하거나 특징을 요약하는 것
- 대표 알고리즘
- 군집화(Clustering): K-평균(K-Means), DBSCAN, 계층적 군집화
- 차원 축소(Dimensionality Reduction): PCA(주성분 분석), t-SNE, UMAP
2.3 강화 학습(Reinforcement Learning)
- 정의: 에이전트(Agent)가 환경(Environment)과 상호작용하면서 보상(Reward)을 최대화하는 방식으로 학습하는 방법
- 목표: 최적의 행동(Policy)을 학습하여 주어진 환경에서 높은 보상을 받도록 하는 것
- 대표 알고리즘
- Q-러닝(Q-Learning)
- 심층 강화 학습(Deep Q-Network, DQN)
- 정책 기반 학습(Policy Gradient)
3. 머신러닝의 주요 개념
3.1 데이터셋 (Dataset)
머신러닝 모델을 학습시키기 위해 필요한 데이터의 모음
머신러닝에선 일반적으로 다음과 같이 구분
- 훈련 데이터(Training Data): 모델을 학습시키기 위한 데이터
- 검증 데이터(Validation Data): 학습 과정에서 모델의 성능을 평가하는 데이터
- 테스트 데이터(Test Data): 학습이 끝난 후 모델의 최종 성능을 평가하는 데이터
3.2 특징(Feature)과 라벨(Label)
- 특징(Feature): 입력 데이터의 속성을 나타내는 변수
- 레이블(Label): 예측해야 하는 값
3.3 과적합(Overfitting)과 과소적합(Underfitting)
- 과적합(Overfitting): 학습 데이터에는 잘 맞지만 새로운 데이터에는 성능이 떨어지는 현상
- 과소적합(Underfitting): 모델이 데이터의 패턴을 충분히 학습하지 못한 경우
- 해결 방법:
- 과적합 방지: 정규화(Regularization), Dropout, 데이터 증강(Data Augmentation)
- 과소적합 해결: 모델 복잡도 증가, 데이터 추가
3.4 손실 함수(Loss Function)와 최적화(Optimization)
- 손실 함수: 모델이 예측한 값과 실제 값 간의 차이를 측정하는 함수
- 최적화 기법: 손실을 최소화하도록 모델을 개선하는 방법
예측값과 실제값의 차이를 0으로 수렴하도록 하기 위해 사용하는 합수와 기법 0에 수렵할 수록 학습이 잘 되었음을 의미
4. 머신러닝의 주요 알고리즘
4.1 회귀(Regression)
- 연속적인 값을 예측하는 문제
- 대표 알고리즘: 선형 회귀(Linear Regression), 다항 회귀(Polynomial Regression)
4.2 분류(Classification)
- 카테고리 값을 예측하는 문제
- 대표 알고리즘: 로지스틱 회귀, 결정 트리, 랜덤 포레스트, SVM
4.3 군집화(Clustering)
- 유사한 데이터를 그룹으로 묶는 문제
- 대표 알고리즘: K-평균, DBSCAN
5. 머신러닝 모델 평가 방법
머신러닝 모델이 얼마나 잘 동작하는지 평가하기 위한 지표
5.1 회귀 평가 지표
- 평균 제곱 오차(MSE): 예측값과 실제값 간의 차이의 제곱 평균
- 평균 절대 오차(MAE): 예측값과 실제값 간의 절대값 차이 평균
- R²(결정 계수): 모델이 데이터를 얼마나 잘 설명하는지 나타내는 지표 (가장 많이 쓰임)
5.2 분류 평가 지표
- 정확도(Accuracy): 전체 데이터 중 올바르게 분류된 비율
- 정밀도(Precision): 모델이 양성으로 예측한 데이터 중 실제 양성 비율
- 재현율(Recall): 실제 양성 데이터 중 모델이 양성으로 예측한 비율
- F1-Score: 정밀도와 재현율의 조화 평균
6. 머신러닝 학습을 위한 필수 도구 및 라이브러리
- Python: 머신러닝에 가장 많이 사용되는 언어
- NumPy, pandas: 데이터 전처리 및 분석
- scikit-learn: 다양한 머신러닝 알고리즘 제공
- TensorFlow, PyTorch: 딥러닝 프레임워크
7. 머신러닝 학습 과정 요약
- 문제 정의 및 목표 설정
- 데이터 수집 및 정제
- 데이터 탐색 및 시각화
- 특징 선택 및 엔지니어링
- 모델 선택 및 학습
- 모델 평가 및 개선
- 모델 배포 및 활용
Introduction of AI
인공지능(AI, Artificial Intelligence)은 기계가 인간의 지능을 모방하거나 시뮬레이션할 수 있도록 하는 기술의 한 분야
1. AI 의 주요 개념
1.1 지능(Intelligence)의 개념
인공지능의 핵심은 '지능'
인간의 지능은 학습, 추론, 문제 해결, 언어 이해, 감정 인식 등 다양한 기능을 포함
AI는 이러한 인간의 지능적 행동을 기계적으로 재현하려는 목표를 가짐
1.2 학습(Learning)
AI는 데이터를 통해 학습
이 학습 과정은 머신러닝(Machine Learning)을 통해 이루어지며, 기계가 경험(데이터)으로부터 패턴을 인식하고, 이를 바탕으로 새로운 데이터에 대해 결정을 내리도록 함
유형: 지도학습(Supervised Learning), 비지도학습(Unsupervised Learning), 강화학습(Reinforcement Learning) 등
1.3 추론(Reasoning)
추론은 주어진 정보를 바탕으로 논리적인 결론을 도출하는 능력
AI는 논리적 규칙이나 확률 모델을 사용하여 데이터를 분석하고, 결정을 내리거나 문제 해결 가능
1.4 문제 해결(Problem Solving)
AI는 복잡한 문제를 해결할 수 있는 알고리즘을 사용하여 다양한 도메인에서 작업 수행
1.5 지각(Perception)
AI는 시각, 청각, 촉각 등의 감각 데이터를 처리하여 환경을 인식하고 이해 가능
1.6 언어 이해 및 생성(Natural Language Processing)
자연어 처리(NLP)는 AI가 인간의 언어를 이해하고 생성할 수 있도록 하는 기술
이는 텍스트 분석, 음성 인식, 번역, 챗봇 등 다양한 응용 분야에서 사용
AI는 NLP를 통해 문맥을 이해하고, 대화에 참여하거나, 텍스트 생성
1.7 적응(Adaptation)
AI는 새로운 데이터나 환경에 적응할 수 있는 능력을 가짐
학습기반 시스템은 데이터를 통해 학습하고, 시간이 지남에 따라 더 나은 성능을 발휘하도록 모델을 지속적으로 개선
1.8 자율성(Autonomy)
AI는 외부의 명령 없이도 스스로 결정을 내리고 행동할 수 있는 자율성 가짐
자율성은 AI가 실시간으로 데이터를 처리하고, 즉각적인 결정을 내려야 하는 상황에서 필수적
2. 규칙기반과 학습기반의 발전적 관계
AI는 초기에는 규칙기반 시스템에서 출발했지만, 데이터와 계산 능력의 증가에 따라 학습기반 시스템으로 발전
규칙기반 시스템은 특정 문제에 대해 명확하고 예측 가능한 솔루션을 제공할 수 있지만, 복잡한 문제나 대규모 데이터에서의 유연성과 적응력이 부족하므로 학습기반 시스템은 이를 보완하며, 현재 AI 발전의 중심에 서 있음
2.1 규칙기반 인공지능 (Rule-Based AI)
규칙기반 AI는 특정 문제를 해결하기 위해 사람이 미리 정의한 규칙을 사용하여 동작
규칙은 "만약 이 조건이 참이면, 이 작업을 수행하라"와 같은 형식으로 정의
이 시스템은 일반적으로 결정 트리(Decision Trees)나 상태 머신(State Machines) 형태로 구현
▶ 규칙기반으로 스팸 이메일을 필터링하는 간단한 예제
def is_spam(email_text):
spam_keywords = ["지금 구매", "한정 판매", "무료", "당첨", "여기를 클릭하세요"]
for keyword in spam_keywords:
if keyword.lower() in email_text.lower():
return True
return False
# 테스트
email1 = "축하합니다! 무료로 휴가에 당첨되셨습니다. 여기를 클릭하세요."
email2 = "안녕하세요, 지난주 회의에 대해 다시 연락드리고 싶었습니다."
print(f"이메일 1은 스팸입니까?: {is_spam(email1)}") # True
print(f"이메일 2는 스팸입니까?: {is_spam(email2)}") # False
2.2 학습기반 인공지능 (Learning-Based AI)
학습기반 AI는 데이터를 통해 학습하여 스스로 규칙을 생성하고 예측을 수행
▶ 학습기반으로 스팸 이메일을 필터링하는 간단한 예제
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.naive_bayes import MultinomialNB
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
# 샘플 데이터
emails = [
"지금 가입하면 첫 달 무료! 여기를 클릭하세요.",
"회의 자료를 첨부했습니다. 검토 부탁드립니다.",
"특별 할인 행사 중! 지금 바로 쇼핑하고 30% 할인 받으세요.",
"안녕하세요, 오늘 오후 회의 시간 확인 부탁드립니다.",
"당첨되셨습니다! 상품 수령을 위해 여기를 클릭하세요.",
"신규 프로젝트 투자 기회를 놓치지 마세요."
]
labels = [1, 0, 1, 0, 1, 1] # 1: 스팸, 0: 정상 이메일
# 데이터 전처리
vectorizer = CountVectorizer()
X = vectorizer.fit_transform(emails)
# 학습과 테스트 데이터로 분할
X_train, X_test, y_train, y_test = train_test_split(X, labels, test_size=0.2, random_state=42)
# 모델 학습
model = MultinomialNB()
model.fit(X_train, y_train)
# 예측
y_pred = model.predict(X_test)
# 정확도 평가
accuracy = accuracy_score(y_test, y_pred)
print(f"정확도: {accuracy * 100:.2f}%")
# 새로운 이메일 예측
new_email = ["이 기회를 놓치지 마세요! 특별 혜택이 기다리고 있습니다."]
new_email_transformed = vectorizer.transform(new_email)
print(f"새 이메일이 스팸입니까?: {model.predict(new_email_transformed)[0]}")
유연성 | 낮음, 새로운 상황에 대한 대응이 어려움 | 높음, 새로운 데이터에 따라 학습 가능 |
규칙 생성 | 사람이 수동으로 규칙 정의 | 데이터로부터 자동 학습 |
유연성 | 낮음, 새로운 상황에 대한 대응이 어려 | 높음, 새로운 데이터에 따라 학습 가능 |
설명 가능성 | 명확한 규칙으로 설명 가능 | 학습한 규칙이 복잡하여 설명이 어려울 수 있음 |
적용 사례 | 명확한 규칙이 있는 문 | 데이터가 충분하고 패턴이 복잡한 문제 |
"오늘의 회고"
오늘은 머신러닝의 기본 이론에 대해 학습하고 간단한 실습을 진행했다.
그래도 전공에서 배운적이 있어 그런지 완전히 낯선 개념들은 아니었지만 역시 머신러닝 이론은 확실히 알아두어야 실습할 때에도 도움이 되는 것 같다. 오늘 개인일정으로 조퇴하기도 하고 내일도 일정이 있어 간단한 복습만 했지만 주말에 여유가 생기면 오늘 수업 듣지 못한 부분도 공부하고 정리 해야겠다 .. 오늘은 여기까지만..
오늘은 이론이 많아서 다들 힘드셨을 것 같아요 저도 그랬어요..ㅜㅜ 그나마 금요일임에 버텼습니다
다들 주말 잘 보내시고 SQLD 보시는 분들도 화이팅입니다 !!