Linear regression-detailed explanation of logistic regression algorithm (without softmax)

\documentclass[12pt,UTF8]{article}
\usepackage{ctex}	% 中文支持包
\usepackage{graphicx}	% 图片宏包
\usepackage{setspace}	% 设置间距
%\usepackage{fontspec}	% 字体样式
%\usepackage[paperwidth=21cm,paperheight=29.7cm,top=2.54cm,bottom=2.54cm,right=3.17cm,left=3.17cm]{geometry}
\usepackage[top=0.04cm,bottom=0.04cm,right=1.17cm,left=1.17cm]{geometry}	% 页面
%\usepackage{underscore} %下划线
\usepackage{fancyhdr}	% 页眉 页脚
\pagestyle{fancy}		% 页眉 页脚样式
\usepackage[colorlinks,linkcolor=blue,urlcolor=blue]{hyperref}	% 链接,colorlinks表示允许链接为彩色,linkcolor=颜色,可以为超链接设置颜色



\cfoot{ }			% 左 中 右
\renewcommand{\headrulewidth}{0pt} 	% 设置页脚页眉下划线
\renewcommand{\footrulewidth}{0pt}	% 0则取消显示



\begin{document} 

\textbf{}\\
\section*{线性回归\ 数学:}
	\par	假设$\theta_{1}$是年龄的参数,$\theta_{2}$是工资的参数,可贷款金额$h_{\theta}(x)$\\
		拟合的平面:$h_{\theta}(x)=\theta_{0}+\theta_{1}x_{1}+\theta_{2}x_{2}$\, ($\theta_{0}$是偏置项,偏差)\\
		整合:$h_{\theta}(x)=\theta_{0}x_{0}+\theta_{1}x_{1}+\theta_{2}x_{2}$
		\par 填充一列$x_{0}$值为1,结果还是$\theta_{0}$
		\par 整合化简,进行矩阵计算(矩阵标准格式规范/便于计算,行乘列numpy.dot()),$\theta$是特征数 权重参数,x样本数,T——行转列/列转行 \ \ 转置
		\par $h_{\theta}(x)=\sum\limits_{i=0}^{n}\theta_{i}x_{i}=\theta^{T}x$ \ ——》 \ [0,0,0]$^{T}$[0,0,0]
		\par (特征数,权重数$^{T}$ \ 乘以\ \ 样本数) $\theta^{T}x=\sum\limits_{i=0}^{n}\theta_{i}x_{i}=\theta_{0}x_{0}+\theta_{1}x_{1}+\theta_{2}x_{2}$(n=2)
			
\subsection*{误差}
\par 真实值和预测值之间肯定存在差异(用$\epsilon$任意值,来表示误差)
\par 对于每个样本:$y^{(i)} = \theta^{T}x^{(i)}+\epsilon^{(i)}$
\par $y^{(i)}$单个样本(角标)的预测值,\ $\theta^{T}x^{(i)}$单个样本(角标)的实际值,\ $\epsilon^{(i)}$单个样本(角标)的误差\\

\par 误差$\epsilon^{(i)}$是独立、并且具有相同的分布,并且服从均值为0方差为$\theta^{2}$的高斯分布
\par 独立:张三和李四一起去贷款,他俩没关系
\par 同分布:他俩都是去假定的这家银行
\par 高斯分布:银行可能会多给,也可能会少给,但是绝大多数情况下这个浮动不会太大,极小情况下浮动会比较大,也符合正常情况\\

\begin{center}
 (1)预测值与误差:$y^{(i)}=\theta^{T}x^{(i)}+\epsilon^{(i)}$\\
  (2)由于误差服从高斯分布:$p(\epsilon^{(i)})=\frac{1}{\sqrt{2\pi}\sigma}exp\left(-\frac{(\epsilon^{(i)})^{2}}{2\sigma^{2}} \right)$
