머신러닝 10일차

ParkJinYoung·2022년 10월 31일
0

부스팅(Boosting)

  • RF(Rand Forest)처럼 의사결정트리 기반의 모델=> 각각의 트리들이 독립적이지않고 연결되어있다.

예측 정확도개선
1.데이터 추가 수집, 2.데이터 전처리, 3.모델 교체, 4.하이퍼 파라미터 튜닝
AdaBoost
-잘못된 데이터에 대한 데이터에 전보다 높은 가중치를 부여 => 이 과정을 반복 해서 정답이 전부 맞아서 분류가 끝날때까지 계속한다. => 나온 모든 데이터들의 결과치를 다시낸다.
트리의 개수 : n_estimators, 선택할 데이터의 시드 : random-state
GBM(Gradient Boosting Machine)
-경사하강법을 이용하여 최적의 가중치(파라미터)를 찾아냄

보팅(Voting)

  • 여러개의 모델(종류에 상관없음)이 사용
  • hard 보팅(결과값), soft 보팅(결과값의 평균)

머신러닝으로 할 수 있는 것(유의미한 것들)

  • table 형식의 데이터를 예측
  • 문장에서 감정예측 (긍정/부정 => 범주형)

딥러닝으로 할 수 있는 것(유의미한 것들)

  • 머신러닝이 할 수 있는 것
  • 딥러닝은 머신러닝보다 성능이 우수, 시간이 오래걸림
  • 이미지 분류
  • 동영상에서 이미지 찾아내기
  • 문장맞추기(나는 지금 배가고프니 밥을 ____)
  • 음성 데이터 (TTS, STT) > 감정예측, 문장맞추기
  • GAN > 이미지 생성
  • 영상, 음성, 이미지, 텍스트 관련된 예측활동

    예시
    영상에서 사람탐지후 폭력예측 > CCTV 학교폭력 예방


    몽타주 제작 > 몽타주 관련 텍스트 입력받아 > GAN사용 이미지(몽타주) 생성 > 생성된 몽타주와 수배자 리스트를 비교(이미지분류)


    감정에 따른 노래 추천 > 셀카로 감정을 입력 > 얼굴사진을 통해서 감정을 인식(딥러닝 메인 기능 ==> 분석)


    영상에서 야생동물 탐지 > CCTV 농작물 파괴하는 야생동물 탐지


    리뷰 분석 후 구매 예측 > 리뷰(텍스트 데이터) 구매를 예측하기위한 딥러닝 모델 생성

데이터참고사이트
ai hub
github
공공데이터포털
kaggle
google dataset search
roboflow

## 앙상블모델(베깅)을 사용한 랜덤포레스트모델 사용

- 1.문제정의
    - 유방암환자를 분류

- 2.데이터 수집
    - sklearn에서 학습용 데이터받아오기 

- 3.데이터 전처리
    - X_train, X_test, y_train, y_test

- 4.탐색적 데이터 분석(EDA)
    - 생략

- 5.모델 선택 및 하이퍼 파라미터 튜닝
    - Random Forest 사용
    - GraidSearch 최적 파라미터 사용하기위한 과정
    
- 6.학습 : fit(X_train, y_train)
    
- 7.평가 : socre(X_train,y_train), socre(X_test,y_test), barh()

# verbose : 진행 상황에대한 속성 ===> verbose = 1~3 / 관련으로 찾아보기

# AdaBoost 모델 사용하기
from sklearn.ensemble import AdaBoostClassifier as abc

adb = abc(n_estimators=5, random_state=30)
adb.fit(X_train,y_train)
print(adb.score(X_train,y_train))
print(adb.score(X_test,y_test))

adb2 = abc(n_estimators=100, random_state=30)
adb2.fit(X_train,y_train)
print(adb2.score(X_train,y_train))
print(adb2.score(X_test,y_test))

# 특성 중요도 확인하기
f_im = adb2.feature_importances_
df = pd.DataFrame(f_im,columns=['import'],index=cancer_data.feature_names)
df_sort = df.sort_values(by ='import',ascending=False)
df_sort.head().plot.barh()

#GBM(Gradient Boosting Machine) 모델 사용
#성능이 좋음 > LGBM(Light GBM)
from sklearn.ensemble import GradientBoostingClassifier as gbc
gbm = gbc(n_estimators=50,learning_rate=0.05,random_state=30)
gbm.fit(X_train,y_train)
print(gbm.score(X_train,y_train))
print(gbm.score(X_test,y_test))

# XGBoost 모델
!pip install xgboost
import xgboost
from xgboost.sklearn import XGBClassifier

xgbc = XGBClassifier(n_estimators=500, learning_rate=0.05, max_depth=4, random_state = 32)
xgbc.fit(X_train,y_train)
print(xgbc.score(X_train,y_train))
print(xgbc.score(X_test,y_test))

# Voting 모델 사용하기
from sklearn.ensemble import VotingClassifier as vc
vot = vc(estimators=[("m1",forest_model),("m2",best_model),
                     ("m3",adb),("m4",adb2),("m5",gbm),("m6",xgbc)],voting='soft')
vot.fit(X_train,y_train)
print(vot.score(X_train,y_train))
print(vot.score(X_test,y_test))

profile
꾸준히

0개의 댓글