카테고리 없음
내일배움캠프_[머신러닝]1회차 수업
iron-min
2025. 10. 22. 20:41
1. 오늘 배운 것
1) 머신러닝이란?
- 기계학습 또는 머신러닝은 기계(컴퓨터)가 학습을 할 수 있도록 하는 연구분야
- 인공지능을 소프트웨어적으로 구현하는 머신러닝은 컴퓨터가 데이터를 학습하고 스스로 패턴을 찾아내 적절한 작업을 수행하도록 학습하는 알고리즘

2) 제조업에서 머신러닝의 역할
| 품질 데이터의 자동 분석 | 머신 러닝은 대규모 품질 데이터를 자동으로 처리하고, 데이터 패턴과 상관관계를 분석하여 공정의 품질 문제를 실시간으로 식별합니다. |
| 공정 이상 탐지 및 예측 | 머신 러닝 기반 이상 탐지 모델은 공정 데이터에서 비정상적인 패턴을 감지하여, 결함 가능성을 사전에 예측하고 문제를 해결할 시간을 제공합니다. |
| 결함률 감소와 생산성 향상 | 머신 러닝은 결함 예측과 공정 최적화를 통해 제품의 결함률을 줄이고, 생산성을 높이는 데 기여합니다. |
3) 머신러닝 학습의 종류

지도학습
[분류]: 컴퓨터가 주어진 데이터를 보고, 미리 정해진 그룹(카테고리) 중 하나로 나누는 작업
| 입력데이터 | 레이블(정답)이 포함된 데이터가 필요. |
| 출력데이터 | 입력 데이터를 특정 범주로 분류한 결과. |
| 알고리즘 | 로지스틱 회귀, 의사결정트리, 랜덤 포레스트, SVM, 뉴럴 네트워크 등. |
분류의 유형
| 이진 분류 | 데이터가 두 개의 카테고리(예: "정상" 또는 "비정상")로 분류되는 경우. |
| 다중 분류 | 데이터가 세 개 이상의 카테고리로 분류되는 경우. |
| 다중 레이블 분류 | 하나의 데이터가 여러 개의 카테고리를 가질 수 있는 경우. ex) 영화장르 분류(액션, 코미디, 드라마) |
[회귀]: 데이터를 기반으로 연속적인 숫자값을 예측하는 작업
| 선형 회귀 | 데이터가 직선 형태로 분포한다고 가정하여 예측.간단하고 직관적이며, 관계를 설명하는 데 적합. |
| 다항 회귀 | 데이터를 비선형적으로 모델링할 때 사용. |
| 릿지 회귀/라쏘 회귀 | 다중 공선성 문제를 해결하기 위해 규제를 추가한 선형 회귀. |
| 서포트 백터 회귀 | 서포트 벡터 머신(SVM)을 기반으로 연속적인 값을 예측. |
| 결정 트리 회귀/랜덤 포레스트 회 | 의사결정 트리를 기반으로 데이터를 나누어 예측. |
| 딥러닝 기반 회귀 | 신경망을 활용하여 복잡한 관계를 학습. |
비지도 학습:
정의 : 데이터를 사전에 레이블(정답)을 주지 않고, 데이터의 패턴이나 구조를 발견하는 것에 초점을 맞춘 머신러닝 방법
목적 : 데이터 내부의 숨겨진 구조나 특징을 발견하여, 사람이 알지 못했던 새로운 인사이트를 제공합니다.
특징 :
- 정답이 없기 때문에 정확도보다는 데이터 간의 유사성과 차이를 측정하는 데 중점.
- 주로 탐색적 데이터 분석(EDA)과 데이터 전처리 단계에서 활용.
유형
| 클러스터링 | 데이터를 유사한 그룹으로 묶는 작업입니다. |
| 차원축소 | 데이터를 더 간결하고 중요한 특징들만 남기는 작업입니다. |
| 연관 규칙 학습 | 데이터 간의 상관관계를 발견하는 작업입니다. |
2. 오늘 해본 것
어제 베이직 반에서 했던 과정을 복습하기 위한 복습용 과제를 풀었습니다.

1. 고유값 및 데이터 변환
#고유값 확인
chat_performance['language'].unique()
#고유값 개수
len(chat_performance['language'].unique())
unique()를 이용해 고유값을 추출하고 len을 덧씌워 그 숫자를 알 수 있습니다.
2. 조건부 필터링
#조건부 필터링
chat_performance['is_marketplace'] = [True if site == ["Amazon" or "Ebay"] else False for site in chat_performance['website']]
#전치
transposed_chat_performance = chat_performance[['is_marketplace','language']].transpose()
리스트 컴프리 핸션을 이용해 'Amazon' 또는 'Ebay'에 해당하면 True, 다른것들은 False로 처리할 수 있습니다.
또한 행과 열을 서로 바꾸고 싶다면 transpose()를 이용해 해당 행,열을 바꿔줄 수 있습니다.
3.피처 엔지니어링
#평균 처리시간
chat_performance['avg_handling_time'] = chat_performance['handling_time']/chat_performance['number_messages']
#리스트컴프리핸션
chat_performance['Message_Volume'] = ['Low' if Volume >= 11 else('Medium' if Volume >=6 else 'Low') for Volume in chat_performance['number_messages']]
데이터 안에 없는 컬럼이 있다면 추가해 줄수 있고 컬럼끼리 서로 연산을 시켜줄 수 있습니다.
두번째는 원래 apply lambda를 사용하는 문제인데 저는 리스트 컴프리핸션을 이용하여 저렇게 해봤습니다.
리스트 컴프리핸션이 뭔가 많은것을 할수있는 것 같아서 개인적으로 선호하는 편입니다.
람다함수는 간편하게 쓰고 싶을때 좋은 것 같습니다.