李宏毅《机器学习》课程笔记(作业九:无监督学习)

Kmeans方法,先初始化K个中心,每次都把每个元素归类到最近的类,再更新中心,再更新分类。

HAC的方法,有点类似,把最近的pair取平均作为新的data,然后搞成一个树,再在树上切一刀来分类,好处是不需要先决定K。

PCA有了新的的理解,其实是贪心地找使得variance最大的那个w,之后通过这些w的线性组合就可以了。PCA也是个降维的方法,他能够使得复原出的向量跟输入的向量最接近。其实相当于一个单隐层的神经网络,但是因为它各个维度是互相垂直的,所以会比梯度下降求出来的更好。PCA找出来的可能不是一些”components“,而是一些整个的图,这是因为线性组合的时候系数可以是负的。如果我们规定这些系数必须是正的,可以用NMF,就可以得到一些component作为w。

Matrix factorization矩阵的因子分解:我们把矩阵里的值看成是两个向量的内积。当有missing data的时候,PCA就不好用了,但是这时候可以用梯度下降的方法,loss函数里面直接不包括缺失数据就可以了。

 

Neighboring Embedding:也是要降维,但是考虑非线性的降维。LLE假设每个data都可以用他的邻居线性组合而成,我们优化w_ij,即距离,我们希望降维以后通过这个w_ij依然可以线性组合成。

Laplacian eigenmap就是希望邻居的加权label的差别和最小。

T-SNE是现在最常用的,不仅要让接近的点映射后接近,也要让原来不接近的映射后比较远。可以用KL散度作为loss函数,所以本质上是一个指标,确定了这个指标以后用梯度下降就可以了。 值得注意的是,t-SNE在两个度量下用到的距离函数是不一样的,会把比较大的距离调的更大,距离小的更小。 所以能把不同类别分的比较开。

Auto-encoder简单地说就是deep的降维,然后暴力梯度下降。值得注意的是,如果中间的code维数比输入还大的话(一般不会出现),需要防止神经网络直接把原来的input拿过来不动再直接输出,为了防止这个问题,直接加一个正则化就可以了。 可以用来pre-training或者初始化

你可能感兴趣的:(机器学习,深度学习)