\end{center}
\par exp = e,$\sigma$标准差,是离均差平方的算术平均数(即:方差)的算术平方根
\par p概率:
\par \ \ 排列——P(n,m)=n!/(n-m)!(n为下标,m为上标)
\par \ \ 组合(0!=1)——C(n,m)=P(n,m)/P(m,m) =n!/m!(n-m)!\\
\par \ \  将(1)式带入(2)式、高斯分布函数:$p(y^{(i)}|x^{(i)},\theta)=\frac{1}{\sqrt{2\pi}\sigma}exp\left(-\frac{(y^{(i)}-\theta^{T}x^{(i)})^{2}}{2\sigma^{2}} \right)$\\
\begin{center} 似然函数:$L(\theta)=\prod\limits_{i=1}^{m}p(y^{(i)}|x^{(i)},\theta)=\prod\limits_{i=1}^{m}\frac{1}{\sqrt{2\pi}\sigma}exp\left(-\frac{(y^{(i)}-\theta^{T}x^{(i)})^{2}}{2\sigma^{2}} \right)$
\end{center}
\par ——在$h_{\theta}(x)=\theta^{T}x$+误差\ 带入高斯分布函数基础上,对所有样本进行的一个累乘(i=1),成为最接近真实值的似然函数(越大越好,误差越小越好)
\par 解释:什么样的参数跟我们的数据组合后恰好是真实值\\

\newpage
\par 对数似然:$logL(\theta)=log\prod\limits_{i=1}^{m}\frac{1}{\sqrt{2\pi}\sigma}exp\left(-\frac{(y^{(i)}-\theta^{T}x^{(i)})^{2}}{2\sigma^{2}} \right)$
\par ——log将似然函数的累乘,转换为对数log的累加
\par 解释:乘法难解,加法就相对容易多了,通过对数乘法转换成加法$log(AB)=logA+logB$
\par 展开化简:$\sum\limits_{i=1}^{m}log\frac{1}{\sqrt{2\pi}\sigma}exp\left(-\frac{(y^{(i)}-\theta^{T}x^{(i)})^{2}}{2\sigma^{2}} \right)$
\par \ \ \ \  $=mlog\frac{1}{\sqrt{2\pi}\sigma}-\frac{1}{\sigma^{2}}$·$\frac{1}{2}\sum\limits_{i=1}^{m}(y^{(i)}-\theta^{T}x^{(i)})^{2}$
\par ——累加是对对数似然函数$logL(\theta)=log\prod\limits_{i=1}^{m}\frac{1}{\sqrt{2\pi}\sigma}exp\left(-\frac{(y^{(i)}-\theta^{T}x^{(i)})^{2}}{2\sigma^{2}} \right)$m个样本近似真实值的累加\\
一个样本近似真实值高斯分布函数(将误差带入$\theta^{T}x$真实值):$p(y^{(i)}|x^{(i)},\theta)=\frac{1}{\sqrt{2\pi}\sigma}exp\left(-\frac{(y^{(i)}-\theta^{T}x^{(i)})^{2}}{2\sigma^{2}} \right)$
\begin{center}
	m个样本近似真实值似然函数:$L(\theta)=\prod\limits_{i=1}^{m}p(y^{(i)}|x^{(i)},\theta)=\prod\limits_{i=1}^{m}\frac{1}{\sqrt{2\pi}\sigma}exp\left(-\frac{(y^{(i)}-\theta^{T}x^{(i)})^{2}}{2\sigma^{2}} \right)$\\
	m个样本近似真实值对数似然函数:$logL(\theta)=log\prod\limits_{i=1}^{m}\frac{1}{\sqrt{2\pi}\sigma}exp\left(-\frac{(y^{(i)}-\theta^{T}x^{(i)})^{2}}{2\sigma^{2}} \right)$\\
	将m个样本近似真实值的对数似然函数进行累加,$(\prod)$省略
	\par $\sum\limits_{i=1}^{m}log\frac{1}{\sqrt{2\pi}\sigma}exp\left(-\frac{(y^{(i)}-\theta^{T}x^{(i)})^{2}}{2\sigma^{2}} \right)$
	\par 化简:$=mlog\frac{1}{\sqrt{2\pi}\sigma}e^{\left(-\frac{1}{\sigma^{2}}·\frac{1}{2}\sum\limits_{i=1}^{m}(y^{(i)}-\theta^{T}x^{(i)})^{2}\right)}$
	\par m是样本数,$\sum\limits_{i=1}^{m}$从第一个样本到第m个样本,e次幂越大对数似然越大也就越接近真实值(包含负号)\\
	$exp(0)=e^{0}$
