, D! R6 V& T% U5 r0 U * ]- N# M, P+ c$ c! I T+ d" b文档资料:0 E6 a: f8 k0 T8 Q
遗传算法通俗理解 . ^" @2 j$ b/ ?' [- N+ E" G遗传算法加深理解* C5 c3 d' _7 [8 y8 m
8 J( l: t+ \* m5 Z8 l+ P 7 V) Y0 j; P+ v( `3 P6 U3 C线性规划模型" P2 D0 ^; F& i( l. J
应用:对于有线性限制的问题求最优解。3 t, X1 v; X# F2 Y* [" e
! F. Q+ r' ^6 v2 r# [) ^6 o
6 z* j. z, x) c, q9 ]" Y) N9 K5 p' R: m原理:根据限制建立线性关系,根据决策函数求最优解。高中的东西了。如果存在最优解,只能在可行域的边界找到(一般为顶点)。5 e' \0 a3 A/ }1 N- n: B
' n% l Z; D# Y1 C& h4 ?( ?; Y
$ w! a+ O3 W9 |5 ^% W6 g6 N; O
基本步骤:9 k3 ?. R+ _. X; ~( ~7 X' t
1、假设/寻找决策变量。(影响目标结果且有条件限制的变量) a. f% K2 z8 Q
2、建立目标函数。(需要求最优解的东西): | E, B$ Z; @7 I% Q0 R) }
3、寻找约束条件。(变量之间的约束关系)/ p- }5 I# N3 @* T
4、求解。 , E& j/ b4 ?0 v% h/ I+ J 2 R; a2 n1 @" X: [% i/ N, y. b" m; p- `2 X1 E$ m$ y
文档:线性规划 . R0 |2 j/ v; Q; N& o/ A7 P3 x$ g& V; r$ d4 x0 e& d
/ E* b3 P7 Y4 x+ C
非线性规划模型" d" E7 S3 L2 V8 I" G2 n
应用:对于有非线性限制的问题求最优解(约束函数或者目标函数含有非线性关系)。 N- u. A" \# l9 y# c
' J1 G. C0 ^, l4 {* A
4 ?% Q( P! m5 D5 m4 w
原理:解决非线性规划模型,这种模型没有通用的解决方案,各个方法都有自己适用的范围。最优解可能在可行域的任意一点找到。通常非线性规划模型可以概括为:2 O- ]6 E2 c/ L, }% K
2 G2 ?( w+ c6 H) D3 ~6 o6 @2 m7 O5 b% u% I
其含义为:优化目标为f(x),受限于一个等式h(x)与一个不等式g(x)。, g& ? }0 n2 O4 t
+ m+ c( g& `4 q5 |! t
( p5 f% T3 {- T9 L$ V) x
基本步骤:! |! i4 z* l3 m' g1 e7 W/ A, }2 H
1、同线性规划,找出决策变量;建立目标函数;寻找约束条件。8 I& V, K+ K+ S7 z4 Y ~4 b
2、求解过程中,选定初始点x,构建点x在趋于最优解的搜索方向,以该搜索方向为基础,设定搜索步长,找到下一个迭代点。 7 B R9 C% }# n/ {) ^5 u1 M3、以新迭代点为初始点,重复进行2步骤。 : G( ~# \: C3 p- [; [+ v0 K6 `( k+ G7 @
3 X. @5 w* K y4 g& l- x$ \
文档资料(比较多,稍微看看就好):非线性规划 , P1 Z0 F8 f% \$ ~, H; q3 x8 Q# e3 h* |
- x" Z8 g5 F$ _% _0 j4 U
PCA主成分分析* Y% t+ D. y! X8 K/ q* m* b
应用:降维。( u$ k- Q0 {! |& P, D
) k* [( h+ m/ K y$ ~ X2 p; t/ Q
1 [5 g; Z: @$ h2 P
原理:在损失较少信息的基础上实现降维。周志华西瓜书上提到的最近重构性和最大可分性,实际上是关于协方差与方差的问题。协方差代表维度之间的相关性,方差可以表示维度可以保留的信息。故PCA降维的优化目标为:在N维中选择R维作为“主成分”,这R维之间两两之间协方差尽量小,方差尽量大。' u- v8 L3 Q3 Z- X% d' M1 F
- Y& f a" [2 `# ~% M! c/ H
, M9 c8 Q' S+ _6 Z( Z L基本步骤:涉及线性代数、矩阵分析。文档资料中有兴趣自行了解。 ! g6 q3 n" y1 i7 `( M9 x/ S" W7 s, v
( l, m* y; A6 {0 t; N
文档资料: ) O, z+ s2 f* T- r% ?; [% ^PCA理解与基本概念 ; H0 I' ]4 {9 S2 |" FPCA维度的选择 + h! e, s C2 h) R : i% b! H; K; |; ?8 H3 e 6 K# r3 O8 U4 Y* q) g' J/ Z. S1 x聚类分析0 |$ k! I5 y3 Y' `( d8 C5 Y
应用:无监督分类。 4 v! x$ D- r0 j) Z, F" J0 t' \# s8 K# k. j! r. Z0 N
9 i7 m9 r9 W& P' N n! g原理:对没有标示性的数据,按照算法,进行簇划分。, w; u1 z8 v A1 N. x( k0 W
. H1 Z0 k L( v$ f1 p& ^( F% T# D$ p p% Y0 d0 _
基本步骤: , Y2 \. D* d1 W) Q聚类算法分很多类别。最常使用是基于距离和基于密度的聚类方案,具体方案选择结合实际。 / M! ?3 \! H8 M! s) {在基于距离聚类中比较典型的是k-means聚类,通过多次迭代更新中心点,找到多个中心点(簇的中心)与多个簇,实现:簇内点紧凑,簇间分离程度高。需要设置K(簇数)的值,效率高。8 v/ q) c3 W( s6 k; {4 R6 l5 H
基于密度的聚类有DBSCAN和MeanShift(均值漂移)等,主要思路是根据数据点的紧凑程度,将聚合程度较高的数据形成簇。8 S2 H3 s$ N! W
基于密度的聚类相比于基于距离的聚类,可以找到数据点分布呈不规则形状的簇,效率要差一些,相比之下,基于距离的聚类,同一个簇中各个数据点都不会太偏离中心点,效率高。 ' l! r B4 U) n5 K8 |/ c3 h8 \3 o4 l5 y" }
9 G: k; m/ F( l7 F l0 L
鸢尾花分类的聚类代码,用来辅助学习与理解。 5 B7 @- f' {' \. C; c, s; C# i1. Z: f. v) }8 Q' |- L6 ^& n! ?
from sklearn import datasets # A! Z$ x6 f$ c% r
from sklearn import model_selection) `/ O0 D% |' T, x
from sklearn.cluster import KMeans; `$ [8 {% h7 e X0 x+ P$ y+ V3 @
import matplotlib.pyplot as plt0 h( r! P5 w4 ]8 l! E5 o
- q6 \1 x% M9 `- ]% Q! [4 v ( V7 c9 F1 ]9 a" H6 u. G# step1.加载数据1 }3 C U6 [! e' N1 H9 W
iris = datasets.load_iris()! ^# f' x% m/ @& z1 f* n' i8 i
' P& m |. d X/ R/ |
4 M' `3 B( n$ }2 X h# 2.取特征空间中的4个维度 4 G' s9 o8 {' W9 M l( GX = iris.data[:,:4] # g) m1 I% l) f4 Y
0 D7 a/ Q c5 W I
9 D% S& Y- w* Z0 ]$ m7 x% `6 s' n( Y
# 3.搭建模型,构造KMeans聚类器$ b& d+ z( M& Q# l
estimator = KMeans(n_clusters=3)7 u6 [6 N2 s2 ]0 X6 p3 M