2019-03-07

第10课:线性回归– 从模型函数到目标函数


1.  机器学习的目标是使我们建立的模型运行结果和理想结果之间的差异尽可能小,因此可以将目标函数建模成为一个对这类差异的评估函数,求解使得目标函数最小值的一个最优化的问题。

2.  第一步,从数据反推公式。在已知数据情况下,试建立模型并不断调试,直至确认模型参数最优以达到理想结果和模型训练结果之间差异最小化的结果。举例如下:


3.  第二步,通过提取Experience和Salary并用x和y分别指代他们,发现y和x之间的正比关系。从而得出y=a+bx这样的线性相关关系。


4.  综合利用训练数据,拟合线性回归函数,就是我们要求的模型函数。模型函数和目标函数的差异最小,就是我们不断训练模型要得到的目标。

假如我们要求的模型函数是这样的一个一元线性函数,那么衡量模型函数和目标函数之间的差距就可以表达为:

数据拟合成为直线的效果如下图所示

5 利用线性函数对一个或多个自变量和因变量之间的关系进行拟合的模型。线性函数的定义是:一阶多项式,或零多项式。当线性函数只有一个自变量时,y=f(x).

f(x) 的函数形式是:f(x) = a + bx (a、b 为常数,且 b≠0b≠0)——一阶多项式

或者 f(x) = c (c 为常数,且 c≠0c≠0) —— 零阶多项式

或者 f(x) = 0 —— 零多项式

总结一下:特征是一维的,线性模型在二维空间构成一条直线;特征是二维的,线性模型在三维空间中构成一个平面;若特征是三维的,则最终模型在四维空间中构成一个体,以此类推。

用线性回归模型拟合非线性关系  


拟合的结果就是X=(x1, x2)(其中x1=x2;x2=x),有:

第11课:线性回归– 梯度下降法求解目标

如下所示,J(a,b)是一个二元函数,我们的目标是求取理想的参数a和b的值,并且当a,b达到这个值的时候,J(a,b)的值达到最小。



斜率、导数和偏微分

当求取以曲线表示的函数在某一点的导数值的时候,就是求取经过这个点的函数曲线切线的斜率。

一元函数在某一点处沿 x 轴正方向的变化率称为导数。但如果是二元或更多元的函数(自变量维度 >=2),则某一点处沿某一维度坐标轴正方向的变化率称为偏导数。


导数/偏导数表现的是变化率,而变化本身,用另一个概念来表示,这个概念就是微分(对应偏导数,二元及以上函数有偏微分)。


(偏)导数是针对函数上的一个点而言的,是一个值。而(偏)微分则是一个函数,其中的每个点表达的是原函数上各点沿着(偏)导数方向的变化。


直观而不严格的来说,(偏)微分就是沿着(偏)导数的方向,产生了一个无穷小的增量。



当我们求出了一个函数的(偏)微分函数后,将某个变量带入其中,得出的(偏)微分函数对应的函数值,就是原函数在该点处,对该自变量求导的导数值。


梯度下降中的步长参数阿尔法α是无法求解的,必须手工指定。

如果训练程序是通过人工制定迭代次数来确定退出条件,则迭代次数也是一个超参数。

如果训练程序以模型结果与真实结果的整体差值小于某一个阈值为退出条件,则这个阈值就是超参数。

在模型类型和训练数据确定的情况下,超参数的设置就成了影响模型最终质量的关键。

而往往一个模型会涉及多个超参数,如何制定策略在最少尝试的情况下让所有超参数设置的结果达到最佳,是一个在实践中非常重要又没有统一方法可以解决的问题。


    importmatplotlib.pyplot as plt

    importnumpy as np

    fromsklearn import datasets, linear_model

    fromsklearn.metrics import mean_squared_error, r2_score


   experiences = np.array([0,1,2,3,4,5,6,7,8,9,10])

    salaries= np.array([103100, 104900, 106800, 108700, 110400, 112300, 114200, 116100,117800, 119700, 121600])


    #将特征数据集分为训练集和测试集,除了最后 4 个作为测试用例,其他都用于训练

    X_train =experiences[:7]

    X_train =X_train.reshape(-1,1)

    X_test =experiences[7:]

    X_test =X_test.reshape(-1,1)


    #把目标数据(特征对应的真实值)也分为训练集和测试集

    y_train =salaries[:7]

    y_test =salaries[7:]


    #创建线性回归模型

    regr =linear_model.LinearRegression()


    #用训练集训练模型——看就这么简单,一行搞定训练过程

   regr.fit(X_train, y_train)


    #用训练得出的模型进行预测

   diabetes_y_pred = regr.predict(X_test)


    #将测试结果以图标的方式显示出来

   plt.scatter(X_test, y_test,  color='black')

   plt.plot(X_test, diabetes_y_pred, color='blue', linewidth=3)

   plt.xticks(())

   plt.yticks(())

   plt.show()


©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,542评论 6 504
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,822评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,912评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,449评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,500评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,370评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,193评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,074评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,505评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,722评论 3 335
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,841评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,569评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,168评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,783评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,918评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,962评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,781评论 2 354

推荐阅读更多精彩内容