ML week9.2
2025.05.01 Thu PM 1:01 ・ 74Minutes 45seconds
ZHANG YIWEN
机器学习第 9.2 周 2025.05.01 周四 下午 1:01 ・ 74 分钟 45 秒 张义文
Attendees 1 00:00
할 거 하시다. 40분에 조기 퇴식 가능합니다.
出席人数 1 00:00 您将要开始。可在 40 分钟时提前退出。
Attendees 1 00:09
네 수업 시작하겠습니다. 이번 주는 이제 언스퍼 와이스 러닝 할 거고요.
제가 이 클래스에 기본 코드랑 그리고 오늘 사용할 데이터셋도 같이 올려드렸었습니다.
各位好,课程现在开始。这周我们将学习无监督学习。我已经上传了这节课的基础代码和今天要使用的数据集。
Attendees 1 00:25
저희 제출 파일 형식 지켜주셔야 되시고요. 한 번 더 공지드리.
请大家务必遵守提交文件的格式。我再次强调一下。
Attendees 1 00:36
네 그러면 수업 시작하겠습니다. 일단 처음에는 이제 이론 수업 시간에 배우셨던 케이민즈 클러스터링 한 번 더 볼 건데요.
케인즈는 이제 간단하게 설명을 드리면 이제 다음과 같은 순서에 따라서 진행을 하게 되죠.
일단은 이제 초기 중심점을 랜덤하게 선택을 한 다음에 그리고 각 샘플을 이제 가장 가까운 중심점에 할당을 시켜놓고 그리고 이제 군집에 속한 데이터들의 이제 평균 좌표를 계산을 해서 다시 설정을 하고 수령할 때까지 이 두 번째랑 세 번째 단계 그러니까 클러스터가 바뀌지 않을 때까지 반복을 하는 그런 방법이죠.
그래서 저희는 일단 2차원 데이터에서 한번 실험을 해볼 거고요.
일단은 원 파일 불러오고 그리고 사이클론에서 제공하는 이제 메이크 블록스라는 그런 메소드가 있어요.
이거는 이제 클러스터링을 할 때 몇 개의 군집이 있는 데이터셋을 만들어주는 그런 메소드입니다.
参会者 1 00:36 好的,那么我们开始上课。首先,我们将再次回顾理论课上学过的 K 均值聚类。K 均值简单来说,按照以下顺序进行。首先随机选择初始中心点,然后将每个样本分配到最近的中心点,接着计算属于每个聚类的数据点的平均坐标并重新设置,直到聚类不再改变为止。我们将首先在二维数据上进行实验,并使用 Cyclone 提供的 make blobs 方法。这是一种在聚类时创建具有指定数量聚类的数据集的方法。
Attendees 1 01:34
그래서 저희는 x랑 y 설정하면 되는데 리크 값을 그대로 가져와서 여기서 보시면 샘플 수는 150개고 그리고 센터는 3개 그러니까 클로스터 개수가 3개죠.
그리고 이제 얼마나 유지되었는지 표준 편차는 0.7로 잡는다고 되어 있네요.
그러면 이런 조건에 맞춰서 작성을 해줄게요.
参会者 1 01:34 因此,我们需要设置 x 和 y,直接使用 leak 值。从这里可以看出,样本数是 150 个,中心点是 3 个,也就是说聚类数量为 3。并且标准差设置为 0.7。那么我们将根据这些条件进行编写。
Attendees 1 02:08
여기서 보시면 일단 샘플 개수는 150개고 그리고 2차원이고 센터는 3개 이렇게까지 돼 있죠.
이렇게
从这里可以看到,样本数是 150 个,是二维的,中心点是 3 个,就是这样。
Attendees 1 02:21
양동치
杨冬池
Attendees 1 02:31
윈덤 스테이트는 0입니다. 보시면 아까 여기서 표준편차는 0.7로 한다고 했으니까 0.7로 설정을 했고 셔플은 이제 데이터를 생성한 다음에 섞는 거죠.
섞을 거고 랜덤 스테이트는 0으로 설정을 하겠습니다.
参加者 1 02:31 温德姆状态是 0。正如您所看到的,之前在这里我们说标准差是 0.7,所以设置为 0.7,然后在生成数据后进行洗牌。我们将进行洗牌,并将随机状态设置为 0。
Attendees 1 02:48
이렇게 해서 실행을 해 주시면 이제 저희가 원하는 대로 샘플이 150개고 피처가 2개인 그런 데이터셋이 완성되는 것을 확인하실 수가 있겠죠.
그리고 생성된 이 샘플을 그래프로도 확인을 해볼 건데 저희가 이제 산정도로 확인을 할 수가 있겠죠.
그리고 얘는 지금 클러스터를 저희가 따로 정리를 하지 않은 상태니까 컬러는 텍스트로 해서 확인을 해보겠습니다.
그거 실행해 주시면은 이렇게 이제 아까 센터가 3개였죠 그래서 약간 3개의 이제 클러스터가 생성된 것을 확인하실 수가 있습니다.
参加者 1 02:48 这样执行后,您可以确认我们想要的数据集已经完成,包含 150 个样本和 2 个特征。接下来我们将通过散点图来确认生成的样本。由于我们尚未对聚类进行特别处理,因此我们将使用文本颜色来确认。执行后,您可以看到之前提到的 3 个中心点,因此生成了大约 3 个聚类。
Attendees 1 03:35
여기서 코드 잠깐만 보여드릴게요.
与会者 1 03:35 我这里稍微给大家展示一下代码。
Attendees 1 03:53
그리고 그 과제 제출해 주실 때 실행 안에 실행을 다 한 번씩 시켜보시고 돌아가는지 확인하시고 제출 부탁드립니다.
그러면 지금 저희가 처음에 데이터를 생성할 때는 클로스터 개수를 3개로 했는데 만약에 저희가 2개를 기준으로 k 클러스터링을 진행을 해보면 어떻게 될지 또 확인을 해볼게요.
사이클럼에서 제공하는 케이인지를 사용을 할 거고요.
이때 이제 두 개로 정해주면 되겠죠. 똑같이 방금 불러온 케인즈 가져오고 클러스터 개수를 2개로 설정해 줍니다.
与会者 1 03:53 另外,提交作业时请先运行一遍确保都能正常运行后再提交。现在我们最初生成数据时是用 3 个聚类,如果我们以 2 个为基准进行 K 聚类,让我们看看会发生什么。我们将使用 Sklearn 提供的 K-means 方法。这时只需将聚类数量设置为 2 个。和刚才一样,调用 K-means,并将聚类数量设置为 2。
Attendees 1 04:52
이렇게 진행을 하면은 클러스터 개수 그러니까 k죠 k는 2개고 이거는 이제 서로 다른 이제 초기의 중심점을 10번 정도 시도를 한 다음에 이제 선택을 하는 거고 이미은 완전하게 이제 초기 중심점을 랜덤하게 잡는다는 그런 의미죠.
그리고 아까 위에서 이제 수 더 이상 클러스터가 바뀌지 않을 때까지 반복한다고 했지만 만약에 그렇게 한 계속 바뀐다고 해도 300번 정도 반복을 하고 멈춘다는 의미겠죠.
똑같이 랜덤 스테이크는 0으로 잡아져 있습니다.
그리고 위에서 이제 k엔즈를 정의를 했죠. 그러면 이 조건에 따라서 s 값에 대해서 이제 예측 라벨을 구하면 되겠죠.
이렇게 해서 실행을 해 주시면
如果这样进行,那么聚类的数量,也就是 k 是 2 个,并且是在尝试 10 次不同的初始中心点后进行选择。这意味着现在完全是随机选择初始中心点。就像之前提到的,继续重复直到聚类不再发生变化,但如果持续变化,则会在大约 300 次迭代后停止。同样,随机种子被设置为 0。既然我们已经定义了 k-means,那么根据这些条件,我们可以为 s 值获取预测标签。请这样执行。
Attendees 1 05:47
실행을 해 주시면 다음과 같이 이제 저희가 k를 e로 설정을 했으니까 클러스터가 0번 클러스터 아니면 1번 클러스터가 나오겠죠.
그래서 이렇게 두 개로 나뉜 것을 확인하실 수가 있습니다.
执行后,由于我们将 k 设置为 e,所以将出现 0 号聚类或 1 号聚类。因此,您可以看到数据被分为两个簇。
Attendees 1 06:07
이거 오류 뜨는 거는 만약에 불편하신 분이 있으시면 주피터 프트북 사용하시면은 OS에서 OS 불러온 다음에 이 설정 수정해 주시면 됩니다.
如果有人感到不便,可以使用 Jupyter 笔记本,在操作系统中加载操作系统后修改这些设置。
Attendees 1 06:23
예를 들어서 이거는 이제 하실 분만 하시면 되고요.
그다음 리포트 오이스 한 다음에 이렇게 설정해 주시면 안 뜹니다.
그리고 이제 위에서 0번째랑 첫 번째 클러스터가 이제 나뉘어지는데 그 클러스터의 센터 그러니까 중심점을 한번 출력을 해볼게요.
그러면
例如,这只需要有人完成。然后创建报告后,这样设置就不会出现问题。现在我将输出第 0 个和第一个聚类的中心点。
Attendees 1 06:56
이렇게 출력을 해 주시면 이제 위에서 정의했던 케이민즈의 이제 클러스터 센터를 출력해 와서 저희가 확인할 수가 있습니다.
다음과 같은 좌표에 이제 클러스터 센터가 있는 거죠.
如果您这样输出,那么我们就可以查看之前定义的 K-means 的聚类中心。下面是聚类中心的坐标。
Attendees 1 07:12
그러면 이렇게 된 것을 또 확인을 그래프로 확인을 해볼게요.
그러면 여기서 보시면 아까 두 개로 했으니까 0번째랑 첫 번째 클러스터가 있겠죠.
그래서 0번째 클러스터는 빨간색으로 하고 첫 번째 클러스터는 파란색으로 해서 저희가 출력을 해볼 거예요.
그리고 이제 클러스터 센터를 아까 위에서 확인을 할 수가 있었죠.
얘는 이제 노란색 별로 한번 확인을 해볼게요. 실행을 해주면 이렇게 빨간색이랑 파란색으로 분리가 된 걸 확인하실 수가 있죠.
근데 저희가 처음에 생성을 했을 때 센터 개수를 3개로 잡았으니까 원래 클러스터는 이제 보기에 깔끔한 클러스터는 k가 3일 때인데 지금은 k k가 2가 되도록 저희가 설정을 했으니까 이렇게 빨간색 그리고 파란색만 있는 걸 확인하실 수가 있죠.
만약에 k를 3으로 하면 요거나 요거 중에 하나가 바뀌겠죠.
그래서 k를 3으로 한번 해보도
那么接下来我们将通过图形来确认这一点。从这里可以看到,由于我们之前分成了两个聚类,所以会有 0 号和 1 号聚类。因此,0 号聚类将用红色表示,1 号聚类将用蓝色表示。我们之前已经确认了聚类中心,现在我将用黄色星号来标记。执行后,您可以看到红色和蓝色已经分离。但是,由于我们最初设置的聚类中心数量为 3,而最干净的聚类是 k=3 时的情况,现在我们已将 k 设置为 2,所以您只能看到红色和蓝色。如果将 k 设置为 3,那么其中一个会发生变化。所以让我们尝试将 k 设为 3。
Attendees 1 08:14
똑같이 하면 되겠죠.
大家按照同样的方式进行操作就可以了。
Attendees 1 08:59
여기서 보시면 아까는 이제 k가 2였을 때가 n 클러스터의 개수가 2였죠.
근데 그거를 지금 3으로만 바꿨어요. 이 클러스터를 예측할 수 있겠죠.
위에서 정리한 km을 가져와서 똑같이 PPT x를 해줍니다.
在这里您可以看到,刚才是当 k 为 2 时,聚类的数量是 2。现在我们只是将其改为 3。这样就可以预测这些聚类了。我们将使用上面整理的 km,并按照同样的方式进行 PPT x 操作。
Attendees 1 09:30
그러면 똑같이 이렇게 0이랑 0 번째랑 첫 번째랑 두 번째 이렇게 3개로 나뉜 것을 확인하실 수가 있어요.
아이거 하나 찍고 다시 해야 되나 그러면
因此,您可以看到它被分为 0、第 0 个和第一个、第二个这 3 个部分。我在想是否需要点击一下然后重新做。
Attendees 1 09:47
클로스터 센터를 확인할 수가 있겠죠.
您可以确认聚类中心。
Attendees 1 09:58
같이 km 클로스터하고 센터스 이렇게 출력하시면 3개가 나오죠.
저희가 k를 3으로 설정을 했습니다. 그러면 또 그래프를 확인을 해보면 되겠죠.
여기서 보시면 지금 빨간색이랑 파란색이랑 이번에는 이제 연두색으로 표현을 할 건데 각각 이제 첫 번째 클러스터, 두 번째 클러스터 세 번째 클러스터로 되어 있죠 빈칸은 그러면 여기에서 두 번째랑 세 번째 클러스터일 때 각각 1이랑 2였으니까 똑같은 값인데 0번째를 써주면 되겠죠.
参与者 1 09:58 一起输出 km 聚类和中心,这样就会出现 3 个。我们将 k 设置为 3。然后可以查看图表。在这里,您会看到现在用红色、蓝色和这次用浅绿色来表示,分别代表第一个聚类、第二个聚类和第三个聚类。那么空白处,当第二个和第三个聚类分别为 1 和 2 时,您可以写 0。
Attendees 1 10:39
아니면 이거 복사 붙여놓기 하셔가지고 이 값만 바꾸셔도 돼요.
参与者 1 10:39 或者您也可以复制粘贴,然后只更改这个值。
Attendees 1 10:54
그리고 똑같이 센터는 노란색 별로 표시를 해줘야죠.
그래서 실행을 해 주시면 이렇게 표현된 걸 확인하실 수가 있죠.
아까는 이제 연두색이 하나가 따로 나와 있었고 빨간색이랑 파란색이랑 하나의 클러스터가 됐었는데 그때는 이제 센터가 가운데 있었어.
근데 지금은 저희가 k를 3으로 했기 때문에 센터가 각 클러스터의 중심에 안정적으로 이렇게 들어가 있죠.
그러면 이렇게 시각화해서 저희가 확인을 할 수도 있고 또 다른 방법을 사용해서 k가 몇 개가 적절한지 확인을 할 수가 있겠죠.
일단 첫 번째로 이제 앨범 에서부터 확인을 해 보다.
여기서 보시면 이제 앨버 메소드를 사용을 해서 이제 클러스터의 적절한 개수를 확인한다고 되어 있죠.
听众 1 10:54 同样的,中心应该用黄色星号标记。因此,执行后,您可以看到这样的表示。之前,绿色的点是单独的,红色和蓝色是一个聚类,当时中心在中间。但现在,因为我们将 k 设为 3,所以中心稳定地位于每个聚类的中心。这样,我们可以通过可视化来确认,也可以使用其他方法来确定 k 的适当数量。首先,让我们从图表中确认。在这里,您可以看到使用肘部法来确定聚类的适当数量。
Attendees 1 11:46
이제 여기서 보시면 이제 SSE 같은 경우에는 이제 사업 스퀘어 제어제 그러니까 클러스터 내에 각 점이랑 이제 중심 간의 거리 제곱의 합인데 이 값이 이제 작을수록 클러스터가 밀집되어 있고 값이 클수록 클러스터가 좀 커져 있겠죠.
이걸 가지고 이제 저희가 판단을 할 수가 있습니다.
여기서 보시면 x는 각 데이터의 포인트고 요 u는 중심점이겠죠.
그리고 얘는 이제 각 데이터가 클러스터에 들어가는지 안 들어가는지 반환하는 그런 값이겠죠.
그래서 이 값을 사용해서 저희가 이제 k가 몇 개일 때가 적절한지 확인을 해볼 수가 있습니다.
이거는 이제 사이킬라에서 이 메소드를 사용하면 이제 자동적으로 계산을 해서 리턴을 해줍니다.
그러면 일단은 아까 똑같은 데이터셋에 대해서 k가 3일 때 이제 얘를 확인을 해보면 실행을 시켜 해주시면 지금은 이제 142.05가 되겠죠.
만약에 그러면 이게 이제 2일 때는 조금 더 퍼져 있겠죠.
听众 1 11:46 在这里,您可以看到 SSE(平方误差和)是指每个点与中心之间距离的平方和。这个值越小,聚类就越紧密;值越大,聚类就越分散。我们可以用这个来判断。这里的 x 是每个数据点,u 是中心点。而这个值表示每个数据是否属于聚类。因此,我们可以使用这个值来确定 k 的适当数量。在 sklearn 中,这种方法可以自动计算并返回结果。对于之前相同的数据集,当 k 为 3 时,执行后,现在是 142.05。如果 k 为 2,那么聚类可能会更加分散。
Attendees 1 12:53
그러면 각 k의 변화 값에 따라서 이게 11대인데 이거로 잡는다.
각 k의 변화 값에 따라서 얼마나 퍼져 있는지를 한번 그래프로 직접 이런 식으로 확인을 해볼게요.
그럼 똑같이 k 미즈를 하면 되는데 저희는 k의 변화에 대해서 그래프를 확인 이 값을 구하고 그걸 그래프로 나타낼 거니까 똑같이 케인즈를 해주는 k 인즈를 정의를 해주는데 클러스터 값만 이제 i로 설정을 해 주면 되겠죠.
프로스트인데 원래는 여기에 저희가 상수를 넣었죠.
근데 지금은 아이를 넣어주겠습니다. 그러면 이게 포이 이제 1부터 10까지니까 이 k가 1부터 이제 10까지 하나씩 순차적으로 변화해서 그 값을 계산할 수가 있겠죠.
나머지는 동일하게 넣어주고
参会者 1 12:53 那么,根据每个 k 的变化值,这是 11 代,我们将按此分类。我们将通过图表直接确认每个 k 的变化值对应的分散程度。那么,与使用 k 均值时相同,我们将定义 k 均值,并将聚类值设置为 i。在原来的地方,我们放入了常数,但现在我们将放入 i。那么,由于这是从 1 到 10,k 将从 1 到 10 逐步变化,我们可以计算这些值。其余部分保持不变。
Attendees 1 13:50
여기만 또 달라지는데 원래 위에서는 이제 케이민즈를 설정을 하고 이 초기화 방법을 그러니까 초기 점을 잡는 방법을 완전 랜덤으로 했는데 이 케이맨즈 방법을 사용을 하게 되면은 랜덤하게 선택을 할 때 이제 거리도 계산을 해가지고 조금 더 효율적으로 초기 값을 잡을 수가 있습니다.
그 외에는 똑같이 300번까지 설정을 해주고 랜덤 스테이트는 0으로 해줄게
参会者 1 13:50 这里有所不同。之前,我们设置了 k 均值并使用完全随机的方法来初始化点。但使用 k 均值方法时,在随机选择时,我们通过计算距离可以更有效地选择初始值。其他方面保持不变,设置为 300 次,随机状态设为 0。
Attendees 1 14:24
그러면 이렇게 했으면 이제 정리를 한 것에 대해서 피팅을 시켜야겠죠.
그래서 엑스를 피팅을 시키고
那么,现在我们应该对已经整理的内容进行拟合。因此,要对 X 进行拟合
Attendees 1 14:37
값을 계산해서 넣어주면 됩니다.
计算出值并插入即可。
Attendees 1 14:45
여기서 보시면 이 거리 값 저희가 계산된 얼마나 퍼져 있는지 그 값을 이렇게 정의한 리스트에 지금 하나씩 넣어주게 되죠.
그럼 요 포문이 반복이 되면은 k가 1부터 10까지일 때 각 값들이 반환이 돼서 이제 리스트로 들어가지고 값들을 이렇게 출력을 할 수가 있겠죠.
그래서 실행을 해서 이거 워닝 없애시려면 아마 코을 재시작하고 아까 위에서 말씀드렸던 거 이거 설정하셔가지고 다시 하시면 될 것 같습니다.
그러면 지금 여기 보시면 k가 1일 때부터 이제 10일 때까지 얼마나 이제 왜곡되어 있는지 왜곡도가 이제 이렇게 감소하고 있죠.
여기서 보시면 k가 1일 때는 많이 퍼져 있고 2일 때는 1보다는 적게 퍼져 있고 3일 때 그리고 얼마나 퍼져 있는지가 가장 감소를 하고 그 이후부터는 조금 완만하게 줄어들죠.
그래서 저희가 이제 봤을 때는 이 그래프 상에서는 k가 3일 때 가장 적절하다라고 판단을 할 수가 있겠죠.
参会人员 1 14:45 在这里,我们计算这个距离值,看看它是如何分散的,并将这个值定义在这个列表中一一添加。当这个 for 循环重复时,对于 k 从 1 到 10,各个值都会返回并进入列表,然后我们可以输出这些值。因此,如果要消除警告,可能需要重新启动代码,并按照之前提到的设置重新操作。现在您可以看到,从 k=1 到 k=10,失真度是如何递减的。当 k=1 时,数据点分散得很广,当 k=2 时,分散程度比 k=1 小,到 k=3 时,分散程度降到最低,之后就会平缓地减少。因此,从这个图表来看,我们可以判断 k=3 是最合适的。
Attendees 1 15:50
근데 이제 케빈즈에서 k 값을 산정을 할 때 요 에로 방법을 사용을 해도 되고 아니면 이제 실루 개수를 사용을 해도 됩니다.
그러면 여기 보시면 이제 그 각각의 두 개의 값을 구한 다음에 그걸로 이제 개수를 계산하게 되는데 이거는 이제 첫 번째는 이제 응집도죠.
코이션이니까 그리고 두 번째는 얼마나 분리되어 있는지 세퍼레이션이죠.
그래서 이제 동일한 클러스터와 이제 얼마나 가까운지 그리고 이제 가까이 있는 클러스터랑 이제 평균 거리 얼마나 가까운지 그래서 이제 위에 값은 이제 낮을수록 그러니까 좋은 거고 아랫값은 높을수록 좋겠죠.
왜냐하면 위에는 이제 같은 클러스터 내에서 거리를 구하는 거니까 같은 클러스터 내에서는 거리가 짧아야 그러니까 거리가 가까워야 잘 뭉쳐져 있는 거라고 저희가 판단을 할 수 있으니까요.
그럼 이 두 개의 값을 계산을 한 다음에 다음과 같은 이제 공식에 따라서 신뢰의 개수를 계산할 수가 있겠죠.
参会人员 1 15:50 在 K-means 中确定 k 值时,可以使用肘部方法,也可以使用轮廓系数。在这里,我们会计算这两个值,然后根据它们计算数量。第一个是内聚度,第二个是分离度。它衡量同一聚类内部的距离,以及不同聚类之间的距离。对于上面的值,越低越好;对于下面的值,越高越好。因为上面的值是计算同一聚类内的距离,在同一聚类内,距离越短意味着点越紧密。然后,在计算了这两个值之后,我们可以根据以下公式计算轮廓系数。
Attendees 1 16:51
그래서 공식은 이렇게 되어 있지만 얘도 사이클론에서 이제 실내 스코어를 사용을 하면은 자동으로 계산을 해서 반환을 해주겠죠.
똑같이 이제 인포 한 다음에 계산을 해주겠습니다.
여기서 보시면 아까 위에서는 k가 1부터 이제 10까지로 했었는데 지금은 이제 k가 2부터 시작을 하게 되죠.
왜냐하면 이제 k가 1일 때는 실내 개수를 구할 수가 없기 때문에 이렇게 진행을 하면 됩니다.
그러면 똑같이
因此,虽然公式是这样的,但在气旋中使用内部得分时,它会自动计算并返回。同样地,在进行信息处理后进行计算。在这里,你可以看到之前是从 k=1 到 k=10,但现在 k 从 2 开始。这是因为当 k=1 时无法计算内部数量,所以这样进行。
Attendees 1 17:28
제인 클러스터는 아이로 두고 나머지는 위에서 외부 메소드 할 때랑 똑같이 넣어주시면 됩니다.
将基尼聚类设为一个,其余部分与之前外部方法时一样放置即可。
Attendees 1 18:00
이렇게 하시면 되겠죠. 똑같이 위에서 정리하는 걸 프린트로 하고요.
如果这样做,对吧。同样地,从上面整理并打印出来。
Attendees 1 18:11
신의 기수를 보는 게 좋아
喜欢看神的基数
Attendees 1 18:41
그리고 저희는 거리 계산을 이제 유클리드 거리를 사용해서 거리를 계산을 해서 실력 개수를 구해보겠습니다.
이게 실행을 해 주시면 이런 그래프를 확인하실 수가 있죠.
그래서 이 그래프에 따르면 k가 3일 때 이제 실내 스코어가 가장 높죠.
그러면 이제 위에서 봤던 앨버 메소드를 사용한 그래프랑 아래에서 이제 실내 기술을 사용한 그래프를 통합을 했을 때 k가 3일 때 가장 좋다라는 걸 확인할 수가 있습니다.
与会者 1 18:41 现在我们将使用欧几里得距离来计算距离,并确定实例的数量。如果执行此操作,您可以看到这样的图表。根据这个图表,当 k 为 3 时,轮廓分数最高。因此,综合使用上面看到的肘部方法图和下面的轮廓技术图,我们可以确认当 k 为 3 时是最佳的。
Attendees 1 19:17
잠깐만 인간 여기 수준
与会者 1 19:17 稍等,人类水平
Attendees 1 19:56
그러면 지금까지는 저희가 아까 2차원에서 클러스터가 어떻게 분포되어 있는지 확인을 했는데 이번에는 이제 피처가 3개일 때 3D 데이터에 대해서 확인을 해볼게요.
이번에도 똑같은데 이제 메이크 블록스 함수를 사용을 해 줄 건데 샘플이 250개고 이거는 피처가 2개가 아니라 3개죠.
그리고 센터는 5개를 잡는다고 합니다. 그리고 분포되어 있는 건 2.0이니까 아까보다는 조금 더 멀리 퍼져 있는 거겠죠.
그리고 이번에 멤버 스테이트를 1로 해서 실행을 해 주시면 이렇게 이제 데이터가 만들어진 걸 확인하실 수가 있겠죠.
그럼 얘도 똑같이 이제 플렛으로 확인을 해볼 건데 얘를 사용해서 3차원 그래프를 출력할 수가 있겠죠.
이렇게 실행을 해 주시면 이렇게 분포된 걸 확인하실 수가 있습니다.
얘도 이제 저희가 클러스터를 정의를 안 했으니까 하얀색으로 출력을 했죠.
그러면 방금 했던 거랑 비슷하게 갈 건데요.
到目前为止,我们已经在二维空间中确认了聚类的分布情况,现在我们将检查特征为 3 个时的 3D 数据。这次和之前类似,我们将使用 Make Blocks 函数,样本数为 250 个,特征不是 2 个而是 3 个。中心点设为 5 个,分布范围扩大到 2.0,比之前更分散。将成员状态设为 1 后,您可以看到数据已生成。然后我们将像之前一样使用 Plot 来输出三维图形。执行后,您可以看到数据的分布。由于我们尚未定义聚类,所以以白色显示。接下来我们将执行类似之前的操作。
Attendees 1 20:57
첫 번째로 이제 에버 메소드를 사용을 해서 다시 클러스터 k가 얼마일 때가 적절한지 그래프를 통해서 확인을 해보겠습니다.
확인을 해 주시면
首先,我们将使用肘部方法来确定最合适的聚类数 k,并通过图表进行验证。
Attendees 1 21:47
똑같이 케이민즈를 정의를 할 수가 있겠죠.
与会者 1 21:47 我们同样可以定义 K-means。
Attendees 1 21:54
지 이틀만 시켜줄 거
与会者 1 21:54 只需要给我两天的时间
Attendees 1 21:59
리스트에 이제 계산한 값들을 하나씩 넣어주면 되겠죠.
现在可以依次将计算出的值逐个放入参与者 1 的列表中。
Attendees 1 22:14
그래서 실행을 해 주시면 이렇게 그래프가 나오는 걸 확인하실 수가 있습니다.
여기서 보면은 지금 애매하긴 한데 일단 k가 1이랑 2일 땐 2랑 3일 때는 아니고 4 아니면 5일 때 이제 좀 그전에는 이제 급격하게 줄어들다가 그다음에 이제 좀 완화된 걸 확인하실 수가 있죠.
그러면 그다음에는 이제 실내 개수를 또 확인을 해볼게요.
얘도 위랑 똑같이 작성을 해주면 되겠죠.
执行后,您可以看到这样的图表。从图中可以看出,虽然看起来有点模糊,但是当 k 为 1 和 2 时,2 和 3 时不是,而在 4 或 5 时,之前曲线急剧下降,然后变得相对平缓。接下来,我们将再次确认室内数量。按照上面的方法编写即可。
Attendees 1 23:21
세팅을 시켜주고
让我为与会者 1 设置为 23:21
Attendees 1 23:37
전환된 값을 리스트에 붙여주면 되겠죠.
与会者 1 在 23:37 将转换后的值附加到列表中就可以了。
Attendees 1 23:58
이렇게 해서 실행을 시켜주시면 다음과 같은 그래프를 확인할 수가 있는데 여기서는 지금 k가 4일 때가 신뢰 개수가 가장 높게 나오죠.
저희가 원래 클러스터를 5개 만들었는데 지금 두 개의 값을 종합을 해보면 k가 4일 때 가장 적절하다고 하니까 한번 k가 4일 때 케임인지를 확인을 해볼게요.
参会者 1 23:58 这样执行后,您可以看到如下图表,在这里现在 k 为 4 时置信度最高。我们原本创建了 5 个聚类,但是综合这两个值来看,k 为 4 时最为合适,所以我将确认一下 k 为 4 时的情况。
Attendees 1 24:26
그러면 아까는 i로 설정을 했었는데 이번엔 똑같이 케이 인지 할 때 이제 아 대신에 4를 넣어주면 되겠죠.
参会者 1 24:26 那么之前是用 i 来设置的,这次同样在确定 k 时,只需要将 a 替换为 4 即可。
Attendees 1 25:05
이렇게 해 주시면 k가 4니까 이제 클러스터가 0 번째부터 첫 번째 두 번째 세 번째 이렇게 4개로 나눠져 있는 것을 확인하실 수가 있죠.
그리고 얘도 이제 센터를 출력해 볼 수 있겠죠. 똑같이 이제 km에서
如果这样做的话,因为 k 是 4,现在集群将从 0 开始分为第一个、第二个、第三个,共 4 个,你们可以确认这一点。而且现在也可以输出中心点。同样,现在在 km 中
Attendees 1 25:29
그래서 여기서 출력을 하면은 이렇게 나오는 걸 확인하실 수가 있습니다.
所以在这里输出的话,你们可以看到是这样的。
Attendees 1 25:37
혹시 미니 할 때 랜덤으로 네 잠시만요 된다고 했는데
参会者 1 25:37 不好意思,我在迷你时想随机问一下,可以吗?
Attendees 1 26:32
네 이거 랜덤으로 해도 결과는 동일해서 편하신 걸로 하시면 되는데 일단 수업 시간에는 랜덤으로 할게요.
잠깐 이것만
参会者 1 26:32 是的,即使随机,结果也是相同的,所以你可以用你觉得舒服的方式。现在课堂上我们先用随机方式。稍等一下,只是这个。
Attendees 1 26:49
이게 초기화 방법이 절대적인 건 아니라서 거리를 조금 더 계산을 하는 거지 이제 지금 같은 상황에서는 좀 명확하게 나뉘어 가지고 결과가 동일하게 나오는 것 같습니다.
그럼 일단 랜덤으로 하고요. 이렇게 하시면 클러스터 센터가 4개로 나오는 걸 확인하실 수가 있어요.
또 얘도 플롯을 찍어서 확인해 볼 수 있겠죠. 똑같이 이제 3D고 이거는 색깔이 4개죠.
아까는 이제 그림까지만 있었는데 이번 옐로까지 추가를 해서 확인을 해보면 이렇게 4개로 나뉘는 걸 확인하실 수가 있습니다.
参与者 1 26:49 这个初始化方法并不是绝对的,所以再多计算一下距离。在目前这种情况下,结果看起来已经很清晰地分开了。那么先随机进行。这样您就可以看到聚类中心分为 4 个。同时,我们也可以绘制图表来确认。同样是 3D,颜色是 4 个。之前只有图,这次增加了黄色,我们可以确认它已经分成 4 个部分。
Attendees 1 27:30
아니다. 이거 그냥 k 민지로 할게요. 어차피 결과가 똑같이 나오니까 해서 해주시면 될 것 같습니다.
参与者 1 27:30 不,我们就用 k 均值算法吧。反正结果是一样的,这样就可以了。
Attendees 1 27:48
여기서부터 이렇게 하시고 이렇게 하시고
从这里开始这样做,然后这样做
Attendees 1 28:05
클러스터 센터 출력을 하시고 그다음에 클라 실행해 주시면 됩니다.
输出聚类中心,然后执行客户端即可
Attendees 1 28:19
이제 다른 클러스터링 방식을 확인을 해볼 건데 이렇게 하이어라키칼 클러스터링 해가지고 계층적으로 클러스터링을 하는 다른 방법이 또 있어요.
여기 보시면 이제 일반적으로 이제 버터 방식이라고 해서 모든 데이터가 이제 처음에는 각 데이터셋 하나가 이제 각 하나의 클러스터로 시작을 해가지고 이제 계층적으로 올라가면서 가장 가까운 클러스터 상끼리 만나서 합쳐지는 그런 방식입니다.
그래서 이제 처음에는 이제 데이터가 20개라고 가정을 하면 20개가 각각의 클러스터였다가 이제 거리에 가까운 게 하나씩 합쳐지면서 최종적으로 이제 저희가 원하는 개수의 클러스터가 되겠죠.
그래서 순서는 이제 모든 데이터셋에 대해서 이제 거리 디시전 매트릭스를 계산을 한 다음에 여기서 보시는 바와 같이 모든 데이터가 이제 사이즈가 키인 클러스터에서 시작을 하고 이제 가장 가까운 두 개의 클러스터를 합쳐 가지고 새로운 클러스터를 만들게 됩니다.
接下来,我们将查看另一种聚类方式,这是层次聚类。这是一种通过层次的方式进行聚类的方法。从这里可以看出,通常使用自底向上的方法,从一开始每个数据集都是一个单独的聚类,然后逐步向上,最近的聚类彼此合并。例如,假设我们有 20 个数据点,它们最初是 20 个独立的聚类,然后根据距离逐渐合并,最终形成我们想要的聚类数量。具体步骤是:首先计算所有数据集的距离决策矩阵,然后从每个数据点都是一个独立的大小为 1 的聚类开始,找出最近的两个聚类并将其合并成一个新的聚类。
Attendees 1 29:17
그러면 이제 새로운 클러스터를 만든 다음에 다시 디시전 매트릭스를 계산을 하겠죠.
그래서 클러스터가 하나가 나오네요. 그러니까 모든 데이터셋이 하나의 클러스터에 속하게 되면 다 합쳐지면 이제 알고리즘이 멈추게 되겠죠.
얘도 이제 2차원 데이터로 한번 실습을 해볼게요.
여기서 보시면 샘플은 일단 20개라고 했고 그리고 센터는 3개를 잡고 그리고 표준편차는 0.5로 해서 저희가 데이터를 생성을 해 주겠습니다.
그러면 20바이 2 이렇게 쉐입이 나오겠죠. 그중에서 이제 처음에 5개만 출력을 해보면 이렇게 나오겠죠.
然后创建新的聚类后,再次计算距离决策矩阵。当所有数据集最终合并到一个聚类中时,算法就会停止。我们将用二维数据进行一次实践。在这里,我们首先生成 20 个样本点,选择 3 个中心,标准差设为 0.5,这样会得到一个 20x2 的形状。从中,我们首先输出前 5 个,结果如下。
Attendees 1 29:57
그러면 아까 말씀드린 대로 지금 샘플 개수가 20개니까 처음에 시작할 때는 20개의 이제 클러스터에서 시작을 하겠죠.
그다음에 또 어떻게 분포되어 있는지 데이터를 확인을 해보면
正如我之前所说,由于现在样本数量是 20 个,所以一开始我们将从 20 个聚类开始。然后,我们可以查看数据是如何分布的
Attendees 1 30:16
이렇게 나눠진 걸 확인할 수가 있죠. 저희가 아까 센터를 3개로 잡았으니까 이렇게 하나 이렇게 하나 이렇게 하나의 클러스터가 되는 게 가장 이상적인 그러면 아까 가까운 거리끼리 이제 붙는다가 병합된다고 말씀을 드렸는데 거리 개선 그 링크 방법은 다음과 같이 저희가 확인할 수가 있겠죠.
我们可以确认这是如何分割的。既然我们之前设置了 3 个中心,那么理想情况下就是这样形成一个聚类,一个聚类,一个聚类。正如我之前提到的,彼此靠近的点会合并,关于距离改进的链接方法,我们可以按照以下方式确认。
Attendees 1 30:44
그래서 이제 데이터가 n개일 때 이제 클러스터링은 n 마이너스 1에 이제 병합을 거치게 되니까 이제 저희가 만약에 매트릭스를 확인을 하면 다음과 같이 m 마이너스 1 4의 매트릭스로 저희가 나타낼 수가 있습니다.
그래서 이거는 이제 몇 번 클러스터인지 첫 번째 두 번째 클러스터를 나타내는 거고요.
그래서 여기 예시를 보시면 이제 1 플러스 15가 20이 이렇게 되어 있는데 이거는 첫 번째랑 두 번째 클러스터가 합쳐서 합쳐져서 그러니까 첫 번째랑 15번째 클러스터가 합쳐져서 새로운 20번째 클러스터를 만든다는 의미로 해석을 해 주시면 됩니다.
두 번째 같은 경우에는 이제 9번째랑 14번째 클러스터가 합쳐져서 21번째가 나오겠죠.
클러스터는 0부터 시작하니까 이제 21번째가 20이고 그다음에 20번째가 20인 걸로 확인, 22번째가 21인 걸로 확인을 해 주시면 될 것 같습니다.
因此,当数据有 n 个时,聚类会经过 n-1 次合并,如果我们检查矩阵,可以得到一个 m-1 × 4 的矩阵。这表示的是哪个聚类,第一个和第二个聚类。从这个例子可以看出,1 加 15 等于 20,意味着第一个和第 15 个聚类合并,创建了一个新的第 20 个聚类。第二个例子中,第 9 个和第 14 个聚类合并,形成第 21 个聚类。由于聚类从 0 开始,所以第 21 个是 20,下一个第 20 个是 20,第 22 个是 21。
Attendees 1 31:44
그래서 이것도 이제 저희가 직접 계산을 할 수는 있겠지만 다 제공을 해 주고 있기 때문에 이제 링케이지 를 인포트해 와서 저희가 계산을 해볼게요.
인키즈 메소드를 사용을 해서 이제 리키즈 매트릭스를 저희가 할 수가 있는데 똑같이 아까 위에서 만들었던 20개 있는 데이터셋으로 확인을 해볼게요.
맞지 x였죠? 이렇게 해서 쉐이블 확인해 보면 아까 위에서 봤던 대로 데이터가 20번일 때 이제 19번 네 이제 이게 나와 있겠죠 그래서 19 바이 4인 그런 쉐입을 가진 매트릭스가 나오게 됩니다.
因此,虽然我们可以直接计算,但是系统已经提供了这些信息。我们将导入链接(Linkage)并使用层次聚类方法来计算链接矩阵,同样使用之前的 20 个数据集进行验证。对吧,x?这样查看形状,就像之前看到的那样,当数据是 20 个时,现在是 19 个,因此会得到一个 19 × 4 的矩阵。
Attendees 1 32:25
그러면 이거를 이제 저희가 데이터 프레임으로 확인을 해볼 건데 여기다가 그냥 쟤를 넣어주면 되겠죠 얘를 가져와서 넣어주시면 됩니다.
저는 칠게요.
那么我们现在将确认数据框,只需将它放入即可。请把它带过来放入。我来做。
Attendees 1 32:40
그래서 컬럼은 아까 위에서 예시로 봤었던 대로 이제 합쳐질 첫 번째 클러스터 그리고 합쳐질 두 번째 클러스터 그리고 이제 거리 그리고 크기 이렇게 되겠죠.
그래서 사이즈가 2인 경우에는 이제 데이터셋이 2개가 있다는 의미고 사이즈가 3이라는 거는 데이터셋이 3개가 있다는 그런 의미겠죠.
그래서 얘를 실행을 해 주시면 이렇게 흘러갑니다.
아까 처음에 첫 번째랑 이제 15번째 클러스터가 합쳐져서 새로운 20번째가 된다고 했고 9번째랑 14번째 클러스터가 합쳐져서 21번째가 된다고 했는데 여기서 이제 세 번째로 합쳐질 때 19번째랑 21번째가 합쳐진다고 했죠.
그래서 얘가 21번째니까 사이즈가 2고 19번째는 원래 있던 데이터 하나니까 사이즈가 1이라서 총 사이즈가 3이 되는 걸 확인하실 수가 있습니다.
얘도 17번째는 원래 데이터 셋이 하나였고 20번째는 이게 이제 20번째가 되죠.
所以列将像之前示例中看到的那样,现在是第一个要合并的聚类,第二个要合并的聚类,然后是距离和大小。当大小为 2 时,意味着有 2 个数据集;大小为 3 则意味着有 3 个数据集。执行后会这样进行。之前说第 1 个和第 15 个聚类合并成新的第 20 个,第 9 个和第 14 个聚类合并成第 21 个。然后第三次合并时,第 19 个和第 21 个聚类合并。所以第 21 个大小为 2,第 19 个原本是一个数据集,大小为 1,总大小为 3,你可以看到这一点。第 17 个原本是一个数据集,第 20 个现在成为第 20 个。
Attendees 1 33:35
그래서 원래 사이즈가 2개였으니까 사이즈가 3이 되겠죠 이렇게 하나씩 합쳐지면서 다음과 같이 이제 개수가 사이즈가 점점 커지는 걸 확인하실 수가 있습니다.
그러면 이렇게 보면은 저희가 한눈에 보기 조금 애매하니까 얘를 조금 더 편하게 시각화를 하는 방법이 또 있습니다.
여기서 보시면 이제 또 제공을 해 주는 덴드로그램을 통해서 이렇게 아까 위에서 봤던 표랑 비슷하지만 조금 더 저희가 시각적으로 판단하기 쉽게 그래프를 그려볼 수가 있어요.
간단하게 인포트해온 밴드로 그림을 가져오고 어어트를 넣어주면 되겠죠 이렇게 해주면 이렇게 잘 나오는 걸 확인하실 수가 있습니다.
펜 젠드로그램 불러와서 아까 위에서 계산했던 링키즈 리조트를 넣어줬어요.
因此,最初有 2 个大小,所以大小会变成 3。随着逐一合并,您可以看到数量(大小)逐渐增加。如果这样看,对我们来说可能不太直观,所以还有另一种更方便的可视化方法。在这里,您可以通过树状图(登德罗图)来绘制一个比之前表格更容易从视觉上判断的图形。只需简单地导入带和图像,添加相应的属性即可。这样,您就可以看到图形正确显示了。
Attendees 1 34:39
그래서 그래프를 좀 보고 가자면 여기서 보시면 아래는 이제 데이터 포인트겠죠.
저희가 데이터가 20개였으니까 0번째부터 19번째까지 이렇게 데이터가 있는 걸 확인하실 수가 있고 여기 y 축을 보시면 디스턴스라고 되어 있죠.
그래서 이게 올라갈수록 더 멀리 있는 데이터들이 합쳐지는 걸 확인하실 수가 있습니다.
그래서 여기서 보시면 이제 첫 번째 단계 15번째가 합쳐져서 새로운 클러스터가 되고 여기서도 9번째랑 14번째가 합쳐져서 새로운 클러스터, 여기서도 세 번째랑 13번째가 합쳐져서 이제 새로운 클러스터가 되고 이게 이렇게 타고 올라가면은 총 하나의 클러스터가 될 때까지 반복을 하는 거겠죠.
그래서 저희는 이 세 개의 클러스터만 일단 한번 살펴볼 건데 이거는 이제 앤드로그램에서 제공을 하는 메소드를 설정을 해주면 되겠죠.
因此,看这个图表,在底部是数据点。由于我们有 20 个数据,您可以看到从第 0 个到第 19 个的数据。查看 y 轴,上面写着"距离"。随着距离增加,您可以看到越来越远的数据点被合并。例如,首先第 15 个与另一个数据点合并形成一个新的聚类,然后第 9 个和第 14 个合并,第 3 个和第 13 个也合并成新的聚类,以此类推,直到最终形成一个完整的聚类。我们将先观察这三个聚类,只需设置树状图提供的方法即可。
Attendees 1 35:38
똑같이 인퀴지 리졸트를 넣어줄 건데 이번에는
与会者 1 35:38 将以相同的方式放置询问结果
Attendees 1 35:59
클러스터가 3개일 때만 출력을 할 거예요. 그러면 위의 그래프는 원래 20개에서부터 시작을 했는데 지금 출력하는 그래프는 클러스터가 3개 남았을 때만 이렇게 출력을 해주겠죠.
与会者 1 35:59 这次只输出 3 个聚类。原本的图表是从 20 个开始,现在输出的图表只显示剩下 3 个聚类的情况。
Attendees 1 36:16
똑같이 이제 y 라벨은 디스턴스로 되어 있고 x 라벨이 이제 3개가 나오는데 쓰셨죠?
여기 여기서 보시면 7 7 6으로 되어 있죠 이거는 이제 각 클러스터에 샘플이 몇 개 들어갔는지 확인하실 수가 있습니다.
그래서 이걸 위랑 비교를 해보면 이 상태에서 가져온 거죠.
그래서 아래는 샘플이 7개고 여기는 여기도 7개 여기가 6개인 걸 확인하실 수가 있어요.
与会者 1 36:16 现在 y 标签是距离,x 标签是现在显示 3 个,是吗?从这里可以看到是 7 7 6。这是用于确认每个聚类中样本的数量。通过与上面的内容进行比较,可以看到下面的是 7 个样本,这里也是 7 个,这里是 6 个。
Attendees 1 36:48
그러면 이제 저희가 클러스터가 3개일 때 이렇게 그래프를 봤으니까 각 클러스터의 번호를 할당을 해 주겠습니다.
与会者 1 36:48 既然我们现在已经查看了 3 个聚类的图表,那么接下来我将为每个聚类分配编号。
Attendees 1 37:00
커틀이라는 걸 사용을 할 텐데요.
与会者 1 37:00 我们将使用一种叫做"库特尔"的东西。
Attendees 1 37:09
이렇게 3으로 설정을 해주면 3개의 클러스터가 남을 때까지 이제 판단을 해서 이렇게 라벨을 반환을 해줍니다.
与会者 1 37:09 如果将其设置为 3,就会判断直到剩余 3 个聚类,并以这种方式返回标签。
Attendees 1 37:29
그러면 결과는 지금 보시면 원래 이제 20개 데이터가 이렇게 나오겠죠.
근데 보기가 어려우니까 얘를 리쉐이 조금 더 깔끔하게 보겠습니다.
해서 얘를 실행을 해 주시면 똑같은 건데 이번에는 좀 보기 편하게 되어 있죠.
그래서 각 데이터가 이제 0번째 클러스터인지 첫 번째 클러스터인지 두 번째 클러스터인지 확인을 할 수가 있습니다.
그러면 이렇게 클러스터링을 했으니까 이 결과도 이제 그래프로 확인을 할 수가 있겠죠.
똑같이 빨간색 파란색 그리고 연두색으로 출력을 해보면 아까 봤을 때는 다 흰색이었는데 이제 저희가 k를 3으로 처음에 설정을 했으니까 이렇게 알맞게 클러스터링이 된 걸 확인하실 수가 있겠죠.
那么结果现在您看到的是原本 20 个数据是这样出现的。但由于看起来很困难,我们稍微重新排列一下,使其更加清晰。执行后,它仍然是相同的,但现在看起来更加方便。这样我们可以确认每个数据是属于第 0 个、第 1 个还是第 2 个聚类。那么既然我们已经进行了聚类,我们也可以用图表来确认这个结果。同样地,用红色、蓝色和浅绿色输出,您会发现之前都是白色,但是现在我们最初将 k 设置为 3,所以可以确认聚类已经正确完成。
Attendees 1 38:28
그래서 아까 랜드로그램에서 봤던 거랑 똑같이 이렇게 나오는 걸 확인하실 수가 있어요.
7개, 7개, 6개
所以您可以看到,这与之前在树状图中看到的完全一样。7 个,7 个,6 个
Attendees 1 38:44
그리고 이번에는 이제 케이민즈로 잘 분리가 되지 않는 것들은 디비 스캔을 활용을 하면은 좀 클러스터링이 잘 되는 경향이 있는데요.
보시면 이제 DB 스캔 순서는 다음과 같이 되겠죠.
일단 첫 번째로 이제 랜덤한 포인트를 잡는데 이 포인트에서 이제 엡실론 반경 안에 있는 모든 점들을 확인을 해 줍니다.
그리고 이 거리 내에 저희가 지금 여기서 보시면 민 포인트가 4로 되어 있죠.
이 반경 안에 4개가 있다고 판단이 되면은 아까 저희가 지정했던 이 피가 새로운 코어 포인트가 되는 거예요.
그래서 이렇게 하나로 지금 새로운 클러스터가 정의된 걸 확인을 하실 수가 있습니다.
그러면은 이제 이제 예로부터 주변에서 이제 하나씩 확장을 해가면서 이제 새로운 클러스터가 만들어질 수 있는지 확인을 반복해서 해 주시면 되겠어.
그래서 이제 이 과정은 새로운 점을 추가할 수 없을 때까지 계속해서 반복이 됩니다.
그러면 얘를 또 2차원 데이터셋에서 확인을 해볼 건데 메이크 먼즈 얘를 사용을 할 거예요.
参会者 1 38:44 这次我们如果使用 DB 扫描,对于 K-means 无法很好分离的数据,往往能得到更好的聚类效果。看一下 DB 扫描的步骤如下。首先,选择一个随机点,然后检查在该点的ε半径内的所有点。如果在这个距离内,我们现在看到的最小点数为 4,那么这些点就被判定为新的核心点。这样就定义了一个新的聚类。然后从这个点开始,逐步向周围扩展,反复检查是否可以创建新的聚类。这个过程会持续到无法添加新点为止。接下来,我们将在二维数据集中验证这一点,并使用 Make Moons。
Attendees 1 39:59
여기서 보시면 샘플 200개 할 거고 노이즈는 0.0으로 준다고 되어 있는
参会者 1 39:59 在这里,我们将使用 200 个样本,并将噪声设置为 0.0
Attendees 1 40:18
이렇게 랜덤 스테이트는 0으로 해서 처음에 5개만 출력을 해보면 이렇게 만들어져 있습니다.
听众 1 40:18,如果随机状态设为 0,最初只输出 5 个,就是这样创建的。
Attendees 1 40:28
그러면 얘도 이제 그래프로 한번 확인을 해볼 수가 있겠죠.
얘가 지금 2차원 형태로 되어 있으니까 이렇게
听众 1 40:28,那么我们现在也可以通过图表来确认。因为它现在是二维形式,所以就这样。
Attendees 1 40:46
와인도 설정을 해주면 되겠죠.
如果设置好葡萄酒也可以。
Attendees 1 40:54
해서 실행을 해 주시면은 다음과 같이 이제 두 개의 약간 그래프로 분리하면 좋을 것 같은 그런 그림이 나왔습니다.
그래서 이걸 그대로 케인즈를 해주게 되면은 저희가 원하는 형태는 이렇게 하나 이렇게 하나 클러스터링이 돼야 되는데 약간 반반씩 되는 그런 형식 그런 결과가 나오겠죠.
일단 클러스터링을 똑같이 해보면
执行后,现在会出现如图所示的两个略有分离的图表。所以如果直接进行聚类,我们希望的形式是这样一个和这样一个集群,但结果可能会呈现出大致相等的分布。首先让我们尝试进行相同的聚类
Attendees 1 41:25
작성하셨죠? 여기는 아까 메이크 원서에서 200개 그리고 0.05 랜덤 스테이트 0으로 했고요.
여기는 0번째랑 첫 번째 넣어줬습니다.
参会者 1 41:25 写了吗?这里是之前在 Make 原文中的 200 个,并且随机状态设置为 0。这里放入了第 0 个和第 1 个。
Attendees 1 41:40
그냥 게임인지 해줄게요.
参会者 1 41:40 我就做个游戏给你看。
Attendees 1 41:58
여기까지만 한번 실행을 해서 결과를 살펴보겠습니다.
与会者 1 41:58 我们来执行一次并查看结果。
Attendees 1 42:09
이렇게 해주면 결과가 지금 0번째 클러스터랑 첫 번째 클러스터랑 이렇게 대충 잘 나눠진 것 같은데 얘를 다시 그래프로 확인을 해보면 얘를 다시 그래프로 확인을 해보면 얘를 실행해 주는 게 있죠.
与会者 1 42:09 这样的话,结果现在 0 号聚类和第一个聚类看起来大致分得不错,如果再用图表确认一下,再执行一下。
Attendees 1 42:32
저희가 원하는 형태로 나눠지지 않고 이렇게 나눠진 거 확인하실 수가 있습니다.
그러면 이런 형태의 데이터셋이 있을 때 케이맨즈로 이제 클러스터링을 하게 되면은 좀 좋지 않은 결과가 나온다는 걸 확인할 수가 있어요.
그래서 이번에는 DB 스캔을 사용해서 클러스터닝을 해보겠습니다.
얘도 이제 사이클론에서 제공을 하기 때문에 인포트에서 사용을 할 수가 있고요.
아까 주요 이제 파라미터 2개를 말씀드렸는데 그 특정 포인트를 잡고 그 반경 내를 결정하는 그런 입실론이 있고요.
그리고 몇 개의 샘플이 이제 충족되었을 때 하나의 클러스터가 되는지를 결정할 수 있는 미인 샘플지가 또 있습니다.
지금 여기서 보시면 일단 밀도가 낮게 설정을 한다고 되어 있죠.
그래서 입실론을 0.4로 잡았는데 그러면 저희가 사할 수 있는 반경이 좀 더 커진 그런 형태겠죠.
그래서 한번 이 조건대로 DB 스캔을 해보면
如果无法按照我们想要的方式分割,您可以确认这种分割。那么,当使用 K-means 对这种类型的数据集进行聚类时,我们可以确认会得到不太好的结果。因此,这次我们将使用 DBSCAN 进行聚类。它也是在 scikit-learn 中提供的,因此可以直接导入使用。之前我提到了两个主要参数,一个是选择特定点并确定其半径的ε(epsilon),另一个是决定满足多少个样本可以形成一个聚类的最小样本数。现在,如果我们看到这里,首先密度设置得比较低。因此,我们将ε设置为 0.4,这意味着我们可搜索的半径会变得更大。让我们按照这些条件进行 DBSCAN 聚类。
Attendees 1 43:41
6.4 그리고 그리고 얘도 거리 기반이니까 클리드 거리로 계산을 해 줄게요.
我们也将使用欧几里得距离进行计算,因为这也是一种基于距离的方法。
Attendees 1 43:56
이렇게 해서 실행을 하시고 위에서 정의한 DB 스캔에 세팅을 해주면 됩니다.
请在执行时按照上面定义的 DB 扫描进行设置。
Attendees 1 44:06
해서 실행을 해 주시면 원래 이제 이상적인 건 다른 클러스터가 하나 더 만들어지는 건데 지금 보시면 이제 0번째 클러스터에 이제 모든 데이터셋이 할당이 되어 있죠.
이거는 이제 그래프로 보시면 조금 더 쉬운데 원래는 이제 첫 번째 클러스터를 파란색으로 하고 두 번째 클러스터가 빨간색으로 출력이 돼야 되는데 방금 이제 입술로는 0.4로 하고 이제 민 샘플을 10으로 한 그런 디비 스캔 결과는 다 하나의 클러스터로 할당된 것을 확인하실 수가 있어요.
이렇게 나오죠.
执行后,理想情况下应该会生成另一个聚类,但现在您可以看到所有数据集都被分配到了第 0 个聚类中。这在图表中会更容易理解,原本第一个聚类应该是蓝色的,第二个聚类应该是红色的,但刚才使用 0.4 作为参数,并将最小样本数设为 10 的 DBSCAN 结果显示所有数据都被分配到了一个聚类中。就是这样。
Attendees 1 44:43
그러면 이제 입실론 값이 너무 크거나 아니면 이제 샘플즈가 너무 적절해서 이제 다 계산을 했는데 최종적으로 하나의 클러스터 안에 이제 모든 데이터셋이 들어간 그런 모습인 거죠.
이번에는 밀도를 좀 더 높게 해서 입실론을 0.1로 설정을 해볼게요.
那么现在,如果ε值太大,或者样本太少,即使计算完毕,最终所有的数据集都集中在一个聚类中。这次我们将密度提高,将ε设置为 0.1。
Attendees 1 45:32
이렇게 해 주시면 이번에는 아까는 이제 다 0번째 클러스터가 됐는데 이번에 마이너스 1로 이제 결과가 출력된 걸 확인하실 수가 있죠.
이러면은 이제 각 데이터셋이 이 조건을 만족하지 못해서 이제 클러스터가 아예 생성이 안 된 결과겠죠.
그래서 얘를 이제 출력을 해보면 이렇게 생성된 클러스터가 없는 그런 결과가 나오겠죠.
这样的话,之前所有的数据都在第 0 个聚类中,这次结果输出为负 1。这意味着每个数据集都不满足条件,因此未能生成任何聚类。如果我们输出,就会看到没有创建任何聚类的结果。
Attendees 1 46:07
그러면 아까는 이제 입실론이 너무 컸고 지금은 입실론이 너무 작아서 이제 클러스터가 할당되지 않았으니까 이 값들을 적절하게 조정을 해서 한번 결과를 확인해 보겠습니다.
이번에는 입실론을 0.2로 설정을 하고 민 샘플을 5개로 설정을 해볼게요.
如果刚才的ε值太大,现在ε值太小,导致没有分配到聚类,那么我们将适当调整这些值并检查结果。这次我们将ε设置为 0.2,最小样本数设置为 5 个。
Attendees 1 46:52
이렇게 실행을 해 주시면 이번에는 이제 0번째랑 첫 번째 잘 할당이 된 걸 볼 수가 있죠.
얘도 그래프로 확인을 해보면 저희가 원하던 대로 이제 하나는 파란색 하나는 빨간색으로 잘 나뉘어진 걸 확인할 수가 있습니다.
그래서 케이민즈는 약간 이런 곡선 형태를 잘 파악하지 못하는데 이제 DB 스캔을 사용을 하면은 잘 클러스터링을 할 수 있다.
여기서 보시면 아까랑 똑같은데 0.2랑 오로
如果这样执行,这次可以看到第 0 个和第 1 个已经很好地分配了。如果在图表上查看,可以看到我们想要的结果:一个蓝色,一个红色,很好地分开了。因此,K-means 在处理这种曲线形状时不太擅长,但使用 DBSCAN 可以很好地进行聚类。从这里可以看出,与之前相同,使用 0.2 和其他...
Attendees 1 47:32
그러면 만약에 지금은 이런 형태로 이제 잘 정의가 되어 있는데 이쪽이나 이쪽에 이제 데이터가 하나씩 있으면 그러니까 이상치가 발생을 하면 어떻게 되는가를 한번 확인을 해볼게요.
이제 0번째랑 첫 번째를 이제 이상치로 저희가 할당을 한번 하고 나서 다시 DB 스캔을 확인해 보겠습니다.
那么现在如果这里有一个数据点,比方说在这里或者那里出现了异常值,会发生什么情况呢?我们将把 0 号和第一号数据点分配为异常值,然后再次检查 DBSCAN。
Attendees 1 48:19
이렇게 실행을 해 주시면은 아까 저희가 이제 첫 번째랑 그러니까 0번째랑 첫 번째 데이터셋을 일부러 결측지로 할당을 했는데 그 두 개만 마이너스 1 그러니까 클러스터에 할당이 되지 않고 나머지는 이제 0번째랑 첫 번째 클러스터로 잘 할당이 된 걸 확인할 수가 있죠.
얘를 또 그래프로 확인을 해보면 그전에 이제 이렇게 저희가 직관적으로 결과를 확인할 수도 있고 얘의 원래 값을 출력해 볼 수도 있겠죠.
如果这样执行,我们之前故意将第一个和第零个数据集分配为缺失值,这两个数据点将被分配为-1,即不属于任何聚类,而其余的将很好地分配到 0 号和第一个聚类中。我们还可以通过图形来确认这一点,可以直观地查看结果,也可以输出它们的原始值。
Attendees 1 49:03
이렇게 해서 출력을 하면은 결측치 인덱스가 어딘지 이렇게 결과가 나옵니다.
아까 저희가 할당했던 그 결측치가 그대로 나와 있죠.
그리고 이상치를 또 확인을 해보면
如果这样输出,那么缺失值的索引就会以这种方式显示出来。之前我们分配的那些缺失值就这样显示在这里。然后再确认一下异常值
Attendees 1 49:33
위에서 저희가 계속 진행했던 상담도 그래프 형식인데 좀 다르게 이거는 아웃라이어가 있으니까 그다음에 조작하면 되겠죠.
我们之前一直处理的那个图表,这次是不同的格式,因为存在异常值,所以下一步可以这样处理。
Attendees 1 49:57
아까 위에서 저희가 아웃라이어 인덱스가 어딘지 확인을 했었죠.
그걸 가지고 여기다 넣어줍니다. 그래서 x 자리에는 이제 0 번째고 와 자리에는 첫 번째인데 둘 다 이제 전체 행이 아니고 아웃라이어 인덱스가 아닌 그런 행만 가져오는 것이죠.
刚才在上面,我们已经确认了异常值的索引。现在把它放在这里。所以在 x 的位置是第 0 个,在 y 的位置是第一个,但现在都只是获取非异常值索引的行。
Attendees 1 50:20
그러면 아웃라이어가 아닌 건 파란색으로 출력을 해볼게요.
那么我将把非异常值用蓝色输出。
Attendees 1 50:34
그러면 아웃라이어도 출력을 할 수 있겠죠 이거는 부정이 없이
那么,我们也可以输出异常点,这是没有问题的
Attendees 1 51:00
아웃라이어는 따로 투명도 설정을 안 할 거 이렇게 해서 실행을 해 주시면 아웃라이어 좌표들은 이제 아웃라이어 점들은 빨간색으로 출력이 될 거고 아웃라이어가 아닌 정상적인 클러스터링 이 된 그런 포인트들은 이제 파란색으로 출력이 돼 있죠.
그래서 이렇게 결과가 나오는 걸 확인할 수가 있습니다.
对于异常点,我们不会单独设置透明度。这样执行后,异常点坐标将以红色显示,而那些进行了正常聚类的点将以蓝色显示。这样我们就可以看到结果了。
Attendees 1 51:27
얘네들은 지금 보시면 아까 저희가 입실론 크기를 정했죠.
근데 그 반경이 이제 계산할 수 있는 이웃이 없으니까 그러니까 그 반경 내에 들어오는 이웃의 개수를 만족하지 못했기 때문에 클러스터가 형성되지 않은 걸 확인할 수가 있습니다.
大家可以看到,我们之前已经确定了ε的大小。但是由于在这个半径内没有可计算的邻居,因此无法满足半径内邻居的数量条件,所以无法形成聚类。
Attendees 1 51:55
네 그래서 오늘 수업은 여기까지 했고요. 그래서 퀴즈는 총 두 문제인데 일단 첫 번째는 처음에 배웠던 케이미지 클러스터링을 사용을 해서 이제 여기서 다운받을 수 있는 카우스 데이터셋을 가지고 이제 케이미즈를 진행을 해 주시면 되겠죠.
이렇게 보시면 가져와서 이제 아까 k를 정할 때 이제 에보 메소드랑 실내 개수를 가지고 판단을 한다고 되어 있으니까 각각의 그래프를 출력을 하시고 이렇게 해서 보여드릴게요.
출력을 하시고 k가 얼마일 때가 적절한지를 해 주시면 됩니다.
好的,今天的课程就到这里。关于作业,共有两道题。第一题是使用 K-means 聚类,使用可以从这里下载的鸢尾花数据集进行 K-means 聚类。正如你所看到的,在确定 k 值时,我们使用肘部方法和轮廓系数来判断。请分别输出相应的图表,并指出 k 值的最佳选择。
Attendees 1 52:51
그리고 이제 두 번째는 이제 DB 스캔을 또 해보면 되겠죠.
여기서는 이제 아이리스 데이터셋에 대해서 이제 클러스터링을 하고 이제 아웃라이어가 어딘지 확인을 하는 그런 과정을 진행해 주시면 됩니다.
실다가 모르는 거 있으면 질문해 주시면 되고요.
参会者 1 52:51 现在,第二步是进行 DB 扫描。在这里,您需要对鸢尾花数据集进行聚类,并确定异常值的位置。如果有不清楚的地方,可以随时提问。
Attendees 1 54:55
맞아요.
参会者 1 54:55 没错。
Attendees 1 55:11
김채린 맞나요?
参会人员 1 55:11 是金彩琳吗?
Attendees 1 55:16
김영민
参会人员 1 55:16 金永民
Attendees 1 55:22
이진용
参会人员 1 55:22 李镇用
Attendees 1 55:27
양경민 전지현 이경민
参会人员 1 55:27 杨庆民 全智贤 李庆民
Attendees 2 1:13:45
여기서 다 똑같이 진행하는 건데 똑같이 나오는데 이거는 크로스트 원이고 위치는 똑같아
参会者 2 1:13:45 在这里大家都按照同样的方式进行,结果也是一样的,这是十字原,位置也是一样的。
Attendees 1 1:13:56
저는 색깔이 반대로 나오셔.
参会者 1 1:13:56 我这里颜色是反过来的。
Attendees 1 1:14:05
그렇죠 이거는 근데 아마 토에 뭘로 하냐 그 문제 같아서 이거는 신경 안 쓰셔도 되고
对啊,这个可能是因为具体做什么有问题,所以你可以不用太在意
Attendees 2 1:14:10
그냥 이대로 붙이면 돼.
就这样直接粘贴就行了。
Attendees 1 1:14:12
네네 그럼 위에는 똑같이 나오나요? 이건 다
与会者 1 1:14:12 是的,那么上面是一样的吗?这个是全部
Attendees 2 1:14:14
이렇게 순서가 다 아는데 클러스터가 어떻게 저렇게 나오는 자리에 안 돼가지고 제가 잘못 입력 이거는 검증 검사
与会者 2 1:14:14 我知道顺序,但是聚类是如何以这种方式出现在那个位置上的,我可能输入错误,这是验证检查
Attendees 1 1:14:26
그러니까 얘는 돈이 있고요.
与会者 1 1:14:26 也就是说他有钱。
Attendees 1 1:14:33
근데 이게 사실상 클래스는 똑같이 나눠졌는데 뭐가 1번에 할당되는 그 차이라서요.
근데 큰 의미는 없는.
与会者 1 1:14:33 但是事实上这个类别是完全相同地分配的,所以那个分配到第 1 类的差异并不重要。
clovanote.naver.com