机器学习虾扯淡之线性回归No.39
今天晚上,整理了一下线性回归的完整的数学推导过程以及应用。
0x00甩定义
首先什么是线性回归?
就是面包屑嘛,我们跟着一个一个面包屑走,然后duang~~在脑里脑补出一条路,然后预测下一个面包屑的位置。
"鲁迅曾经说过:世界上本没有路,走的人多了也就成了路,因为草长不起来。"
鲁迅:我没说过这句话。
线性回归就是要找出这条笔直的路,来拟合数据,然后预测未来。
“JoeJoe老师你这图好丑啊”
“你信不信我疼你一百次啊?!!”
假设我们有N个面包屑。N等于5.
小一 ( x1 , y1 )
小二 ( x2 , y2 )
小三 ( x3 , y3 )
小四 ( x4 , y4 )
小五 ( x5 , y5 )
怎么找到这条路呢?
思考人生ing。
去他妈的思考人生。
啊啊啊啊,找路要紧找路要紧。
好了,就决定这条线,就
f(x) = wx + b
完美!!!完美符合一切情况。
(本文完)
等等等等,啥玩意叫完美符合一切情况?这尼玛啥也没干啊等于。w是几啊?b又是几啊?bbbbb就你bb。
好嘛。。
那我们肯定是误差越小越好,越符合情况越好啊。搬出小学课本查了查,嗯,最小二乘法。
简单来说,就是尽量让直线上预测的点跟实际的点欧拉距离最小。
啥玩意叫欧拉距离啊大蕉,你能不能别卖关子了?
就是我们现在所有说的空间距离,都是欧拉距离,比如,大蕉和小蕉,距离只有1毫米,这样。
也就是要这样。
L(w,b) = ∑ ( f(x) - y )^2
使上面这个值最小。
喔!!!!!我知道了,那这样就可以让曲线完美符合了。
知道你个大头鬼啦!!
作为一个小学生,我知道上面这个是一元二次方程,我直接抛物线求最小值就可以了。完美。
但是吖,我们生活中,遇到的可不仅仅是一元二次吖,可能是N元N次啊,你怎么求?
0x01求最优解
今天只介绍一种解法,就是梯度下降法。
我们定义一个学习率,也叫步长就是每一次走的步伐,步子大了会扯到什么你们自己知道的,我们叫做 α 。首先随便初始化一个w和b。
L(w,b) = ∑ ( f(x) - y )^2 = ∑ (wx + b - y) ^ 2
上面这里x和y都是已知的定值,所以直接代进去就可以求啦。
然后我们分别对w和b求导。
d(w) = dL / dw
d(b) = dL / db
然后令w = w - α * d(w) , b = w - α * d(b)
每次挪一步每次挪一步,总结找到一个局部最小值的,至于能不能找到全局最小值呢?
看运气,步子不要太大,不扯到,有可能可以喔。但是步子大了,又可能跳出局部最小值,找到另外一个局部最小值喔,万一找到了呢?
这里会有三种模式,上面说的是Batch - Gradiant Descent,批量梯度下降,也就是每次把所有的值都代进去算一遍。
第二种是 Stochastic - Gradiant Descent。随机梯度下降,每一次只代入一个值。随机算法随机解,解到哪里算哪里。
还有一种折中算法 Mini-Batch Gradiant Descent。小批量梯度下降。每次代入一小批,然后算一下。
第三种其实是最常用的。第一种把耗时太长,第二种吧太随机了。第三种,马马虎虎,多算几次还是能算好的。
谁叫人丑就要多学习呢?
0x01核函数
有时候我们会发现,这他妈直线哪能描述我的想法啊?不行,我要换,换换换。
我们可以这样,用一个叫核函数的东西,把低维的东西,映射到高维上。
map ( x , y ) => exp ( x , y)
啥叫映射呢?就是我们反过来想。
你关上灯,然后拿起小电筒,照在墙上。
墙就是你这束三维的光在墙这个二维面上的投影。
反过来,我们人脑也可以用一个映射,把这个小投影,还原想象成这束三维的光。
哈?你问我这样做有什么用?
比如说,桌子上猪肉中间有一小块肥肉(二维问题),你要把他挑出来(分类),只能切一刀,还只能切直线,咋办?
机智的小蕉,会把猪肉提起来(变成三维的),然后横着一切,完美。最中间的肥肉就飞了飞了。
从分类来说。
有线性核,多项式核,高斯核,径向基核。
越复杂的核函数,越容易过拟合喔,小心为妙。
0x02正则化
我从两个方面来说这个东西吧,分别是防止过拟合要怎么办?以及为什么这样能防止过拟合。
好了,怕过拟合,咋办?加正则项咯。有这三种,可以单独用也可以打组合拳。
L0 = ||w||0 使得参数非零的个数最小
L1 = ||w||1 使得参数的绝对值的和最小
L2 = ||w||2 使得参数的平方的和最小
这三个都可以防止过拟合,但是L0比较难受,是一个NP-Hard问题,所以一般都用L1或者L2。
好那我们要使得
||w|| <= C 也就是 ||w|| - C <= 0
C是某一个常数。这样怎么去求解呢?
拉格朗日乘子法。
不熟悉的小朋友自行度娘,简单来说就是把约束条件也丢到损失函数里边。
所以损失函数就变成了
L(w,b) = ∑ ( f(x) - y )^2 - λ * (||w|| - C)
然后跟上面一样去求最小值就可以啦。
下面这些听起来很炫酷的算法,其实就是加正则项啦
Lasso 回归 -> 加了L1正则项的线性回归
Ridge 回归 -> 加了L2正则项的线性回归
ElasticNet -> 加了L1和L2正则项混合双大的线性回归
0x03结束语
就这样。不会写。哼,写什么都掉粉,你不分享一下吗?
赞赏一下,开心一周
机器学习虾扯淡之线性回归No.39相关推荐
- 机器学习虾扯淡之特征工程(一)No.38
0x00瞎扯淡 当当当,我又来啦. 哇咔咔,很多人都说我好久好久没写机器学习的东西啦.是不是忘啦? 没有没有,记着呢. 只是最近在看很多其他的东西,比如敲敲scikit-learn的文档啦,比如看看& ...
- l2正则化python_机器学习入门之机器学习之路: python线性回归 过拟合 L1与L2正则化...
本文主要向大家介绍了机器学习入门之机器学习之路: python线性回归 过拟合 L1与L2正则化,通过具体的内容向大家展现,希望对大家学习机器学习入门有所帮助. 正则化: 提高模型在未知数据上的 ...
- 机器学习(二)多元线性回归算法预测房价
机器学习(二)多元线性回归算法预测房价 本篇文章已作为重庆交通大学19级微课<机器视觉>大作业提交,提前声明,避免抄袭误会 "garbage in garbage out&quo ...
- 大数据角度给大家解释一下为什么大数据AI分析足彩是扯淡
从大数据角度给大家解释一下为什么大数据AI分析足彩是扯淡的:如果相同的维度,维度包括球员.场内.场外.教练组.基本面.伤病.阵容等不变,你让两个队踢100万场,那么我们确实可以回归出来一个胜平负的率, ...
- 机器学习一百天-day3多元线性回归及虚拟变量陷阱分析
机器学习一百天-day3多元线性回归及虚拟变量陷阱分析 一,数据预处理 导入数据集 import pandas as pd import numpy as npdataset = pd.read_cs ...
- 和美女边扯淡边优化SQL
一美女DBA想学SQL优化,经常和俺扯淡,俺也乐于扯淡.俺最喜欢美女了.今天他发来一个SQL叫俺帮忙看看. 执行计划如下: SELECT "A1"."CODE" ...
- CSAPP第五章就在“扯淡”!
"你的时间有限,所以不要为别人而活.不要被教条所限,不要活在别人的观念里.不要让别人的意见左右自己内心的声音.最重要的是,勇敢的去追随自己的心灵和直觉,只有自己的心灵和直觉才知道你自己的真实 ...
- Coursera公开课笔记: 斯坦福大学机器学习第四课“多变量线性回归(Linear Regression with Multiple Variables)”
Coursera公开课笔记: 斯坦福大学机器学习第四课"多变量线性回归(Linear Regression with Multiple Variables)" 斯坦福大学机器学习第 ...
- Coursera公开课笔记: 斯坦福大学机器学习第二课“单变量线性回归(Linear regression with one variable)”
Coursera公开课笔记: 斯坦福大学机器学习第二课"单变量线性回归(Linear regression with one variable)" 发表于 2012年05月6号 由 ...
- 斯诺登:FBI需要苹果帮助才能解锁iPhone完全扯淡
今天由非盈利机构Common Cause主持召开的"Blueprint for Democracy"(民主蓝图)峰会上,爱德华·斯诺登(Edward Snowden)就监控.个人自 ...
最新文章
- Pair Programming 1 (Casual Game) 曹竹 杨牧 贪吃蛇游戏扩展 Blog Report
- StringBuilder类与String类的区别
- linux sh脚本 while,Linux shell脚本使用while循环执行ssh的注意事项
- php页面调用时间戳,php--------获取当前时间、时间戳
- [数据结构] - ArrayList探究
- 2018蓝桥杯省赛---java---C---1(哪天返回)
- 全栈深度学习第4期: 机器学习岗位区别与团队管理
- oracle中prad函数_等保测评2.0:Oracle身份鉴别
- 使用Python解析MNIST数据集
- Swift - 推送之本地推送(UILocalNotification)添加Button的点击事件
- android camera (2) ---高通平台camera开发
- opencv 直方图
- java jtextfield 输入_【java】JTextField与JComboBox结合动态匹配输入信息
- pytorch导入模型
- android 数组赋值字符串_给字符数组赋值的方法
- 西门子estop指令_西门子PLC故障安全编程——ESTOP1指令
- JS判断当前浏览器是否为IE内核
- 程序员52个堪称神器的学习网站,每天坚持一小时,让你受益一生
- 批量删除QQ空间说说代码
- display属性详解
热门文章
- Power bi 4.20 词云
- 远程ntp服务器响应模式6查询,H3C WP5048无线PoE注入器 命令参考-Release 2208-6W100
- 第十二章、GDK学习
- Android技术分享| 实现视频连麦直播
- Barefoot Networks 宣布 P4 Studio—下一代软件开发环境
- 如何学习平面设计,需要学习哪些软件?
- 机器人辅助符文天赋符文天赋_机器人符文天赋
- 电商平台违规“二清”,将面临哪些处罚?
- 腾讯员工税后收入 250 万,年终奖是100个月工资?在大厂工作究竟有多赚钱?
- 考研英语语法_Day02_并列句