这一系列的博客,主要是记录在学校的Machine Learning实践课中,一些学习的过程,以及自己补充的基础知识(以引用来表示)。原理在西瓜书上都有,因此本系列博客主要是用python来实现,会包含一些公式。
“机器学习就是自动找函数”
文章目录
regression基础
regression:函数的输出是一个数值(举例:stock market forecast, self-driving car, recommendation)
binary classification:二分类
generation:生成
给出label -> 函数的loss -> 机器自动找出loss最低的函数
1. 最小二乘法求解Linear Regression
最小二乘法 least square method:
最小二乘法通过最小化误差的平方和寻找数据的最佳函数匹配。利用最小二乘法可以简便地求得未知的数据,并使得这些求得的数据与实际数据之间误差的平方和为最小。
1.1 在LR中,我们的目的是确定w和b
(小写的Ω没找到,用w代替了),西瓜书的公式如下(带*是指的这个变量的解):
以w为例,最后的求解公式为:
1.2 python代码实现
import numpy as np
def LinerRgressionLSQ(X , Y):
"""
线性回归的最小二乘法实现
X.T表示该矩阵的转置
np.dot(X,Y)表示矩阵X和Y的乘积
np.det(X)表示求矩阵X的行列式
np.linalg.inv(X)表示numpy中用于求解矩阵逆
"""
XTX = np.dot(X.T,X)
if np.linalg.det(XTX) == 0.0:
print("Can not resolve the problem")
return
W = np.dot(np.dot(np.linalg.inv(XTX), X.T), Y)
return W
矩阵的行列式
矩阵行列式是指矩阵的全部元素构成的行列式,设A=(aij)是数域P上的一个n阶矩阵,则所有A=(aij)中的元素组成的行列式称为矩阵A的行列式,记为|A|或det(A)。
矩阵相当于向量,行列式相当于向量的模。
2. 梯度下降求解Linear Regression
只要是可微分的函数,梯度下降(gradient descent)都可以用
2.1 以一个参数为例
在linear regression中,没有local minima,因为是凸函数convex
2.2 推到两个参数
为什么wi越小越好?
wi越接近0,wiΔxi越小,function也会越平滑。
λ选择
其值越大,越倾向于考虑w本来的值,而减少考虑error,因此在Training data 上error会变大是合理的,Testing data上error会下