机器学习中简易方法----线性建模:最小二乘法

 

在机器学习中,学习或者推断 属性 变量与相应 响应 变量或 目标 变量之间的 函数 关系,使得对于一个给定的属性(特征)集合,可以进行相应的预测。

例如,建立一个用户对物品的喜好预测模型。已知的数据中有用户信息(年龄,性别等),物品信息(种类,颜色等) ,以及用户对物品的喜好关系(例如 A用户喜好B物品)。在给定的用户和物品间(喜好关系未知),希望预测出用户对这个物品的喜好。

在此种情况下,建立一个 关于某个顾客以前买过物品的描述(属性) 和 该顾客最终是否喜好该产品(响应) 的模型。这个模型可以帮助我们预测顾客可能喜好的物品,并因此进行推荐。

 

一 线性建模

 

在属性与响应之间建立 线性 关系。


                                            

较为简单的线性关系,参数w0 和 w1是需要不断学习和训练的。

在这个直线中,w0为截距,w1为梯度。

 

1.1 例子,在MATLAB中以交互形式画出这个线性模型 (直线)

 

% %% PlotLine.m
% %% 定义x 输入
x = [-1 1 3];
 
%% 
figure(1);hold off
fprintf('\n 按 (ctrl-c) 退出\n');
while 1
    intercept = str2num(input('Enter intercept:','s'));
    gradient = str2num(input('Enter gradient:','s'));
plot(x,intercept + gradient.*x);
hold all
    fprintf('\n 直线: y = %g + %g x\n\n',intercept,gradient);
end


 1.2 模型的评价方式

            由w0 和 w1的一些值组成,这些值可以产生一条能尽可能与所有 (训练)数据点 接近 的直线。Tx下的真实值,tx下的预测值。

 

                                           

 

平方差定义:       

                       

平方差越小,说明预测值和真实值的误差越小

这个表达称为 平方损失函数 (squard loss function

                   

 考虑整个数据集上的 平均损失

 

                               

 w0w1的最小值,及求上式的最小值


1.3 最小二乘法

 

将上式展开并求偏导

                             

                                                         注:    字母上的横线为平均值的含义

 

                        

 

1.4 向量与矩阵的引入

当多个属性集时,可能需要多个参数

例如,C1C2C3C4

当属性与参数较多时,使用向量和矩阵来描述。

                       

x为输入值(属性)的矩阵,为参数向量

                                             

 1.5 matlab例子,画出几个点的线性建模直线


<span style="color:#ff0000;">%% fitlinear.m
% From A First Course in Machine Learning, Chapter 1.
% Simon Rogers, 31/10/11 [simon.rogers@glasgow.ac.uk]</span>
clear all;close all;
 
%% Define the data (Table 1.1)
% Change these to use a different dataset
x = [1;3;5];
t = [4.8;11.1;17.2];
N = length(x); % 3
%% Compute the various averages required
% 
m_x = sum(x)/N;
%%
%
%
m_t = sum(t)/N;
%%
% 
m_xt = sum(t.*x)/N;
%%
% 
m_xx = sum(x.*x)/N;
 
 
%% Compute w1 (gradient) (Equation 1.10)
w_1 = (m_xt - m_x*m_t)/(m_xx - m_x^2);
%% Compute w0 (intercept) (Equation 1.8)
w_0 = m_t - w_1*m_x;
 
%% Plot the data and linear fit
figure(1);hold off
plot(x,t,'bo','markersize',10,'linewidth',2)
xplot = [0 6];
xlim(xplot)
hold on
plot(xplot,w_0+w_1*xplot,'r','linewidth',2)
xlabel('x');
ylabel('t');


以上代码的结果图:

           

                              


参考文献:

First course in machine learning

机器学习(中文版)

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值