1.假设去银行贷款,年龄和工资就是特征,理解成线性方程的X,所能贷款的额度就是标签,理解成Y,通过一个人的年龄加工资来判断给他多少的贷款,这是一个Y=θ1X1+θ2X2+θ0的线性表达式。
这里的θ0为偏置项,理解成对结果做了一个微调,就相当于下面这个绿色的平面,并不是所有的红色点都可以准确的出现在我们的线性函数上,所以需要通过上下调整绿色平面来使它更准确。但是整个函数里最关键的还是θ1和θ2,θ0只是微调而已。But!上面这个线性回归的式子没法变成矩阵,因为多了θ0,如果说,y=θ1X1+θ2X2+θ0X0的话,就可以变成矩阵了,所以,在做数据的时候,多加一列特征X0,里面的值都设为1,这样θ0X0就依旧还是θ0。这个时候就可以整合式子了,y=θ1X1+θ2X2+θ0X0=
这个时候问题又出现了,还是上面那张图我的Y是真实值,蓝色的相交点是预测值,所以需要加上一个误差值error来使二者相等,但是,每个数据的true和pre之间的error是不一样的,所以机器学习的目的,就是为了让这个error变小,使预测值和真实值的差距变小。
误差是独立并具有相同的分布,独立就是说里面的X互不打扰,同分布是指在同一条件下,举个例子,张三和李四一起去银行贷款,张三借了一万,不会影响李四借一百万,但是俩人必须都是在中国银行贷的款,不能一个中国银行一个建行。
误差还服从高斯分布,又叫正态分布,所以说绝大部分情况,值都会比较正常,只有极小部分情况值会比较离谱,由于误差服从高斯分布,exp就是那个自然数e,把上面的(图2里的公式)带入到高斯分布里,
这么理解,我们希望xi和θ的组合等于y这个真实值的概率越大越好
似然函数把上面的每个i的概率相乘就得到了似然函数,理解成什么样的参数跟我们的数据组合后恰好是真实值。
但是如果m的数量很大,比如说m=1000,一千个这样的式子累乘就会很费劲,所以我们会取log来进行对数运算(logAB=logA+logB)把一千个相乘变成一千个相加,这样计算就会容易许多,那么问题又来了,取了对数之后运算出来的结果就会产生变化,这里要明白一个问题,我们并不是要算这个L(θ)的具体的极值,而是要知道θi这个极值点,至于具体L(θi)是多少,无所谓。
化简之后得到这个式子,我们要让他最大,前一部分看成A,后一部分看成B,A-B(AB都为正数)最大,只能让B最小,这时候我们就能得到一个目标函数,我们设成J(θ)
,因为为常数,所以就直接扔掉不要了,带着是因为在之后的运算里可能会消掉
目标函数:这里的x不是数字,而是你的数据,x1第一列特征,x2第二列特征,xn第n列特征,是矩阵,对于矩阵来说,一个矩阵的平方项等于矩阵的转置乘上矩阵自身,同样θ也是矩阵,我们要求什么样的θ能使函数J(θ)的值最小,只需要用J(θ)对θ求偏导,当偏导=0时,那个θ就是极值点,最后得到的结果是
然后就涉及到了梯度下降的问题,这里有下列几种梯度下降的方法(对目标函数J(θ))
批梯度下降:其中是数据第j列第i行,这里确定梯度的方向,1\m是m个数据平均,我们要做的就是沿着梯度的反方向去更新θ的参数,也就是容易得到最优解,但是由于每次考虑所有样本所以速度会很慢。
随机梯度下降:,和上面比我们不求平均了,每次只找一个样本,迭代速度快,但不一定每次都朝着收敛的方向
小批量梯度下降:,一共我选10个样本去做,我一批可以选64,128,256等等,这些batch是自己定的,这里面的α就是学习率每次更新选择一小部分数据来算,非常实用
这里还会涉及到一个概念叫学习率(步长),对结果会产生巨大影响,一般小一些,0.001这样,或者一开始设置成0.01,然后从它开始减