Эта статья участвовала в "Проект «Звезда раскопок»”, чтобы выиграть творческий подарочный пакет и бросить вызов творческим поощрительным деньгам.
Мало знаний, большой вызов! Эта статья участвует в "Необходимые знания для программистов«Творческая деятельность.
Оценка максимального правдоподобия необязательных гиперпараметров
Помимо ввода целых чисел, какие еще есть варианты для n_components? Как мы упоминали ранее, теоретическая разработка матричной декомпозиции уникальна в отрасли.Прилежный и умный математик Минка Т.П. обнаружил, что PCA может использовать оценку максимального правдоподобия (оценка максимального правдоподобия) при проведении исследований в MIT Media Lab.Метод гиперпараметров , введите «mle» в качестве входного параметра n_components, вы можете вызвать этот метод
pca_mle = PCA(n_components="mle")#mle缺点计算量大
pca_mle = pca_mle.fit(X)
X_mle = pca_mle.transform(X)
X_mle#3列的数组
#可以发现,mle为我们自动选择了3个特征
pca_mle.explained_variance_ratio_.sum()#0.9947878161267247
#得到了比设定2个特征时更高的信息含量,对于鸢尾花这个很小的数据集来说,3个特征对应这么高的信息含量,并不
# 需要去纠结于只保留2个特征,毕竟三个特征也可以可视化
2. Выберите гиперпараметры в соответствии с долей информации
Введите число с плавающей запятой между [0,1] и пусть параметр svd_solver =='full' , Указывает, что ожидается, что доля общей объясняющей дисперсии после уменьшения размерности будет больше, чем n_components. Указанный процент, то есть какой процент от объема информации вы хотите сохранить. Например, если мы хотим сохранить 97% информации, мы можем ввести n_components = 0,97, и PCA автоматически выберет количество функций, которые могут сохранить более 97% информации.
pca_f = PCA(n_components=0.97,svd_solver="full")#svd_solver="full"不能省略
pca_f = pca_f.fit(X)
X_f = pca_f.transform(X)
X_f
pca_f.explained_variance_ratio_#array([0.92461872, 0.05306648])
- Разложение по сингулярным значениям может напрямую вычислять новое пространство признаков и матрицу признаков после уменьшения размерности без вычисления ковариационной матрицы и других сложных и длинных матриц.
- Короче говоря, процесс SVD в матричной декомпозиции проще и быстрее, чем PCA.Хотя оба алгоритма следуют одному и тому же процессу декомпозиции, SVD может обманывать и вычислять V напрямую. Но, к сожалению, индекс измерения информации SVD более сложен. Гораздо проще понять «сингулярное значение», чем понять «дисперсию». Поэтому sklearn разбивает процесс уменьшения размерности на две части: одна часть - вычисление пространства признаков. V, который состоит из Разложение по сингулярным значениям завершено, а другая часть состоит в том, чтобы отобразить данные и решить новую матрицу признаков, которая завершается анализом основных компонентов, который реализует использование свойств SVD для уменьшения количества расчета, а показателем оценки количества информации является дисперсия.
- sklearn реализует «кооперативное уменьшение размерности», которое быстрее и проще для вычислений, но работает хорошо. Многие люди понимают SVD как метод решения PCA, Фактически это означает, что разложение по собственным значениям самого PCA не используется в матричной декомпозиции, а используется разложение по сингулярным значениям для уменьшения объема вычислений. Этот метод существует, но в sklearn, хотя и будут вычисляться матрицы U и 2 (тоже математический процесс, который многое упрощает по сравнению с PCA, и не генерирует ковариационную матрицу), он вообще не будет использоваться. не вызываются для просмотра или использования, поэтому мы можем думать, что U и z заброшены после ft. Разложение по сингулярным числам преследует только V, пока есть V, можно рассчитать матрицу признаков после уменьшения размерности. После процесса преобразования результаты разложения по сингулярным числам в соответствии будут отброшены, за исключением V(k,n), а V(k,n) будет сохранено в атрибуте component_, который можно вызвать для просмотра.