机器学习的基本单元,回归分析
总结一下怎么实现。当然我啥也没有,没有数据,没有例子,python框架都没搭好,写个能跑的程序是不可能的了。
不过把思路写下来,以后说不定学的快点。
线性分析的基本思路:
线性回归 用线把表格上的点平滑的连起来。嗯,that is all。
自变量和因变量的关系:最小单位的数据是两份的 (自变量,因变量)
然后套方程从一次开始到多的和泰勒公式一样多。理论是用线性方程理论上可以表示所有的曲线。
所以可以用一个一元∞次方程表示任何曲线,但曲线的不同就在于参数的不同了。
因此线性回归就是求取一个方程参数的问题。当然依据拟合精度要求以及已知数据大小判断应该选取多少次,∞是不可能的。
步骤是先选取适合的方程,然后随机选取参数带入,得到一个初始的曲线方程。很明显这个曲线方程和这堆数据啥关系没有,所以
1.把数据代入算数据和曲线的差距,再选取几个随机参数重复
2.然后按几个差距的变化(这也算一次线性回归,相当于递归的界限),把参数往斜率方向以一定幅度变化。
例子,参数=1处误差是100,参数=2处误差是50,我们就认为1-2误差在减小,所以下一个选2右边的一个数。那么
下一个数选3呢还是300呢,这就是幅度了,+1和+298都是可以的,但是精度肯定是不一样的。+1最佳参数与求得参数波动时1,+298波动是298.这是精度与运算量之间的问题。
这应该是线性回归的大部分了,视频里还把方程的选择放进去了。
不过我来看应该是三个线性回归的逐级调用。
方程次数与误差的线性模拟
次数确定后参数与误差的线性模拟
斜率的模拟(最简单的模拟,这个模拟不用递归直接可以判断)
这里我逼逼一会自己对过拟合(overfitting)的看法
过拟合其实算法不背锅,这主要是数据的问题,数据的误差。
如果次数大到无穷,线性回归应该是可以完全拟合已有数据的。所以这一步算法是可以达到它认为的完美的。但是线性回归不是模拟已有的而是猜测未知的。已有数据和未知数据都是有误差的,已有数据越少,误差对拟合的影响越大,而且你精确度高了就是说把误差也考虑进去了。
废话一大推自己也看不懂。简单点说已知数据的完美拟合曲线1与所有数据(已知和未知)的完美拟合曲线2是不一样的。或者说曲线1包括曲线2(曲线1是一个集合,曲线2甚至也可以看作一个集合,不懂就不解释了。和曲线1比曲线2集合大一个道理 )。两片数据之间的大小差距决定这两条曲线的相似程度。你拟合的超过这个程度,就是过拟合了。
例子,两个双胞胎,除了一个屁股上有痣,一个脸上有痣。叫你找一个人的特征去判定其他人是不是他兄弟两。你找到脸型,身高,眼型,眉毛。没错,这些特征可以,但当你精细到一定程度发现了脸上的痣,把它作为特征,这就是过拟合了。因为他们本来就不同。
这里我有疑问,线性回归的train只能是参数还是也可以训练方程???应该是只能训练参数吧,不过套两个我感觉可以实现方程训练。
分类回归(分类)我没太学会。我感觉差不多,只有lossfuction差距。