알고리즘(kNN, k-means)의 요약

7076 단어 knnK-means
이 보도는 개인 학습용 필기다.
강의록
k인접법(kNN)
  • 교사 학습
  • 예측 분류
  • 간단한 알고리즘, 즉 예측 대상의 데이터와 가장 가까운 k개의 데이터를 얻어 이 데이터가 속하는 유형을 예측값으로 설정한다.(한마디로 다수결을 통해 학급을 결정할 뿐)
  • 정보
    분류 결과는
  • k의 값에 따라 바뀔 수 있습니다.
  • k는 사전에 결정한다.(하이퍼매개변수)
  • k가 증가할 때 경계가 매끄러워지는 것을 확인합니다.
  • k-평균법(k-means)
  • 무교사 학습
  • 모으기(분류)
  • 처리 순서
  • 분류할 개수를 확정한다.
  • 집단 중심의 초기 값을 무작위로 확정한다.
  • 각 데이터에 대해 가장 가까운 클러스터의 중심이 무엇인지 결정합니다.
  • 각 집단의 평균 벡터(중심)를 계산한다.
  • 3과 4를 반복한다.
  • 집단 중심에 변화를 일으키고 안정된 곳을 변화시키다
    집합 끝났어?
    특징.
  • 중심의 초기값이 가까우면 잘 분류할 수 없다.
    k-means++라는 수법을 사용하면 초기값이 잘 분산된다.
  • k의 값이 바뀌면 집합 결과도 바뀐다.
    사람의 눈으로 k의 값을 판단할 필요가 있다.
  • 수료시험~ 연습문제~ (kNN)
    KNN에 대한 질문은 없습니다.
    수료시험~ 연습문제~ (k-means)
    질문 22(k-means)
    안쪽 첫 번째 for링
    모든 데이터의 최근 집단 센터 처리를 확인하십시오.
    for centroid in centroids:
      for i, x in enumerate(data):
        indexes[i] = np.argmin(np.sum((x - centroid) ** 2, axis=1))
    
    설명
    x: 기존 데이터
    집단 센터의 데이터
    각 성분의 차이를 구하다.
    (...) **2:성분 차이에 따라 제곱.
    np.sum(...,axis=1): 서로 다른 성분의 차이를 더한다.오른쪽에 넣다.
    np.argmin: 최소 값을 가진 인덱스를 되돌려줍니다.
    질문 23(k-means)
    내 두 번째 for 순환
    집단의 중심을 다시 계산하다.
    다시 계산하는 것은 데이터를 계산하는 평균치를 가리킨다.
    for i in range(k):
      centroisd[i] = data[indexes==i].mean(axis=0)
    
    설명
    k: 클러스터 개수(4개)
    i:군집 번호(따위, 0~3)
    덩어리의 중심에는 여러 개가 있다
    데이터: 집단의 번호 i와 일치하는 데이터를 추출합니다.
    data[...].mean: 해당 데이터의 평균값을 계산합니다.
    질문 25(k-means)
    k-means의 단점은 초기값이 가까울 때 잘 분류되지 않는다는 것이다.
    k-means++로 이 단점이 개선되었습니다.
    질문 26(k-means++)
    k-means++로 초기 집단 중심(질심)을 확정하는 알고리즘
    probabilities = np.repeat(1/n, n)
    centroids = np.zeros((k, 2))
    distances = np.zeros((n, k))
    
    for in in range(k):
      centroids[i] = data[np.random.choice(np.arange(n), p=probabirities, size=(1))]
      distances[:, i] = np.sum((data - centroids[i]) ** 2, axis=1)
      probabilities = np.sum(distance, axis=1) / np.sum(distance)
    
    확률을 설정하다.확률이니까 다 합치면 1이야.
    총 거리에서 각 데이터의 거리 비율을 계산합니다.
    배율을 probabilities 변수로 설정합니다.
    거리가 멀다
    =probabilities 변수에 설정된 값이 큽니다.
    = 다음에는 질심으로 뽑힐 확률이 높다
    이런 구조.
    반대로 근거리의 데이터를 질심으로 선택하기는 어렵다.
    이렇게 먼 거리를 질심으로 선택한다.
    용어
    클러스터 센터: 중심
    실장 연습(kNN)

    위의 결과는 k의 값이 3인 경우이다.
    100×메쉬 격자선 100개 만들기
    분류 중입니다.
    넘피를 사용해 실시한 결과지만 충분히 분류할 수 있다.
    k의 값을 10으로 설정하면 매끄러운 선을 그립니다.
    왜냐하면 어느 정도의 k가 적당한지 기계적으로 찾기가 어려워요.
    사람의 눈으로 결과를 볼 때, 매개 변수 (kNN의 경우 k) 의 값이 적절한지 여부
    판단할 필요가 있다.
    scikit-learn을 사용하는 KNeighbors Classifier반 사람들도 시행을 시도했다.
    넘피 때와 같은 그림을 그렸어요.
    물론 NumPy가 직접 쓴 것과 같은 알고리즘으로
    KNeighbors Classifier 반이 운영 중이죠.
    실장 연습(k-means)

    이거는 iter.max=100의 경우.
    예쁘게 모일 수 있어요.
    해보다max=2 실행 후
    그래도 예쁘게 모일 수 있어요.
    (100의 경우와 분류 경계는 거의 같다)
    이번 데이터는 세 가지로 나뉘어져 있습니다.
    클러스터 센터를 다시 계산하는 횟수도 줄일 수 있겠지.
    반대로 데이터가 명확하게 구분되기 어려운 상황에서
    집단의 중심을 여러 번 다시 계산해야 하죠.

    좋은 웹페이지 즐겨찾기