Second week of machine learning on Coursera
Second week of machine learning on Coursera
@(Coursera)
Multivariate Linear Regression
当线性模型的特征从一个变量到多个变量时,引出了本节的多元线性回归。
Size | number of bedrooms | number of floors | age of home | price |
---|---|---|---|---|
2104 | 5 | 1 | 45 | 460 |
1416 | 3 | 2 | 40 | 232 |
1534 | 3 | 2 | 40 | 232 |
852 | 2 | 1 | 36 | 178 |
标注:
- m表示数据集的个数:m=4;
- n表示特征的个数:n=4;
-
-
相应的,我们的假设函数从
为了方便矩阵计算,这里假定
则
此时:
此时:
得到的是1行,m列元素,每列元素分别对应着训练集中每行样本的y值。
Gradient Descent for Multiple Variables
Hypothesis:
Parameters:
Cost function:
此时:
Feature Scaling(特征缩放)
当特征规模近似的时候,梯度下降法可以更快收敛。
一般采用均值归一化(Mean normalization)方法来缩放特征,将特征缩放到-1~+1这个范围。
还有就是归一化到0~+1这个范围:
learning rate: α
- 如果
α 很小,收敛会很慢; - 如果
α 太大,每次迭代后Cost functionJ(θ) 可能不会减小,最终不能收敛。
实际过程中,可以通过给α 设置为0.001,0.01,0.1,1,分别画出J(θ) 函数的图,查看收敛情况,来选择更合适的α 值。
Polynomial Regression(多项式回归)
我们可以提升特征以及假设函数的形式通过不同的方式,例如,我们可以将特征融合为一个,比如通过将特征1和特征2生成一个特征3。
但是新生成的特征一定要注意特征缩放的问题,新生成的特征值规模可能会很大。
Normal Equation(正规方程)
使用正规方程来直接求解
In matlab:
正规方程法和梯度下降法对应,是求解最小化
Gradient Descent | Normal Equation |
---|---|
需要选择学习速率 |
不需要选择 |
需要多次迭代 | 不需要迭代 |
|
|
当特征数n很大时考虑(n>10000) | 当n<10000时考虑 |
实际上,正定方程法对于有些方法是不适用的,即当
- 存在冗余特征,两个特征密切相关的,比如线性冗余,比如一个特征使用
- 当矩阵X的行数m<列数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):
**[r,c]=find(A>=7):**r,c分别对应矩阵A中>=7元素的行列标号。
plot(x,y);hold on保持原图存在
xlabel(‘x’),ylabel(‘y’),legend(‘cos’,’sin’),title(‘my plot)’,print dpng ‘myplot.png’打印为图片,close关闭
此时,计算