Second week of machine learning on Coursera

Second week of machine learning on Coursera

@(Coursera)


Multivariate Linear Regression

当线性模型的特征从一个变量到多个变量时,引出了本节的多元线性回归。

Sizenumber of bedroomsnumber of floorsage of homeprice
21045145460
14163240232
15343240232
8522136178

标注:
- m表示数据集的个数:m=4;
- n表示特征的个数:n=4;
- x(i) 表示训练集第 i 个样本:

x(2)=14163240

- x(i)j 表示第 i 个样本中第j个特征的值: x(2)3=2


相应的,我们的假设函数从 hθ(x)=θ0+θ1x 变为:

hθ(x)=θ0+θ1x1+θ2x2+θ3x3+......+θnxn

为了方便矩阵计算,这里假定 hθ(x)θ0x0x0=1 .
x0(i)=1 表示训练集中每行样本中第”0”个特征为1.
此时:
X⃗ =x0x1x2x3xnRn+1

X⃗ :(n+1)m
θ=θ0θ1θ2θ3θnRn+1

θ:(n+1)1
此时: hθ(x)=θTX:(1(n+1))×((n+1)m)>1m
得到的是1行,m列元素,每列元素分别对应着训练集中每行样本的y值。


Gradient Descent for Multiple Variables

Hypothesis: hθ(x)=θTx=θ0x0+θ1x1+...+θnxn
Parameters: θ0,θ1,...,θn
Cost function:

J(θ0,θ1,...,θn)=12mi=1m(hθ(x(i))y(i))2
(系数为什么是1/2m可以查看上一篇博客 first week coursera)
此时:
θj:θjα1mi=1m(hθ(x(i))y(i))x(i)j,(j=0,..,n)


Feature Scaling(特征缩放)

当特征规模近似的时候,梯度下降法可以更快收敛。
一般采用均值归一化(Mean normalization)方法来缩放特征,将特征缩放到-1~+1这个范围。

x=xxxmax

还有就是归一化到 0~+1这个范围:
x=xxminxmaxxmin


learning rate: α
  • 如果 α 很小,收敛会很慢;
  • 如果 α 太大,每次迭代后Cost function J(θ) 可能不会减小,最终不能收敛。
    实际过程中,可以通过给 α 设置为0.001,0.01,0.1,1,分别画出 J(θ) 函数的图,查看收敛情况,来选择更合适的 α 值。

Polynomial Regression(多项式回归)

我们可以提升特征以及假设函数的形式通过不同的方式,例如,我们可以将特征融合为一个,比如通过将特征1和特征2生成一个特征3。
但是新生成的特征一定要注意特征缩放的问题,新生成的特征值规模可能会很大。


Normal Equation(正规方程)

这里写图片描述
使用正规方程来直接求解 θ=(XTX)1XTy
In matlab: inv(XX)Xy
正规方程法和梯度下降法对应,是求解最小化 J(θ) θ 值得另一种方法。

Gradient DescentNormal Equation
需要选择学习速率 α 不需要选择 α
需要多次迭代不需要迭代
O(kn2) O(n3) need to calculate (XTX)1
当特征数n很大时考虑(n>10000)当n<10000时考虑

实际上,正定方程法对于有些方法是不适用的,即当 XTX 不可逆时,方程法就不能求解了。比如logistic regression,就不能用正定方程法,只能使用梯度下降法。
XTX 不可逆的常见原因:
- 存在冗余特征,两个特征密切相关的,比如线性冗余,比如一个特征使用 m2 表示面积,另一个特征使用 feet2 表示面积,这两个特征就是冗余了;
- 当矩阵X的行数m<列数n时, XTX 是不可逆的。而m代表训练集的个数,n代表特征个数。所以当不能正定方程法,尝试使用正则化剔除一些特征,减小特征个数n


Matlab/Octave 常用命令

pwd:显示当前路径,cd和ls可以改变路径;
load feature.dat和load target.dat导入特征和目标数据集;
who or whos:显示当前工作空间中的变量;
save hello.mat v:将变量v存在hello.mat文件中;
save hello.txt v -ascii:将变量v存在hello.txt文件中;
A(:):将矩阵A中所有元素放入到一个向量中。
magic(n): 1+2+3+...+n2n,n3
**[r,c]=find(A>=7):**r,c分别对应矩阵A中>=7元素的行列标号。

A=834159672

r=132

A=123

A(1,2)=8;A(3,2)=9;A(2,3)=7

plot(x,y);hold on保持原图存在
xlabel(‘x’),ylabel(‘y’),legend(‘cos’,’sin’),title(‘my plot)’,print dpng ‘myplot.png’打印为图片,close关闭


hθ(x)=j=0nθjxj=θTx

θ⃗ =θ0θ1θ2θn

X⃗ =x0x1xn

此时,计算 hθ(x) 的值,在MATLAB中一步就可以了: θx

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值