# engineering
튀는 loss잡기 , 성능과 데이터 크기
🎃🤖 데브코스 AI 5기 Monthly project #2 (Boston) 진행 중 발생한 궁금증 같은 모델(MLP)사용시 범주형 피처를 임베딩한 방법이 원핫인코딩 방식보다 loss가 약 1.46배 높게나오고 val_loss가 튐 각각 최적화 진행함 문제점 1. loss가 튀는 이유? trainloss는 수렴하는 반면 valloss는 심하게 튐(train_loss에 비해 바뀌는 소숫점 단위가 다름) 문제점 2. 임베딩 방식이 원핫인코딩보다 성능이 낮음 원핫인코딩과 임베딩은 모두 범주형 변수를 처리하기 위한 방법이다. 테스트할 Task 1. 배달 시간 예측 사용할 데이터 (17만개 = train + val + test)

소프트웨어 공학이란?
소프트웨어 공학이란 무엇일까? 위키에서는 SEBOK을 인용하여 다음과 같이 정의하고 있다. 링크 > 소프트웨어의 개발, 운용, 유지보수 등의 생명 주기 전반을 체계적이고 서술적이며 정량적으로 다루는 학문이다. 즉, 공학을 소프트웨어에 적용하는 것이다. 다시 말해, 소프트웨어 개발을 보다 효과적이고 효율적으로 하기 위한 다양한 접근을 하는 것이다. 소프트웨어 공학의 시작은 현장의 필요에서 나왔다. 소프트웨어 개발은 생각보다 어려워서 많은 문제들이 발생했다. 이를 해결하려는 다양한 시도들이 있었고 이를 체계화하면서 시작되었다. 소프트웨어 공학의 목표는 무엇인가? 에서 클래스(Class)는 데이터의 정의와 그 데이터를 대상으로 동작하는 함수(Method, 이하 메소드)들의 정의로 구성된다. 그리고 클래스 외부에서 접근할 수 있는 함수들을 제한함으로써, 내부 데이터와 함수들의 복잡성을 감춘다(encapsulation, 캡슐화). 그렇기에 잘 테스트가 된 클래스는 안심하고 반복적으로 재사용되며, 소프트웨어를 구성하는 든든한 빌딩 블록이 된다. 이러한 크고 작은 클래스들이 계층 구조로, 또는 그래프 구조로 서로 구성되어 최종적으로 하나의 소프트웨어가 된다. 이러한 관점에서 React Hook 은 React로 개발된 앱의 클래스라고 볼 수 있다. 이는 언어의 문법적 관점에서 클래스를 말하는 것이 아니라, 내부 데이터와 메소드들을 캡슐화한 구성요소라는 관점에서 말하는 것이다. React Hook 중 가장 단순한 기본 Hook 인 useState