美文网首页
线性回归算法

线性回归算法

作者: 当_下 | 来源:发表于2019-11-29 15:02 被阅读0次

I‘m Linear Regression, One of the most important mathematical models and Mother of Models.

最小二乘法

在机器学习中,所有的算法模型其实都依赖于最小化或最大化某一个函数,我们称之为“目标函数”。

最小化的这组函数被称为“损失函数”。什么是损失函数呢?

损失函数描述了单个样本预测值和真实值之间误差的程度。用来度量模型一次预测的好坏。

损失函数是衡量预测模型预测期望结果表现的指标。损失函数越小,模型的鲁棒性越好。

找到a和b,使得损失函数:

尽可能最小。

将简单线性问题转为最优化问题。下面对函数的各个位置分量求导,导数为0的地方就是极值:

分别对a,b求导,最终我们通过最小二乘法得到a、b的表达式:

线性回归

定义:给定数据集D={(x1, y1), (x2, y2), ... },我们试图从此数据集中学习得到一个线性模型,这个模型尽可能准确地反应x(i)和y(i)的对应关系。这里的线性模型,就是属性(x)的线性组合的函数,可表示为:

向量表示为:

        
其中,w=(w1; w2;w3; ..., wd) 表示列向量

这里w表示weight,权重的意思,表示对应的属性在预测结果的权重,这个很好理解,权重越大,对于结果的影响越大;更一般化的表示是theta,是线性模型的参数,用于计算结果。

那么通常的线性回归,就变成了如何求得变量参数的问题,根据求得的参数,我们可以对新的输入来计算预测的值。(也可以用于对训练数据计算模型的准确度)

通俗的理解:x(i)就是一个个属性,theta(或者w/b),就是对应属性的参数(或者权重),我们根据已有数据集来求得属性的参数(相当于求得函数的参数),然后根据模型来对于新的输入或者旧的输入来进行预测(或者评估)。

import numpy as np

import random

from sklearn.linear_model import LinearRegression

import matplotlib.pyplot as plt

def linear_regression_demo(n = 25):

    #模拟一个 y = k * x 的数据集,并做一个线性回归,求解k,并做预测

    #首先随机构造一个近似于y = k * x + b 的数据集

    k = random.random()

    b = random.random() * 1

    x = np.linspace(0,n,n)

    y = [ item * k +(random.random() - 0.5) * k * 5 + b for item in x]

    true_y = [ item * k for item in x]

    #进行一元线性回归

    model = LinearRegression()

    model.fit(np.reshape(x,[len(x),1]), np.reshape(y,[len(y),1]))

    yy = model.predict(np.reshape(x,[len(x),1]))

    #绘图

    plt.figure()

    kk = model.coef_[0][0] # 获得预测模型的参数

    bb = model.intercept_[0] #获得预测模型的截距

    plt.title('MebiuW\'s Scikit-Learn Notes : Linear Regression Demo \n True: y='+str(k)[0:4]+'x +'+str(b)[0:4]+'  Predicted:y='+str(kk)[0:4]+'x +'+str(bb)[0:4] );

    plt.xlabel('X')

    plt.ylabel('Y')

    plt.grid(True) # 显示网格

    plt.plot(x,y,'r.') # 绘图

    plt.plot(x,yy,'g-') # 绘图

    plt.show() # 显示图像

linear_regression_demo()

线性回归鉴于其简单易用,易理解(注意上面提到的权重的理解),所以得到了很广泛的应用,在某些场景下或许有优于其它复杂方法的表现。 

相关文章

  • 机器学习算法总结

    回归算法 线性回归算法: 支持向量机&向前逐步回归&惩罚线性回归(岭回归/套索回归/ElasticNet/最小角度...

  • 机器学习系列(十一)——线性回归Linear Regressio

    线性回归算法 和knn算法不同,线性回归算法主要用于解决回归问题,它同样思想简单,实现容易,而且是许多强大的非线性...

  • 线性回归

    线性回归是机器学习算法的入门,通过该算法,管中窥豹,研究该算法的精髓之处。 线性回归 线性回归的损失函数为最小二乘...

  • 回归算法学习

    回归算法是机器学习中的经典算法之一,本文是对学习线性回归和逻辑回归算法进行的总结,线性回归与逻辑回归算法解决的分别...

  • 2019-10-29

    Day2 简单线性回归模型 机器学习入门--简单线性回归机器学习算法之线性回归算法 导入库matplotlib 绘...

  • 通俗地说逻辑回归【Logistic regression】算法(

    在说逻辑回归前,还是得提一提他的兄弟,线性回归。在某些地方,逻辑回归算法和线性回归算法是类似的。但它和线性回归最大...

  • 通俗得说线性回归算法(二)线性回归实战

    前情提要:通俗得说线性回归算法(一)线性回归初步介绍 一.sklearn线性回归详解 1.1 线性回归参数 介绍完...

  • 吴恩达机器学习(第一周)

    1.单变量线性回归(Linear Regression with One Variable) 1.1线性回归算法 ...

  • 常见回归算法

    sklearn作为机器学习中一个强大的算法包,内置了许多经典的回归算法。 线性回归 线性回归拟合一个带系数的线性模...

  • python机器学习从入门到精通(第2天)

    线性回归 线性回归的基本假设 了解一个算法,必须得了解算法的适用条件。在用线性回归之前,我们必须得知道在什么条件下...

网友评论

      本文标题:线性回归算法

      本文链接:https://www.haomeiwen.com/subject/ehdbwctx.html