1.11 Regression-linear regression

11 篇文章 1 订阅

0.目录:

序号优化/矩阵方程角度 A_{m \times n}x_{n \times 1}=b_{m \times 1},m >n,概率学解释
1

普通最小二乘:b向量存在加性误差e,即Ax=b+e,问题转化为:\min_{x} ||Ax-b||^2

e的每一个分量e_i \sim N(0,\sigma^2),即:\mathbf{E(e)=0,Cov(e)=E(ee^T)=\sigma^2I}
2数据最小二乘:b向量无观测误差,A存在加性误差暂时未总结
3Tikhonov正则化:贝叶斯的角度下,引入先验知识

1.普通最小二乘与极大似然解释

X_{m \times (n+1)}= \begin{bmatrix} (x^{1})^T\\ (x^{2})^T \\ ... \\ (x^{m})^T \end{bmatrix},m为训练样本个数,n为特征个数。y=\begin{bmatrix} y^{1}\\ y^{2} \\ ... \\ y^{m} \end{bmatrix},线性回归就是求解\min_{\theta} ||y-X\theta||^2这个问题,

对于\theta闭式解的形式:\theta = (X^TX)^{-1}X^Ty。为什么是2范数?对于这个解释从概率角度很好解释,并且从概率得到的答案更有启发性,也就引出了logistic regression。解释如下:

对于每一个样本,把误差当成一个随机变量,由此比较模糊的相关关系就变成了确切的函数关系。

y^{i}=\theta^Tx^{i}+\epsilon ^i,这里假设误差项\epsilon^i \sim N(0,\sigma^2)且独立同分布,依据就是中心极限定理。

进一步的,y^i|x^{i};\theta \sim N(\theta^Tx^{i},\sigma^2),求\theta就是一个参数估计的问题。利用极大似然估计:

做似然函数:L(\theta)=L(\theta;X,y)=p(y|X;\theta)=\prod_{i=1}^{m}p(y^i|x^i;\theta)=\prod_{i=1}^{m}\frac{1}{\sqrt{2\pi }\sigma}exp(-\frac{(y^i-\theta^Tx^i)^2}{2\sigma^2})

化成对数似然:ln L(\theta)=ln \prod_{i=1}^{m}\frac{1}{\sqrt{2\pi }\sigma}exp(-\frac{(y^i-\theta^Tx^i)^2}{2\sigma^2})=\sum_{i=1}^{m} ln\frac{1}{\sqrt{2\pi }\sigma}exp(-\frac{(y^i-\theta^Tx^i)^2}{2\sigma^2})

最大化对数似然函数,等价于最小化:\frac{1}{2}\sum_{i=1}^{m} (y^i-\theta^Tx^i)^2

相关代码实现(coursera上机器学习的编程作业完成后,自己的总结代码)

function note2()
%% ======================= Part 1: Plotting ======读取数据并可视化
data = load('ex1data2.txt');%假设数据中有m个训练样本,n个训练特征
X = data(:, 1:end); y = data(:, 2);
m = length(y);
n = size(X,2);
%plot(X, y); %可视化特征之间的相关关系
%数据的预处理:
mu = mean(X);%均值和方差都是行向量
sigma = std(X);
X_norm = (X-repmat(mu,m,1))./repmat(sigma,m,1);
X = [ones(m, 1),X_norm];%针对线性回归,要多加一列

%% =================== Part 2: Cost and Gradient descent ==梯度下降
theta = zeros(n+1,1); % initialize fitting parameters
iterations = 400;% Some gradient descent settings
alpha = 0.01;
% run gradient descent
[theta,J_history] = GradDec(X, y, theta, alpha, iterations);


%% ============= Part 3: Visualizing J(theta_0, theta_1) ===可视化损失函数
plot(1:numel(J_history), J_history, '-b', 'LineWidth', 2);
xlabel('Number of iterations');
ylabel('Cost J');



function J = Compute_Cost(X, y, theta)
m = length(y); 
J = sum((X*theta-y).^2)/(2*m);

end

function [theta, J_history] = GradDec(X, y, theta, alpha, num_iters)
m = length(y);
J_history = zeros(num_iters, 1);
for iter = 1:num_iters
    theta = theta -(alpha/m)*X'*(X*theta-y);
    J_history(iter) = Compute_Cost(X, y, theta);
end
end

end

github的代码在这里

2.数据最小二乘:因为和主要是总结机器学习中的内容,所以此处未总结,有兴趣者查阅:《矩阵分析与应用》第二版(张贤达)P329

以上涉及的1和2中,有两个要求:rank(A)=n,m>n

rank(A)=r<min\begin{Bmatrix} m,n \end{Bmatrix}或者n\geq m时,如果使用A^TA的伪逆做代替,并不是一个很好的选择。

一个比较好的例子解释如下:

上图代码在这里

使用伪逆恢复的信号在左下角,因为A的奇异值中有0,导致A^TA的特征值中有零,所以在求伪逆时受到噪声的扰动较大。

理论上的推导这里不详细说。而右下角的就是3中的方法:加入正则化。

3. Tikhonov正则化:

优化角度下:损失函数如下:\mathbf{\min_{x} \frac{1}{2}(||Ax-b||_2^2+\lambda||x||_2^2)}

推导出来的闭式解如下:\large \mathbf{\mathbf{\hat{x}}_{Tik=(A^TA+\lambda I)^{-1}A^Tb}}。特别的,在机器学习中使用估计\large \theta时,可能此处的\large I要以\large \begin{bmatrix} 0 & 0 & ... &0 \\ 0 & 1 & ... & ...\\ 0& 0 & 1 &...\\0 & ... & ....& 1 \end{bmatrix}替代。

正则化的应用还有减少过拟合的风险。

4.除了以上所总结的,在《矩阵分析与应用》中,还提到了总体最小二乘的方法,这里也不再细说。

当从概率角度的理解深入后,把正则化的这一部分给推导一下。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值