Skip to content

Commit

Permalink
逻辑回归
Browse files Browse the repository at this point in the history
  • Loading branch information
cr-mao committed Sep 6, 2024
1 parent a991ea4 commit 3c204db
Show file tree
Hide file tree
Showing 11 changed files with 143 additions and 6 deletions.
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
jupyter notebook ,numpy,pandas,matplotlib

- [开发环境](datahandling/docs/开发环境.md)
- [数据领域中的专业术语](datahandling/数据领域中的专业术语.md)
- [numpy数据基础](datahandling/01-NumpyArrayBasics/01-NumpyArrayBasics.ipynb)
- [numpy数组创建](datahandling/02-NumpyCreateArray/02CreateNumpyArray.ipynb)
- [numpy数组基本操作](datahandling/03-NumpyArrayBasicOperations/03-NumpyArrayBasicOperations.ipynb)
Expand Down
102 changes: 96 additions & 6 deletions machinelearning/04逻辑回归.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,21 +4,68 @@

### 应用场景
- 疾病是否是阳性
- 银行卡房贷款是否房贷
- 预测广告点击率(是否点击)
- 银行卡房贷款是否放贷
- 预测广告点击率(是否点击,是否推荐这个广告)
- 是否是垃圾邮件
- 推荐系统中用到很多二分类任务


### 极大似然估计

核心思想:

