Coursera公开课笔记: 斯坦福大学机器学习第一课“引言(Introduction)”
Coursera上于4月23号启动了6门公开课,其中包括斯坦福大学于“机器学习”课程,由机器学习领域的大牛Andrew Ng教授授课:
https://www.coursera.org/course/ml
课程刚刚开始,对机器学习感兴趣的同学尽量注册,这样即使没有时间学习,获取相关资料特别是视频比较方便。
由于工作繁忙的缘故,这批科目里我主要想系统的学习一下“机器学习”课程,所以计划在52opencourse和52nlp上同步我的机器学习课程笔记,一方面做个记录和总结,另一方面方便后来者参考。
Coursera上机器学习的课程学习过程是这样的:看Andrew Ng教授的授课视频或者看看课程相关的ppt;答系统随机出的题,一般5道题,单选、多选甚至填空,满分5分;编程作业,需用Octave(和Matlab相似的开源编程语言)完成,提交给系统得分,在规定时间内完成,均取最高分,超过规定时间会对得分打折。
第一周(4月23日-4月29日)的课程包括三课:
- Introduction(引言)
- Linear Regression with One Variable(单变量线性回归)
- (Optional) Linear Algebra Review(线性代数回顾)(对于线性代数熟悉的同学可以选修)
一、机器学习概览
1)机器学习定义:
机器学习是人工智能的一个分支,目标是赋予机器一种新的能力。机器学习的应用很广泛,例如大规模的数据挖掘(网页点击数据,医疗记录等),无人驾驶飞机、汽车,手写手别,大多数的自然语言处理任务,计算机视觉,推荐系统等。 机器学习有很多定义,广为人知的有如下两条:
Arthur Samuel (1959): Machine Learning: Field of study that gives computers the ability to learn without being explicitly programmed.
注:Arthur Lee Samuel (1901–1990) 教授是美国人工智能领域的先驱,他设计了一些下棋程序,可以通过不断的下棋来学习,从而达到很高的下棋水平。
Tom Mitchell (1998) : Well-posed Learning Problem: A computer program is said to learn from experience E with respect to some task T and some performance measure P, if its performance on T, as measured by P, improves with experience E.
例子:对于一个垃圾邮件识别的问题,将邮件分类为垃圾邮件或非垃圾邮件是任务T,查看哪些邮件被标记为垃圾邮件哪些被标记为非垃圾邮件是经验E,正确识别的垃圾邮件或非垃圾邮件的数量或比率是评测指标P。
2)机器学习算法的类型
1、有监督学习(Supervised learning):通过生成一个函数将输入映射为一个合适的输出(通常也称为标记,多数情况下训练集都是有人工专家标注生成的)。例如分类问题,分类器更加输入向量和输出的分类标记模拟了一个函数,对于新的输入向量,得到它的分类结果。
2、无监督学习(Unsupervised learning):与有监督学习相比,训练集没有人为标注的结果。常见的无监督学习算法有聚类。
3、半监督学习: 介于监督学习与无监督学习之间。
4、强化学习(Reinforcement learning): 通过观察来学习如何做出动作,每个动作都会对环境有所影响,而环境的反馈又可以引导该学习算法。
其他的类型包括推荐系统,Transduction,Learning to learn等。
3)有监督学习详解
有监督学习主要会提供一些标注样本,分为两大问题:回归和分类
房屋价格预测-回归(Regression): 预测连续的输出值(价格)
乳腺癌(良性,恶性)预测问题-分类(Classification): 预测离散的输出值(0, 1)
4) 无监督学习详解:
有监督学习和无监督学习的对比,看图更形象:
例子: Google News, 基因序列分析,社会网络分析,市场切分等...
特别的例子:鸡尾酒会问题(Cocktail party problem)
“ 鸡尾酒会问题”(cocktail party problem)是在计算机语音识别领域的一个问题,当前语音识别技术已经可以以较高精度识别一个人所讲的话,但是当说话的人数为两人或者多人时,语音识别率就会极大的降低,这一难题被称为鸡尾酒会问题。
鸡尾酒会问题算法(一行代码):
[W,s,v] = svd((repmat(sum(x.*x,1),size(x,1),1).*x)*x');
一些参考资料:
解决方法ICA demo: http://research.ics.tkk.fi/ica/cocktail/cocktail_en.cgi
http://www.vislab.uq.edu.au/education/sc3/2001/johan/johan.pdf
http://www.physorg.com/news75477497.html
http://en.wikipedia.org/wiki/Cocktail_party_effect
http://www.scientificamerican.com/article.cfm?id=solving-the-cocktail-party-problem
以下关于"cocktail party problem"的文字引用自该链接:http://xiaozu.renren.com/xiaozu/121443/thread/335879281
stanford机器学习公开课(ml-class.org)第一章unsupervised learning那段视频里解决鸡尾酒会问题(cocktail party problem)就写了一行代码:
[W,s,v] = svd ((repmat(sum(x.*x,1),size(x,1),1).*x)*x');
lz土人感觉是用了PCA的方法。。可是W运行出来丝毫没有unmixing的效果。。。用的是采样频率16kHz的Speech-Speech和Speech-Music两个样例。。
google这条代码有post说这是ICA,我就迷茫了。。。看不出来怎么是ICA了。。折腾一夜了,毫无头绪。。。
顺便求此问题的demo。。各种语言均无妨。。