机器学习从零开始系列连载(2)——线性回归

作者:张磊

编辑:赵一帆

本周剩余内容:

2. 建模方法回顾

2.0 偏差与方差

2.1 线性回归-Linear Regression

2.1.1 模型原理

2.1.2 损失函数

2.2 支持向量机-Support Vector Machine

2.2.1 模型原理

2.2.2 损失函数

2.2.3 核方法

2.3 逻辑回归-Logistic Regression

2.3.1 模型原理

2.3.2 损失函数

2.4 Bagging and Boosting框架

2.4.1 Bagging框架

2.4.2 Boosting框架

2.5 Additive Tree 模型

2.5.1 Random Forests

2.5.2 AdaBoost with trees

2.5.3 Gradient Boosting Decision Tree

2.5.4 简单的例子

2.6 人工神经网络-Neural Network

2.6.1 神经元

2.6.2 神经网络的常用结构

2.6.3 一个简单的神经网络例子

以通用的监督学习为例,基本包含4个部分:

01

偏差与方差

● 在机器学习算法中,偏差是由先验假设的不合理带来的模型误差,高偏差会导致欠拟合: 所谓欠拟合是指对特征和标注之间的因果关系学习不到位,导致模型本身没有较好的学到历史经验的现象;

● 方差表征的是模型误差对样本发生一定变化时的敏感度,高方差会导致过拟合:模型对训练样本中的随机噪声也做了拟合学习,导致在未知样本上应用时出现效果较差的现象;

● 机器学习模型的核心之一在于其推广能力,即在未知样本上的表现。

对方差和偏差的一种直观解释

一个例子,假如我们有预测模型:

我们希望用f^e(x)估计f(x),如果使用基于square loss 的线性回归,则误差分析如下:

所以大家可以清楚的看到模型学习过程其实就是对偏差和方差的折中过程。

02

模型原理

标准线性回归通过对自变量的线性组合来预测因变量,组合自变量的权重通过最小化训练集中所有样本的预测平方误差和来得到,原理如下。

● 预测函数

● 参数学习-采用最小二乘法

所有机器学习模型的成立都会有一定的先验假设,线性回归也不例外,它对数据做了以下强假设:

● 自变量相互独立,无多重共线性

● 因变量是自变量的线性加权组合:

● 所有样本独立同分布(iid),且误差项服从以下分布:

最小二乘法与以上假设的关系推导如下:

使用MLE(极大似然法)估计参数如下:

线性回归有两个重要变体:

● Lasso Regression:采用L1正则并使用MAP做参数估计

● Ridge Regression:采用L2正则并使用MAP做参数估计

关于正则化及最优化后续会做介绍。

03

损失函数

进一步阅读可参考:Least Squares

https://en.wikipedia.org/wiki/Least_squares

原文发布于微信公众号 - 机器学习算法全栈工程师(Jeemy110)

原文发表时间:2017-11-27

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏聊聊技术

原 初学图论-Kahn拓扑排序算法(Kah

3008
来自专栏xingoo, 一个梦想做发明家的程序员

AOE关键路径

这个算法来求关键路径,其实就是利用拓扑排序,首先求出,每个节点最晚开始时间,再倒退求每个最早开始的时间。 从而算出活动最早开始的时间和最晚开始的时间,如果这两个...

2637
来自专栏ml

朴素贝叶斯分类器(离散型)算法实现(一)

1. 贝叶斯定理:        (1)   P(A^B) = P(A|B)P(B) = P(B|A)P(A)   由(1)得    P(A|B) = P(B|...

3627
来自专栏后端之路

LinkedList源码解读

List中除了ArrayList我们最常用的就是LinkedList了。 LInkedList与ArrayList的最大区别在于元素的插入效率和随机访问效率 ...

21110
来自专栏xingoo, 一个梦想做发明家的程序员

Spark踩坑——java.lang.AbstractMethodError

百度了一下说是版本不一致导致的。于是重新检查各个jar包,发现spark-sql-kafka的版本是2.2,而spark的版本是2.3,修改spark-sql-...

1260
来自专栏开发与安全

算法:AOV网(Activity on Vextex Network)与拓扑排序

在一个表示工程的有向图中,用顶点表示活动,用弧表示活动之间的优先关系,这样的有向图为顶点表示活动的网,我们称之为AOV网(Activity on Vextex ...

3997
来自专栏Hongten

ArrayList VS Vector(ArrayList和Vector的区别)_面试的时候经常出现

2302
来自专栏Phoenix的Android之旅

Java 集合 Vector

List有三种实现,ArrayList, LinkedList, Vector, 它们的区别在于, ArrayList是非线程安全的, Vector则是线程安全...

692
来自专栏计算机视觉与深度学习基础

Leetcode 114 Flatten Binary Tree to Linked List

Given a binary tree, flatten it to a linked list in-place. For example, Given...

2098
来自专栏拭心的安卓进阶之路

Java 集合深入理解(6):AbstractList

今天心情比天蓝,来学学 AbstractList 吧! ? 什么是 AbstractList ? AbstractList 继承自 AbstractCollec...

20910

扫码关注云+社区