机器学习笔记11 -- 优化方法

优化方法:

正规方程“天才”

        机器学习笔记11 -- 优化方法_第1张图片

        直接求解W 

        机器学习笔记11 -- 优化方法_第2张图片

梯度下降“努力”

        试错,改进(更为通用)

        机器学习笔记11 -- 优化方法_第3张图片

        其中系数阿尔法可以理解为步长,后边偏导数代表方向,然后不断进行迭代至偏导为0

         机器学习笔记11 -- 优化方法_第4张图片

         机器学习笔记11 -- 优化方法_第5张图片

        可能会产生局部最优解,这里暂且不提 

线性回归API:

        机器学习笔记11 -- 优化方法_第6张图片

案例:

波士顿房价预测:

机器学习笔记11 -- 优化方法_第7张图片

 机器学习笔记11 -- 优化方法_第8张图片

        流程:

                获取数据集(已处理)

                划分数据集

                特征工程: 无量纲化(标准化)

                预估器流程:fit() ——> 模型:coef_intercept_

                模型评估:学习率可调

回归性能评估及API:

        机器学习笔记11 -- 优化方法_第9张图片

from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LinearRegression, SGDRegressor
from sklearn.metrics import mean_squared_error


def liner1():
    """
    正规方程的优化方法对波士顿房价进行预测
    :return:
    """
    # 1、获取数据
    boston = load_boston()
    print("特征数量:\n", boston.data.shape)

    # 2、划分数据集
    x_train, x_test, y_train, y_test = train_test_split(boston.data, boston.target, random_state=22)

    # 3、标准化
    transfer = StandardScaler()
    x_train = transfer.fit_transform(x_train)
    x_test = transfer.fit_transform(x_test)

    # 4、预估器
    estimator = LinearRegression()
    estimator.fit(x_train, y_train)

    # 5、得出模型
    print("正规——权重系数为:\n", estimator.coef_)
    print("正规——偏置为:\n", estimator.intercept_)

    # 6、模型评估
    y_predict = estimator.predict(x_test)
    # print("预测房价:\n", y_predict)
    error = mean_squared_error(y_test, y_predict)
    print("正规——均方误差:\n", error)

    return None


def liner2():
    """
    梯度下降的优化方法对波士顿房价进行预测
    :return:
    """
    # 1、获取数据
    boston = load_boston()

    # 2、划分数据集
    x_train, x_test, y_train, y_test = train_test_split(boston.data, boston.target, random_state=22)

    # 3、标准化
    transfer = StandardScaler()
    x_train = transfer.fit_transform(x_train)
    x_test = transfer.fit_transform(x_test)

    # 4、预估器
    estimator = SGDRegressor()
    estimator.fit(x_train, y_train)

    # 5、得出模型
    print("梯度——权重系数为:\n", estimator.coef_)
    print("梯度——偏置为:\n", estimator.intercept_)

    # 6、模型评估
    y_predict = estimator.predict(x_test)
    # print("预测房价:\n", y_predict)
    error = mean_squared_error(y_test, y_predict)
    print("梯度——均方误差:\n", error)

    return None


if __name__ == "__main__":
    # 正规方程预测
    liner1()
    # 梯度下降预测
    liner2()

梯度下降优化器:

        GD:梯度下降

        SGD:随机梯度下降

        SAG:随机平均梯度下降

        

 欠拟合与过拟合

         由于正规化方法很难解决过拟合问题所以比较少用

        机器学习笔记11 -- 优化方法_第10张图片 

        过拟合:在训练集上表现良好,但是在测试集上表现不好

                解决:正则化

        机器学习笔记11 -- 优化方法_第11张图片

        机器学习笔记11 -- 优化方法_第12张图片

         损失函数 + 惩罚项:Rige - 岭回归:L2

                                          LASSO:L1

        欠拟合:在训练集和测试集上都不能很好的拟合

                解决:增加数据的特征量

        

 线性回归的改进 -- 岭回归

岭回归也是一种线性回归,只不过在算法建立回归方程的时候,加上正则化限制,从而达到解决过拟合的问题。

API:

        机器学习笔记11 -- 优化方法_第13张图片

        alpha就是惩罚项的系数

        机器学习笔记11 -- 优化方法_第14张图片 

        机器学习笔记11 -- 优化方法_第15张图片 

案例:

        依然是波士顿房价预测的案例:

from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LinearRegression, SGDRegressor, Ridge
from sklearn.metrics import mean_squared_error


