系列文章目录
机器学习算法(一):1. numpy从零实现线性回归
机器学习算法(一):2. 线性回归之多项式回归(特征选取)
文章目录
前言
最近,想将本科学过的一些机器学习算法从零开始实现一下,毕竟天天当调包侠,虽然也能够很愉快的玩耍,但对于我这个强迫症患者是很难受的,底层逻辑是怎么样的,还是需要知道的。接下来我会从最简单的多元线性回归开始,一步一步在 j u p y t e r jupyter jupyter里面实现。
【注1】:本文默认读者具有基本的机器学习基础、 n u m p y numpy numpy基础,如果没有建议看完吴恩达老师的机器学习课程在来看本文。
【注2】:本文大部分代码会采用向量化加速编程,当然部分情况下也会用到循环遍历的情况。后面有时间会再出一起循环遍历实现的。
【注3】:作者实力有限,有错在所难免,欢迎大家指出。
一、理论介绍(全向量化)
线性回归的预测函数:
y = w 1 x 1 + w 2 x 2 + . . . + w n x n + b y = w_1x_1+w_2x_2+...+w_nx_n+b y=w1x1+w2x2+...+wnxn+b
写成向量的形式: y = w T x + b y = \mathbf{w^Tx}+b y=wTx+b
其中: w = ( w 1 , . . . , w n ) T , x = ( x 1 , . . . , x n ) T \mathbf{w} = (w_1,...,w_n)^T,\mathbf{x}=(x_1,...,x_n)^T w=(w1,...,wn)T,x=(x1,...,xn)T
为了编程方便,将 b b b收缩到 w w w向量里面去,有 w = ( w 0 , w 1 , . . . , w n ) T , w 0 = b \mathbf{w} = (w_0,w_1,...,w_n)^T,w_0=b w=(w0,w1,...,wn)T,w0=b
x = ( x 0 , x 1 , . . . , x n ) T , x 0 = 1 \mathbf{x}=(x_0,x_1,...,x_n)^T,x_0=1 x=(x0,x1,...,xn)T,x