机器学习模型自我代码复现:Softmax分类

根据模型的数学原理进行简单的代码自我复现以及使用测试,仅作自我学习用。模型原理此处不作过多赘述,仅罗列自己将要使用到的部分公式。代码框架部分参照了以下视频中的内容。清华博士爆肝300小时录制!!机器学习入门必备的10个经典算法(原理+复现+实验)被他讲得如此清晰!_哔哩哔哩_bilibili

如文中或代码有错误或是不足之处,还望能不吝指正。

Softmax是logistic回归的一个“一般形式”。基本思想就是在线性回归的基础上,使用一个单调可微的函数,使得预测值变为1个趋近于0/1的“预测概率”,与真实的标记y联系起来。在Logistics回归中,这个函数为

y = \frac{1}{1+e^{-z}}其中z=\omega^{T}x+b

而softmax将其一般化为多分类任务,单调可微的函数为

y_i = \frac{e^{z}_i}{\sum_j e_j^z}

将预测的概率与真实值的标签分布的距离作为损失值,这种损失被称为交叉熵函数

Loss = -\sum_i\sum_k (y*log(\frac{e^{\omega_k^Tx_i}}{\sum_j\omega_j^Tx_i}))

对其进行梯度下降,可以得到

new \omega_k=\omega_k-\alpha \frac{1}{m}(\frac{e^{\omega_k^Tx_i}}{\sum_j\omega_j^Tx_i}-y)。其中\alpha为学习率,m为以每次使用到的样本个数。

实际在sklearn中,是可以采取不同的优化策略的,如牛顿法、共轭梯度下降、梯度下降等方法。

在sklearn中,Logistics回归是具有"l1正则"、"l2正则"以及"弹性网络"的参数的,但是在我自己实现的正则化下,对于没有进行过特殊处理的数据,并没有明显的改善过拟合情况。所以此处不再进行试验。

import numpy as np
import pandas as pd
import random
from sklearn.preprocessing import  PolynomialFeatures
from sklearn.utils import shuffle

class SoftMax:
    def pre
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值