\end{center}
\par 目标:让对数似然函数(似然函数——log前)越大越接近真实值
\par \textbf{强调}\ 就是根据真实值$\theta^{T}x$与预测值$y^{(i)}=\theta^{T}x+\epsilon^{(i)}$之间的误差$\epsilon$进行模拟预测,目标y
\begin{center}
	 $J(\theta)=\frac{1}{2}\sum\limits_{i=1}^{m}(y^{(i)}-\theta^{T}x^{(i)})^{2}$(最小二乘法,越小越好)
\end{center}

\par ——$\frac{1}{\sigma^{2}}$为固定值,没有误差参数忽略\\

\par 目标最小二乘函数:
\begin{center}
	$J(\theta)=\frac{1}{2}\sum\limits_{i=1}^{m}(\theta^{T}x^{(i)}-y^{(i)})^{2}$
	\item \ \ $=\frac{1}{2}\left|\theta^{T}x^{(i)}-y^{(i)}\right|^{2}$
	\item \ \ \ \ \ $=\frac{1}{2}(X\theta-y)^{T}(X\theta-y)$
\end{center}
\par 对于矩阵来说:只有一行一列就相当于一个数字,$a^{T}b=b^{T}a,a^{T}b$≠$ab^{T}$,不满足交换律
\par $|X|$是X的模,长度,所以:$X^{T}X=|X||X|=X^{2}$\\

\par 求目标最小二乘函数的偏导:
\begin{center}
	$\nabla_{\theta}J(\theta)=\nabla_{\theta}\left(\frac{1}{2}(X\theta-y)^{T}(X\theta-y) \right)$
	\par \ \ $=\nabla_{\theta}\left( \frac{1}{2}(\theta^{T}X^{T}-y^{T})(X\theta-y) \right)$
	\par $=\nabla_{\theta}\left( \frac{1}{2}(\theta^{T}X^{T}X\theta-\theta^{T}X^{T}y-y^{T}X\theta+y^{T}y) \right)$
	\par 对$\theta$求偏导,其它项为常量,$y^{T}y$为常量不影响最小二乘方向向小的趋势
	\par $\theta^{T}X^{T}X$为常量,$\theta^{T}=|\theta|$,则$X^{T}y$为常量,$y^{T}X$为常量
	\par $=\frac{1}{2}\left( \theta^{T}X^{T}X-X^{T}y-|y^{T}X| \right)$
	\par $=\frac{1}{2}\left( 2X^{T}X|\theta|-X^{T}y-(y^{T}X)^{T} \right)$
	
	\newpage
	\par 最小二乘的常数项扩大缩小2倍不影响结果值,且便于运算
	\par $=X^{T}X\theta-\frac{1}{2}X^{T}y-\frac{1}{2}(y^{T}X)^{T}$
	\par $=X^{T}X\theta-\frac{1}{2}X^{T}y-\frac{1}{2}|y^{T}X|$
	\par $=X^{T}X\theta-(\frac{1}{2}+\frac{1}{2})X^{T}y$
	\par \ $=X^{T}X\theta-X^{T}y$(最小二乘偏导)
	\par 假设一行一列:$X^{T}y=y^{T}X$\\
\end{center}
\par 偏导等于0\ 极小值点:偏导值$\theta$=0时在凸函数(凸优化,求极大转为求极小)中的某个位置上存在极小值点,而极小值点的切线方向就是\textbf{优化迭代方向}(越小)
\begin{center}
	$0=X^{T}X\theta-X^{T}y$\\
	$\theta=\frac{X^{T}y}{X^{T}X}$
	\par  $=(X^{T}X)^{-1}X^{T}y$\\

\end{center}

\subsection*{评估方法}
\par 对对数似然函数m个样本的最小二乘偏导(越小)模型评估
\begin{center}
	对数似然m个:$logL(\theta)=\sum\limits_{i=1}^{m}log\frac{1}{\sqrt{2\pi}\sigma}exp\left(-\frac{(y^{(i)}-\theta^{T}x^{(i)})^{2}}{2\sigma^{2}} \right)$\\
	最小二乘:$J(\theta)=\frac{1}{2}\sum\limits_{i=1}^{m}(y^{(i)}-\theta^{T}x^{(i)})^{2}$
	\par $=\frac{1}{2}(X\theta-y)^{T}(X\theta-y)$\\
	最小二乘偏导:$\nabla_{\theta}J(\theta)=X^{T}X\theta-X^{T}y$\\
	偏导=0: $\theta=(X^{T}X)^{-1}X^{T}y$\\
\end{center}
\par 最常用的评估项$R^{2}$:
\begin{center}
	$1-\frac{\sum\limits_{i=1}^{m}(\hat{y}_{i}-y_{i})^{2}\textbf{(残差平方和)}}{\sum\limits_{i=1}^{m}(\hat{y}_{i}-y^{-})^{2}\textbf{(类似方差项)}}$
\end{center}
\par $\hat{y}_{i}$表示对一个y变量的估计,$y_{i}$实际值,$y^{-}$均值
\par $R^{2}$的取值越接近于1就认为模型拟合的越好\ ($\hat{y}_{i}|y_{i}|y^{-}$,近似,则$R^{2}$越小偏向0,模型过拟合)

\subsection*{梯度下降}
\par 引入:当我们得到一个目标函数后,并不一定可解,线性回归是一个特例
\par 常规套路:机器学习的套路就是\ 我交给机器一堆数据,然后告诉它什么样的学习方式是对的(目标函数/损失函数/最小二乘),然后让它朝着这个方向(偏导切线方向)去做
\par 如何优化:一口吃不成胖子,且容易跳过最小值跳到极小值,需要每次优化一点点!\\

\par 目标函数:
\begin{center}
	$J(\theta_{0},\theta_{1})=$
	$=\frac{1}{2}\frac{1}{m}\sum\limits_{i=1}^{m}\left(y^{(i)}-h_{\theta}(x^{(i)})\right)^{2}$\\
	
	误差$\epsilon^{(i)}$等于预测值减去真实值$y^{(i)}-\theta^{T}x^{(i)}$
\end{center}

\newpage
\par 寻找凸函数山谷的最低点,也就是目标函数/损失函数/最小二乘\ 终点(什么样的参数能使得目标函数达到极值点)
\par 下山分几步走:(更新参数)
\par (1):找到当前最合适的目标函数偏导切线方向
\par (2):step走一小步,步大容易越过
\par (3):按照方向与步伐更新参数\\
\par 梯度下降,目标函数:
\begin{center}
	$J(\theta_{0},\theta_{1})=$
	$=\frac{1}{2}\frac{1}{m}\sum\limits_{i=1}^{m}\left(y^{(i)}-h_{\theta}(x^{(i)})\right)^{2}$
