知乎专栏:公开课茶馆
公开课
这里是之前在知乎上写的一些coursera上公开课和别的地方的公开课的笔记,懒得挪到博客上了。
刚刷了coursera上摄影系列公开课的第一部分,拿到了第17个认证证书,想起coursera首页上的介绍,“我们为全球热爱学习的人提供了超过1700份公开课,才发现竟已然刷完了c家公开课的百分之一”,想想还有点小激动。但是很少对每一门课认真地写一个心得和总结,真是有些遗憾。 于是决定从这一门公开课开始,每一门都写一下自己的体会吧。
what do people do&&values and goals&&how these activities embedded
choosing participants(representation of target users,such as stakeholders , current user of a similar system, non-users).
what are good questions?
open ended<—–>too large interesting is important.
questions to avoid(1:what they would do\like\want in hypothetical situation;2:how often;3:how much do you like on an absolute scale;4:avoid binary quesitons)
paradigmatic关系,即同一类单词
同一类单词的关键是上下文相似性,评价相似性:单词出现在上下文中出现概率组成的向量相乘
减少the这样频繁出现单词的贡献度,log(the出现的文档数/总文档数)
coursera上本周刚开的课程Text mining & analytics,网上没有中文字幕,暂时自己翻译了一份,错误很多,很多词听不懂,希望大家来一起改正。
binary classification 1 output unit
multi-class classification(k classes) k output units
对logistics regression 和linear regression来说,选择一个足够复杂能够有很高预测精度的function就意味着要构建很多的feature,假如要构建一个二次方程形式的hθ,如果有100个attribute,就意味着要构建5000个feature,而且即使这样很多时候二次方程也不能很好的拟合数据。
在图像处理上,如果图像的像素很大,linear hypothesis要构建的feature就很多,运算量也会变的很大。
当从训练集中提取过多的属性用来建立hypothesis时,可能导致过度适应数据,选取某些很复杂的方程可以很完美的贴合训练集数据,但是对要预测的用例可能并不会有很好的表现
为了解决这一点,实际上就要剔除掉模型中那些实际上导致overfitting的属性
如上图所示就是overfitting的情况,在做机器学习的时候,很多时候我们刚开始的时候并不知道选取哪些属性,只能尽可能多的选取属性来构建hypothesis拟合训练集中的数据,很容易导致overfitting的情况,但是我们又不能主观的减少选取的属性,为了解决overfitting问题必须提出一个新的cost function,而解决overfitting的过程称为regularization
用以下两个式子来做cost function
cost function:-log(hθ(x)) 当y =1
cost function:-log(1-hθ(x)) 当y = 0
可以看到当y为1时,如果hθ(x)得到的是1,那么cost function为0,如果hθ(x)得到的是0,那么cost function趋向于正无穷,当y为0时,如果hθ(x)得到的是1,那么cost function趋向于正无穷,得到的为0,cost function为0。
cost function是用来评价hypothesis对训练集的贴合度的,对于分类的情况,这样的cost function完美的表现了这一点,真是数学的魅力。
梯度函数
对于linear regression来说,我们可以选用不同的函数形式来拟合不同分布表现的数据,但我们仍然会得到一条linear function形态的hypothesis,因为我们选用不同的函数形式,实际上是对feature的重新利用而不是真正选用了新的函数形式。
如果我们要对离散的数据进行拟合,即classification,那么就需要用到logistic regression,而logistic regression是真正的改变了函数形式。
在linear regression中,hypothesis的形式为h(x) = θ*x
当含有多个feature的时候,每个feature的取值范围可能不同,但对于gradient descent算法来说,递减的幅度是由α来控制的。
如果有的feature取值范围是1~100,有的是1000~100000000000,在梯度递减时可能有的feature一步会迈的很大,而有的feature会迈的很小。
所以要对feature进行scaling,使所有feature的取值范围都大致处在-1<=x<=1中。
从生活中的例子我们可以发现,房价和房屋面积是近似成正比的,城市面积和人口是近似成正比的,在很多情况下,我们都可以用linear function来拟合现实中的情况,而有的时候,比如我们知道房屋的长和宽以及价格,如果长、宽做feature来预测价格的话,显然很难预测,这时我们就可以把长宽相乘得到新的feature即房屋面积,用面积做feature来预测,这样又可以用linear fucntion来拟合数据。
而很多时候我们又会发现数据的分布不是线性相关的,可能更接近 y = x^3,或者 y = x^-1等等函数图像,这时仍然是一个计算新feature的问题,我们把x^3,x^-1等等作为新的feature,就又将问题转换为寻找最合适的linear function的问题了。
我们已经讨论过了hypothesis是linear function的情况,gradient descent就是一个用来寻找最符合输入数据分布的linear function 的方法,也就是一个linear regression方法。
目的:求出局部最优的hypothesis:H(x)(使cost function J(θ1,θ2,…) 局部最优)
定义:
cost function:J(θ1,θ2,…)
J(θ1,θ2,…)的梯度(即导数):d(J)/d(θ), 如d(J)(θ1,θ2,…)/d(θ1)即J在(θ1,θ2,…)处关于θ1的导数
步骤
(1):选取一个起点:Point:(a1,b1,…),J(a1,b1,…)
(2) θ1 := θ1 - α * d(J)/d(θ1)(a1,b1,…),不断替换θ1,θ2,… ,直到最终收敛(convergence)。
machine learning是指通过对一系列含有n个feature,已知具有某种attribute的变量(训练集)进行分析,找到一个hypothesis(或者叫function,model,pattern,就是找到一个模型或者假设),这个hypothesis接受到一个变量的n个feature后能够分析出这个变量该attribute的值。
比如输入一系列面积为x,价格为y的房屋信息,找出一个hypothesis,向这个hypothesis输入一个X,这个hypothesis就会预测x=X时,y应该是多少。
attribute:y1,y2,y3 = 10000,20000,15000,…
这里输入数据只含有一个feature:x,我们要预测的就是y。
我们最终的目的是让h(x)预测的结果和实际的y值相差最小,也就是 minimize(h(x)-y)