机器学习入门之机器学习中简易方法----线性建模:最小二乘法
小标 2018-10-22 来源 : 阅读 1802 评论 0

摘要:本文主要向大家介绍了机器学习入门之机器学习中简易方法----线性建模:最小二乘法,通过具体的内容向大家展现,希望对大家学习机器学习入门有所帮助。

本文主要向大家介绍了机器学习入门之机器学习中简易方法----线性建模:最小二乘法,通过具体的内容向大家展现,希望对大家学习机器学习入门有所帮助。

             

在机器学习中,学习或者推断 属性 变量与相应 响应 变量或 目标 变量之间的 函数 关系,使得对于一个给定的属性(特征)集合,可以进行相应的预测。
例如,建立一个用户对物品的喜好预测模型。已知的数据中有用户信息(年龄,性别等),物品信息(种类,颜色等) ,以及用户对物品的喜好关系(例如 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的一些值组成,这些值可以产生一条能尽可能与所有 (训练)数据点 接近 的直线。T为x下的真实值,t为x下的预测值。
 
                                           
 
平方差定义:       
                       
平方差越小,说明预测值和真实值的误差越小
这个表达称为 平方损失函数 (squard loss function)
                   

 考虑整个数据集上的 平均损失
 
                               
 w0和w1的最小值,及求上式的最小值


1.3 最小二乘法
 
将上式展开并求偏导
                             
                                                   
      注:    字母上的横线为平均值的含义
 
                        
 
1.4 向量与矩阵的引入
当多个属性集时,可能需要多个参数
例如,C1,C2,C3,C4

当属性与参数较多时,使用向量和矩阵来描述。
                       
x为输入值(属性)的矩阵,为参数向量
                                             

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


%% fitlinear.m
% From A First Course in Machine Learning, Chapter 1.
% Simon Rogers, 31/10/11 [simon.rogers@glasgow.ac.uk]

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');

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标人工智能机器学习频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved