목록분류 전체보기 (184)
영국 척척석사 유학생 일기장👩🏻🎓
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/daQln4/btstH0qESlF/IcCkW3WcqoTQpPrld0Yey1/img.png)
머신 러닝은 지도 학습과 비지도 학습으로 나뉩니다. 그리고 지도 학습은 회귀와 분류로 나뉩니다. 회귀는 연속적인 값을 예측하는 것이고, 분류는 정해진 몇 개의 값 중에 예측하는 것입니다. 앞서 회귀에 대한 글을 올렸습니다. 이제 분류 문제를 봅시다. 예를 들어 어떤 이메일이 스팸인지 아닌지, 아니면 어떤 기사가 스포츠 기사인지 정치 기사인지 연예 기사인지 분류해 볼 것입니다. 보통 분류 문제를 풀 때는 각 결괏값에 어떤 숫자 값을 지정해 줍니다. 예를 들어 이메일이 스팸인지 아닌지 분류 한다면, 보통 이메일에는 0이라는 값을 주고 스팸 이메일에는 1이라는 값을 주는 것입니다. 이메일의 속성들을 가설 함수에 넣어서 0이 나오면 보통 이베일이고 1이 나오면 스팸 이메일이라고 할 수 있습니다. 만약 어떤 기사..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/oPkVt/btsts0yIctB/GtcKfW1jh2IgwJ548zuyb0/img.png)
1. link 태그 외부에 있는 것을 불러올 때 사용하는 태그입니다. 어떤 목적인지를 rel 속성에 적습니다. 위치는 href로 지정하면 됩니다. 주로 사이트 아이콘을 불러올 때는 rel="icon"라고 씁니다. 2. 를 꼭 써주어야 합니다. ... 3. 4. 시맨틱 태그 와 기능은 똑같지만 의미가 담겨있는 태그들을 시맨틱 태그라고 합니다. 사용법이 있는것은 아니고 작성하는 사람의 의도가 중요합니다. 시맨틱 태그를 잘 활용하면 검색 엔진 최적화(SEQ)나 접근성(Accessibility)를 높이는데 도움이 됩니다. 태그 이름 용도 영역 위쪽에서 로고나 제목, 메뉴 같은 걸 담고 있는 도입부 사이트의 본격적인 내용으로 페이지에서 딱 한 번만 사용 가능 영역 아래쪽에서 여러 가지 연락처나 관련 정보를 담고 ..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bsfmHz/btstx65wxsG/hLAmtbTnjlEUT67yX67rr0/img.png)
1. 다중 다항 회귀 입력 변수가 많은데 다항 회귀를 하는 것을 '다중 다항 회귀'라고 합니다. 예를 들어 봅시다. 입력 변수가 집 크기만 있는게 아니라 방, 수, 지하철역 까지의 거리도 있습니다. 각각x1, x2, x3라고 이름을 붙입시다. 그리고 목표 변수는 똑같이 집 가격 입니다. 가설 함수가 이차 함수라고 가정해봅시다. 이차 함수니까 제일 큰 항이 이차항이어야 합니다. 이차항이랑 변수 두 개가 곱해진 것입니다. x1제곱도 이차하이고, x1과 x2의 곱도 이차항 입니다. 따라서 x1x2, x2x3, x3x1, x1제곱, x2제곱, x3제곱 이렇게 6개 입니다. 그러면 가설 함수는 아래와 같이 생겼습니다. 맨 앞에 상수항이 있고, 그 다음은 일차항들이고, 그 다음은 이차항이 있습니다. 이 6가지에 대..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/lrNj6/btstwHZIzUt/7p87CQbn4ykK0VqxofO6ak/img.png)
1. 단일 속성 다항 회귀 다항 회귀도 두 가지로 나뉩니다. 속성이 하나인 경우랑, 속성이 많은 경우, 속성이 많고 다항 회귀를 하면 '다중 다항 회귀' 라고 부릅니다. 속성이 하나인 경우부터 봅니다. 집 크기를 이용해서 집 가격을 예측한다고 합시다. 선형 회귀에서 가설 함수는 다음과 같습니다. 우리가 선형 회귀를 통해 하려는 건, 학습 데이터에 가장 잘맞는 세타0, 세타1을 찾아내는 것입니다. 선형 회귀가 아니라 다항 회귀를 한다면, 가설 함수가 이차함수라면 아래와 같이 생겼을 것입니다. 선형 회귀와 마찬가지로, 다항 회귀에서 하려는 건 학습 데이터에 가장 잘 맞는 세타0,세타1,세타2를 찾아내는 것입니다. 만약 가설 함수가 삼차함수라면 아래와 같이 생겼습니다. 이 경우에도 학습 데이터에 가장 잘 맞는..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/b14s0J/btstw4AC9Z1/nVK23wMuk8l6s7jH9AuA00/img.png)
1. 기본적인 폼의 형태 아이디 비밀번호 로그인 2. 라벨 태그로 을 감싸면 라벨을 클릭했을 때 인풋에 포커싱이 됩니다. 아이디 라벨의 for 속성과 인풋의 id 속성을 일치시키면 클릭했을 때 인풋에 포커싱이 됩니다. 아이디 3. 인풋 name 속성은 폼을 전송했을 때 입력한 값에 매칭되는 이름입니다. 아래 코드에서는 인풋에 입력한 값이 username이라는 이름에 매칭됩니다. 아이디 type 속성을 사용하면 다양한 인풋을 사용할 수 있습니다. 대표적으로 입력한 값을 가려주고 싶을 때는 type="password"를 사용합니다. 비밀번호
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/nnnpL/btstC0DDxY8/KQQgYkt9dX5xteRct5te9K/img.png)
1. 값이 비어있을 때 보여주는 값 placeholder 아래의 예시와 같은 구글 로그인 화면에 있는 "이메일 또는 휴대전화" 같은 것을 "플레이스 홀더"라고 부릅니다. 이러한 값을 추가하려면 placeholde라는 속성을 쓰면 됩니다. 이때 placeholder의 디자인을 바꾸려면 CSS 선택자로 ::placeholder를 활용하면 됩니다. input::placeholder { color: #dddddd; } 2. 반드시 입력해야 하는 값 required 폼에서 반드시 입력해야 하는 값이 있다면 required 속성을 써주면 됩니다. 만약 required인 인풋의 값이 비어있다면, 전송 버튼을 눌러도 전송되지 않습니다. 3. 자동완성 autocomplete 예전에 입력한 값들을 보여주는 인풋은 auto..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/NyRh2/btstzmzZIyO/cVNEKCiLN3vHwLb29nuYsK/img.png)
선형회귀에 대해 알아보았습니다. 그런데 입력 변수와 목표 변수의 관계를 가장 잘 나타내는 게 직선이 아닐 수도 있습니다. 아래의 예시를 봅시다. 직선을 최대한 잘 그린것 같지만 이 직선이 데이터를 잘 표현한 것 같진 않습니다. 직선이 아닌 곡선을 사용해봅시다. 이 곡선을 어떻게 찾을 수 있을까요? 선형 회귀에서는 가설 함수가 아래와 같이 생겼었습니다. 이 가설함수는 직선이니까, 가설 함수를 곡선으로 바꾸면 됩니다. 예를 들어, 이 데이터에 가장 잘 맞는 곡선이 이차 함수 일 것 같으면 이런 식으로 써주면 됩니다. 만약 데이터에 가장 잘 맞는 곡선이 이차 함수가 아니라 삼차 함수일 것 같으면 이렇게 가설 함수를 정하면 되고, 4차 함수 일 것 같으면 5차 함수 일 것 같으면 이런 식으로 함수의 차수가 더 ..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/ey4gUh/btstwmuHJ6f/iMJmEaMo7UoinMcZTPgwU1/img.png)
태그에서 type 속성을 password로 하면 입력한 내용이 가려지는 비밀번호 인풋을 만들 수 있습니다. type에 쓸 수 있는 여러 가지 값들을 알아봅시다. 1. 체크박스 checkbox 1) 한 항목만 선택하는 경우 아래의 예시에서 '동의합니다'에 체크하는 경우 agreement 값이 on이라는 문자열로 지정됩니다. 동의합니다 2) 여러 항목 중에서 몇 항목을 선택하는 경우 태그에 value 속성으로 값을 지정해주면 선택된 항목의 지정된 값이 쓰입니다. 예를 들어 아래의 코드에서 "액션"이랑 "코미디"를 선택했을 때 film의 값으로 action과 comedy라는 문자열이 지정됩니다. 폼을 전송했을 떄 쿼리 문자열에서는 &film=action&film=comedy처럼 전송됩니다. 좋아하는 영화 장르..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/cpTkvr/btstwh7Lx1Z/kHrNxgP7wkKQ2WMK3RH7P0/img.png)
1. convex 함수 경사 하강법, 정규 방정식을 이용하여 선형, 다중 회귀 손실 함수를 최소화시킬 수 있었습니다. 손실함수 J(theta)의 경사를 구한 뒤에 이걸 이용해서 최솟값을 갖는 theta를 찾았습니다. 그런데 단순히 경사 하강법과 정규 방정식만 이용하면 항상 손실 함수의 최소 지점을 찾을 수 있을까요? 예를 들어 봅시다. 이 지점에서 시작을 해서 경사를 따라 쭉 내려갑니다. 내려가다 보면 어느 순간 여러 극소값 중 하나에 오겠죠? 그럼 여기서는 경사가 0이어서 경사 하강이 종료가 됩니다. 그럼 손실 함수의 최저점을 찾아갈 수가 없습니다. 정규 방정식도 마찬가지입니다. 이렇게 수많은 극소값들과 극대값들이 있으면 아무리 방정식을 해결해도 구한 수많은 지점 중에서 어떤 지점이 최소점인지 알 수 ..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bPlFJZ/btstCFsxPWO/qX299rcOpjJrgy7sL8b8Lk/img.png)
1. 경사 하강법 vs 정규 방정식 경사 하강법 정규 방정식 적합한 학습률 a를 찾거나 정해야 함 학습율 a를 정할 필요가 없음 반복문 사용해야함 한 단계로 계산을 끝낼 수 있음 입력 변수의 개수 n이 커도 효율적으로 연산 가능 입력 변수의 개수 n이 커지면 커질수록 비효율적임 (행렬 연산을 하는 비용이 경사 하강법을 하는 것 보다 큼) 역행렬이 존재하지 않을 수도 있음 (이때는 pseudo inverse를 이용해서 다르게 계산할 수 있음) 둘 중 어떤 걸 선택해야 할 지 정해져 있지는 않으나 입력 변수(속성)의 수가 엄청 많을 때는(1000개 기준) 경사 하강법을, 비교적 입력 변수의 수가 적을 때는 정규 방정식을 사용합니다.