まず、予備知識
図1に示すように、凸関数
凸関数:単変量関数についてF(X)、もしあれば用T [イプシロン] [0,1]満たす F(TXを1 +(1- T)X 2)≤ TF(X 1)+(1- T)F(X- 2)。
凸関数であって
(1)正割関数曲線上に凸の関数。
(2)凸関数は、最小値が最小値である、固有の最小値を有します。それは我々がグローバルな最適解を見つけるモデルは、局所最適に該当しないことを意味します。
図1.1.1、図1.1.2
この方法は、凸関数か否かを判断します。
(1)について単変量関数 F(X)、我々ができ、二次導関数 Fは、 ''(X)シンボルが決定されます。関数の二次導関数が常に非負である場合、すなわち、 F '(X)≧0は、次いで、 F(Xは)凸関数であり、例えば:F(X)= X 2、 F '(X)= 2。
(2)については、多変量関数 F(X-)我々ができ、それを通して、ヘッセ行列(多変量関数の節の二次導関数)の正定性を判断。場合ヘッセ行列が半定値行列であり、それはF(X-)凸関数。例えば:F(X、Y)= X 2 + Y 2
ヘッセ行列:
2、機能の喪失
損失関数は、モデルのフィットの品質を測定するために使用される、より大きなモデルは比較的小さく、その逆であるべき誤差関数の値は、比較的大きくなければならないフィッティング時に言うことです。したがって、私たちの目標は、学習アルゴリズムを最適化問題に変換された最小の損失関数の値を、作ることです。
損失関数の線形回帰:平均二乗誤差関数
ロジスティック回帰の機能の喪失:対数損失関数
これらは凸関数であることを示すことができ、我々は、最適解を見つけるために、極端なポイントの損失関数を発見しました。極端な点に対応する点の導関数がゼロです。
3、誘導体
損失関数を求めるためには派生知識を使用する必要があります。ここではいくつかの一般的に使用される機械学習の導出式のとおりです。
第二に、線形モデルの基本的な形
给定由 d 个属性描述的示例 x={x1 ; x2 ; ... ; xd } , 线性模型试图学得一个通过属性的线性组合来进行预测的函数:
f(x) = w1x1 + w2x2 + … + wdxd + b
一般用向量形式进行表示:
f(x) = wTx + b
其中 w={ w1 ; w2 ; ... ; wd },w 和 b 学得之后,模型就得以确定。w 称为权值向量,b 称为偏置,如果只有一个属性,例如,由体重预测身高,f(x) = wx + b,w为斜率,b为截距。
线性模型形式简单,易于建模,具有很好的解释性。例如:y=0.2x色泽+0.5x根蒂+0.3x敲声+1
三、线性回归
1、简单线性回归
简单线性回归中,一个变量跟另一个变量的变化而变化。
那么,到底什么是线性回归呢?如青少年的身高与体重,他们存在一种近似的线性关系:身高/cm = 体重/kg +105 。假如我们将青少年的身高和体重值作为坐标,不同人的身高体重就会在平面上构成不同的坐标点,然后用一条直线,尽可能的去拟合这些点,这就是简单的线性回归。
简单的线性回归模型如下:
y = wx + b
其中 x
表示特征值(如:体重值),w
表示权重,b
表示偏置,y
表示标签(如:身高值)。
2、多元线性回归
简单线性回归中,一个变量跟另一个变量的变化而变化,但是生活中,还有很多变量,可能由多个变量的变化决定着它的变化,比如房价,影响它的因素可能有:房屋面积、地理位置等等。如果我们要给它们建立出近似的线性关系,这就是多元线性回归。
多元线性回归模型如下:
y=b + w1x1 + w2x2 +...+ wnxn
其中 xi 表示第 i
个特征值,wi 表示第 i
个特征对应的权重,b
表示偏置,y
表示标签。
3、线性回归一般形式
给定数据集 D = { (x1,y1) , (x2,y2) , ... ,(xm,ym) }, xi = { xi1 ; xi2 ; ... ; xid },yi 是连续的量(实数),线性回归试图学得一个线性模型以尽可能准确预测实值输出标记。即
其中 ,为增广向量形式。
其中 ŵ=(b;w) ,数据集 D 表示为一个 m*(d+1) 增广矩阵 X。
损失函数:均方误差,用于衡量真实值与预测值之间的差异,公式如下:
令 对θ求导得到:
当XTX满秩:
其中,X为样本数据构成的m × (d+1) 的矩阵,y是m维标签列向量,上式即维线性回归的正规方程解。然而,现实任务中 XTX 是不满秩的,这时就会有多个 w*。
说明:给定一个包含m个样本的数据集D,xi为第i个样本,每个样本包含d个属性,是一个d维的列向量,yi为第i个样本的标签,在回归任务中,yi是连续的实数。当权值向量w以及偏置确定后,模型就可以确定,这时我们将样本数据xi代入到模型中,就可以可到一个预测值y_hat,可以写成向量形式,其中是增广向量形式,在向量的最左端增加了一个常量1,变成了一个d+1维的行向量,这里1可以看成偏置b的系数,m个样本代入到模型中,可以得到m个预测值,将这些预测值用向量的形式表示为,每一行代表一个样本。w【0】对应的是偏置。
回归的目标是使得预测值与真实值之间的差异尽量小,这里使用均方误差来衡量二者之间的差异,记作loss,称为损失函数或代价函数。y所有样本的真实值构成的列向量,y_hat为所有样本的预测值构成列向量。我们的目标转化为求loss最小时权值向量w,导数等于0的点对应极值点。
4、loss最小时权值向量w——w* 的代码实现
当XTX满秩时,
1、将样本数据转换为增广矩阵形式:
import nump as np
ones=np.ones((X.shape[0],1))
np.hstack((ones,X))
2、矩阵转置:
XT=X.T
3、矩阵相乘:
XTX=np.dot(XT,X)
4、矩阵的逆:
np.linalg.inv(XTX)