Em R
, eu uso a lda
função da biblioteca MASS
para fazer a classificação. Pelo que entendi LDA, a entrada receberá o rótulo , que maximiza , certo?
Mas quando ajustar o modelo, no qual lda
,
Editar: para reproduzir a saída abaixo, execute primeiro:
library(MASS)
library(ISLR)
train = subset(Smarket, Year < 2005)
lda.fit = lda(Direction ~ Lag1 + Lag2, data = train)
> lda.fit Call: lda(Direction ~ Lag1 + Lag2, data = train) Prior probabilities of groups: Down Up 0.491984 0.508016 Group means: Lag1 Lag2 Down 0.04279022 0.03389409 Up -0.03954635 -0.03132544 Coefficients of linear discriminants: LD1 Lag1 -0.6420190 Lag2 -0.5135293
Eu entendo todas as informações na saída acima, mas uma coisa, o que é LD1
? Eu pesquiso na web, é uma pontuação discriminante linear ? O que é isso e por que eu preciso disso?
ATUALIZAR
Eu li vários posts (como este e este ) e também pesquise DA na Web, e agora aqui está o que penso sobre DA ou LDA.
Ele pode ser usado para fazer a classificação, e quando este é o propósito, eu posso usar a abordagem de Bayes, ou seja, calcular a posterior para cada classe , e, em seguida, classificar para a classe com o maior posterior. Por essa abordagem, não preciso descobrir os discriminantes, certo?
Como eu li nas postagens, DA ou pelo menos LDA visa principalmente a redução de dimensionalidade , para classes e espaço preditivo de dim, posso projetar o dim em um novo espaço de recurso -d , isto é,
,pode ser visto como o vetor de característica transformada dooriginal, e cadaé o vetor no qual é projetado.
Estou certo sobre as afirmações acima? Se sim, tenho as seguintes perguntas:
O que é um discriminante ? Cada entrada no vetor é discriminante? Ou ?
Como fazer a classificação usando discriminantes?
fonte
discriminant analysis
neste site.Respostas:
Se você multiplicar cada valor de−0.6420190× +−0.5135293×
LDA1
(o primeiro discriminante linear) pelos elementos correspondentes das variáveis de previsão e somá-los ( + - 0,5135293 × ), obtém um score para cada entrevistado. Essa pontuação ao longo do anterior é usada para calcular a probabilidade posteriorLag1
Lag2
de participação na classe (existem várias fórmulas diferentes para isso). A classificação é feita com base na probabilidade posterior, com observações previstas na classe para a qual elas têm a maior probabilidade.O gráfico abaixo ilustra a relação entre a pontuação, a probabilidade posterior e a classificação, para o conjunto de dados usado na pergunta. Os padrões básicos sempre são válidos para a ADL de dois grupos: existe um mapeamento 1 para 1 entre as pontuações e a probabilidade posterior, e as previsões são equivalentes quando feitas a partir das probabilidades posteriores ou das pontuações.
Respostas às sub-perguntas e alguns outros comentários
Embora o LDA possa ser usado para redução de dimensão, não é isso que está acontecendo no exemplo. Com dois grupos, a razão pela qual apenas uma pontuação é necessária por observação é que isso é tudo o que é necessário. Isso ocorre porque a probabilidade de estar em um grupo é o complemento da probabilidade de estar no outro (ou seja, eles adicionam a 1). Você pode ver isso no gráfico: pontuações inferiores a -.4 são classificadas como estando no grupo Para baixo e prevê-se que pontuações mais altas sejam Para cima .
Às vezes, o vetor de pontuações é chamado a
discriminant function
. Às vezes, os coeficientes são chamados assim. Não estou claro se uma delas está correta. Eu acredito que MASSdiscriminant
se refere aos coeficientes.A
lda
função do pacote MASS produz coeficientes de maneira diferente da maioria dos outros softwares LDA. A abordagem alternativa calcula um conjunto de coeficientes para cada grupo e cada conjunto de coeficientes possui um intercepto. Com a função discriminante (escores) calculada usando esses coeficientes, a classificação é baseada na pontuação mais alta e não há necessidade de calcular probabilidades posteriores para prever a classificação. Eu coloquei algum código LDA no GitHub, que é uma modificação daMASS
função, mas produz esses coeficientes mais convenientes (o pacote é chamadoDisplayr/flipMultivariates
e, se você criar um objeto usando,LDA
poderá extrair os coeficientes usandoobj$original$discriminant.functions
).Eu publiquei o R para codificar todos os conceitos deste post aqui .
library(MASS) getAnywhere("predict.lda")
fonte
I'm not clear on whether either [word use] is correct
"função discriminante", também conhecida como "discriminante", é uma variável extraída - uma variável, uma dimensão. Portanto, é caracterizado tanto pelos coeficientes (pesos) para avaliá-lo a partir das variáveis de entrada quanto pelas pontuações, pelos valores. Exatamente como um PC no PCA. Portanto, "coeficientes discriminantes" e "pontuações discriminantes" são o uso correto.A teoria por trás dessa função é "O método de Fisher para discriminação entre várias populações". Eu recomendo o capítulo 11.6 na análise estatística multivariada aplicada (ISBN: 9780134995397) para referência.
fonte