Sunteți pe pagina 1din 2

% % Pacotes

% \usepackage[portuguese,lined,boxed,ruled]{algorithm2e}
% \usepackage{algorithmic}
% \usepackage{amsfonts, amsmath, amssymb}
% \usepackage[brazil]{babel}
%
% % Configurações
% \renewcommand{\algorithmcfname}{Pseudocódigo}
% \renewcommand{\algorithmicindent}{3.0em}
% \renewcommand{\algorithmicrequire}{\textbf{entrada}}
% \renewcommand{\algorithmicensure}{\textbf{garanta}}
% \renewcommand{\algorithmicreturn}{\textbf{retorne}}
% \renewcommand{\algorithmicor}{\textbf{ou}}
% \renewcommand{\algorithmicand}{\textbf{e}}
% \renewcommand{\algorithmicend}{\textbf{fim}}
% \renewcommand{\algorithmicif}{\textbf{se}}
% \renewcommand{\algorithmicelse}{\textbf{sen\~ao}}
% \renewcommand{\algorithmicthen}{\textbf{ent\~ao}}
% \renewcommand{\algorithmicfor}{\textbf{para}}
% \renewcommand{\algorithmicforall}{\textbf{para cada}}
% \renewcommand{\algorithmicrepeat}{\textbf{repita}}
% \renewcommand{\algorithmicuntil}{\textbf{até que}}
% \renewcommand{\algorithmicwhile}{\textbf{enquanto}}
% \renewcommand{\algorithmicdo}{\textbf{fa\c{c}a}}

O \textit{k} vizinhos próximos (\textit{k-NN}, do inglês \textit{k-Nearest


Neighbors}) faz uso de funções de agregação baseadas em distância para ranquear o
objetos mais próximos do que está sendo passado por parâmetro. A ideia geral do
\textit{k-NN} é utilizar uma quantidade de instâncias \textit{k} que sejam as mais
próximas, mediante a distância, do objeto que está sendo avaliado. Existem diversas
métricas utilizadas na realização desse cálculo, dentre elas: a distância
Euclidiana, a distância de \textit{Chebychev} também conhecida como valor máximo, a
distância de \textit{Manhattan} que é calculada através da diferença entre os pares
de pontos dados, e outras.

Considerando um espaço de 1000 dimensões (o arquivo que é gerado após o


processamento das imagens). Sejam $x = \{x_1, x_2, \dots, x_{1000}\}$ e $y = \{y_1,
y_2, \dots, y_{1000}\}$ duas imagens distintas, a distância entre esses dois
objetos utilizando a distância euclidiana é apresentada na
Equação~\ref{eq:euclidian}. Por sua vez, a Equação~\ref{eq:manhattan} apresenta a
distância de \textit{Manhattan} e, por fim, a Equação~\ref{eq:chebyshev} denota a
distância de \textit{Chebyshev}.

\begin{equation}
\label{eq:euclidian}
\sqrt{\sum_{i=1}^{1000}(x_i - y_i)^2}
\end{equation}

\begin{equation}
\label{eq:manhattan}
\sum_{i=1}^{1000}|x_i - y_i|
\end{equation}

\begin{equation}
\label{eq:chebyshev}
\textbf{max}((y_1 - x_1), (y_2 - x_2), \cdots, (y_{1000} - x_{1000}))
\end{equation}
O Algoritmo~\ref{alg:knn} mostra, de forma resumida, o fluxo básico do
algoritmo do \textit{k-NN}. Na Linha~\ref{distances} é calculada a diferença por
meio das Equações~\ref{eq:euclidian}-\ref{eq:chebyshev}. Após calcular essa
diferença para cada uma das imagens, é necessário ranquear as imagens na ordem
crescente, selecionando \textit{k} imagens. Por fim, o rótulo mais frequente das
\textit{k} imagens selecionas é utilizado na imagem da presente iteração.

\begin{algorithm}[H]
\caption{\textit{k-NN}}
\label{alg:knn}
\SetAlgoLined
\begin{algorithmic}[1]
\REQUIRE $Imagens = {i_1, \dots, i_n}$
\FORALL{imagem em $Imagens$}
\STATE Calcular a diferença para as demais; \label{distances}
\STATE Ranquear as imagens em ordem de relevância (de acordo
com a métrica);
\STATE Selecionar as \textit{k} imagens mais próximas;
\STATE Observar o rótulo mais frequente;
\STATE Rotular a imagem atual utilizando rótulo mais
frequente.
\ENDFOR
\end{algorithmic}
\end{algorithm}

S-ar putea să vă placă și