카테고리 없음

내일배움캠프_[머신러닝]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를 사용하는 문제인데 저는 리스트 컴프리핸션을 이용하여 저렇게 해봤습니다.

 

리스트 컴프리핸션이 뭔가 많은것을 할수있는 것 같아서 개인적으로 선호하는 편입니다.

람다함수는 간편하게 쓰고 싶을때 좋은 것 같습니다.