\end{center}
\par 批量梯度下降:
\begin{center}
	(1)$\frac{\partial J(\theta)}{\partial\theta_{j}}=-\frac{1}{m}\sum\limits_{i=1}^{m}(y^{(i)}-h_{\theta}(x^{(i)}))x_{j}^{i}$\\
	(2)$\theta_{j}^{'}=\theta_{j}+\frac{1}{m}\sum\limits_{i=1}^{m}(y^{(i)}-h_{\theta}(x^{(i)}))x^{i}_{j}$\\
	$\partial$表示偏导数,$j$权重值,(1)可忽略\\
	(容易得到最优解,但是由于每次考虑所有m样本,速度很慢)
\end{center}
\par 随机梯度下降:
\begin{center}
	$\theta_{j}^{'}=\theta_{j}+(y^{(i)}-h_\theta(x^{(i)}))x_{j}^{i}$\\
	(每次找一个样本,迭代速度快,但不一定每次迭代都朝着收敛的方向)
\end{center}
\par 小批量batch梯度下降法:
\begin{center}
	$\theta_{j}^{'}=\theta_{j}+a\frac{1}{10}\sum\limits_{k=i}^{i+9}(y^{(k)}-h_\theta(x^{(k)}))x^{(k)}_{j}$\\
	$=\theta_{j}-a\frac{1}{10}\sum\limits_{k=i}^{i+9}(h_\theta(x^{(k)})-y^{(k)})x^{(k)}_{j}$\\
	(每次更新迭代选择一小部分数据来算,实用!)\\
\end{center}
\par 学习率(步长step):对结果会产生巨大的影响,一般一小步小一些.001
\par 学习率的选择:从小的地方开始,不拟合再小(不能过拟合)
\par mini batch批处理数量:2的倍数\ 32\ 64\ 128,很多时候考虑内存和效率(效率更为重要)

\newpage
\section*{逻辑回归\ Logistic regression}
\par 目的:Logistic\ Regression是经典的二分类算法
\par 机器学习算法的选择:先逻辑回归再用复杂的算法,能用简单的还是用简单的
\par 逻辑回归的决策边界:可以是非线性的(曲曲折折..)\\

\par $Sigmoid$函数\ 公式:
\begin{center}
	$g(z)=\frac{1}{1+e^{-z}}$
\end{center}
\par 自变量z的取值为任意实数,值域[0,1]
\par 解释:将任意的输入\ 值映射到了[0,1]区间,在线性回归中可以得到\ $L(\theta)$一个预测值(似然函数值),再将该值映射到$Sigmoid$函数中这样就完成了\textbf{由值到概率的转换},也成了分类任务!

\par $Sigmoid$函数、预测函数:
\begin{center}
	$h_\theta(x)=g(\theta^{T}x)$ $=\frac{1}{1+e^{-\theta^{T}x}}$\\
	其中 $\theta_{0}x_{0}+\theta_{1}x_{1}+,...,+\theta_{n}x_{n}=\sum\limits_{i=1}^{n}\theta_{i}x_{i}=\theta^{T}x$
\end{center}
\par 分类任务:
\begin{center}
	$P(y=1|x;\theta)=h_{\theta}(x)$\\
	$P(y=0|x;\theta)=1-h_{\theta}(x)$\\
\end{center}
\begin{center}
	整合:$P(y|x;\theta)=(h_\theta(x))^y(1-h_\theta(x))^{1-y}$
\end{center}
\par 对于二分类任务(0,1),对y概率值进行整合后y=0保留$(1-h_{\theta}(x))^{1-y}$\ \ y=1只保留$(h_{\theta}(x))^{y}$
\par 似然函数:
\begin{center}
	$L(\theta)=\prod\limits_{i=1}^{m}P(y_{i}|x_{i};\theta)=\prod\limits_{i=1}^{m}(h_{\theta}(x_{i}))^{y_{i}}(1-h_\theta(x_i))^{1-y_{i}}$
\end{center}
\par 对数似然:
\begin{center}
	$l(\theta)=logL(\theta)=\sum\limits_{i=1}^{m}\Bigg((y_{i})log(h_{\theta}(x_{i}))+(1-y_{i})log(1-h_\theta(x_i))\Bigg)$
\end{center}
\par 其中log左边为样本第i个样本y值数,右边为一个分类概率乘积,将乘法log成加法:
\begin{center}
	$y_{i}log(AB)=y_{i}logA+y_{i}logB$
\end{center}
\par 此时梯度上升求最大值,引入$j(\theta)=-\frac{1}{m}l(\theta)$转换为均mini batch批量梯度下降任务\\
\par 求导过程:
\begin{center}
	$l(\theta)=logL(\theta)=\sum\limits_{i=1}^{m}\left( y_{i}logh_{\theta}(x_{i})+(1-y_{i})log(1-h_{\theta}(x_{i})) \right)$\\
	$\frac{\partial}{\partial\theta_{j}}J(\theta)=-\frac{1}{m}\sum\limits_{i=1}^{m}\Bigg( y_{i}\frac{1}{h_{\theta}(x_{i})}\frac{\partial}{\partial\theta_{j}}h_{\theta}(x_{i})-(1-y_{i})\frac{1}{1-h_{\theta}(x_{i})}\frac{\partial}{\partial\theta_{j}}h_{\theta}(x_{i}) \Bigg)$\\
	:对每个$\theta_{j}$求偏导求出方向,同时提取符号值不变,对x求偏导$\log x'=\frac{1}{x}x'$\\
	\newpage
	$=-\frac{1}{m}\sum\limits_{i=1}\Bigg( y_{i}\frac{1}{g(\theta^{T}x_{i})}-(1-y_{i})\frac{1}{1-g(\theta^{T}x_{i})} \Bigg)\frac{\partial}{\partial\theta_{j}}g(\theta^{T}x_i)$\\
	:$h_\theta(x)=g(\theta^{T}x)$\ Sigmoid概率值,对$\theta$求偏导:$g(\theta^{T}x_i)'=\Bigg( \frac{1}{1+e^{-\theta^{T}x}} \Bigg)'=-\frac{(1+e^{-\theta^{T}x})'}{(1+e^{-\theta^{T}x})^{2}}$
	$=\frac{e^{-\theta^{T}x}(\theta^{T}x)'}{(1+e^{-\theta^{T}x})^{2}}=$
	$\Bigg( \frac{1}{1+e^{-\theta^{T}x}}(1-\frac{1}{1+e^{-\theta^{T}x}}) \Bigg)(\theta^{T}x)'=g(\theta^{T}x_{i})(1-g(\theta^{T}x_{i}))\frac{\partial}{\partial\theta_{j}}\theta^{T}x_{i}$
	\\
	$=-\frac{1}{m}\sum\limits_{i=1}^{m}\Big( y_{i}\frac{1}{g(\theta^{T}x_{i})}-(1-y_{i})\frac{1}{1-g(\theta^{T}x_{i})} \Big)g(\theta^{T}x_{i})(1-g(\theta^{T}x_{i}))\frac{\partial}{\partial\theta_{j}}\theta^{T}x_{i}$
\\
	$=-\frac{1}{m}\sum\limits_{i=1}^{m}\Big( y_{i}(1-g(\theta^{T}x_{i}))-(1-y_{i})g(\theta^{T}x_{i}) \Big)x_{i}^{j}$\\
	$=-\frac{1}{m}\sum\limits_{i=1}^{m}\Big( y_{i}-g(\theta^{T}x_{i}) \Big)x_{i}^{j}$\\
	$=\frac{1}{m}\sum\limits_{i=1}^{m}(h_{\theta}(x_{i})-y_{i})x_{i}^{j}$\\
	i表示样本,j表示样本特征,权重,偏导值为导数向下的更新的方向
\end{center}
\par 参数更新
\begin{center}
	$\theta_{j}:=\theta_{j}-a\frac{1}{m}\sum\limits_{i=1}^{m}\Big( h_{\theta}(x_{i})-y_{i} \Big)x_{i}^{j}$\\
	a为step更新的步长,加一个减号仅仅是说明用的方法是梯度下降,由原来的$\theta_{j}$到左边跟新后的$\theta_{j}$,$\frac{1}{m}$mini batch梯度下降
\end{center}
\par (归一化)多分类的softmax:
\begin{center}
	$h_{\theta}(x^{(i)})=\Bigg[ p(y^{(i)}=1|x^{(i)};\theta)\
		p(y^{(i)}=2|x^{i};\theta)\
		...\
		p(y^{(i)}=k|x^{(i)};\theta)
		 \Bigg]^{T}$
	$=\frac{1}{\sum_{j=1}^ke^{\theta_{j}^{T}x^{(i)}}}$$\Bigg[ e^{\theta_{1}^{T}x{(i)}}\ e^{\theta_{2}^{T}x{(i)}}\ e^{\theta_{k}^{T}x{(i)}}\ \Bigg]^{T}$
\end{center}


\end{document}

https://wws.lanzous.com/b01c21osj
Password: ckvx

Guess you like

Origin blog.csdn.net/sugarbew/article/details/113104642