机器学习算法本身可以分为四类,监督学习,无监督学习,半监督学习与强化学习。我在研究生期间,研究的是粒子群算法与学习自动机,其中后者就属于没那么出名的强化学习算法类。当然,因为研究方向属于机器学习,因此对其他算法也有一点了解,在此给大家简单介绍几个无监督学习算法。
K-means算法k-means算法应该是最出名的无监督学习算法,中文译名聚类算法。算法流程是首先随机生成几个点叫做聚类中心,然后通过不断迭代来更新聚类中心位置以及围绕聚类中心的点(数据)。在不断的迭代过程中,有些聚类中心会由于失去其拥护者(围绕其的数据)而被抛弃。
在初始化的时候,通常会选择k个聚类中心,不断迭代,直到达到优化目标结束。这个优化目标通常叫失真代价函数或者畸变函数,当函数达到最优解(相对最优,在这类连续空间中,是不可能找到绝对的全局最优解的)或迭代资源用尽,就算达到目标。
高斯混合模型高斯混合模型主要的特点在于可以对无标签的数据进行分组,然后再进行数据的聚类分析。
这个算法属于流行学习算法中的一种。流型学习算法对存在非线性关系的数据集的处理效果非常好,要比多元回归分析更加节约研究人员的人力。它通过将一个低维度流型嵌入到一个高维度空间来描述数据集,是一种无监督的评估器。
伪代码如下:
from sklearn.datasets import load_digits
from sklearn.manifold import Isomap
digits = load_digits()
digits.images.shape
# 可视化数据集
fig, axes = plt.subplots(10, 10, figsize=(8,8),
subplot_kw={"xticks": [], "yticks": []},
gridspec_kw=dict(hspace=0.1, wspace=0.1))
for i, ax in enumerate(axes.flat):
ax.imshow(digits.images[i], cmap="binary", interpolation="nearest")
ax.text(0.05, 0.05, str(digits.target[i]), transform=ax.transAxes, color="green")
以上是我的浅见,欢迎各位在下方评论区给我交流点赞。
我是苏苏思量,来自BAT的Java开发工程师,每日分享科技类见闻,欢迎关注我,与我共同进步。
分成几种类型,大家知道最多的是k mean了,聚类还有mixture Gaussian model就是软聚类,第二种是最有意思的,矩阵分解模型,包括非常多的变种,PCA,svd.EM, LDA等等,通常用来得到latent或embedding,或者用来推测缺失值,第三种是马尔科夫系列模型,第四种名字忘了,通过联合计数来得到事物之间的关系,比如啤酒与尿布的案例可以通过这种方式得到