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

来源:互联网 发布:徒有琴 知乎 编辑:程序博客网 时间:2024/06/05 20:18

 

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

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

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

 

一 线性建模

 

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


                                            

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

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

 

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

 

% %% PlotLine.m% %% 定义x 输入x = [-1 1 3]; %% figure(1);hold offfprintf('\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 datasetx = [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 fitfigure(1);hold offplot(x,t,'bo','markersize',10,'linewidth',2)xplot = [0 6];xlim(xplot)hold onplot(xplot,w_0+w_1*xplot,'r','linewidth',2)xlabel('x');ylabel('t');


以上代码的结果图:

           

                              


参考文献:

First course in machine learning

机器学习(中文版)

 

0 0
原创粉丝点击