原文地址:http://www.bugingcode.com/machine_learning/ex3.html

关于机器学习的教程确实是太多了,处于这种变革的时代,出去不说点机器学习的东西,都觉得自己落伍了,但总觉得网上的东西并不系统,无法让人串联在一起,总有很多人读了几篇机器学习的东西,就自以为机器学习就那些东西,认为机器学习也就那么一回事,想把这几年关于机器学习的东西做一些总结,能够跟大家一起学习和交流。

如果需要用几句话来简单的总结机器学习是什么意思,也许可以用:让机器学会决策。对比我们人来说,每天都会碰到这个问题,比如菜市场里买芒果,总要挑出哪些是甜的。这就是所谓的决策,再通俗来讲就是分类问题了,把一堆芒果,分出甜和不甜的。而机器学习就是学会把甜和不甜的苹果分出来,那如何分呢?

模拟人类的思考方式。凭经验,我们可以按照芒果皮的颜色,大小等来对芒果的酸甜进行分类,对于机器来说,把芒果的颜色,大小等当成变量输入到电脑模型里,就能推出芒果的酸甜性,这样就对芒果进行分类。

机器学习的算法有非常的多,这篇主要介绍的是Logistic回归。

从一个最简单的数学问题开始。
1801年,意大利天文学家朱赛普·皮亚齐发现了第一颗小行星谷神星。经过40天的跟踪观测后,由于谷神星运行至太阳背后,使得皮亚齐失去了谷神星的位置。随后全世界的科学家利用皮亚齐的观测数据开始寻找谷神星,但是根据大多数人计算的结果来寻找谷神星都没有结果。时年24岁的高斯也计算了谷神星的轨道。奥地利天文学家海因里希·奥尔伯斯根据高斯计算出来的轨道重新发现了谷神星。

从这段历史记录可以看出,高斯当时观察了很多小行星谷神星的记录,也就是我们常说的观察数据,并使用了最小二乘法模拟了这条线,预测了小行星谷神星的轨迹。

高斯最小二乘法的方法发表于1809年他的著作《天体运动论》中。其实在1806年法国科学家勒让德就提出了最小二乘法相应的想法,所以勒让德曾与高斯为谁最早创立最小二乘法原理发生争执。
最小二乘法的思想是什么呢?

假设观察数据,,…,,而默认的认为这些数据是符合最常见的规律,既x和y符合线性关系,用方程可以表示为

$$ y=a+bx$$

其中,a,b是我们需要通过观察数据确定的参数。

所谓最小二乘法就是这样的一个法则,按照这样法则,最好是拟合于各个数据点的最佳曲线应该使个数据点与曲线偏差的平均和为最小。
用数学公式表示为:

$$\sum_{n=0}^N(y_i-a-bx_i)^2$$

的值为最小,这里的a,b是参数。

这就是我们的评估函数

这里假设:

$$v = y_i-a-bx_i$$

要 求出最值问题,我们需要对评估函数进行求导

有两个参数,求最小值,即为求偏差平方和对a和b分别求出偏导数,得:

$$\frac{\partial\sum_{i=1}^nv_i^2}{\partial a}=-2\sum(y_i-a-bx_i)=0$$

$$\frac{\partial\sum_{i=1}^nv_i^2}{\partial b}=-2\sum(y_i-a-bx_i)*x=0$$

则:

$$ \sum y_i -na -b\sum x_i = 0 $$

$$ \sum y_ix_i -\sum x_ia -b\sum x_i^2 = 0 $$

根据公式可以推出a和b的值:

$$ b= \frac{S_{xy}}{S_{xx}}$$

$$ a = \overline{y} - b \overline{x}$$

其中:

$$ S_{xy} = \sum x_iy_i - \frac{\sum x_i \sum y_i}{n}$$

$$ S_{xx} = \sum x_i^2 - \frac{{(\sum x_i)}^2}{n} $$

$$ \overline{x} = \frac{\sum x_i}{n}$$

这样就可以求出了a和b的值。
既我们可以通过观察的数据,来拟合我们的直线,既可以在给定某个x,有效的预测y。通常来说求出的值a和b跟实际本身来说是有一定的误差了,是不是给定的观察值越多就越准确呢?这不一定,这也是大学概率论和数值统计中一直讨论的问题。
再次的强调最小二乘法是使用误差最小来进行估计的。

转载请标明来之:http://www.bugingcode.com/

更多教程:阿猫学编程

机器学习入门-逻辑(Logistic)回归(1)的更多相关文章

  1. 机器学习入门 - 逻辑(Logistic)回归(5)

    原文地址:http://www.bugingcode.com/machine_learning/ex7.html 把所有的问题都转换为程序问题,可以通过程序来就问题进行求解了. 这里的模拟问题来之于C ...

  2. 机器学习(4)之Logistic回归

    机器学习(4)之Logistic回归 1. 算法推导 与之前学过的梯度下降等不同,Logistic回归是一类分类问题,而前者是回归问题.回归问题中,尝试预测的变量y是连续的变量,而在分类问题中,y是一 ...

  3. 《机器学习实战》-逻辑(Logistic)回归

    目录 Logistic 回归 本章内容 回归算法 Logistic 回归的一般过程 Logistic的优缺点 基于 Logistic 回归和 Sigmoid 函数的分类 Sigmoid 函数 Logi ...

  4. 机器学习实战3:逻辑logistic回归+在线学习+病马实例

    本文介绍logistic回归,和改进算法随机logistic回归,及一个病马是否可以治愈的案例.例子中涉及了数据清洗工作,缺失值的处理. 一 引言 1 sigmoid函数,这个非线性函数十分重要,f( ...

  5. 数据挖掘-逻辑Logistic回归

    逻辑回归的基本过程:a建立回归或者分类模型--->b 建立代价函数 ---> c 优化方法迭代求出最优的模型参数  --->d 验证求解模型的好坏. 1.逻辑回归模型: 逻辑回归(L ...

  6. 机器学习实战之Logistic回归

    Logistic回归一.概述 1. Logistic Regression 1.1 线性回归 1.2 Sigmoid函数 1.3 逻辑回归 1.4 LR 与线性回归的区别 2. LR的损失函数 3. ...

  7. 机器学习实践之Logistic回归

        关于本文说明,本人原博客地址位于http://blog.csdn.net/qq_37608890,本文来自笔者于2017年12月17日 19:18:31所撰写内容(http://blog.cs ...

  8. 机器学习之线性回归---logistic回归---softmax回归

    在本节中,我们介绍Softmax回归模型,该模型是logistic回归模型在多分类问题上的推广,在多分类问题中,类标签 可以取两个以上的值. Softmax回归模型对于诸如MNIST手写数字分类等问题 ...

  9. 05机器学习实战之Logistic 回归

    Logistic 回归 概述 Logistic 回归 或者叫逻辑回归 虽然名字有回归,但是它是用来做分类的.其主要思想是: 根据现有数据对分类边界线(Decision Boundary)建立回归公式, ...

随机推荐

  1. 进程同步multiprocess.Lock

    进程同步multiprocess.Lock 我们千方百计实现了程序的异步,让多个任务可以同时在几个进程中并发处理,他们之间的运行没有顺序,一旦开启也不受我们控制.尽管并发编程让我们能更加充分的利用IO ...

  2. 搭建公司的React开发环境

    记录公司环境搭建 1.安装VSCODE, 安装网上的推荐各种控件2.安装node, yarn, 会自动添加path3.先初始化npm 全部按回车默认. npm init.  初始化yarn: yarn ...

  3. Table布局的优缺点

    总结 Table布局的缺点是比其它html标记占更多的字节,会阻挡浏览器渲染引擎的渲染顺序,会影响其内部的某些布局属性的生效,优点就是用table做表格是完全正确的 Tables的缺点 1.Table ...

  4. 887A. Div. 64#模特的数学技巧(字符串处理)

    问题出处:http://codeforces.com/problemset/problem/887/A 问题大意:对于给出的一串二进制数,能否通过去掉一些数字,使之成为十进制下64的倍数 #inclu ...

  5. FastJson禁用循环引用检测

    我们先来看一个例子: package com.elong.bms; import java.io.OutputStream; import java.util.HashMap; import java ...

  6. swift中的坑

    1.NSClassFromString //获取工程名称 let group = Bundle.main.infoDictionary let fileName = group?[kCFBundleE ...

  7. 吴裕雄--天生自然python学习笔记:python 用pygame模块制作一个音效播放器

    用 Sound 对象制作一个音效播放器. 应用程序总览 程序在执行后默认会把 WAV 音频文件加载到清单中,单击“播放”按钮可开始 播放,同时显示 “正在播放 xxx 音效”的信息 . 播放过程中,可 ...

  8. 线程中start与run方法的主要区别

    区别一:                在于当程序调用start方法一个新线程将会被创建,并且在run方法中的代码将会在新线程上运行,                然而在你直接调用run方法的时候, ...

  9. fcntl()函数之非阻塞模型

    优点:设置标准输入为非阻塞(有数据则读 没有数据则立即返回),常用于网络通信以及轻量信息多并发中 步骤: 1.oldflag=fcntl(STDIN_FILENO,F_GETFL); 获取标准输入的文 ...

  10. iOS多种刷新样式、音乐播放器、仿抖音视频、旅游App等源码

    iOS精选源码 企业级开源项目,模仿艺龙旅行App 3D立体相册,可以旋转的立方体 横竖屏切换工具,使用陀螺仪检测手机设备方向,锁屏状... Swift版Refresh(可以自定义多种样式)架构方面有 ...