전체 글
-
CTCI | 뒤에서 k번째 원소Algorithm/Linked List 2024. 4. 2. 22:58
Cracking the Coding Interview LinkedList에서 뒤에서 k번째 노드의 값을 찾는 알고리즘을 구현해라. Linked List에서 뒤에서 k번째 노드를 찾는 알고리즘! 가장 간단한 방법은 무엇일까? 만약 10개의 노드가 있는데 k=3이라면? 8번째 노드가 뒤에서 세번째가 된다. 즉, 노드의 총 갯수를 구하고, 그것을 size 라고 했을 때, size - k 번 head에서 next한 노드의 값을 리턴하면 된다. 이 방법으로 하면, N개의 노드를 가진 LinkedList에서 O(N)의 Time Complexity로 계산할 수 있다. 코드로 한번 구현해보자. int findKthNodeValue(Node head, int k){ int count = 0; Node curr = hea..
-
지도학습 | 선형모델의 장단점과 매개변수Machine Learning/ML with Python Library 2024. 4. 2. 22:26
선형 모델의 주 매개변수는 Regression 모델에서는 alpha였고, Classification Model이었던 LinearSVC와 LogisticRegression에서는 C였다. alpha값이 클수록, C값이 작을수록 모델은 단순해진다. 특히, Regression 모델에서 이 매개변수를 조정하는 일은 매우 중요하다. 또한 규제를 L1, L2중 어떤것을 사용할지 정해햐아하는데, 중요한 특성이 많이 없을땐 L1을, 그렇지 않으면 L2를 사용한다. L1은 몇가지 특성만 사용하기 때문에, 해당 모델에 중요한 특성과 효과를 이해하기 쉽다. Linear 모델은 학습 속도도 예측도 빠르다. 또한, 예측이 어떻게 만들어 지는지 비교적 쉽게 이해할 수 있다. Linear 모델은 특성이 많을 때 잘 작동하는데, 다른..
-
지도학습 | 다중클래스 분류용 선형 모델 (MultiClass Classification Linear Model)Machine Learning/ML with Python Library 2024. 4. 2. 22:18
Logistic Regression을 제외한 많은 Linear Classification 모델은 Binary Classification만을 지원한다. 즉, multiclass를 지원하지 않는다. 이 binary알고리즘을 multiclass로 확장하기 위해서는 가장 보편적인 기법, one vs rest, 즉 일대다 방식을 사용하면 된다. 각 클래스를 다른 모든 클래스와 구분하도록 binary classification 모델을 학습시키는것인데, 결국 클래스 수만큼 binary classification 모델이 만들어진다. 모든 결과값 중, 가장 높은 점수를 내는 classification의 클래스를 예측값으로 선택하면 된다. 세개의 클래스를 가진 간단한 데이터셋에, 이 일대다 방식을 적용해보자. # !pip..
-
CTCI | 중복 없애기Algorithm/Linked List 2024. 4. 2. 16:03
Cracking the Coding Interview 문제: 정렬되어있지 않은 Linked List에서 중복되는 원소를 제거하는 코드 작성하기 우선 Linked List의 특징은, head에 대한 포인트를 갖고 시작한다는것과, 사이즈가 얼마나 될지 알지 못한다는 것이다. 이 문제를 풀 수 있는 가장 간단한 방법은, Set을 사용해서 지금까지 등장한 원소들을 저장해가면서, 만약 Set에 없다면, Set에 추가하고 넘어가고, 만약, Set에 존재한다면, 그 해당 노드를 건너뛰는 방식으로 진행할 수 있다. 여기서 또 한가지 생각해야하는것은 Deletion과 Edge케이스이다. 먼저, Delete를 어떻게 해나갈지, LinkedList를 그려가며 생각해보자. head 노드에서 2번 이동한 노드가, 중복 노드라고..
-
Multiclass Classification | Neural Network Additional Layer TypesMachine Learning/Stanford ML Specialization 2024. 4. 2. 09:07
Coursera Machine Learning Specialization > Supervised Machine Learning: Advanced Learning Algorithms > Neural Network Intuition Neural Network에서 대부분은 이전 레이어에서 온 activation을 사용했다. 코드에서는 Dense layer 타입을 사용했고, 이것을 이용해 꽤 강력한 인공신경망 모델을 만들 수 있었다. 하지만 어떤 분야에서는 Layer마다 다른 타입의 레이어가 필요한 경우가 있었다. 이것을 Convolutional Layer라고 부른다. 이미지 판독을 할 떄, 예를 들어 30*30의 뉴런의 레이어가 있다고 가정해보자. 아래 그림을 보자. Convolutional Layer에서는..
-
Multiclass Classification | Neural Network Advanced OptimizationMachine Learning/Stanford ML Specialization 2024. 4. 2. 08:54
Coursera Machine Learning Specialization > Supervised Machine Learning: Advanced Learning Algorithms > Neural Network Intuition Gradient Descent Gradient descent(그레디언트 디센트, 경사하강법)은 ML에서 널리 사용되는 최적화 알고리즘인데, Cost Function을 최소화 하는데 사용할 수 있는 다른 최적화 알고리즘도 있다. 우리가 그동안 봐왔던 Gradient descent보다 훨씬 더 나은 방법이다. 경사하강법보다 빠르게 트레이닝 할 수 있는 방법이 어떤게 있는지 알아보자. Gradient Descent 에서는, 어떤 지점에서 시작해서, 학습률 알파를 잘 조정해서, 위의 공..
-
지도학습 | 분류용 선형 모델 (Linear Classification Model)Machine Learning/ML with Python Library 2024. 4. 1. 22:40
선형 모델은 Classification 문제에도 많이 사용된다. 먼저, binary classification을 살펴보자. 수식은 다음과 같다. y = w0⋅x0 + w1⋅x1 + ... + wp⋅xp + b > 0 가장 널리 알려진 두 개의 선형 알고리즘은 Logistic Regression(회귀 알고리즘이 아니다)과 Support Vector Machine(LinearSVC)이다. forge 데이터셋을 사용해서 LogisticRegression과 LinearSVC 모델을 만들고, 이 모델이 만든 결정경계를 그림으로 나타내보자. # !pip install mglearn import mglearn from sklearn.linear_model import LogisticRegression from skl..
-
지도학습 | 라소 회귀 (Lasso Regression)Machine Learning/ML with Python Library 2024. 4. 1. 21:22
선형 회귀에 규제를 적용할 때, 지난번 공부한 Ridge의 대안으로 Lasso가 있다. Ridge와 마찬가지로, Lasso도 계수를 0에 가깝게 만들려고 하는데 방식이 조금 다르다. 이 규제를 L1 Regulation이라고 한다. Lasso를 사용할 때, 어떤 계수는 실제로 정말 0이 된다. 즉, 완전하게 제외되는 특성이 생기게 된다. Feature Selection을 이 회귀를 사용하면 자동으로 함께 처리된다. 이전의 보스턴 주택 가격 데이터셋에 Lasso를 적용해보자. # !pip install mglearn import mglearn from sklearn.linear_model import Lasso from sklearn.model_selection import train_test_split i..