设模型中含有待估参数w,可以取很多值。已经知道了样本观测值,从w的一切可能值中(选出一个使该观察值出现的概率为最大的值,作为w参数的估计值,这就是极大似然估计。(顾名思义:就是看上去那个是最大可能的意思)


假设有一枚不均匀的硬币,出现正面的概率和反面的概率是不同的。假定出现正面的概率为𝜃, 抛了6次得到如下现象 D = {正面,反面,反面,正面,正面,正面}。每次投掷事件都是相互独立的。 则根据产生的现象D,来估计参数𝜃是多少?

```text
P(D|𝜃) = P {正面,反面,反面,正面,正面,正面}
= P(正面|𝜃) P(正面|𝜃) P(正面|𝜃) P(正面|𝜃) P(正面|𝜃) P(正面|𝜃)
=𝜃 *(1-𝜃)*(1-𝜃)𝜃*𝜃*𝜃 = 𝜃^4(1 − 𝜃)^2
求此函数的极大值时,估计𝜃为多少
```
```text
对上面函数求导
4𝜃^3.(1-𝜃)^2+ 𝜃^4. 2(1-𝜃)*-1
= 4𝜃^3.(1-𝜃)^2 - 2𝜃^4(1-𝜃)
= 𝜃^3.(1-𝜃)( 4-4𝜃 ) - 𝜃^3.(1-𝜃)(2𝜃)
= 𝜃^3.(1-𝜃)(4-6𝜃 ) = 0
𝜃1=0 ,𝜃2=1,𝜃3=2/3
因为0,1不可能,所以𝜃 取2/3
```

![](images/ml_31.png)

```text
ln(1/a)=ln(a^-1)=-lna
ln(1/2π^(n/2)) = - ln 2π^(n/2) =-n/2 ln 2π
```

### 逻辑回归的原理


- 逻辑回归中,其输入值是什么
基本思想

1. 利用线性模型 f(x) = wx + b 根据特征的重要性计算出一个值
2. 再使用 sigmoid 函数将 f(x) 的输出值映射为概率值
1. 设置阈值(eg:0.5),输出概率值大于 0.5,则将未知样本输出为 1 类
2. 否则输出为 0 类

3. 逻辑回归的假设函数
- h(w) = sigmoid(wx + b )
- 线性回归的输出,作为逻辑回归的输入


逻辑回归中,其输入值是什么
- 逻辑回归的输入就是一个线性方程
- h(w) = w1x1 + w2x2 + .... + b

- 如何判断逻辑回归的输出
如何判断逻辑回归的输出
- sigmoid函数
![](images/ml_27.png)

Expand All @@ -30,11 +77,54 @@
![](images/ml_28.png)



sigmod函数可导,是单调递增函数。

导函数公式: f'(x) = f(x) (1-f(x))

逻辑回归最终的分类是通过属于某个类别的概率值来判断是否属于某个类别,并且这个类别默认标记为1(正例),另外的一个类别会标记为0(反例)。(方便损失计算)

我们用均方误差来衡量线性回归的损失,在逻辑回归中,当预测结果不对的时候,我们该怎么衡量其损失呢?

![](images/ml_32.png)




#### 损失函数

其损失函数通常是对数损失函数(log loss),也称为交叉熵损失函数(cross-entropy loss)。对于逻辑回归模型,损失函数的定义如下:

![](images/ml_34.png)

1. 一个样本
- 假设有2个类别,1的类别概率是p, 0的类别概率是1-p
```text
L = {
p if y = 1
1-p if y = 0
}
样本是1的概率是p,样本是0的概率是1-p
上面等价于这个公式
L = p^y . (1-p)^(1-y)
```

2. n个样本
```text
L = (p1^y1 . (1-p1)^(1-y1)) * (p2^y2 . (1-p2)^(1-y2)) * .... * (p2^yn . (1-p2)^(1-yn))
pi 为 每个样本 被分类正确时的概率
yi 为表示每个样本的真实类别
```

3. 对上面公式求对数转换公式
![](images/ml_35.png)

**让联合概率最大时,估计w,b的参数,就是极大拟然估计**

最大化问题变成最小化

![](images/ml_36.png)

4. 使用梯度下降算法,更新逻辑回归算法的权重参数



Binary file removed machinelearning/images/ml_02.png
Binary file not shown.
Binary file added machinelearning/images/ml_31.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added machinelearning/images/ml_32.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added machinelearning/images/ml_34.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added machinelearning/images/ml_35.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added machinelearning/images/ml_36.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added math/images/math_32.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
9 changes: 9 additions & 0 deletions math/概率统计.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@



## 概率

联合概率: 指两个或多个随机变量同时发生的概率

条件概率:表示事件A在另外一个事件B已经发生条件下的发生概率 P(a|b)

37 changes: 37 additions & 0 deletions math/高等数学.md
Original file line number Diff line number Diff line change
Expand Up @@ -145,6 +145,8 @@ y= (x-80)*(60+5(100-x)) = -5x^2+960x-44800

#### 对数函数

a^b=N , (a>0,b!=1),那么b叫做以a为底N的对数,记为 b=log_a N

y=log_a(x) (a >0, a!=1)

常用公式
Expand All @@ -157,6 +159,11 @@ log_a^m (x^n) =n/m log_a(x) , log_2^3(8^2) = 2/3 log_2(8)= 2

log_a(x) = log_b(x)/log_b(a) ,log_32(64) = log_2(64) / log_2(32) = 6/5


ln(1/a)=ln(a^-1)=-lna

ln(1/2π^(n/2)) = - ln 2π^(n/2) =-n/2 ln 2π

#### 正弦函数

y=a*sin(ωx+φ) a(a>0) 振幅,w 频率, φ初始相位
Expand Down Expand Up @@ -756,6 +763,36 @@ z=e^(2x^2-3y)

![](images/math_02.png)

### 极大似然估计

核心思想:

设模型中含有待估参数w,可以取很多值。已经知道了样本观测值,从w的一切可能值中(选出一个使该观察值出现的概率为最大的值,作为w参数的估计值,这就是极大似然估计。(顾名思义:就是看上去那个是最大可能的意思)


假设有一枚不均匀的硬币,出现正面的概率和反面的概率是不同的。假定出现正面的概率为𝜃, 抛了6次得到如下现象 D = {正面,反面,反面,正面,正面,正面}。每次投掷事件都是相互独立的。 则根据产生的现象D,来估计参数𝜃是多少?

```text
P(D|𝜃) = P {正面,反面,反面,正面,正面,正面}
= P(正面|𝜃) P(正面|𝜃) P(正面|𝜃) P(正面|𝜃) P(正面|𝜃) P(正面|𝜃)
=𝜃 *(1-𝜃)*(1-𝜃)𝜃*𝜃*𝜃 = 𝜃^4(1 − 𝜃)^2
求此函数的极大值时,估计𝜃为多少
```
```text
对上面函数求导
4𝜃^3.(1-𝜃)^2+ 𝜃^4. 2(1-𝜃)*-1
= 4𝜃^3.(1-𝜃)^2 - 2𝜃^4(1-𝜃)
= 𝜃^3.(1-𝜃)( 4-4𝜃 ) - 𝜃^3.(1-𝜃)(2𝜃)
= 𝜃^3.(1-𝜃)(4-6𝜃 ) = 0
𝜃1=0 ,𝜃2=1,𝜃3=2/3
因为0,1不可能,所以𝜃 取2/3
```
![](images/math_32.png)


## links

Expand Down

0 comments on commit 3c204db

Please sign in to comment.