生物医学工程 | 机器学习 - 主成分分析法 PCA
概念
目的:降维
input x⊂Rdx \subset R^dx⊂Rd,{x(i);i=1,...,n}\{x^{(i)}; i = 1, ..., n\}{x(i);i=1,...,n}
output Z⊂RkZ \subset R^kZ⊂Rk
F:X→ZF: X \rightarrow ZF:X→Z, k<<dk<<dk<<d
i 表示有几个sample(共n个),j表示有几个feature(共d个)
preprocess|数据的预处理
目的:将所有的feature normalize为mean=E[xj(i)]\mathbb{E}[x_j^{(i)}]E[xj(i)]=0,variance=Var[xj(i)]Var[x_j^{(i)}]Var[xj(i)]=1的数据
方法:
xj(i)←xj(i)−μjσjwhere, μj=1n∑i=1nxj(i), σj2=1n∑i=1n(xj(i)−μj)2x_j^{(i)}\leftarrow \frac{x_j^{(i)}-\mu_j}{\sigma_j}\\
\text{where, }\m ...
hexo-中英双语 hexo+butterfly
前言
为了实现可以切换的中英双语博客,我查阅了网上很多教程。大部分都是使用next主题的,或者使用hexo-generator-i18n。
经过一番搜寻,我参考 https://shannonhung.github.io/posts/hexo-butterfly-lang-switch/ ,找到了双语切换的解决方案。
大致思路是通过在github上面建立两个仓库,并分别为中文和英文设置config.yml 和 _config.butterfly.yml。在本地分别设置source-en和source-zh两个文件夹,手动翻译中英文。之所以选择手动翻译,是因为一般自动翻译的api都不尽如人意,只有GPT能达到相对比较理想的效果,但是API收费。
STEP 1 - 建立第二个仓库
参考 https://github.com/github/docs/blob/main/content/get-started/quickstart/create-a-repo.md , 建立repository。这个repository直接命名为类似en, zh, sp等语言简写,这样就会自动生成 https: ...
生物医学工程 | 机器学习 - Gaussian Mixture & EM
GMM(Gaussian Mixture Model)
什么是高斯混合模型?
首先我们有k个高斯模型,他们分别为$ N(\mu_1, \sigma_1^2), N(\mu_2, \sigma_2^2), …, N(\mu_k, \sigma_k^2) $
我们按照一定的比例从N(μj,σj2)N(\mu_j, \sigma_j^2)N(μj,σj2)这个高斯函数中取了比例为ϕj\phi_jϕj的一些样本。
按照经验可得,∑j=1kϕj=1\sum_{j=1}^{k}\phi_j=1∑j=1kϕj=1,即所有比例之和为1。
p(z(i)=j)=ϕjp(z^{(i)}=j)=\phi_jp(z(i)=j)=ϕj表示在z=jz=jz=j这个cluster的概率,如果是hard assignment,则用I(z(i)=j)\mathbb{I}({z^{(i)}=j})I(z(i)=j)表示。如果在这个cluster,即则z(i)=jz^{(i)}=jz(i)=j,则概率为1,反之不在这个cluster则为0。
p(x(i)∣z(i)=j)=pnorm(x(i);μj,σj)p(x ...
生物医学工程 | 机器学习 - K means聚类
K means 聚类
假设
有kkk个subset C1,C2,C3,...,CkC_1, C_2, C_3, ... , C_kC1,C2,C3,...,Ck,有1,...,n1, ..., n1,...,n个数据点,且所有数据点满足以下条件:
每个点都属于一个cluster
每个cluster都互不重叠
定义距离
Z(C1,⋯ ,Ck)=∑l=1k12∣Cl∣∑i,j∈Cl∥xi−xj∥22Z ( C _ { 1 } , \cdots , C _ { k } ) = \sum _ {l = 1 } ^ { k } \frac { 1 } { 2 | C _ { l } | } \sum _ {i , j \in C _ { l }} { \| x _ { i } - x _ j\|_2 ^ { 2 }}
Z(C1,⋯,Ck)=l=1∑k2∣Cl∣1i,j∈Cl∑∥xi−xj∥22
where ∣Ck∣|C_k|∣Ck∣ denotes the number of observations in the kth cluster.
目的是最小化每个c ...
生物医学工程 | 机器学习 - 逻辑斯蒂回归
Logistic
使用方法:曲线拟合,分两个class,?基本只能处理数据点?
使用范围:都可以用。基本一根线能分就能分
input space
X=Rd\mathcal{X}=\mathbb{R}^d
X=Rd
label space / output space(y的范围是0到1)
Y=[0,1]\mathcal{Y}=[0,1]
Y=[0,1]
hypothesis class F
F:={x↦sigmoid(w⊤x+b) ∣ w∈Rd,b∈R},where sigmoid(a)=11+exp(−a)\mathcal{F}:=\{x \mapsto sigmoid(w^\top x+b)\ |\ w\in\mathbb{R}^d,b\in\mathbb{R}\},\text{where }sigmoid(a)=\frac{1}{1+\exp(-a)}
F:={x↦sigmoid(w⊤x+b) ∣ w∈Rd,b∈R},where sigmoid(a)=1+exp(−a)1
注:ω\omegaω:weight vector;bbb:bias
decision boundar ...
生物医学工程 | 机器学习 - 线性回归
线性回归
input space
X=Rd\mathcal{X}=\mathbb{R}^d
X=Rd
label space / output space(y的范围是0到1)
Y=R\mathcal{Y}=\mathbb{R}
Y=R
hypothesis class F
F:{x↦ w⊤x+b∣w∈Rd,b∈R}\mathcal{F}:\{x \mapsto\ w^\top x+b | w\in\mathbb{R}^d,b\in\mathbb{R}\}
F:{x↦ w⊤x+b∣w∈Rd,b∈R}
loss function(l2l_2l2-loss) square loss
ℓ(f(x),y)=(f(x)−y)2\ell(f(x),y)=(f(x)-y)^2\\
ℓ(f(x),y)=(f(x)−y)2
loss function( absolute loss )
ℓ(f(x),y)=∣f(x)−y∣\ell(f(x),y)=|f(x)-y|
ℓ(f(x),y)=∣f(x)−y∣
Empricial Risk Minizer(convex)
R^(w)=1m∑i=1m(yi−w⊤xi ...
生物医学工程 | 机器学习 - Binary Classification (0-1分布)
Binary Classification
假设
可线性分割的数据
Binary classification,即数据是可以分为两类的
目的
将数据按照label分为两个类别
Set up
input space
X=Rd\mathcal{X}=\mathbb{R}^d
X=Rd
label space / output space
Y={−1,1}\mathcal{Y}=\{-1,1\}
Y={−1,1}
分类器|classifier|hypothesis class F\mathcal{F}F
F:={x↦sign(w⊤x+b) ∣ w∈Rd,b∈R}\mathcal{F}:=\{x \mapsto sign(\mathbf{w}^\top \mathbf{x}+\mathbf{b})\ |\ \mathbf{w}\in\mathbb{R}^d,\mathbf{b}\in\mathbb{R}\}
F:={x↦sign(w⊤x+b) ∣ w∈Rd,b∈R}
其中ω\omegaω是weight vector;bbb是bias,sign是符号函数,具体定义如下:
sign(a)={1 ...
生物医学工程 | EEG分析 - 希尔伯特变换
希尔伯特变换|Hilbert transform
大致操作方法:先进行bandpass filter,然后进行Hilbert transform获得complex signal,从而分离出amplitude和phase
目的:通过添加虚数部分,从实数信号中获得瞬时幅度amplitude和相位phase
📌我们并不改变实数部分,只是在这基础上添加了虚数部分
数学定义
假设我们已知信号叫做real(t)real(t)real(t),则Hilbert transform为:
real(t)+i∗imag(t)real(t)+i*imag(t)
real(t)+i∗imag(t)
imag信号是real信号shift π/2\pi/2π/2之后的结果 。比如原始信号为cos(2πft)cos(2\pi ft)cos(2πft),则Hilbert变换之后的结果为cos(2πft)+i∗sin(2πft)cos(2\pi ft) + i*sin(2\pi ft)cos(2πft)+i∗sin(2πft)
代码
MATLAB代码
12345678910111213% 自己写hilbert的内 ...
生物医学工程 | EEG分析 - 小波变换
基本概念:小波变换就是用一组不同频率的short kernel(wavelet)和原始信号进行卷积,因此信号只需要在wavelet的长度上稳定(stationary)
和傅立叶变换相似的是,如果信号的频率和小波的频率接近,则点乘(dot product)得到的结果幅值越大
小波卷积可以当作带通滤波器(band-pass filter)使用。
卷积核
Wavelet的类型
小波变换的卷积核(wavelet)有很多种类型,不同的类型会影响时间分辨率(temporal precision)。通常我们使用最多的是高斯核(Morlet Wavelet)
Wavelet的种类:https://www.mathworks.com/help/wavelet/gs/introduction-to-the-wavelet-families.html
小波族Wavelet Family
定义:我们将同一种类型,但不同频率的一组小波叫做family
Morlet wavelet在时域上表现为外部为高斯函数的包络面,内部为正弦函数。而在频域上则表现为高斯函数,且峰值在wavelet 的频率f上。
Real- ...
生物医学工程 | EEG分析 - 傅里叶变换
傅立叶变换
数学定义
离散傅立叶变换定义
Fn=∑k=0N−1fke−2πink/NF_n= \sum_{k=0}^{N-1} f_k e^{-2\pi ink/N}
Fn=k=0∑N−1fke−2πink/N
连续傅立叶变换定义
F(v)=∫−∞+∞f(t)e−2πivtdtF(v)=\int_{-\infty}^{+\infty} f(t)e^{-2\pi ivt}dt
F(v)=∫−∞+∞f(t)e−2πivtdt
离散傅立叶逆变换定义
fk=1n∑n=0N−1Fne2πink/Nf_k= \frac{1}{n}\sum_{n=0}^{N-1} F_n e^{2\pi ink/N}
fk=n1n=0∑N−1Fne2πink/N
连续傅立叶逆变换定义
f(t)=∫−∞+∞F(v)e2πivtdvf(t)=\int_{-\infty}^{+\infty} F(v)e^{2\pi ivt}dv
f(t)=∫−∞+∞F(v)e2πivtdv
解释和理解
傅立叶变换的目的是获得信号在频域上的分解(decomposition)。
其主要是通过构建一系列不同频率的正弦波(si ...