【《机器学习》第3章线性模型】基本形式+线性回归

凸函数

凸函数与凹函数

凸函数判断:

  1. 如果是一元函数 f ( x ) f(x) f(x) ,我们可以求二阶导数 f ′ ′ ( x ) f''(x) f(x) ,如果二阶导 f ′ ′ ( x ) f''(x) f(x) 总是非负,即总是大于等于0, f ( x ) f(x) f(x)就是凸函数。
  2. 如果是多元函数 f ( X ) f(X) f(X) ,我们可以通过Hessian矩阵(由多元函数的二阶导数组成的方阵),如果Hessian矩阵是半正定矩阵,则是 f ( X ) f(X) f(X) 凸函数。

损失函数

损失函数用来衡量模型拟合成都的好坏

  • 线性回归的损失函数:均方误差函数MSE
  • 逻辑回归的损失函数:对数损失函数

导数

导数、标量、矩阵关系

基本形式

线性回归

例题请参考ppt

实现

  1. 将样本数据转换为增广矩阵形式:
import nump as np
ones=np.ones((X.shape[0],1))
np.hstack((ones,X))
  1. 矩阵转置:XT=X.T
  2. 矩阵相乘:XTX=np.dot(XT,X)
  3. 矩阵的逆:np.linalg.inv(XTX)

代码

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_csv("ex0_1.csv",header=None)
data = df.values
X=data[:,0].reshape((-1,1))
Y=data[:,1].reshape((-1,1))
plt.scatter(X,Y)
x_min = min(X)
x_max = max(X)
ones=np.ones((X.shape[0],1))
X=np.hstack((ones,X))
XT=X.T
XTX=np.dot(XT,X)
XTX_1=np.linalg.inv(XTX)
XTX_1XT=np.dot(XTX_1,XT)
W=np.dot(XTX_1XT,Y)
x_w = np.linspace(x_min,x_max,100)
y_w = x_w*W[1]+W[0]
plt.plot(x_w,y_w)
plt.show()
©️2020 CSDN 皮肤主题: 深蓝海洋 设计师:CSDN官方博客 返回首页