![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bf5zmf/btr0hdE8z1l/zxVSaH2fNL3gzl8D0XVC5K/img.png)
앞서 살펴봤던 MSE와 MAE의 장점을 결합한 Huber Loss에 대해 살펴보겠다. MSE는 outlier에 제곱을 통해 많은 비중을 주게 되는 반면, MAE는 같은 비중을 두게 된다. 또한 MSE의 경우 outlier가 아닌 데이터에선 훌륭한 모델을 만들 수 있기에 이 둘을 절충해 아래와 같이 나타낸다. 에러(예측값과 실제값의 차)가 Delta(델타) 사이일 경우 MSE를 적용하고 그 외에 범위에 있을 경우 MAE를 적용하는 것이다. 참고로 1/2을 곱한 것은 아래 두 함수의 접점(Junction)에서 같은 결과값과 같은 편미분 값을 같기 위한 것이다. import matplotlib.pyplot as plt import numpy as np # Huber loss function def huber_..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bRfbbd/btr0glKelPW/Q94xJDfNlWQ3Rf49igonq1/img.png)
MAE는 이전 포스팅의 MSE를 구하는 방법과 매우 유사하지만 가져오는 결과는 매우 다르다. MAE 역시 모델을 통한 예측값과 실제값의 차이를 바탕으로 평균을 구하지만, MSE와 다른 점은 제곱을 하지 않는 것이다. 따라서 MAE는 이상점(outlier)의 비중이 MSE에 비해 현저히 적다. 하지만 절대값을 다루기에 MSE와 마찬가지로 양수를 다루기에 예측값이 실제값보다 큰 값인지 작은 값인지에 대한 판단이 불가하다. import numpy as np import matplotlib.pyplot as plt # MAE loss function def mae_loss(y_pred, y_true): abs_error = np.abs(y_pred - y_true) sum_abs_error = np.sum(ab..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/ecoh8q/btr0eS9Ygpw/nDQUxkX3yAWAUGXB7kEfA1/img.png)
Machine Learning 강의 수강 시 가장 먼저 접하게 되는 Loss(Cost) Function 중에 하나다. MSE를 계산하는 방법은 간단하다. 모델이 예측한 값(모델의 output)과 실제값의 차이를 제곱하고 이를 전체 데이터로 나누어준 평균값이다. MSE는 굉장히 큰 에러(예측값과 실제값의 차)를 갖는 이상점이 없는 모델에선 훌륭하지만, 그렇지 않을 경우 예측값과 실제값의 차이를 제곱하기에 이상점에 상대적으로 큰 비중이 실릴 수 있어 바람직하지 못한 결과를 낳는다. 아래는 MSE를 식으로 나타낸 것으로 N은 전제 데이터의 개수다. 아래는 MSE에 대한 샘플 파이썬 코드다. import numpy as np import matplotlib.pyplot as plt # MSE loss funct..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/kyICe/btrZ5jz6xfy/AR75krF6g5OzRnwL7Weikk/img.png)
IBM에서 이런 내용도 게재하는지 몰랐는데 Gradient Descent(경사하강법)에 대해 아래와 같이 설명하고 있다. 한국어론 경사하강법이라고 하지만 Gradient Descent라는 용어로 인지를 하고 있는 것이 여러 자료를 접할 때 더 편할 것으로 생각돼 영어와 한국어 모두 기억하는 것을 추천한다. 뿐만 아니라 Cost Function 혹은 대부분의 용어들은 영어로 함께 기억하는 것이 나을 것으로 생각한다. : Gradient descent is an optimization algorithm which is commonly-used to train machine learning models and neural networks. Training data helps these models learn ..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/coy3vH/btrZQcAcQNx/qzsFhqWv7jkge6VMUM7F71/img.png)
다음은 Explicit JOIN의 나머지 하나인 OUTER JOIN에 대해 알아보자. OUTER JOIN에 대한 설명은 아래와 같다. : Allows you to specify one of the tables as always contributing to the result. There are 2 types of OUTER JOINs - LEFT OUTER JOIN and RIGHT OUTER JOIN. OUTER JOINs are joins that return matched values and unmatched values from either or both sides. : 하나의 테이블을 반드시 결과에 나타나도록 허용할 수 있다. OUTER Join엔 2개의 종류가 있는데 LEFT OUTER JOI..
앞서 Implicit JOIN에 대해 살펴봤고, 이제 보편적으로 사용하는 Explicit JOIN에 대해 알아보겠다. Explicit JOIN엔 INNER JOIN과 OUTER JOIN이 있다. INNER JOIN에 대한 설명은 아래와 같다. : Produces a tuple in the result when there is a corresponding matching tuple in both the table : 두 테이블에 상응하는 튜플이 있다면 이를 하나의 튜플로 생성하는 것을 말한다. 예제를 살펴보자. SELECT id, name, school FROM student INNER JOIN student_major ON id = student_id; : id, name, school 속성을 stude..
Join에 대한 이해부터 시작하자. Join이란 아래와 같다. :Typically, we want only combinations of the Cartesian product that satisfy certain conditions and so we would normally use a Join operation instead of the Cartesian product operation. The Join operation, which combines two relations to form a new relation, is one of the essential operations in the relational algebra. : 특정 조건을 만족하는 Cartesian product(곱집합)을 만들고자 ..
파티에 초대된 사람들의 정보가 리스트로 주어지고, 각 리스트의 요소는 그 사람이 다른 사람을 알고 있으면 1, 모르면 0으로 주어진다. 유명인사(Celebrity)는 다른 사람은 모두 모르지만 모든 사람이 그 사람을 알고있고, 그 사람은 오직 1명이거나 없다. 없으면 -1 있다면 그 사람의 인덱스를 반환하면 된다. Constraint의 n의 최대값이 100 밖에 되지 않아 3개의 반복문을 중첩(O(n))해 풀어 모든 테스트 케이스를 만족했지만, 효율적이진 않다. 효율적인 풀이는 O(n)으로도 가능한데 주어진 리스트의 0번부터 Celebrity 용의자를 추척하고(knows(celebrity, i)가 False 일 때까지), 용의자가 누군가 한 명이라도 알아 True을 반환하면 -1을 그렇지 않다면 해당 용..
위키에 따르면 : The Android SDK is a software development kit that includes a comprehensive set of development tools. These include a debugger, libraries, a handset emulator based on QEMU, documentation, sample code, and tutorials. : Android SDK는 소프트웨어 개발 도구로 포괄적인 개발 도구들은 포함하고 있다. 여기에는 디버거, 라이브러리, 에뮬레이터, 문서, 샘플 코드, 튜토리얼이 포함돼 있다. SDK라는 용어 자체는 Android에서 많이 쓰이지만 Android에 국한된 용어는 아니다. JDK의 경우 Java Develop..
class Solution: def closestKValues(self, root: Optional[TreeNode], target: float, k: int) -> List[int]: h = [] ret = [] def dfs(node): heapq.heappush(h, (abs(target-node.val), node.val)) if node.left != None: dfs(node.left) if node.right != None: dfs(node.right) dfs(root) for i in range(k): ret.append(heapq.heappop(h)[1]) return ret 270. Closest Binary Search Tree Value 문제의 고난이도 문제다. 이번엔 Target ..
- Total
- Today
- Yesterday
- DICTIONARY
- machine learning
- 안드로이드
- 이코노미스트
- 소켓 프로그래밍
- The Economist Espresso
- leetcode
- 오블완
- C++
- Hash Map
- Android
- tf-idf
- 리트코드
- 딕셔너리
- 머신 러닝
- join
- 투 포인터
- Python
- The Economist
- 티스토리챌린지
- socket programming
- defaultdict
- 이코노미스트 에스프레소
- java
- 파이썬
- vertex shader
- min heap
- Computer Graphics
- I2C
- ml
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |