机器学习入门-逻辑(Logistic)回归(1)
原文地址: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/
更多教程:阿猫学编程
最新文章
- Java中的多线程你只要看这一篇就够了
- [Unity] Shader - CG语言 流程控制语句
- javascript数据结构与算法-- 二叉树
- 嵌入式Linux驱动学习之路(一)嵌入式系统的软硬件架构
- C#基础课程之六(临时表)DataTable使用方法
- 删除所有表数据的sql语句
- [WebGL] Setting Up WebGL
- apache kafka技术分享系列(目录索引)--转载
- for语句之打印三角形问题
- popoverController(iPad)
- Think PHP 基础
- [Git]10 如何提交更新时的冲突
- 教你如何一键反编译获取任何微信小程序源代码(图形化界面,傻瓜式操作)
- 男默女泪,ArcGIS AddIN 编辑逻辑赏析,走过路过,不要错过
- VS2013 创建ASP.NET MVC 4.0 未指定的错误(异常来自HRESULT: 0x80004005(e_fail))
- Nginx的configure各项中文说明
- zabbix在运维方面的监控方法小结
- centos cron 自动执行脚本异常 命令不生效的解决办法
- day59
- APP快速搭建框架