Coursera上Andrew Ng机器学习课程总结(二)
来源:互联网 发布:涉密检查软件 编辑:程序博客网 时间:2024/05/21 16:54
无监督算法
K-means算法
k-means算法是一种聚类算法,大体上的意思是:随机初始化K个聚点,遍历每个样本点,计算其属于哪个聚点,这样就分出了K个群,对每个群再计算每个群的聚点,然后重复这个过程,直到收敛。
//Initialize centroidscentroids = kMeansInitCentroids(X, K);for iter = 1:iterations //Cluster assignment step:Assign each data point to //the closest centroid. idx(i) corresponds to c^(i), //the index of the centroid assigned to example i idx = findClosestCentroids(X, cebtroids); //Move centroid step:Compute means based on centroid //assignments centroids = computeMeans(X, idx, K);end
注意:1,初始的K个聚点最好随机化。
2,这样会存在问题,即最后聚类算法表现不好。K较小的时候,可以运行多次算法取最小的失真函数。
PCA分析
Principal Component Analysis(PCA), 主成分析法。我们主要使用这个方法来降维。
首先,需要对数据集进行标准化。然后,我们这里使用Octave/Matlab的SVD奇异值分解函数
举个例子来说明这个降维思路,如上图二维的数据,可以降到一维线上,这个线满足所有点到线的距离和最小。
异常检测
当样本集里,正样本(即我们想查找的异常情况)很少(10-20), 而负样本(1000)很多的时候,我们往往使用异常检测,因为使用监督学习,我们无法获得足够的正样本的性质。
为了使用异常检测,我们需要找到一个模型来拟合数据集的分布。
我们这里采用高斯分布,(为什么选择高斯分布?因为中心极限定理)
传统高斯模型
计算模型如下:
对每个特征建立高斯模型,最后取乘积。预测一个样本时,带入上面公式,当计算出的值小于一个
优点:计算不复杂;即使m很小,也可以用这种方法。
缺点:最后的模型不一定好。比如我的
多元高斯模型
多元高斯模型概率分布如下:
对所有的特征建立多元高斯模型。预测一个样本时,只需要带入到上面的公式,当计算出的值小于一个
缺点:m>n或者
计算阀值
那么上面的阀值
还记得我们在机器学习课程总结(一)里提到的训练模型评价里的单值分析吗?
我们就使用验证集,给每个验证集的数据打上标签。要记得y=1是那些异常的数据,y=0是那些正常的数据。比较出F值最大的那个对应的概率为
代码如下:
stepsize = (max(pval) - min(pval)) / 1000;for epsilon = min(pval):stepsize:max(pval) % Instructions: Compute the F1 score of choosing epsilon as the % threshold and place the value in F1. The code at the % end of the loop will compare the F1 score for this % choice of epsilon and set it to be the best epsilon if % it is better than the current choice of epsilon. % % Note: You can use predictions = (pval < epsilon) to get a binary vector % of 0's and 1's of the outlier predictions predictions = (pval < epsilon); tp = sum((predictions == 1)&(yval == 1)); fp = sum((predictions == 1)&(yval == 0)); fn = sum((predictions == 0)&(yval == 1)); prec = tp/(tp+fp); rec = tp/(tp+fn); F1 = 2*prec*rec/(prec+rec); if F1 > bestF1 bestF1 = F1; bestEpsilon = epsilon; endend
推荐系统
对于推荐系统,我们举个例子:有一些电影,其中我们已经打了几个电影的分数了,我们现在希望做出一个系统能够自动对其他的电影打出分数,并且推荐合我们口味的电影。
协同过滤算法
x-电影数量*电影的特征向量 矩阵
y-电影数量*用户数量 用户给电影的打分矩阵
r-电影数量*用户数量 如果用户i给电影j打分了,那么r(i,j)=1
协同过滤算法就是要同时优化x与
标准化后的代价函数:
标准化后的求导函数:
在线学习
有时候我们的数据集不固定如同数据流一样,不断变化,这时候我们的学习模型就要不断的调整参数,这就叫做在线学习。
Map-reduce
机器学习流水线
Photo OCR系统用来识别照片上的物体。机器学习流水线是一个问题可以被切割成很多流水模块,其中有些模块会用到机器学习。我们使用单元分析来找系统的瓶颈,使我们把有限的时间投入到提升我们系统性能最佳的模块。
举个例子:
整个系统(85)->预处理(85.1)->脸部检测(91)->眼,耳,嘴区域切割(95)->分类器识别(100)
括号内的代表在当前及前面模块全部都是完美的,准确率100%的,对应的系统准确率。比如预处理85.1,我手工把图片的背景去掉后,整个系统的准确率是85.1%。
从上面来看,脸部检测的提升空间最大,可以从85.1提升到91,提升5.9个百分点。
- Coursera上Andrew Ng机器学习课程总结(二)
- Coursera上Andrew Ng机器学习课程总结(一)
- 机器学习:推荐系统(Andrew Ng Coursera课程)
- Coursera 机器学习(by Andrew Ng)课程学习笔记(五)——神经网络(二)
- Coursera 机器学习(by Andrew Ng)课程学习笔记(二)——多元线性回归和正规方程
- Coursera 的机器学习 (Andrew Ng) 课程 视频百度云
- Andrew Ng机器学习课程总结
- Andrew NG 机器学习课程笔记(二)
- Andrew Ng的机器学习课程概述(二)
- Coursera上的Andrew Ng《机器学习》学习笔记Week1
- Coursera上的Andrew Ng《机器学习》学习笔记Week2
- Stanford coursera Andrew Ng 机器学习课程编程作业(Exercise 1)Python3.x (补)
- Stanford coursera Andrew Ng 机器学习课程编程作业(Exercise 1)Python3.x
- Stanford coursera Andrew Ng 机器学习课程编程作业(Exercise 2)Python3.x
- Andrew Ng coursera上的《机器学习》ex1
- Andrew Ng coursera上的《机器学习》ex2
- Andrew Ng coursera上的《机器学习》ex3
- Andrew Ng coursera上的《机器学习》ex4
- MATLAB 将YUV格式视频转换为图像帧序列
- Effective c++:引用计数
- itoa()、atoi()、任意进制转换
- 怎么解决python "Non-ASCII character"错误
- 往对话框中手工加入工具条、状态栏、工具提示、按钮控件
- Coursera上Andrew Ng机器学习课程总结(二)
- 【USACO3.4.2】美国血统
- 精美的聊天界面
- 学习笔记:Foundation(1)---NSRange结构体、NSPoint结构体
- html表单
- smtp version:2
- 短语、句柄、素短语、最左素短语
- 22.在创业公司中的成长
- 【Android】关于android开发,环境部署的一些小问题