def liner1():
    """
    正规方程的优化方法对波士顿房价进行预测
    :return:
    """
    # 1、获取数据
    boston = load_boston()
    print("特征数量:\n", boston.data.shape)

    # 2、划分数据集
    x_train, x_test, y_train, y_test = train_test_split(boston.data, boston.target, random_state=22)

    # 3、标准化
    transfer = StandardScaler()
    x_train = transfer.fit_transform(x_train)
    x_test = transfer.fit_transform(x_test)

    # 4、预估器
    estimator = LinearRegression()
    estimator.fit(x_train, y_train)

    # 5、得出模型
    print("正规——权重系数为:\n", estimator.coef_)
    print("正规——偏置为:\n", estimator.intercept_)

    # 6、模型评估
    y_predict = estimator.predict(x_test)
    # print("预测房价:\n", y_predict)
    error = mean_squared_error(y_test, y_predict)
    print("正规——均方误差:\n", error)

    return None


def liner2():
    """
    梯度下降的优化方法对波士顿房价进行预测
    :return:
    """
    # 1、获取数据
    boston = load_boston()

    # 2、划分数据集
    x_train, x_test, y_train, y_test = train_test_split(boston.data, boston.target, random_state=22)

    # 3、标准化
    transfer = StandardScaler()
    x_train = transfer.fit_transform(x_train)
    x_test = transfer.fit_transform(x_test)

    # 4、预估器
    estimator = SGDRegressor()
    estimator.fit(x_train, y_train)

    # 5、得出模型
    print("梯度——权重系数为:\n", estimator.coef_)
    print("梯度——偏置为:\n", estimator.intercept_)

    # 6、模型评估
    y_predict = estimator.predict(x_test)
    # print("预测房价:\n", y_predict)
    error = mean_squared_error(y_test, y_predict)
    print("梯度——均方误差:\n", error)

    return None


def liner3():
    """
    岭回归的优化方法对波士顿房价进行预测
    :return:
    """
    # 1、获取数据
    boston = load_boston()

    # 2、划分数据集
    x_train, x_test, y_train, y_test = train_test_split(boston.data, boston.target, random_state=22)

    # 3、标准化
    transfer = StandardScaler()
    x_train = transfer.fit_transform(x_train)
    x_test = transfer.fit_transform(x_test)

    # 4、预估器
    estimator = Ridge()
    estimator.fit(x_train, y_train)

    # 5、得出模型
    print("岭回归——权重系数为:\n", estimator.coef_)
    print("岭回归——偏置为:\n", estimator.intercept_)

    # 6、模型评估
    y_predict = estimator.predict(x_test)
    # print("预测房价:\n", y_predict)
    error = mean_squared_error(y_test, y_predict)
    print("岭回归——均方误差:\n", error)

    return None


if __name__ == "__main__":
    # 正规方程预测
    liner1()
    # 梯度下降预测
    liner2()
    # 岭回归预测
    liner3()
    

 

逻辑回归与二分类 

应用场景:

        广告点击率,垃圾邮件,是否患病,金融诈骗,虚假账号,,,均属于二分类

原理:

        输入:

                机器学习笔记11 -- 优化方法_第16张图片

                线性回归的输出就是逻辑回归的输入

        激活函数:

                机器学习笔记11 -- 优化方法_第17张图片 

                大于0.5认为是这个类别,小于0.5认为不是这个类别

                机器学习笔记11 -- 优化方法_第18张图片 

        假设函数/线性模型

        损失函数:

                这里均方和的损失已经不满足了,所以引入了对数似然函数:

                机器学习笔记11 -- 优化方法_第19张图片

                机器学习笔记11 -- 优化方法_第20张图片

                 机器学习笔记11 -- 优化方法_第21张图片

                 这里纵轴就可以理解为损失函数的大小,h为预测值,y为真实值,当y=h=1时由上图可见损失函数接近于0,而当y=h=0时损失函数也接近于0,这正是我们想要的结果,反之损失函数趋向于无穷。

                 机器学习笔记11 -- 优化方法_第22张图片

                 机器学习笔记11 -- 优化方法_第23张图片

 

        优化损失:

                梯度下降

API:

        机器学习笔记11 -- 优化方法_第24张图片

        机器学习笔记11 -- 优化方法_第25张图片 

 

案例:

评估:

你可能感兴趣的:(机器学习,人工智能)