Machine Learning (4) - Unsupervised Learning
Clustering - K-means Algorithm
步骤
- Randomly initialize K cluster centroids .
1) Should have
2) Randomly pick K training examples
3) Set euqal to these K examples. - Repeat
for i=1 to m
:= index (from 1 to K) of cluster centroid closest to x^{(i)}
将归到离其最近的centroid
for k = 1 to K
:= average (mean) of points assigned to cluster k.
按照归到该centroid的所有sample来相应地移动该centroid
调优
目的
为了避免因为初始化不当,而产生local optima
Cost Function
调优就是使Cost Function最小化。具体的做法就是多做几次K-means (Andrew推荐100次),选取Cost Function最小的一组。
选择cluster number
Elvow method (肘关节法)
Dimensionality Reduction - Principal Component Analysis (PCA)
Dimensionality Reduction = 降维, 3D->2D
步骤
- Feature scaling/mean normalization.
1)
2)
3) (optional) ,是标准差 - Compute “covariance matrix”
- 调用系统库,Compute “eigenvectors” of matrix :
[U,S,V] = svd(Sigma);
Ureduce = U(:,1:k); z = Ureduce'*x;
Reconstruct
x = Ureduce * z
Choose k
Typically, choose k to be smallest value so that,
另外一种通过svd函数计算variance的方法
- Start from k=1
[U,S,V] = svd(Sigma)
- Pick the smallest k.
Application of PCA
- Compression: 节省数据空间,提升计算速度
- Visualization: k=2 or k = 3
不要滥用PCA。例如,用PCA减少feature set来消除Overfitting
Before implementing PCA, first try running whatever you want to do with the original/raw data . Only if that doesn’t do what you want, then implement PCA and consider using
Anomaly detection algorithm
我将之翻译为异常检测。实际就是对属于正态(或高斯)分布的特征量的非正常检测。
- Choose features that you think might be indicative of anomalous examples.
- Fit parameters
- Given new example , compute - 概率
- Anomaly if
高斯分布概率密度公式:
结果评估
如何对数据分类进行training和validate
Aircraft engines motivating example
10000 good(normal) engines
20 flawed engines (anomalous)Training set: 6000 good engines
CV: 2000 good engines(y=0), 10 anomalous(y=1)
Test: 2000 good engines(y=0), 10 anomalous(y=1)
也就是把anomalous的sample省下来做validate和test用
特征量的选取
如果特征量不符合正态分布怎么办?按Andrew的建议是进行变换,则能得到近似正态的分布,如下:
Andrew在视频中用Octave命令行做了live demo:
讲义中提到的Error Analysis指的是:
有一些异常情况是,特征向量的各分量都在大概率的点,但是当某些分量组合时,会是小概率事件,则此时需要产生新的特征向量。例如:Andrew的例子,当CPU load相对较大,但仍在正常范围,但是network traffic却很小,但仍然在正常范围。这时你就需要一个变量,比如或者取决于新的特征量是否是正态分布。
Multivariate Gaussian distribution
前面的Anomaly Detection基于各特征分量是独立分布的情况,如果是非独立分布就采用上面提到的Error Analysis的方法。而Multivariate Gaussian则是对非独立分布的补充,也就是说上面的Anomaly Detection其实是Multivariate Gaussian的一种特殊情况。
Andrew给出了矢量化的Multivariate Gaussian的概率密度公式:
其中称为Covariance Matrix,协方差矩阵,为的行列式(determinant),参考:
- wiki - 行列式
简单摘取两张计算矩阵行列式的插图:在上面给出的公式里,Covariance Matrix即就给出了变量之间的相关性的信息。
Original model和multivariate model都可以检测到上面举的CPU load和network traffic的例子中的情况。那要如何选择呢?Andrew给出了对比:
Anomaly detection vs. supervised learning
Recommender Systems
Content-based recommender systems
这个问题,其实就是已知每部电影的特征(特征向量),以及用户对电影的评分,来推测用户对没看过的电影的评分。看下面的表格:
- : 用户数
- : 电影数
- : 用户j给电影i评分了
- : 用户的真实评分
- : hypothesis,推测评分
Gradient Descent:
for k = 0:
for k 0:
Collaborative filtering
假设在前面一节的training中,是已知的,而未知,即每部电影针对各个特征量的评分未知,此时通过training一样可以推测出各电影的评级。而Collabrative Filtering就是在两手空空的时候,既没有,也没有,而只有,就能预测和。
- Initialize to small random values.
- Minimize using gradient descent (or an advanced optimization algorithm).
- For a user with parameters and a movie with (learned) features , predict a star rating of
因为存在未给任何电影评分的用户,如果不做特殊处理,则这些用户对所有电影的预测评价都会是0分,具体Andrew在视频中给出论证。所以需要mean normalization,具体做法是:
- 不用标准差除,因为评分本来就在近似的range
1
Collaborative filtering矢量写法是:
当要给用户推荐的时候,足够小的时候,就可以认为i和j足够相似。